This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

Health

Now1

  • itd-2611041549461012A session that takes over a run steps on from what abcd wrote downnext up · target next

Next33

  • itd-2610240823055889Setting abcd up is short, plain, and finishes
  • itd-2610222215485265abcd drain --drive works through the ledger from a plain terminal
  • itd-2610240922461281The review set is a setting, in model classes
  • itd-2610091016262335A team edits its brief together live during a call, on abcdesign.app or on the host's own computer
  • itd-50The Audit Loop Drives An Intent To Acceptance — Or Calls For A Replan
  • itd-2609151838312703Sessions under any account, on any machine or in the cloud announce what they are doing through short fixed-form announcements on the shared remote, a person reads everyone's status with one command, and what is really a hold stays a reservation
  • itd-2610031026190632abcd's update check says when a harness is older than abcd needs
  • itd-2610142145236613abcd's own record is built onto its GitHub Pages like any project's
  • itd-2611011325421304A one-package change is checked in minutes, not the whole suite
  • itd-2610170638184486Every session keeps a checklist on disk, so no run stalls and no stall spreads
  • itd-2611031342011261abcd keeps a per-session ledger of every agent it launches
  • itd-2609091014076309Session and agent worktrees live in a machine-scoped store that abcd lists and reclaims, never beside the user's own projects
  • itd-2609291923559186The consistency pass runs where records are written and names each finding the same way every time
  • itd-2610032150577708The product thinker's dashboard, in a browser through Tailscale
  • itd-2609201916151817One verb takes a READY intent to delivered, and refuses while a decision is open
  • itd-2610120738075547Work handed to a cloud session comes back, or says why not
  • itd-2610301428378830abcd tells an agent what to do next, after a refusal and after a success
  • itd-2610161621364075The agents abcd launches on its own work inside a sandbox the operating system enforces
  • itd-2610170634394993Headless agents in parallel coordinate through the shared remote, not conversation
  • itd-39abcd Surfaces the Right Memory at the Right Moment
  • itd-2610091918433290Agents keep memory notes with /abcd:memory, recalled when they matter
  • itd-2610230756259215Every question abcd asks passes its check before the person sees it
  • itd-2610301346085246An agent learns how to call abcd from the abcd it runs
  • itd-2610301914350541A repository sets the layout limits of abcd's questions
  • itd-2610161733316518One task done across a model matrix, re-runnably
  • itd-2610301850454860abcd records how each change landed
  • itd-2610301750162657abcd's unattended work is spot-checked against specs and intents
  • itd-2610222214476887One command shows everything a repository has left lying around, and clears what is provably finished
  • itd-2610031214560142The board shows a product thinker what waits on them and what comes next, in a few plain lines
  • itd-2610030810370060abcd's interviews run in a plain Terminal, with the same question layout
  • itd-2610031215002409A 'what next?' menu under the board offers the next step, in a Terminal and in a Claude Code session
  • itd-148Every change starts in its own worktree in abcd's store: the primary checkout is a read-only surface, and abcd blocks mutations there for every session but a declared coordinator
  • itd-2609170822093401abcd proposes the model each agent deserves, and facilitates it where it can

