Development record
2026-08-16 — the v0.5.1 release gate ruled PROMOTE ×2 at content commit
2026-08-16 — the v0.5.1 release gate ruled PROMOTE ×2 at content commit 264d9b1 — the first fully derived cut: changelog composed from the cut's resolved records and ingested behind the completeness bijection (three entries citing iss-254, iss-255, iss-257). Full tier (the cut is additive by iss-257). docs-currency: two findings — the README ladder sentence over-quantified to every hook (fixed in the receipts commit: "every other hook") and the removed contributor-guidance pointer (maintainer-directed, no change). Crosscheck: 25 discrepancies, substantially the iss-250 corpus re-confirmed between two same-day cuts, dispositioned against that open issue rather than re-filed. Rejected: re-filing the drift as a new issue (iss-250 already carries the corpus and stays the single tracking home), and holding an additive cut on record drift the brief's own aspirational posture (adr-5) anticipates.
Frontmatter
| id | dcn-2608160000000008 |
|---|---|
| type | decision |
| date | 2026-08-16 |
.abcd/work/decisions/dcn-2608160000000008-the-v0-5-1-release-gate-ruled-promote-2.md
open on GitHub ↗ · commit history ↗
mentions6
- adr-5Brief is the current state; no version label, no archive directory
- iss-250Brief-surface drift found by the v0.5.0 release gate: the full-tier crosscheck (22 checkers, both directions) returned 28 unique discrepancies between the brief's surface prose and the shipped binary — 14 false-claim, 8 undocumented-surface, 2 criterion-violation, 2 stale-count, 2 fictional-layout. Dominant clusters: the vintage/staleness surfaces (bare 'abcd version' three-line render, version --json four fields, version --check, --allow-stale-binary, uninstall --bin-dir) landed without their brief rows; the citation-baseline dry-run gate and render line are undocumented in 04-launch.md; 01-ahoy.md's envelope shape omits the banlist key and guard.detail; 05-intent.md:335 claims gap_audit is deferred (shipped) and an MG004 check ships (does not exist); 07-memory.md's spec-count claim is stale (spc-2..spc-27 exist); the agents/ plugin surface has no registry row and surface_coverage does not check it; skills/-era phrasing survives in 02-constraints/04-naming.md, 06-delivery/01-build-sequence.md and 02-verification-matrix.md. Full list with file:line, claim, reality and class: the iss35-brief-surface-crosscheck receipt for content commit d1afd2c under .abcd/work/reviews/. Not release-blocking (design-record drift, no user-facing doc affected) — same class and disposition as iss-192 at v0.4.2.
- iss-254The hook surface has a single point of provisioning and an unactionable failure mode: only the SessionStart chain runs bootstrap.sh, so when that one hook does not fire (or runs without CLAUDE_PLUGIN_ROOT — its guard then exits 0 silently), no other hook ever attempts provisioning and the session is permanently degraded; meanwhile every UserPromptSubmit/PreToolUse/SessionEnd invocation fails as a raw '/bin/sh: .../abcd: No such file or directory' — noisy on every tool call, actionable on none. Observed live in the iss-253 gate failure: hours of hook errors, zero provisioning attempts outside session start, zero SessionEnd transcript captures. Fix direction: each binary-invoking hook guards on the plugin root, attempts a rate-limited silent bootstrap salvage when the binary is absent (bootstrap already has the concurrency lock, bounded curl timeouts, and a one-stat fast path), and on continued absence emits one plain actionable line instead of the exec error. Detector: a hooks-shape test asserting the salvage-and-fallback pattern on every binary-invoking hook, plus an executed-shell fixture test; acceptance: with an empty plugin root and a working bootstrap fixture, the prompt-router hook provisions and runs; with a failing bootstrap it prints one actionable line and exits non-blocking.
- iss-255ahoy install writes a .gitignore managed block that ignores /.abcd/ (and /memory/) wholesale — on any repo that commits the durable tiers, including abcd-cli itself, this hides every new record file from git status and makes git add refuse them, silently breaking the record workflow for every session in the clone. Observed live: install on abcd-cli appended the block; new intents/issues stopped appearing as untracked; the write was reverted by hand. Adjacent to iss-176 (config in an ignored path reported NOT ENFORCEABLE) but broader: the block contradicts the three-tier layout the installer itself scaffolds. Detector: ahoy install on a repo whose .abcd/development is tracked must not write an ignore rule covering it; acceptance: install on abcd-cli leaves git status of a new .abcd/work/issues file visible.
- iss-257abcd is citable and its sources are recorded: a root CITATION.cff (CFF 1.2.0) powers the forge's cite-this-repository box; the References & sources section of ACKNOWLEDGEMENTS.md records the academic literature the design record draws on as a curated, alphabetically ordered list of primary sources; canonical CSL-JSON metadata lives in .abcd/development/research/references.csl.json with a documented on-demand render path. Filed retroactively: the capability shipped with a hand-written Unreleased entry and no record, which the derived release flow refuses — this record is the entry's citable home.
- itd-65abcd Refuses To Publish A Payload Until The Full Ship-Time Pre-Flight Gate Suite Passes, Not Just The Secret Scan