Development record
2026-09-25 — How itd-2609212130136102's consolidation is built where its record leaves a choice: the implementing lane's technical rulings in autonomous run A, subject to the product thinker's review on return (recorded, not asked). The identity mode is spelt `--identity`, as the intent's scope names it, not `--identity-check`. A spelling that moved WHOLE (`ahoy dry-run`, `ahoy identity-check`, `version`, `docs lint`, `site check`) becomes a stub carrying cobra's `Deprecated` field, which lists it nowhere and keeps it out of the person's count; it accepts any argument and flag the old spelling took, runs nothing, and answers exit 2 naming its successor, with cobra's deprecation line routed to stderr so a `--json` caller reads exactly one refusal on stdout. A verb whose BARE form moved while its sub-verbs stay (`identity`, whose `render` and `init` stay; `ahoy remote`, whose `apply` stays) keeps its place and only its bare invocation answers; deprecating it would have hidden live sub-verbs. `lint identity` is what bare `identity` printed (the block and every surface's verdict), because that is the check; `identity render` proposes a correction, a distinct act, and stays, which reads the intent's "identity render" among the five spellings as the identity family's check (itd-146's lane read it the same way). Bare `lint` runs every target that judges the repository: docs, identity and the outbound policy over committed files were already rules (`docs-currency`, `identity-positioning`, `privacy-hygiene`), and the site joins as a `site-gates` rule, Where-gated on `.abcd/site.json`, rendering into a temporary directory outside the repository and removing it so bare lint still writes nothing, at warn severity as docs-currency is; `lint outbound` stays out of the bare run because its subject is text the caller hands it. `version --check` names `update --check`, the rest of `version` names `--version`; `update --check` prints the old `version --check` report, takes no tag, excludes `--yes` and never constructs the updater. `intent new` is refused as an unknown sub-verb in every shape, including before prose, so it can never be filed as a draft titled "new …". The snapshot records `moved_to` at schema version 4 (version 3 stays readable, the last tag's shape); the brief's appendix omits a whole-moved stub and names the successor where the bare form moved, `surface_coverage` needs no row for a moved spelling and refuses one that names it, and the generated CLI reference omits the stubs. `commands/version.md` stays as a page with no block that runs `--version`. The site workflow's release path probes the released binary's `lint` listing and falls back to `site check` for a tag cut before this release. The spec's remainder spec for removing the stubs is not minted: a remainder close keeps the intent planned, and the run brief closes it shipped, so the removal is captured as an issue instead (implementer of lane consolidate).
2026-09-25 — How itd-2609212130136102's consolidation is built where its record leaves a choice: the implementing lane's technical rulings in autonomous run A, subject to the product thinker's review on return (recorded, not asked). The identity mode is spelt --identity, as the intent's scope names it, not --identity-check. A spelling that moved WHOLE (ahoy dry-run, ahoy identity-check, version, docs lint, site check) becomes a stub carrying cobra's Deprecated field, which lists it nowhere and keeps it out of the person's count; it accepts any argument and flag the old spelling took, runs nothing, and answers exit 2 naming its successor, with cobra's deprecation line routed to stderr so a --json caller reads exactly one refusal on stdout. A verb whose BARE form moved while its sub-verbs stay (identity, whose render and init stay; ahoy remote, whose apply stays) keeps its place and only its bare invocation answers; deprecating it would have hidden live sub-verbs. lint identity is what bare identity printed (the block and every surface's verdict), because that is the check; identity render proposes a correction, a distinct act, and stays, which reads the intent's "identity render" among the five spellings as the identity family's check (itd-146's lane read it the same way). Bare lint runs every target that judges the repository: docs, identity and the outbound policy over committed files were already rules (docs-currency, identity-positioning, privacy-hygiene), and the site joins as a site-gates rule, Where-gated on .abcd/site.json, rendering into a temporary directory outside the repository and removing it so bare lint still writes nothing, at warn severity as docs-currency is; lint outbound stays out of the bare run because its subject is text the caller hands it. version --check names update --check, the rest of version names --version; update --check prints the old version --check report, takes no tag, excludes --yes and never constructs the updater. intent new is refused as an unknown sub-verb in every shape, including before prose, so it can never be filed as a draft titled "new …". The snapshot records moved_to at schema version 4 (version 3 stays readable, the last tag's shape); the brief's appendix omits a whole-moved stub and names the successor where the bare form moved, surface_coverage needs no row for a moved spelling and refuses one that names it, and the generated CLI reference omits the stubs. commands/version.md stays as a page with no block that runs --version. The site workflow's release path probes the released binary's lint listing and falls back to site check for a tag cut before this release. The spec's remainder spec for removing the stubs is not minted: a remainder close keeps the intent planned, and the run brief closes it shipped, so the removal is captured as an issue instead (implementer of lane consolidate).
Frontmatter
| id | dcn-2609250000000023 |
|---|---|
| type | decision |
| date | 2026-09-25 |
.abcd/work/decisions/dcn-2609250000000023-how-itd-2609212130136102-s-consolidation.md
open on GitHub ↗ · commit history ↗
mentions2
- itd-146abcd's help renders in labelled command groups, and the grouping is gated like every other surface claim
- itd-2609212130136102abcd's verbs consolidate: modes become flags and five checks become one lint