Later159

  • itd-7Lifeboats Carry RepoPrompt Workspace Definitions Forwardfails spec_link, spec_body
  • itd-8Lifeboats Carry Source Code, Not Just Lessonsdraft
  • itd-9Old Lifeboats Still Unpackdraft
  • itd-10Full Removal When You Mean Itdraft
  • itd-11Disembark Survives Noisy Transcriptsdraft
  • itd-12Working Notes Don't Outrank Settled Decisionsdraft
  • itd-13Reviews and Memory Stay Fresh, Alwaysdraft
  • itd-14Prompts Are Versioned Like Codedraft
  • itd-15abcd Audits Its Own Prompts on Every Self-Disembarkdraft
  • itd-16`/abcd:audit` Is the Umbrella; Conversation/Edit Chain Is Its Default Applicationdraft
  • itd-18Sensible Permissions From Day Onedraft
  • itd-19Defaults That Match Where the Project Livesdraft
  • itd-21Start a New Project With abcd Conventionsdraft
  • itd-22abcd Reaches Any Harness Through an Adaptordraft
  • itd-23Lifeboats Speak To External Toolsdraft
  • itd-25Patterns Surface Themselvesdraft
  • itd-26Raid the Open Ocean, Bring the Cargo Home with Papersdraft
  • itd-30Design Fictions As An Alternative Capture Format For Intentsdraft
  • itd-35Lifeboats Carry Their Own Integrity Proofdraft
  • itd-41abcd Tells You, Honestly, What a Phasing Choice Costsdraft
  • itd-44A Capture-Time `decision` Verdict That Routes Infrastructure Choices Into The Existing ADR Storedraft
  • itd-51abcd Knows What "Safe Enough to Adopt" Means Before a New Harness Arrivesdraft
  • itd-55abcd Can Tell Whether Its Own Reasoning Rests On Bedrock Or On An Unexamined Assumptiondraft
  • itd-57Every abcd Voyage Ships With A Manual-Hold Sentinel That Blocks A Spec From Autonomous Pickup Until A Human Lifts Itdraft
  • itd-59Every Autonomous Run Pass Leaves the Same Durable, Queryable Transcript an Interactive Session Doesdraft
  • itd-61A Human Edit To The Brief Cannot Commit Until Its Implied Intents And Principles Are Drawn Out And Reconcileddraft
  • itd-62abcd Routes The Invisible Risks An Amateur Cannot See To A Real, Fail-Closed Gate That Wraps A Trusted Scannerdraft
  • itd-64abcd Learns From Its Own Runs Which Configurations Work Best, And Tunes Its Configuration Layer Accordinglydraft
  • itd-70Drawn-out intentdraft
  • itd-75abcd Proves Your CLI Actually Runs — From Fixtures You Drop Indraft
  • itd-77abcd's User-Level Home Lives Where You Want Itdraft
  • itd-78abcd Knows What to Build First — Even When It's Something Smalldraft
  • itd-83The Review Bar Fires By Itself, In Every Repo abcd Managesdraft
  • itd-85A Read-Only Repo-Conformance Auditdraft
  • itd-86abcd Can Read Its Own Design Documents As A Stranger Woulddraft
  • itd-87A Finding That Comes Back After You Closed It Tells You Something, And abcd Stops Throwing It Awaydraft
  • itd-90The Product Thinker Is Handed Exactly The Questions Only They Can Answer — And Nothing Elsedraft
  • itd-91A Project Declares Once How It Wants AI Acknowledged — And Every Commit, PR, And Record Followsdraft
  • itd-92abcd tells every repo the truth about its fencedraft
  • itd-97The Facilitator Is a Mode, Not a Persondraft
  • itd-98Solo vs. Duo Is Measured, Not Debateddraft
  • itd-99A Team of Product Thinkers Decides as Onedraft
  • itd-106abcd Sets Up the CI a Repo Requires, and Reports What It Diddraft
  • itd-107Autonomous Routines Assemble From One Versioned Templatedraft
  • itd-108The plugin installs from the curated release artifact, not the repo, and every cut release reaches users automaticallydraft
  • itd-109Acceptance Criteria Verify Themselves, And The Manual Rest Renders For A Humandraft
  • itd-113The MCP Front Door Opens — abcd's Core Verbs From Any MCP-Capable Harnessdraft
  • itd-116Validated GitHub Issues Become Ledger Entries Without Retypingdraft
  • itd-126A Team Shares One Bibliography Without Sharing Anyone's Corpusdraft
  • itd-127A Paper Is Reconstructed From the Provenance Ledgerdraft
  • itd-128One canonical YAML scalar resolver: frontmatter exports the single null/bool/quote resolution helper and the capture, lint, lifeboat, and memory decoders all delegate to it, so a cross-package verdict split on any scalar axis becomes unrepresentabledraft
  • itd-129Forge mirror as an opt-in adapter: the ledger mirrors out to forge issues one way, the forge id lives in the record schema, closures without import self-heal, and the whole surface is loudly absent without forge authdraft
  • itd-134Every abcd-managed CLI greets like abcd does: one command scaffolds a banner for a managed repo, rendered from that repo's canonical identity block — name, tagline, version — as a committed, language-neutral artefact (the generator emits the rendered banner, not code), so a CLI in any language opens with its own identity without hand-drawing anything. Split out of itd-112 at its 2026-08-21 grill: itd-112 keeps abcd's own banner and the colour ladder; this intent carries the managed-repo generator and the per-repo accent question.draft
  • itd-142The brief-creation interview: abcd elicits a repository's brief in a staged conversation — narrative first, then frontier rounds that ask only what the record cannot yet settle, options at conjectural questions (at most three candidate construals, a ceiling not a target, with a null answer always available), and a per-item confirmation — distilling committed products into the brief and a ledger while the transcript is discarded. Entry is one door for both modes: a brownfield repository arrives pre-populated from embark probe coverage, provenance-stamped and still requiring confirmation; a greenfield repository is the same interview run from the all-blank coverage state. Command-shaped, because it mutates state — abcd ships zero skillsdraft
  • itd-143The brief gains a framing chapter under 01-product/ — the macro-why home: one section holds the project's framing, the why behind the why, and receives the brief-creation interview's committed framing products; the brief-lifeboat mapping gains the matching row so a lifeboat carries framing like any other sectiondraft
  • itd-144Every livery mark has a surface and earns it: the duckling, the lifeboat, and the two-by-two signal-flag icon are placed deliberately across abcd's surfaces instead of sitting as generated-but-unused assets. The lifeboat mark renders when disembark finishes packing a lifeboat and mirrors when embark unpacks one, so the direction of travel reads at a glance; the duckling appears as the mascot wherever the harness greets a human; the icon becomes the website and app icon. Settles the forge/web logo question itd-112 deferred as 'the existing logo stays for now'. Follows itd-133, which shipped the marks deliberately unwired, and consumes itd-112's colour ladder and emission discipline rather than minting its own.draft
  • itd-149abcd handles inbound security advisories and issues, and cuts the release, for every managed repo. The 2026-08-27 security-advisory pilot proved the loop by hand across two independent operators: advisory and issue intake, recall-dedup triage against the ledger, record-first fixes in isolated worktrees, one integration branch, an independent adversarial gate over the assembled diff, auto-merge armed only after APPROVE, and a derived release cut through the semantic-receipt gates. This intent automates that loop as abcd capability for any managed repo, with findings F-A through F-W of the pilot note as the acceptance-criteria source and F-U (re-run every required pass against the final content commit; never transfer a verdict) and F-Q (the two release gates are human-by-design) load-bearing.draft
  • itd-159the managed .gitignore visibility table has no mode for a public repo that commits its record: on abcd-cli (public, single-repo-curated-release, .abcd/** deliberately in-tree) ahoy install applied the public policy and fenced /.abcd/ and /memory/, contradicting the repo's own boundary that the record is present in every checkout. The visibility table needs a committed-record declaration (config or marker) that suppresses the fencedraft
  • itd-163A cited source always resolves and an adopted inspiration is always acknowledged: the reference-closure and acknowledgements-mirror gatedraft
  • itd-164A source is licence-vetted before the record may lean on it: cite refresh records the verdict, the gate reads the committed baselinedraft
  • itd-165A failed fidelity verdict becomes work somebody can seedraft
  • itd-167The product thinker answers a stop in a medium they already use, and answers it whenever they get to itdraft
  • itd-168The product thinker sets how the system talks to them, and the defaults are plain language and options to choose fromdraft
  • itd-169An agent loop that stops says who it is asking and what it needs, and never simply haltsdraft
  • itd-170What the product thinker reports after using the product finds its way back to the promise that predicted itdraft
  • itd-171A decision points back to the conversation where it was reacheddraft
  • itd-172Every record has a short title and a one-line summary a non-engineer can readdraft
  • itd-173Verification escalates from the built-in check to an outside audit, and the product thinker picks the rungdraft
  • itd-174Each repository configures how far its facilitator is consulted and when it escalatesdraft
  • itd-175The product thinker writes down how this could be wrong, and what would show itdraft
  • itd-176Whatever ships says how hard anyone looked at itdraft
  • itd-2609090746410233A lifeboat packs from a worktree, a branch, or an abandoned feature test, experiment or implementation, not only from a whole repositorydraft
  • itd-2609090746414083A lifeboat packs from a lab session home, the throwaway experiment's intention, harvest and bundle, with the same coverage honesty as a repositorydraft
  • itd-2609091416304128capture resolve refuses a record the default branch has already closed, judged by the last fetchdraft
  • itd-2609150819439571abcd has no supported operation for correcting a factual error inside a durable record, and no documented convention saying what to do instead. The record is deliberately not rewritten, which is right, but "not rewritten" and "wrong" are different states and only the first has a mechanism.draft
  • itd-2609151516525843A Repository Can Ban A Name On Its First Commit, And A Machine Can Ban One Everywheredraft
  • itd-2609151658486398A release cut publishes the security advisories its fixes close: when the release workflow cuts a version, every draft advisory whose fixing record shipped in that cut is published with the fixed version stamped and its opt-in credits, and an advisory whose record was closed as won't-fix is closed as not a vulnerability, so no fixed advisory sits unpublished after its release and no hand step decides which ones publishdraft
  • itd-2609151838327688An opt-in adapter to a local message broker brings push delivery and cross-machine reach to the session mailbox: with the adapter enabled a session is woken the moment a message arrives, machines on the local network exchange messages without a shared mount, and every delivered message is still mirrored to the mailbox as a record; without it the mailbox works as beforedraft
  • itd-2609180517121254Every payload a host hands back from a delegated step names the model that produced it and the number of agents that ran, and the ingesting verb refuses one that does notdraft
  • itd-2609231507251267Release pages on the project websitedraft
  • itd-2609291924469783Every lint warning rule shares one baseline file that only shrinks, so a new warning fails the change that introduces itdraft
  • itd-2609292106557115A fresh machine installs abcd through one small starter that hands over to a trusted abcd binarydraft
  • itd-2609292107351737A development session's token cost is measured, and set against the size class its spec predicteddraft
  • itd-2609292108089653Ingesting and consulting sources are abcd verbs, and no corpus entry is a keyword stubdraft
  • itd-2609292108373494The grill hands the interview to an installed interviewing skill, and runs its own when there is nonedraft
  • itd-2609292109005937An opt-in local model checks every prompt for secrets and personal data before it leaves the machinedraft
  • itd-2609292109214516Rule injection is a seam: the native loader stays the default, and an opt-in CARL back end can take it overdraft
  • itd-2609292109475690Every verb family has a behavioural scenario that drives the built binary end to enddraft
  • itd-2609301020001595A pinned-action bump syncs its scaffold template and lands re-authoreddraft
  • itd-2609301918174237A remote provider takes a file-reading agent only as a fixed, blanked, capped bundledraft
  • itd-2610021503208208Personal git hooks keep running in abcd-managed repositoriesdraft
  • itd-2610031259176838Outside contributors reserve work through a draft pull request that abcd honoursdraft
  • itd-2610031325050110abcd notices a harness update downloaded but not yet runningdraft
  • itd-2610031651058674abcd's check reports README parts that have gone stale, and writes nothingdraft
  • itd-2610040740108331The dashboard on the home network, without Tailscaledraft
  • itd-2610040740122709Acting from the dashboard: rewriting the brief and approving intentsdraft
  • itd-2610040740135705The dashboard for more people: the facilitator's view and the team's, configurabledraft
  • itd-2610040754440360The private dashboard for every abcd-managed projectdraft
  • itd-2610040754453237The public record site for every abcd-managed projectdraft
  • itd-2610040817105016Every brief section shows what realises it, and a brief change names what it touchesdraft
  • itd-2610040822131032A lab runs end to end from a question the product thinker asksdraft
  • itd-2610050548126044abcd reminds a session to refresh its handover note only when that session changed the treedraft
  • itd-2610070544145422Someone on Windows installs abcd and it just works: thedraft
  • itd-2610070549060530A word in a new idea marks it to revisit, and the board puts it firstdraft
  • itd-2610070550516046On the dashboard, a product thinker sees the brief and their ideas together, and puts the ideas in orderdraft
  • itd-2610071545369520A person confirms the assistant's verdict on each warned banned-name line instead of judging it alonedraft
  • itd-2610071545380041Work about abcd itself goes to abcd as a report, never into a managed repository's own plansdraft
  • itd-2610100627454580An agent's text comes back from abcd's rewriter written for its reader and within its limitsdraft
  • itd-2610100704270254An abcd run sets how many sub-agents it keeps alive by the models they run ondraft
  • itd-2610110940216682Every change is checked in full once, on exactly what landsdraft
  • itd-2610111655362931On the dashboard, the product thinker and facilitator review memory notes and promote the ones worth keepingdraft
  • itd-2610141646126492A librarian turns sources into a quoted reading packdraft
  • itd-2610141646452213Ideate starts from a source through the librariandraft
  • itd-2610141646456128A private ideate verdict stays privatedraft
  • itd-2610141646463379A reviewer's extra check must name what it protectsdraft
  • itd-2610141646467500Ingested pages stay private until a person promotes themdraft
  • itd-2610141646469491A cheap watcher wakes an agent only when something needs actiondraft
  • itd-2610142116477426A research question becomes a shared, citable notedraft
  • itd-2610161647248332abcd finds out what the forge can do before choosing a routedraft
  • itd-2610161710315026Unattended runs reach only a declared list of hostsdraft
  • itd-2610161710316538Drains and builds a person's session drives report how isolated they weredraft
  • itd-2610161904178040People who think in Emacs can edit the brief with Emacs keysdraft
  • itd-2610171228577260A product thinker settles a visual design in rounds that abcd runs end to enddraft
  • itd-2610222029228127Every session's checklist reaches a shared copy and the phonedraft
  • itd-2610230856403803A build run's dependent lane cannot start until its predecessor has merged into the default branch: readiness reads a predecessor as landed only when its lane is done, its pull request an ancestor of the default branch, so a step that needs another waits a whole preflight and merge-queue cycle (about one to two and a half hours each on 2026-10-22) before it opens. Stacked changes are standard practice for dependent work (Graphite, Sapling and ghstack stacks, and merge queues taking a stack in order), and on 2026-10-22/23 that shape was rolled by hand twice: merge-gate steps 2 and 3, and model-matrix step 2 stacked on the route branch. Building it is more than a fix: the dependent lane's pull request is based on the predecessor's branch, the stack merges in order, and a lane rebases (and re-stamps what it resolved) when the predecessor changes.draft
  • itd-2610240850336695The person grants their sessions what they may do alone, until a timedraft
  • itd-2610240913343804No surprises: abcd says up front what it will do on its own and what it will askdraft
  • itd-2610240933025076abcd plans unattended and asks only what a person ownsdraft
  • itd-2610241015120503The person and the repository agree when abcd may merge, and what a cloud session may dodraft
  • itd-2610241331131356The session view reads live agent state from a workspace managerdraft
  • itd-2610261025516272Private repos land checked work without renting CIdraft
  • itd-2610262140595217abcd records how each preflight on a machine behaveddraft
  • itd-2610262141001890abcd adjusts how many preflights run at once from what it recordeddraft
  • itd-2610281253044600The status line says what each session is working ondraft
  • itd-2610290239150589The brief reads as the design and why, and each command's behaviour is written once, in the page agents followdraft
  • itd-2610290858096130A person hands their unfinished and private work on a repository to another account, computer or colleague, and it arrives whole and privatedraft
  • itd-2610290858115394A repository's maintainers hold its quality gate: a contributor's change waits for a maintainer's approval, and only a maintainer starts a release, adopts an intent or makes private work publicdraft
  • itd-2610300955026531Agents can work under a forge account of their owndraft
  • itd-2610300955031405A merge approval can require a security key touchdraft
  • itd-2610300955049260Approve a merge from the dashboard or a web appdraft
  • itd-2610301327282266abcd's help fits the screen it is read ondraft
  • itd-2611011151475128Every documentation surface is rendered from its one homedraft
  • itd-2611011151512956Hand-written text in a rendered page is caught and offered back to its sourcedraft
  • itd-2611011230226453Agents abcd starts on your API key stay within the budget you setdraft
  • itd-2611011239589823A project's how-to guides and learning material stay current with the productdraft
  • itd-2611011325403127Every landing shows what it cost and the next run's estimatedraft
  • itd-2611011325428560A solo private repo can self-attest its gates, labelled sodraft
  • itd-2611011325430933A machine the person owns checks agents' work independentlydraft
  • itd-2611011325449761New repos offer a choice of check profiles with their costsdraft
  • itd-2611011333366788abcd resolves every layered setting through the shareddraft
  • itd-2611011813155166A repository switches an abcd verb or project gate offdraft
  • itd-2611011813162141A repository names a sequence of abcd steps a person runsdraft
  • itd-2611011813175068The product thinker approves a goal's scope oncedraft
  • itd-2611012123486967Raising a spending cap needs the person's touchdraft
  • itd-2611012123505400Hosted CI reuses test results that cannot have changeddraft
  • itd-2611012200551577Every reading of git state goes through internal/gitutildraft
  • itd-2611031342000215The status line shows each role what it needs, in a table a repository can tunedraft
  • itd-2611040344170206Unattended work runs on a named profile, one per way of payingdraft
  • itd-2611041549483696An unattended run writes one private daily digest pagedraft
8References a record the tree does not hold
1900Linked to nothing, and nothing links to it

References a record the tree does not hold8

! adr-22 → adr-14supersedes not in the tree
! adr-22 → adr-15supersedes not in the tree
! adr-22 → adr-17supersedes not in the tree
! adr-25 → adr-8supersedes not in the tree
! adr-27 → adr-16supersedes not in the tree
! adr-28 → adr-18supersedes not in the tree
! adr-35 → adr-4supersedes not in the tree
! itd-3 → spc-1implements not in the tree

Linked to nothing, and nothing links to it1900

  • iss-11agent count drift: 01-agents.md declares 16 agents; press-release, 04-scope and 05-prompt-quality still say 15.
  • iss-47generated CLI reference with a drift test: generate the verb reference pages from the cobra command tree and wire a go test that fails when the committed pages drift from the tree — replacing the phantom freshness gate that docs/reference/cli/README.md currently claims (see phantom-enforcement-claims). A sibling project runs exactly this shape: generated CLI docs gated by a drift check inside the normal test run. Acceptance corpus: the reference pages that do not exist today; the drift test is proven by regenerating after any verb change.
  • iss-58history capture requires a bootstrapped ~/.abcd/history store, so the autonomous run cannot dogfood transcript capture until ahoy install runs on this repo (ahoy doctor: 12 detection gaps). Also the error says 'run abcd install' but the real verb is 'abcd ahoy install' — misleading remediation text.
  • iss-69frontmatter canonical consolidation + delimiter bug: internal/core/lint (frontmatterFields) and internal/core/memory (parseFrontmatter/splitFileFrontmatter) each carry their own frontmatter scanner instead of internal/core/frontmatter — migrate both, behaviour-preserving, separate refactor commit (seed1); note memory needs nested-map values (source:) the flat scanner lacks — widen or scope. Bug: the canonical scanner closing-delimiter check compares the CR-trimmed line to exactly triple-dash, so a closing triple-dash with a trailing space/tab is not recognised and body lines leak as fields — TrimRight before both delimiter checks (frontmatter.go:37, C5). Corpus: the two lint/memory copies + the delimiter case.
  • iss-71capture ledger concurrency + unvalidated ForceID: transition() (resolve/wontfix) takes no flock (only reservePath does) so two concurrent conflicting transitions on the same iss split-brain it across two status dirs — permanent corruption, findIssue then always ErrDuplicateIssueID (workflow.go:129, C4); reservePath builds a path from and O_EXCL-creates a placeholder for ForceID BEFORE validateStrict checks it against the iss-id regex, a pre-validation filesystem touch/traversal (alloc.go:91, P13). Detector: hold the ledger flock across findIssue+commitTransition; reject a non-matching ForceID before any filesystem op. Corpus: C4, P13.
  • iss-106GL002 stripInlineCode restores the whole line on an unpaired trailing backtick (and mishandles double-backtick spans), so a closed code span containing an enforced synonym plus a later stray backtick fires a spurious blocker — fails toward over-flagging, never misses drift; found by burst-5 correctness review, not present in current corpus
  • iss-107ahoy install --visibility <v> --yes reports 'already up to date' without applying the explicitly requested visibility on an already-configured repo: skip-if-set beats an explicit flag — stepConfigValues short-circuits when repo.visibility is validly set (internal/core/ahoy/apply.go:196) and ValueOverrides are only consulted on the config-gap path (apply.go:179->220), so the flag silently no-ops; an explicit flag value should either apply as an update or error loudly, never silently skip (maintainer hit this from another repo and hand-edited its config)
  • iss-135WalkFiles start-boundary divergence for a non-dot start: a start dir named in the skip set would now be walked and a regular-file start returns nil; unreachable today (both callers pass dot) — flag for any future caller passing a non-dot start
  • iss-145receipts gate process integrity, not maintainability: candidate principle surfaced by the 2026-07 software-factories critique (primary observation: RL rewards fast oracles — tests pass in seconds — while bad architecture's cost function is measured in months, so maintainability has no fast oracle and models are not penalised for eroding it). Consequence for abcd: no receipt or deterministic gate can certify design quality; that verdict stays human (verifier-selects-gates-decide), and the maintainer merge on every PR is load-bearing, not ceremony. Candidate homes: a principle file or a brief mental-model line; adoption is the maintainer's call.
  • iss-149The positioning check bounds each surface read to 1 MiB but nothing bounds the number of surfaces a committed registry may declare, so one abcd audit run over a hostile repo can be made to hold an unbounded multiple of that cap. Detector: a Config.Validate test that refuses a registry declaring more than a fixed surface count.
  • iss-166ahoy install --yes silently skips the optional identity-pin category: the flag is documented as approving every resolvable change category without prompting, and it reports 'already up to date', yet the interactive path still offers the optional pin (.abcd/config/identity.json). Either --yes covers optional categories too, or its help and the completion output must say optional categories are excluded and how to apply them.
  • iss-173three-tier-layout's local-artefact placement check matches exact names directly under a committed tier only — residual evasions flagged at review: a nested artefact (a NEXT.md one directory below a tier root), a NEXT.md at the .abcd/ root itself (one directory off the modelled incident), and lowercase name variants on case-sensitive filesystems all pass clean. Widening (depth, roots, case folding) must not start flagging legitimate tier content.
  • iss-212The attribution gate merged in PR #217 is dead scaffolding until it is added to the branch's required status checks, and it is not there. Verified 2026-08-11 after the merge: main's required contexts are still check (macos-latest), check (ubuntu-latest), gitleaks, record-lint, smoke, zizmor — no "attribution" — and enforce_admins is false. The workflow runs and reports green on every pull request, so the repo now LOOKS gated while nothing is actually blocked; that is the false green the loud-staging principle refuses, and it fails the "wired or it isn't done" boundary the same way (no dead scaffolding). The gate was built precisely because the maintainer said it must be certain they do not have to check for attribution drift by hand; in its current state that certainty does not exist, and the appearance of it is worse than the previous honest absence.
  • iss-214The attribution gate refuses a legitimate, exact model identifier: TRAILER_RE ('^Assisted-by: [A-Za-z][A-Za-z0-9._-]*:[A-Za-z0-9._-]+$', scripts/check-attribution.sh) has no bracket in its character class, so 'Assisted-by: Claude:claude-opus-5[1m]' FAILS while 'Assisted-by: Claude:claude-opus-5' passes. Verified 2026-08-11 by running the script's own body check over seven trailer variants. The bracketed form is not a typo — it is the exact identifier of the 1M-context Opus variant, and 'git log' shows 33 commits in this repo's own history already using it (claude-opus-5[1m] x33, claude-opus-4-8[1m] x5). The convention AGENTS.md:132 and CONTRIBUTING.md:31 state is to name the model VERSION, so an agent that reports its precise identifier is following the prose and failing the gate. Consequence is a PR blocked mid-run for correct disclosure, and the obvious workaround — silently truncating the suffix — degrades the very disclosure the trailer exists to provide, since [1m] distinguishes a materially different model configuration. This will bite an autonomous multi-agent run, where the failure surfaces as a red gate on a PR nobody is watching. Fix direction: widen the version half of TRAILER_RE to admit a bracketed context suffix (e.g. allow a trailing '\[[A-Za-z0-9._-]+\]'), rather than asking contributors to drop it; and add the two historical forms to the script's own test corpus so the regex is proven against identifiers actually in use rather than only against the happy path. NOT a defect, recorded here so it is not re-raised: the gate's rejection of a bare 'Assisted-by: Claude' with no version (9 commits in history) is CORRECT — the convention requires a model version, and those nine commits are non-conformant record rather than gate error. History is not re-checked; the gate runs on pull requests only.
  • iss-219ahoy dev-install tests read the host PATH: a stale installed abcd (e.g. the July dev shim in ~/.local/bin) makes the four install-mode tests fail with an unexpected '(shadowed on PATH)' suffix, so make preflight blocks pushes from any machine with abcd installed. The tests should run against an isolated PATH.
  • iss-222ahoy install --dev against an existing unowned track-latest wrapper at the target path performs no bin write, reports no symlink/shadow gap, and leaves install_mode empty — a silent no-op where loud staging requires either adopting the equivalent wrapper, refusing with a named gap, or reporting the skip on the result
  • iss-224ahoy install --yes returns status=partial with remaining symlink.missing but emits no note explaining the refusal (unwritable /usr/local/bin); declined_categories is null and notes are absent, so the user cannot tell why the symlink was skipped or what to do next
  • iss-226ahoy skill doc documents a --bin-dir flag for ahoy install/uninstall, but the binary rejects it (unknown flag); the documented escape hatch for an unwritable default bin dir does not exist
  • iss-235The review lenses are scattered as separate agent TYPES (abcd:ruthless-reviewer, abcd:security-reviewer, and the persona-lens as an ad-hoc prompt) rather than a single surface. Consider consolidating them under one verb: bare /abcd:review lists the available lenses; /abcd:review --ruthless / --security / --persona (and future lenses) runs a named one. A single verb is easier to discover, keeps the lens set in one registry, gives cloud routines a stable fallback (the verb hand-loads the lens prompt when the plugin's agent types are unavailable — the 2026-08-16 canary found the abcd:* agent types do not resolve in a routine session), and matches how the other surfaces are shaped as verbs. Half-formed (maintainer thought): naming and whether lenses stay agent-backed under the hood are open.
  • iss-242abcd intent --json reports bucket counts and spec links only — no per-intent listing. A planning sweep over drafts/ (which intents are plannable vs seeded-placeholder AC, filed when) required shell-grepping 55 files and git history. The verb wants a list mode with per-intent id, title, bucket, ac_state (seeded|real), and filing date; the seeded placeholder is a stable string, so ac_state is cheap.
1880 more

supersedes44

Not a fault: the record on the left replaced the one on the right

  • adr-22 → itd-47Oracle-Backed Gates Pass Honestly Without A Human In The Loop
  • adr-26 → itd-49Flow-State Drift Becomes Visible Before It Compounds
  • adr-32 → adr-12`.work/issues.md` stays the live operational ledger; the structured per-issue store is deferred until the native spec layer schedules the migration (historical)
  • adr-37 → itd-72Publishing A Release Is One Atomic, Refusable `ship`
  • adr-54 → itd-141docs-lint enforces the writing style guide's machine-checkable rules: an em dash inside a list item, a lower-case letter opening a list lead-in after its colon, and a capital letter after a semicolon are flagged as findings, with code spans and fenced blocks masked, so the canonical style guide's machine-enforceable subset is a shipped gate rather than a review habit — and the guide marks a rule machine-enforced only once its lint ships
  • adr-2609021016286571 → adr-58A reading is commissioned about something, so the invocation takes a scope
  • adr-2609090717039680 → adr-29A native local redacted transcript corpus
  • adr-2609091248200336 → adr-2609091014087993A tool never creates directories in user-owned project space; agent and session scratch is machine-scoped
  • adr-2609091248201071 → adr-2609090717039680The transcript corpus is a sibling store that creates itself, and the per-repo location is an opt-in pull
  • adr-2609151706587280 → adr-46Persisting the hook binary never weakens the verification posture — every promotion re-verifies, and SessionEnd performs no network work
  • adr-2609212115255771 → adr-9Phase as a product-reflection layer between brief and intent
  • adr-2609292012006845 → adr-2609212115255771Phases and milestones are retired: sequencing is dependencies rendered as status, the checkpoint is the derived release
  • adr-2609300107513982 → adr-2609221009491186A provider adapter serves only the models it lists, under a vendor denylist no listing overrides; everything else runs on the host
  • adr-2610031751065746 → adr-2609091248200336A tool never creates directories in user-owned project space; the store's location binds now and its verbs bind when the store ships
  • adr-2610031751066232 → adr-2609091248201071The transcript corpus is a sibling store that creates itself through the canonical directory primitive
  • adr-2610110925465593 → adr-2609151138420062The decisions log is a folder of minted records, not one appended file
  • adr-2610290238168123 → adr-2609231028044006Shape claims in the brief's surface chapters are derived, never hand-authored
  • adr-2610300908239458 → adr-2610142116480836Ideate verdicts are private or public by the person's choice, and an idea's source is named publicly only when it graduates
  • itd-31 → itd-32Every Audit In Abcd Knows What It Audits, By What, And Against What
  • itd-48 → itd-31The Brief and Every Intent Stay Consistent — Or Abcd Tells You Why They Don't
  • itd-94 → itd-27Domain Experts Get Their Intents Grilled Before Anyone Codes Them
  • itd-121 → itd-20`/abcd` Tells You Where You Are
  • itd-163 → itd-145An adopted idea cannot ship uncredited: abcd enforces its own acknowledgement convention mechanically, so a record that cites an external source, standard, or tool without a matching ACKNOWLEDGEMENTS entry fails the record gate and names what is missing. 'Credit in the same change that lands it' stops depending on the author remembering. Seeded by a real miss in this repo: the maritime signal-flag standard the livery logo encodes and the NO_COLOR convention the colour ladder implements both shipped before their credit landed, and nothing caught it.
  • itd-2609091034175565 → itd-33Multiple Agents Coordinate On Intent And Spec Work Without Duplicating Effort Or Producing Competing Artefacts
  • itd-2609201916056194 → itd-2In-Session Subagent Dispatch — the Default Host-Delegated Oracle
  • itd-2609201916151817 → itd-29Domain Experts Run A Spec Autonomously And Recover From Anything Without Touching Git
  • itd-2609201916151817 → itd-58A Real Reviewer's SHIP Verdict Reaches The Session Gate Through A Channel The Worker Cannot Forge
  • itd-2609221009495079 → itd-17Pick the Right Oracle for the Job, Automatically
  • itd-2610030810350727 → itd-110The grill interview renders with clear structure and colour instead of a wall of prose: each question visually separated, the decision point, options, and the recommended answer distinctly styled, progress through the design tree visible, so the person being grilled always knows what is being asked and where they are
  • itd-2610030810350727 → itd-2609151541116052During the peer-listing planning interview on 2026-09-20, the agent listed the rewritten acceptance criteria in prose and then asked, through the interactive question view, whether the criteria were the product thinker's. The prose was not on screen while the question showed, so the product thinker was asked to confirm text they could not see (iss-2609202058058301). A confirming question has to carry what it confirms.
  • itd-2610032150577708 → itd-139Carol's team adopts abcd and gets a readable record the next day, without writing a line of site code
  • itd-2610032150577708 → itd-2610032150580455The dashboard from anywhere, through Tailscale
  • itd-2610091016262335 → itd-2610052000411162Anyone can open, edit on their own device and submit the brief of a public abcd-managed project on abcdesign.app
  • itd-2610091016262335 → itd-2610052000424067A group works on one public project's brief together on abcdesign.app, adds notes, and exports the combined work
  • itd-2610170634394993 → itd-2609150819440345Which session holds which worktree, branch or record is coordinated entirely by conversation, so every new session repeats a handshake that nothing records. A session joining work in progress has no way to ask what is already claimed: it messages the peers it can see, waits for replies, and rebuilds a picture that the sessions before it had already built and did not write down. One measured encounter cost four messages and about fifteen minutes before any work began, and the picture it produced is not durable, so the session after that pays again. The convention that a diff you did not make is a peer's work depends on knowing who the peers are and what they hold, which is precisely the thing no artefact carries. The repository already records this gap for the narrow case of detecting a peer session before mutating git state; the wider case is claim rather than presence, and the two want the same substrate. Whatever holds it should be as cheap to write as it is to read, because a coordination record nobody updates is worse than the chat it replaced.
  • itd-2610222214476887 → itd-118Merged work leaves no residue: abcd-managed repos delete a PR branch on merge, and abcd tidies the stale local branch, tracking ref, and worktree
  • itd-2610261025516272 → itd-115A Ready PR Merges Without Ever Wedging BEHIND
  • adr-22 → adr-14not in the tree
  • adr-22 → adr-15not in the tree
  • adr-22 → adr-17not in the tree
  • adr-25 → adr-8not in the tree
  • adr-27 → adr-16not in the tree
  • adr-28 → adr-18not in the tree
  • adr-35 → adr-4not in the tree