Task · GCI-0064

Return the documented CLI exit code for incomplete configuration

Description

The loop6 reference audit found MissingConfig and MissingCredential are siblings of IncompleteConfig in collector/config.py:42-51. The CLI configuration handler catches MissingCredential only, so missing identifiers can produce a traceback and exit1 rather than the intended diagnostic/exit2. Current operator docs disclose the exception instead of claiming uniform behavior. Fix the CLI boundary without performing any live reads or hiding unexpected programming errors.

Acceptance Criteria

Definition of Done

Implementation Plan

Loop7 frozen packets: bounded implementation or AC1 research; public-boundary proof, offline gate and CodeRabbit before landing, exact landed CI. Root security review/guard landing, research staff GET probe and conditional reserve decision, integrated review, stable release and dev-only rollout proof. Tracker remains root-owned.

Final Summary

CLI catches shared IncompleteConfig base (both subclasses) before metadata/source/publication calls: actual cleared-environment subprocess missing identifier exits 2 with one JSON stderr record and no stdout. Unexpected error propagates unchanged. Three added boundary tests and two publication-guard tests updated because S-EXIT requires config validation before metadata. Failing-first watched missing identifier traceback/exit 1. Landed b073f9182dc73613005e32b4d3d694dbdd84a613, exact CI 36874121093 all four jobs successful; 57 targeted tests, final just check, completed CodeRabbit zero findings. No live calls.

References

View the source file on GitHub