flowchart TD
Start[Multi-database collection complete] --> CheckMode{Strict mode<br/>enabled?}
CheckMode -->|No| DefaultMode[Default Mode]
CheckMode -->|Yes| StrictMode[Strict Mode]
DefaultMode --> CheckAnySuccess{Any database<br/>succeeded?}
CheckAnySuccess -->|Yes| Exit0A[Exit 0]
CheckAnySuccess -->|No| Exit1A[Exit 1]
StrictMode --> CheckDBFailures{Any database-level<br/>failures?}
CheckDBFailures -->|Yes| Exit1B[Exit 1]
CheckDBFailures -->|No| CheckTableFailures{Any Table<br/>object failures?}
CheckTableFailures -->|Yes| Exit1C[Exit 1]
CheckTableFailures -->|No| Exit0B[Exit 0]
Implement Strict Exit Code Semantics and CLI Integration
Overview
Add automation-friendly exit code calculation with configurable strict mode. This enables CI/CD pipelines to correctly interpret partial collection success/failure.
Scope
What's Included:
calculate_exit_code()function infile:dbsurveyor-collect/src/main.rs:strict = false): Exit 0 if at least one database succeeded; exit 1 if all failedstrict = true): Exit 1 if any database-level failure OR anyobject_failuresinclude TablesMultiDatabaseOutputvariants:Bundle: CheckMultiDatabaseResult.failuresand aggregateobject_failuresfrom all schemasPerDatabase: Check manifest status andobject_failuresin each schema--strictflag (boolean, default false)main()to callcalculate_exit_code()andstd::process::exit()What's Explicitly Out:
Exit Code Decision Tree
flowchart TD Start[Multi-database collection complete] --> CheckMode{Strict mode<br/>enabled?} CheckMode -->|No| DefaultMode[Default Mode] CheckMode -->|Yes| StrictMode[Strict Mode] DefaultMode --> CheckAnySuccess{Any database<br/>succeeded?} CheckAnySuccess -->|Yes| Exit0A[Exit 0] CheckAnySuccess -->|No| Exit1A[Exit 1] StrictMode --> CheckDBFailures{Any database-level<br/>failures?} CheckDBFailures -->|Yes| Exit1B[Exit 1] CheckDBFailures -->|No| CheckTableFailures{Any Table<br/>object failures?} CheckTableFailures -->|Yes| Exit1C[Exit 1] CheckTableFailures -->|No| Exit0B[Exit 0]Acceptance Criteria
--strictflag correctly toggles behaviorReferences
spec:de2eeeb8-bfeb-4a11-98aa-84efc70568b2/820ca524-8c7d-4939-8097-f1158e7d67ea(Tech Plan - CLI Exit Code Handler)spec:de2eeeb8-bfeb-4a11-98aa-84efc70568b2/661dbe3d-b679-4287-991e-26f4a0dd98b9(Flow 6 - automation-friendly exit codes)spec:de2eeeb8-bfeb-4a11-98aa-84efc70568b2/64fc1d47-e1e3-40db-a5dc-8dc9c248814c(v1.0 Must Have - automation-friendly exit codes)