|
D-137 tier 2: local half blocking in P5; --pending-stage -> coupled projection
Two operator decisions, both taking the recommendation. GATE SHAPE: local-only blocking, remote operator-run. preflight P5 now runs creds-matrix.py --tier2 -- tier 1 STATIC plus tier 2 LOCAL, hermetic (no ssh, no sudo). It already catches SEC-021's three dc0 on-disk absences without leaving the jumphost. The remote half stays an operator-run check at DC-standup close and stage close. Wiring --remote --privileged into the deploy gate would let a host outage, a NOPASSWD change, or a MAAS snap refresh turn the gate red for reasons that are not about credentials, and a gate that fails environmentally is one people learn to bypass. The repo already made this call once (run-tests-all.sh:7-8, "different cadence"), and preflight already shows the failure mode: P4 reads "MAAS unreachable" because it runs on vcloud while MAAS lives on the headend. STAGE INPUT: --pending-stage replaced by creds-manifests/stages-reached, a machine-readable projection of CURRENT-STATE, coupled by new repo-lint L12 (the L10 pattern). A hand-typed gate parameter can be widened silently, and GA-R1 puts status in CURRENT-STATE alone. A drifted projection would make the gate defer REAL absences -- a false green. Exhaustive both ways: an unclassified mint-stage is a hard FAIL, a classified-but-unused one is a stale-declaration FAIL. That caught `stage4` immediately -- Stage 4 is open and executing but mints no credential. Self-inflicted break caught by the existing harness: I first renamed L10's message to "L10/L12", breaking five cases that grep the established L10 id. Reverted -- new rules get their own message id, they do not rebrand old ones. Harnesses: creds-matrix 52 -> 56, repo-lint 45 -> 47, preflight 10. Gauntlet ALL GREEN (80), repo-lint 0-fail, baseline unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf |
|---|
|
|
| creds-manifests/stages-reached 0 → 100644 |
|---|
| docs/CURRENT-STATE.md |
|---|
| docs/changelog-20260726-d137-tier1.md |
|---|
| scripts/creds-matrix.py |
|---|
| scripts/preflight.sh |
|---|
| scripts/repo-lint.sh |
|---|
| scripts/repo_lint.py |
|---|
| tests/creds-matrix/run-tests.sh |
|---|
| tests/repo-lint/run-tests.sh |
|---|