|
R15(3): preflight no longer fails open on an unexpected sub-gate exit
Reproduced first, in isolation with the exact note() from preflight.sh:27 -- sub-gate exits 127 (command not found), 126 (not executable), 130 (interrupted) and 3 (undefined) ALL left "PREFLIGHT: PASS -- clear to add-model / deploy". This is the gate that authorises the deploy. rc=2 handled PER GATE rather than blanket-remapped, because R15's stated rationale is only partly right on measurement: repo-lint and pre-flight-checks both DOCUMENT rc2 as a legitimate warning, while provider-bundle-check and creds-matrix use it only for could-not-evaluate. A blanket 2->FAIL would have turned the standing L1 legacy-ASCII warn into a deploy blocker. channel_assert uses 2 for BOTH meanings, so it is ambiguous in the checker and kept WARN; its missing-PyYAML root cause is caught by P2 anyway, which shares it and is strict. Flagged rather than guessed -- fixing that belongs in channel_assert.py. Harness 16/16 (was 10): T11-T13 lock the fail-open cases, T14/T15 lock could-not-evaluate -> FAIL, and T16 locks the non-over-correction (P1 rc=2 stays WARN). Gauntlet ALL GREEN (82). Real-repo preflight still exits 1 for the same known reasons with no new failure classes fired. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf |
|---|
|
|
| docs/changelog-20260727-stage5-phase0.md |
|---|
| scripts/preflight.sh |
|---|
| tests/preflight/run-tests.sh |
|---|