Development record
`abcd launch --dry-run` reports a `gates` array built in
abcd launch --dry-run reports a gates array built in
internal/core/launch/dryrun.go: secret+pii-scan, marker-block,
installability-smoke, documentation-auditor, citation-baseline.
receipt_gate is not among them, and no other field reports it.
So the preview whose stated purpose is "the bundle, the scan, and the gates" answers cleanly while the gate that will actually refuse the release goes unmentioned. Run before the v0.6.2 cut, it reported version 0.6.2, 105 bundle files, zero secret/PII hard-fails, smoke ok, 51 citations with receipts — and said nothing about the missing semantic receipts that then failed the release.
This is a loud-staging violation of the subtler kind. The two
not_implemented gates in that list are exemplary: they announce that they did
not run. receipt_gate is worse off than unimplemented — it is fully
implemented, it is armed at release time, and the preview simply does not know
it exists. An absent row reads as "no such gate", which is the one thing it is
not.
The preview must not become a second trust root: release.yml deliberately owns
the required-gates list, because the workflow rather than the committer-editable
in-tree config is what decides the gate's teeth. So the preview should report
what receipts are RECORDED for the candidate commit and point at the runbook,
not assert which gates are required.
Frontmatter
| id | iss-2608231226342272 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | major |
.abcd/work/issues/resolved/iss-2608231226342272-launch-dry-run-omits-the-receipt-gate.md
open on GitHub ↗ · commit history ↗
mentions2
- iss-2608231226347380`auto-release.yml` runs `detect` -> `tag` -> `release`, and the semantic
- iss-2609251827290265The launch dry-run's plain render stages only two gate rows loudly: internal/surface/cli/cli.go prints the citation-baseline and semantic-receipts rows and no other, so a documentation-auditor row that is not_armed (no .abcd/docs-lint.json) is visible only in --json and the pre-flight report file. iss-2608231226342272 is the precedent that a row only --json shows is invisible. Remedy: the plain render prints every gate row whose status is not 'ran'.