Development record
Work
decisions124
proposed 18accepted 91deprecated 1superseded 14
proposed18
- adr-26110507404532332026-11-05A stop is recorded state a person sets, and one shared folder is the exception to the owner-only store
- adr-26110118131957492026-11-01abcd never runs a foreign executable under its own name, and no code that writes records is loaded at run time
- adr-26110118131905272026-11-01A repository declares a sequence's shape but never a widening flag
- adr-26110113324270732026-11-01abcd resolves every layered setting by one precedence rule
- adr-26110113271648952026-11-01A self-attested result is labelled as such, and only the person switches it on, by an act abcd's own verbs refuse to its agents
- adr-26110111530580852026-11-01A re-render never discards hand-written text unasked
- adr-26103102350006542026-10-31An unattended plan stands in for the sign-off only on a recorded, reviewed, unchanged draft
- adr-26103016385582602026-10-30A published refusal code is never renamed or reused
- adr-26102408501932812026-10-24A human-set autonomy grant permits, separately from the agent-written waiting-on badge
- adr-26101810035419972026-10-18The away mode's stop check reads the forge once, as its documented meaning
- adr-26101619400049372026-10-16Spent reservation branches are deleted only by one GitHub App the ruleset names
- adr-26101617334005512026-10-16A reviewer or judge in a model-matrix run is told nothing about which model wrote the copy it judges
- adr-26101616214157082026-10-16Unattended runs abcd launches execute inside an OS sandbox
- adr-26101507293333372026-10-15A status branch moves without a preflight receipt
- adr-26101421472425442026-10-14abcd's record is built onto its own GitHub Pages, and abcdev.app becomes abcd's documentation site
- adr-26101408593940972026-10-14abcd's home ignores itself once, and credentials never sit in a working tree
- adr-26100308140233262026-10-03AGENTS.md is the one conventions file abcd writes; it never writes a host-specific copy
- adr-412026-08-16Documents and ledgers never leave the user tier; a public citation requires both gates
accepted91
- adr-26110112310155192026-11-01The launches abcd makes spend a person's money only within the budget they set, past it only through named residuals
- adr-26103009082394582026-10-30Ideate verdicts are private unless the person says public
- adr-26102910374815882026-10-29The contributors page counts people and names none
- adr-26102902381681232026-10-29The brief states the design and why; each command's page states what abcd does, once, and is the copy checked against the code
- adr-26102817185371252026-10-28A release publishes with no approval step
- adr-26102411014632882026-10-24Setup asks short questions and lists its defaults on one plan
- adr-26102410571241512026-10-24abcd installs the tools it needs from downloads pinned in its own release
- adr-26102410225410632026-10-24Each person's commit identity lives on their own machine, not in the repository
- adr-26102410223308722026-10-24Setup edits the shell settings to put abcd's folder on the PATH, on a yes
- adr-26102222223261042026-10-22abcd drives agents with no host session only on the person's own invocation, on the person's own account behind a wall, and hands back what it cannot finish
- adr-26102220262657192026-10-22A session's checklist names a credential by its kind, scope and expiry, never its value or anything that retrieves it
- adr-26102220262629802026-10-22Coordination between headless agents is bounded by deadlines, fenced by the claim's tip, version-checked, and done under each session's own credential
- adr-26101614005429162026-10-16The brief session page asks nobody for a relay address or a token, and a local session signs in by GitHub's device flow
- adr-26101506034848022026-10-15A fresh install's facilitator is a person until the repository says auto
- adr-26101419491106532026-10-14The brief session's browser editor ships as a vendored bundle the binary embeds
- adr-26101416465251172026-10-14The librarian treats unknown rights as all rights reserved, files privately first, and admits only named ratings
- adr-26101416465233732026-10-14Ingested pages are private by default and reach the project only by a person's promotion
- adr-26101209374358562026-10-12A cloud session's unchecked work goes only to a declared work-in-progress prefix that never reaches the default branch
- adr-26101205583286152026-10-12A private advisory's record never enters the public ledger, its store is never committed, and nothing public carries an advisory id or hint
- adr-26101109254655932026-10-11Decisions are one flat file each and the single log is retired
- adr-26100919184439972026-10-09What may enter abcd's memory notes without the person's yes, and how a note reaches the record
- adr-26100911504470542026-10-09The guard reads a script the command names before it judges the command
- adr-26100910162707112026-10-09Who may change an abcd-managed project's design on abcdesign.app, and how a change lands
- adr-26100507112875032026-10-05abcd reaches the harness's user settings only for the status line, with consent
- adr-26100321505811282026-10-03abcd is reachable on a network only through the dashboard, only while the person runs it, and only for people the person lets in
- adr-26100317510662322026-10-03The transcript store is spelled under the renamed home, `~/.abcd.noindex/transcripts/<root-sha>/`, and the rest of its decision is unchanged
- adr-26100317510657462026-10-03The worktree store lives under the renamed home, `~/.abcd.noindex/worktrees/<root-sha>/<name>/`, and the rest of its rule is unchanged
- adr-26100313522126972026-10-03Claims are branches on the shared remote; nothing kept on one computer is the register; claim text is data
- adr-26100307201954012026-10-03abcd keeps its own folders out of desktop indexing only by changing those folders, never the computer's search settings
- adr-26093017205966832026-09-30abcd adds a missing site label to an existing ui.json and never rewrites one
- adr-26093008215586712026-09-30A reading finding is matched against the record when it is stored, reversing itd-180's warm-work-only rule
- adr-26093001075139822026-09-30A provider adapter's allowlist alone decides which models it serves, and abcd bundles no vendor denylist
- adr-26092921161333482026-09-29A dependency bump inside the bound is re-authored as the owner and only pushed by an App
- adr-26092920120068452026-09-29Now, Next and Later list an intent in a lane under Now only; phases stay retired
- adr-26092913420927382026-09-29A drain takes an issue alone only when its fields say it needs no decision
- adr-26092310483081862026-09-23The catalog pins the latest release's plugin archive
- adr-26092210170214992026-09-22Every external credential abcd holds is named in configuration and kept in one store the person chose; never the harness, never the repository
- adr-26091517065872802026-09-15The cache reaches PATH only through a home-scoped attestation the environment cannot write
- adr-26091515131185832026-09-15An intent owns one or more specs, and it ships when its last spec closes
- adr-26090906361720162026-09-09Sub-agent transcript lineage is carried by explicit record fields, not a composite session id
- adr-26090210162883782026-09-02A reframe occasioned by a reading is a committed pointer to an event whose content stays local, and the frame it fingerprints is the framing as it presently stands, which adr-55 enumerates as three committed surfaces
- adr-26090210162865712026-09-02The invocation is a position and a target state, and the committed preset for the position supplies the rest
- adr-26090210162758032026-09-02No session holds both a reading and the ledger, and a per-run context stamp is how the record shows it
- adr-26090210162728672026-09-02The comparative reading receives one widening run's candidates, a positional exception to the prior-run exhaust, with the run derived from the record and no operand added
- adr-26090210162701322026-09-02The principles family is a declared record store whose entries carry typed claims, and it is read cold by statement and never by citation
- adr-572026-08-30Grounds accumulate as an append-only section, in one shared form
- adr-562026-08-30An exclusion control asserts only what it can prove
- adr-26091515280572602026-08-29Three roles, who each artefact addresses, and when the loop stops
43 more
deprecated1
- adr-26100910103870332026-10-09abcdev.app may render public abcd-managed repositories other than abcd
superseded14
- adr-26101421164808362026-10-14Ideate verdicts are private or public by the person's choice, and an idea's source is named publicly only when it graduates
- adr-26092310280440062026-09-23Shape claims in the brief's surface chapters are derived, never hand-authored
- adr-26092210094911862026-09-22A provider adapter serves only the models it lists, under a vendor denylist no listing overrides; everything else runs on the host
- adr-26092121152557712026-09-21Phases and milestones are retired: sequencing is dependencies rendered as status, the checkpoint is the derived release
- adr-26091511384200622026-09-15The decisions log is a folder of minted records, not one appended file
- adr-26090912482010712026-09-09The transcript corpus is a sibling store that creates itself through the canonical directory primitive
- adr-26090912482003362026-09-09A tool never creates directories in user-owned project space; the store's location binds now and its verbs bind when the store ships
- adr-26090910140879932026-09-09A tool never creates directories in user-owned project space; agent and session scratch is machine-scoped
- adr-26090907170396802026-09-09The transcript corpus is a sibling store that creates itself, and the per-repo location is an opt-in pull
- adr-582026-08-31A reading is commissioned about something, so the invocation takes a scope
- adr-462026-08-21Persisting the hook binary never weakens the verification posture — every promotion re-verifies, and SessionEnd performs no network work
- adr-292026-07-06A native local redacted transcript corpus
- adr-122026-06-06`.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-92026-05-16Phase as a product-reflection layer between brief and intent
intents370
drafts 158planned 35shipped 154superseded 23
drafts158
- itd-2611041549483696An unattended run writes one private daily digest page
- itd-2611040344170206Unattended work runs on a named profile, one per way of paying
- itd-2611031342000215The status line shows each role what it needs, in a table a repository can tune
- itd-2611012200551577Every reading of git state goes through internal/gitutil
- itd-2611012123505400Hosted CI reuses test results that cannot have changed
- itd-2611012123486967Raising a spending cap needs the person's touch
- itd-2611011813175068The product thinker approves a goal's scope once
- itd-2611011813162141A repository names a sequence of abcd steps a person runs
- itd-2611011813155166A repository switches an abcd verb or project gate off
- itd-2611011333366788abcd resolves every layered setting through the shared
- itd-2611011325449761New repos offer a choice of check profiles with their costs
- itd-2611011325430933A machine the person owns checks agents' work independently
- itd-2611011325428560A solo private repo can self-attest its gates, labelled so
- itd-2611011325403127Every landing shows what it cost and the next run's estimate
- itd-2611011239589823A project's how-to guides and learning material stay current with the product
- itd-2611011230226453Agents abcd starts on your API key stay within the budget you set
- itd-2611011151512956Hand-written text in a rendered page is caught and offered back to its source
- itd-2611011151475128Every documentation surface is rendered from its one home
- itd-2610301327282266abcd's help fits the screen it is read on
- itd-2610300955049260Approve a merge from the dashboard or a web app
- itd-2610300955031405A merge approval can require a security key touch
- itd-2610300955026531Agents can work under a forge account of their own
- 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 public
- itd-2610290858096130A person hands their unfinished and private work on a repository to another account, computer or colleague, and it arrives whole and private
- itd-2610290239150589The brief reads as the design and why, and each command's behaviour is written once, in the page agents follow
- itd-2610281253044600The status line says what each session is working on
- itd-2610262141001890abcd adjusts how many preflights run at once from what it recorded
- itd-2610262140595217abcd records how each preflight on a machine behaved
- itd-2610261025516272Private repos land checked work without renting CI
- itd-2610241331131356The session view reads live agent state from a workspace manager
- itd-2610241015120503The person and the repository agree when abcd may merge, and what a cloud session may do
- itd-2610240933025076abcd plans unattended and asks only what a person owns
- itd-2610240913343804No surprises: abcd says up front what it will do on its own and what it will ask
- itd-2610240850336695The person grants their sessions what they may do alone, until a time
- 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.
- itd-2610222029228127Every session's checklist reaches a shared copy and the phone
- itd-2610171228577260A product thinker settles a visual design in rounds that abcd runs end to end
- itd-2610161904178040People who think in Emacs can edit the brief with Emacs keys
- itd-2610161710316538Drains and builds a person's session drives report how isolated they were
- itd-2610161710315026Unattended runs reach only a declared list of hosts
- itd-2610161647248332abcd finds out what the forge can do before choosing a route
- itd-2610142116477426A research question becomes a shared, citable note
- itd-2610141646469491A cheap watcher wakes an agent only when something needs action
- itd-2610141646467500Ingested pages stay private until a person promotes them
- itd-2610141646463379A reviewer's extra check must name what it protects
- itd-2610141646456128A private ideate verdict stays private
- itd-2610141646452213Ideate starts from a source through the librarian
- itd-2610141646126492A librarian turns sources into a quoted reading pack
110 more
planned35
- itd-2611041549461012A session that takes over a run steps on from what abcd wrote down
- itd-2611031342011261abcd keeps a per-session ledger of every agent it launches
- itd-2611011325421304A one-package change is checked in minutes, not the whole suite
- itd-2610301914350541A repository sets the layout limits of abcd's questions
- itd-2610301850454860abcd records how each change landed
- itd-2610301750162657abcd's unattended work is spot-checked against specs and intents
- itd-2610301428378830abcd tells an agent what to do next, after a refusal and after a success
- itd-2610301346085246An agent learns how to call abcd from the abcd it runs
- itd-2610240922461281The review set is a setting, in model classes
- itd-2610240823055889Setting abcd up is short, plain, and finishes
- itd-2610230756259215Every question abcd asks passes its check before the person sees it
- itd-2610222215485265abcd drain --drive works through the ledger from a plain terminal
- itd-2610222214476887One command shows everything a repository has left lying around, and clears what is provably finished
- itd-2610170638184486Every session keeps a checklist on disk, so no run stalls and no stall spreads
- itd-2610170634394993Headless agents in parallel coordinate through the shared remote, not conversation
- itd-2610161733316518One task done across a model matrix, re-runnably
- itd-2610161621364075The agents abcd launches on its own work inside a sandbox the operating system enforces
- itd-2610142145236613abcd's own record is built onto its GitHub Pages like any project's
- itd-2610120738075547Work handed to a cloud session comes back, or says why not
- itd-2610091918433290Agents keep memory notes with /abcd:memory, recalled when they matter
- itd-2610091016262335A team edits its brief together live during a call, on abcdesign.app or on the host's own computer
- itd-2610032150577708The product thinker's dashboard, in a browser through Tailscale
- itd-2610031215002409A 'what next?' menu under the board offers the next step, in a Terminal and in a Claude Code session
- itd-2610031214560142The board shows a product thinker what waits on them and what comes next, in a few plain lines
- itd-2610031026190632abcd's update check says when a harness is older than abcd needs
- itd-2610030810370060abcd's interviews run in a plain Terminal, with the same question layout
- itd-2609291923559186The consistency pass runs where records are written and names each finding the same way every time
- itd-2609201916151817One verb takes a READY intent to delivered, and refuses while a decision is open
- itd-2609170822093401abcd proposes the model each agent deserves, and facilitates it where it can
- 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-2609091014076309Session and agent worktrees live in a machine-scoped store that abcd lists and reclaims, never beside the user's own projects
- 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-50The Audit Loop Drives An Intent To Acceptance — Or Calls For A Replan
- itd-39abcd Surfaces the Right Memory at the Right Moment
- itd-7Lifeboats Carry RepoPrompt Workspace Definitions Forward
shipped154
- itd-2611041549471712A person stops the unattended runs of each account that chose a folder, with one command
- itd-2611012048006057abcd's load gate waits for memory as it waits for load
- itd-2610301428390406An agent can practise a filled-in form before it counts
- itd-2610290746077716abcd audits and applies a repository's GitHub settings
- itd-2610262127138979A preflight waits for its turn as one whole run
- itd-2610240919030303Setup offers to put abcd's folder on the PATH
- itd-2610240918594138abcd installs the tools it needs for the person alone, checked
- itd-2610240918547728Every contributor commits as themselves
- itd-2610180912189125A session left to work on never stops while it has work
- itd-2610161617096084After a plugin update, abcd says what changed for this repository
- itd-2610161616086564After a plugin update, abcd offers to bring the repository's setup up to date
- itd-2610161016401115Drains run unattended and visibly
- itd-2610161016394967Drains on several accounts share the work
- itd-2610161016391855A stuck drain lane hands itself back
- itd-2610150602547271The facilitator's mode gates the merge
- itd-2610141646454347An ideate verdict proves its own legs
- itd-2610140858048004abcd's home keeps itself out of a dotfiles repository
- itd-2610112239022766Private security reports stay private until their fix ships
- itd-2610111707085098Each session takes a persona name, shown in the status line and the session list, unique across the machine
- itd-2610091010348892An opted-in project's record is built at each release onto its own GitHub Pages
- itd-2610090831227812A person who types `/abcd:` sees the commands people use
- itd-2610031348087517Setup asks whether abcd keeps parts of the README current, and which
- itd-2610030821294016Connecting a model service from inside your coding session looks up the details and offers the choices
- itd-2610030814013772abcd's projects keep one conventions file, AGENTS.md, and Claude Code reads it directly
- itd-2610030810350727Every question abcd asks reads the same way, on a narrow window and a wide one
- itd-2610030720038073abcd keeps its home folder out of desktop indexing by default
- itd-2609231434459890abcd's own tests warn before running on an overloaded machine
- itd-2609231013154443Every release arrives with a press release composed from what shipped
- itd-2609221842494980A dependency bump lands without a person re-authoring it, and no machine enters the contributor graph
- itd-2609221656373558Two sessions share one run, and the run measures which way of dividing the work is best
- itd-2609221656361680A managed repository reports back to abcd, and abcd says so at its next start
- itd-2609221017023290abcd keeps every external credential the same way
- itd-2609221009495079abcd's typed judgements can run through a decision adapter, measured in a lab before it decides anything
- itd-2609212137129937abcd's text names the product thinker or the technical facilitator, never the maintainer
- itd-2609212137128014abcd lab mechanises the lab conventions three hand-run experiments proved
- itd-2609212137116617A new capture or draft is matched against the record before it is written
- itd-2609212130146198The status-line badge is true at every stop
- itd-2609212130136102abcd's verbs consolidate: modes become flags and five checks become one lint
- itd-2609212113220149Every verb's help opens with one sentence an agent can act on
- itd-2609212103572513An intent names the release it must land by, and the cut says whether it did
- itd-2609212103568351The status board shows Now, Next and Later, computed from the record
- itd-2609212103565953A spec lists its steps, and the build lands them one at a time
- itd-2609211913453478One page maps the record families, and phase, milestone and roadmap are retired
- itd-2609211116005482`abcd build next` picks the readiest planned intent itself, and writes down why
- itd-2609201925079472An autonomous run paces itself by default, and one flag sets the pace
- itd-2609201916056194A role runs through the command-line harness the operator chose, and every fall back to the host is recorded
- itd-2609151138388536Every Decision Is Its Own Record, and the Log Stops Conflicting
- itd-2609150819445595A shipped intent's owed fidelity review is listed, so the debt is paid
106 more
superseded23
- itd-2610052000424067A group works on one public project's brief together on abcdesign.app, adds notes, and exports the combined work
- itd-2610052000411162Anyone can open, edit on their own device and submit the brief of a public abcd-managed project on abcdesign.app
- itd-2610032150580455The dashboard from anywhere, through Tailscale
- 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-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-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-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
- itd-139Carol's team adopts abcd and gets a readable record the next day, without writing a line of site code
- 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-115A Ready PR Merges Without Ever Wedging BEHIND
- 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-72Publishing A Release Is One Atomic, Refusable `ship`
- itd-58A Real Reviewer's SHIP Verdict Reaches The Session Gate Through A Channel The Worker Cannot Forge
- itd-49Flow-State Drift Becomes Visible Before It Compounds
- itd-47Oracle-Backed Gates Pass Honestly Without A Human In The Loop
- itd-33Multiple Agents Coordinate On Intent And Spec Work Without Duplicating Effort Or Producing Competing Artefacts
- itd-32Every Audit In Abcd Knows What It Audits, By What, And Against What
- itd-31The Brief and Every Intent Stay Consistent — Or Abcd Tells You Why They Don't
- itd-29Domain Experts Run A Spec Autonomously And Recover From Anything Without Touching Git
- itd-27Domain Experts Get Their Intents Grilled Before Anyone Codes Them
- itd-20`/abcd` Tells You Where You Are
- itd-17Pick the Right Oracle for the Job, Automatically
- itd-2In-Session Subagent Dispatch — the Default Host-Delegated Oracle
specs199
open 33closed 166
open33
- spc-2611051628562376drain-drive-live-proof-and-key-route
- spc-2611050505250705the-restart-reads-the-forge-and-the
- spc-2611050023402644The launch ledger reaches the status line and a run's own summary
- spc-2611012047503720A one-package change is checked in minutes, not the whole suite
- spc-2610301950480609abcd records how each change landed
- spc-2610301950037469A repository sets the layout limits of abcd's questions
- spc-2610301925429250abcd's unattended work is spot-checked against specs and intents
- spc-2610301917245442Every question abcd asks passes its check before the person sees it
- spc-2610301431108175abcd tells an agent what to do next, after a refusal and after a success
- spc-2610301431075964An agent learns how to call abcd from the abcd it runs
- spc-2610281649196051consult-only-advisor-role
- spc-2610242112593216setup-question-budget
- spc-2610240951109420a-person-sets-how-many-models-review
- spc-2610230805429429every-abcd-session-keeps-a-checklist-on
- spc-2610230758581403several-headless-agents-work-one
- spc-2610230730269295`abcd sweep`: one dry run over every leftover, and `--apply` for what is provably spent
- spc-2610230609005313Live-session setup on the cloud in the two steps the intent promises
- spc-2610161949559050a-product-thinker-who-wants-to-know
- spc-2610161751056096a-person-who-leaves-abcd-to-run-on-its
- spc-2610150728396006sessions-announce-what-they-are-doing
- spc-2610142146250176abcd-s-own-development-record-is-built
- spc-2610120941441282a-person-hands-an-item-from-their
- spc-2610111627213138memory-recall
- spc-2610040847280931plain-terminal-interviews-remaining-work
- spc-2610040741034208a-product-thinker-opens-abcd-s-dashboard-in-a-web-browser-on
- spc-2610031844158884under-the-board-a-short-what-next-menu-offers-the-few-steps
- spc-2610031844142274when-you-type-abcd-in-a-terminal-or-ask-for-the-board-in-a
- spc-2610031342374947when-a-person-runs-abcd-s-check-on-purpose-abcd-also-says
- spc-2610021456200324The consistency pass at commit time: a stable finding key, cross-document lint codes, chunked review, and a pre-commit gate
- spc-2609301811532881The worktree store: `abcd ahoy worktree add|list|prune`, one lane primitive, and a notes archive beside it
- spc-2609211924346308loop-toward-acceptance
- spc-2609202134338445one-verb-takes-a-single-intent-from-ready-to-delivered-witho
- spc-42every-change-starts-in-its-own-worktree-the-primary-checkout
closed166
- spc-2611050505220309the-stop-reaches-the-terminal-drive
- spc-2611041706004822A session that takes over a run steps on from what abcd wrote down
- spc-2611041705580524A person stops the unattended runs of each account that chose a folder, with one command
- spc-2611041701500441abcd keeps a per-session ledger of every agent it launches
- spc-2611020732419632abcd's load gate waits for memory as it waits for load
- spc-2610301431131636An agent can practise a filled-in form before it counts
- spc-2610290749113317abcd audits and applies a repository's GitHub settings
- spc-2610262202438999A preflight waits for its turn as one whole run
- spc-2610241008191355when-the-folder-abcd-installs-into-is
- spc-2610241008092356when-abcd-needs-another-tool-such-as-a
- spc-2610241007568207every-person-who-commits-to-a-repository
- spc-2610241007434505a-person-sets-abcd-up-in-a-repository-in
- spc-2610230813348813abcd-drain-run-from-a-plain-terminal
- spc-2610180914469489A session left to work on never stops while it has work
- spc-2610170652111963each-run-should-record-the-model
- spc-2610170635097509after-update
- spc-2610161609350616The facilitator's mode gates the merge
- spc-2610161044461448drain-many-accounts
- spc-2610152057143798the-status-line-should-show-which
- spc-2610142138047122an-ideate-verdict-proves-its-own-legs
- spc-2610141709461788anyone-who-opens-abcdev-app-finds-the
- spc-2610141709430146the-product-thinker-and-the-technical
- spc-2610140858477542abcd-s-home-keeps-itself-out-of-a
- spc-2610120557432880when-someone-reports-a-security-hole-in
- spc-2610110931381316append-only-logs-conflict-on-every-merge
- spc-2610100613109045a-person-who-types-abcd-sees-only-the-commands-people-use
- spc-2610031753359849Reservations on the shared remote: `abcd reserve`, one liveness judgement, and the build, drain and land integration
- spc-2610031704338417when-abcd-sets-up-a-project-it-asks-the-owner-whether-abcd
- spc-2610031309233367abcd-keeps-its-home-folder-out-of-desktop-search-by-default
- spc-2610031241482088connecting-a-model-service-from-inside-claude-code-works-out
- spc-2610031156364295evaluate-whether-claude-md-can-be-removed-safely-now-that
- spc-2610030944505997asking-and-layout
- spc-2610030911534855a-person-can-run-abcd-s-interviews-in-a-plain-terminal
- spc-2609301921521360the-budget-check-and-the-rate-limit-checkpoint
- spc-2609251028149555A failed fix round escalates one tier, and a provider route stays on its allowlist
- spc-2609232027132755stray-rule-silent-band
- spc-2609231542463113The load check: preflight and the eval harness warn about strays and extreme load, and never refuse
- spc-2609231435545473The release cut writes RELEASE.md from the press releases of the intents it shipped
- spc-2609230613208843Staleness behaviour is calibrated per platform
- spc-2609230613206890Glossary pointers, the family lint and the mental model
- spc-2609230613206687The banner fits 66 columns
- spc-2609230613204830Every surface file carries its sub-verb table
- spc-2609230613193436Scaffolded release gate: CI-name wiring, the receipts check and the protocol
- spc-2609230612443069Routine prompts carry the outbound policy
- spc-2609221843355061a-dependency-bump-lands-without-a-person-re-authoring-it-a
- spc-2609221657588816two-orchestrator-sessions-in-one-user-account-share-an
- spc-2609221657168936a-repository-abcd-manages-reports-back-to-abcd-itself-one
- spc-2609221533057881abcd-runs-a-delegated-agent-through-a-command-line-model-run
118 more
issues5061
open 1830resolved 2504wontfix 727
open1830
- iss-2611060823132319A stop removed by an age cleaner on Linux reads as no stop, so new runs can open as well as a run it had not halted, and a halted run's refusal says the stop has lifted though no one lifted it. The v0.16.2 changelog names the run it had not halted and not the new runs.
- iss-2611060810148228`abcd agents` is new since v0.16.1 and read-only, with no line in the v0.16.2 changelog, because no record in the cut covers it.
- iss-2611060810137326The v0.16.2 changelog's stop line gives bare `abcd implement resume` as the way to find a run id, while the changelog's line on the restart intent reads as if that verb had not shipped: its intent stays planned because the listing lacks part of its criterion, and `--run` goes unnamed.
- iss-2611060810127057`.abcd/development/brief/04-surfaces/19-identity.md:92-94` says comparison folds line wrapping, so a tagline wrapped across two lines is not drift. The comparison sees only what the locator captured, and the fallback locators for `README.md` and `AGENTS.md` (`internal/core/positioning/config.go:120` and `internal/core/positioning/config.go:143`) capture one line. A plain paragraph wrapped across two lines under the top heading is reported `drifted` in both files, showing only its first line, and `abcd identity render` proposes replacing that line with the whole tagline while keeping the second, which would duplicate its text. The claim holds only for the multi-line locators: a `<p>` strapline and the paragraph after the abcd marker block.
- iss-2611060810119096`.abcd/development/brief/04-surfaces/18-ideate.md:163-166` lists where an unresolved record id refuses the verdict: a claim or its primary source, a grill note, a kill attempt, a reviewer's label or sources, the ruling, a rejected alternative, an origin source or the reframing. A reviewer's `implies_building` entries are checked too (`citationPlaces`, `internal/core/ideate/record.go:1151`), and `commands/ideate.md` does not name them either. The field is meant to name gaps, so a composer reading the list would not expect the refusal.
- iss-2611060810115703`18-ideate.md:203`, with line 198, says a run with a second research store below the checkout root succeeds against the checkout's own store and names the stray one. That holds only with `--public`, and line 96 makes private the default. A run with no store flag from such a subdirectory writes the verdict to the private ideas store and nothing to the checkout's, yet its stderr still says `this verb addressed the checkout's research store` (`internal/surface/cli/ideate.go:146`), beside `stored: private` on stdout.
- iss-2611060810104650`11-history.md:290` says each staged transcript's sidecar holds its session and lineage, so nothing is ever encoded in the filename. Staged names encode the capture time and the key, `<timestamp>-<key>.raw` (`stagedFilename`, `internal/core/history/staging.go:290`), and `stagedLockKey` (`internal/core/history/staging.go:443`) derives the agent or session key from that name without reading the sidecar. Pending transcripts are named `<session-id>.raw` (`pendingPaths`, `internal/core/history/pending.go:107`).
- iss-2611060810092646`.abcd/development/brief/04-surfaces/11-history.md:267-268` says the prompt-router entrypoint drains one entry and at most half a megabyte per prompt. `DrainBudget.exhausted` returns false when no entry has been attempted (`internal/core/history/staging.go:194`), so the first entry is redacted and stored whole at any size. The code comment gives the reason: otherwise a transcript over the bound would never leave the disk. The chapter states the bound with no such exception.
- iss-2611060810088225`11-history.md:242` lists among the session-start notices one for a repo last set up under a different version. No such notice is in the session-start body of `internal/surface/cli/cli.go`, where `meta.setup_version` appears only in the comment at line 2352. The nearest behaviour is the constant after-update line (`internal/surface/cli/update_news.go:140`), printed only when something is pending. The list also omits notices that do exist: git giving no root commit, hooks git does not run, the harness settings notice and the unseen-update notice.
- iss-2611060810072511`.abcd/development/brief/04-surfaces/11-history.md:208-210` says a pending transcript the session start cannot place stays pending and unredacted until a later start can place it or an operator discards it, and `.abcd/development/brief/04-surfaces/11-history.md:95` describes draining only as redacting and storing staged transcripts. `abcd history drain` also places pending transcripts first (`placePendingNotices`, `internal/surface/cli/history.go:392`), so one can be filed and stored with no session start. `commands/history.md:66` states this; the chapter does not.
- iss-2611060810065301`11-history.md:186` says every history verb reaches the store through one resolve seam, which creates the store chain and moves a legacy corpus. `abcd history staged --all-repos` (`internal/surface/cli/history.go:215`) and `abcd history discard --pending` (`internal/surface/cli/history.go:526`) skip it: on fresh homes each left the home directory empty, while `abcd history list` created the chain.
- iss-2611060810055166`.abcd/development/brief/04-surfaces/11-history.md:55-58` describes capture as idempotent on the content hash, session id and source labels together: identical content is a no-op and a different session writes a new record. Capture also supersedes (`resolveSupersession`, `internal/core/history/history.go:391`). A body that extends a stored record of the same session, agent and labels deletes that record and the result carries a `superseded` field, and a body that is a prefix of a stored one is a no-op despite its different hash. Neither the chapter nor `commands/history.md` says this, or that a capture can remove a stored record.
- iss-2611060810040824`.abcd/development/brief/04-surfaces/17-guard.md:593-757` describes one bare launch, in which writes outside the working tree are judged by the protected set alone (`.abcd/development/brief/04-surfaces/17-guard.md:668`), and `commands/guard.md:424` says the same. A drive's stage launches walled, with hooks on and no `--bare` (`internal/core/runner/claude.go:190`), and the approver takes `--stage-home`, `--protect` and `--declared` (`internal/surface/cli/guard_approve.go:167`), which bound its writes and refuse a further agent. On a stage the hook denies a call it cannot judge (`internal/surface/cli/hook_occupancy.go:109`), against the chapter's fail-open account at `.abcd/development/brief/04-surfaces/17-guard.md:455-459`. `.abcd/development/brief/04-surfaces/35-drain.md:288-316` describes these walls; the guard chapter has only the three flags in its appendix, with no pointer to them.
- iss-2611060810039095`17-guard.md:765` says the delete entries only warn, and refuse in a repository. Outside any repository `git branch -D x` also blocks as `git-delete-unproven`, exit 1, with the reason `the directory the command runs in is not a git checkout abcd can read` (`internal/core/sweep/deleteproof.go:159`); `git worktree remove x` and `git push origin --delete x` do the same.
- iss-2611060810026397`.abcd/development/brief/04-surfaces/17-guard.md:1044`: The chapter lists same-line carried values as unseen and calls the matter an open ruling, but they block and the ruling is made. All block when the value is assigned on the line (`X='rm -rf /'; eval "$X"`, `P=pkill; $P make`). The ruling is made: internal/core/guard/carried.go cites it, and iss-2609281134544802 is in .abcd/work/issues/resolved/.
- iss-2611060810014724`17-guard.md:335` says a question without abcd's chip, while the mode names somebody, is held to the field limits and marked open. The header rule always refuses it: any header outside the chip grammar is a refusing finding (`internal/core/question/check.go:190`), so `""`, `Q1`, `Pick` and `Pick me` were all denied and no marker was written. Lines 302-305 of the same chapter already describe this refusal.
- iss-2611060810012471`17-guard.md:1038` lists a pid list a kill reads through a variable or a file, or from a `ps | grep` chain, as unseen. `iss-2611040555239973` and `iss-2611040555220611` record the forms that block as `kill-by-search`. They do not record what stays true: `kill $(cat pidfile)` and a bare `kill $p` still allow, so removing the clause outright would leave the chapter implying those are seen. `p=$(ps aux | grep foo); kill $p` also blocks.
- iss-2611060810004413`17-guard.md:483` says a file those tools write is judged only by where it lands in a shared main checkout, and anywhere else is written unchecked. `abcd guard hook` also denies a Write to a stop file or the shared-folder setting wherever it lands (`Write into the stop`, `internal/surface/cli/hook_occupancy.go:178`), and with `ABCD_STAGE_WRITES` set it denies a Write outside the stage and a Write to `Makefile` (`internal/surface/cli/hook_occupancy.go:156`).
- iss-2611060809597822`.abcd/development/brief/04-surfaces/17-guard.md:459-460` says the shim's `UNGUARDED` warning names shell commands or questions through the host's question tool. `hooks/pre-tool-use.sh:4` has a third wording for the host's file-writing tools, `file writes through the host's own tools run UNGUARDED`.
- iss-2611060809582940Beyond `iss-2610230851446558`, which records the blocking exit while the old `.abcd` folder stands: `17-guard.md:455`, with lines 54-58 and 75-77, gives the hook's exits as 0 and 1, and line 456 speaks of the binary's three statuses without defining the third on the hook. `abcd guard hook` itself exits 2 here (`internal/surface/cli/homestop.go`), and only the rename command passes (`admitsRename`). With the plugin binary also absent, `hooks/pre-tool-use.sh` exits 2 even for the rename, so the rename that clears the stop has to be run outside the agent.
- iss-2611060809571307`.abcd/development/brief/04-surfaces/03-embark.md:74-76` describes the scores as handed back in a file, read as a regular file and never through a link. `--scores -` also reads standard input, capped at the same bound (`internal/surface/cli/embark_lessons.go:147-148`). The flag's help says so; the chapter and `commands/embark.md` do not.
- iss-2611060809563011`03-embark.md:165` gives the marker block's outcomes by `docs.target` and does not list an unreadable `.abcd/config.json`, which skips the block with the note `could not be read, so abcd's block was not planted; fix that file and run embark again` (`markerSkipUnreadable`, `internal/core/lifeboat/embark.go:578`). The chapter also does not say this differs from an unknown value, which reads as no choice and goes to `AGENTS.md`.
- iss-2611060809557633`.abcd/development/brief/04-surfaces/03-embark.md:135-136` says embark writes the record families plus the marker block. An embark that writes an issue also leaves `.abcd/work/issues/.iss-alloc.lock` in the target, from the ledger lock taken at `internal/core/lifeboat/embark.go:157`. `.abcd/development/brief/04-surfaces/03-embark.md:121` names the lock but not the file, and in a fresh target the file shows as untracked, so a plain `git add` of the result commits it.
- iss-2611060809546274The packing-history example at `03-embark.md:329` shows `"dest": "../abcd-lifeboat"`. Packing with a relative destination records the resolved absolute path, so the example shows a value the field does not hold.
- iss-2611060809535371`03-embark.md:141` says verification refuses a symlink or an oversize file anywhere inside the lifeboat. The size cap applies only to files the manifest hashes (`internal/core/lifeboat/embark.go:218`): an 18 MiB `review/big.bin` in the excluded layer passes `abcd embark probe` with exit 0, while a symlink there and an oversize hashed file are refused. The comment at `internal/core/lifeboat/embark.go:184` carries the same wording.
- iss-2611060809529676`.abcd/development/brief/04-surfaces/03-embark.md:213-214` says embark carries the pass-B exemption through as the first line of both reports. The first line of the `embark probe` report is its heading, `embark probe: <name> (lifeboat verified)` (`internal/core/lifeboat/embark_render.go:25`), and the exemption follows it. Only `embark from` opens with the exemption.
- iss-2611060809519550`37-embargo.md:17` says the section below lists the acts the command page hands the person. The section at lines 132-134 omits one that `commands/embargo.md:309` lists: putting back any record details they redacted to land a fix, once the advisory is published. Restoring each record into the public ledger, which the section does name, is a separate item on the page.
- iss-2611060809502482`.abcd/development/brief/04-surfaces/37-embargo.md:88-91` says the check refuses the store's location on this machine, and `abcd embargo check --help` and `commands/embargo.md:144` say the same. `buildDenySet` returns at `internal/core/embargo/check.go:735` when nothing is under embargo, before it adds the store's path, so a text naming the path passes while the stores hold no unpublished advisory.
- iss-2611060809502312The drive section of `35-drain.md` (lines 193-340) states the walls, a credential variable and a start from an agent's session as refusals, and its appendix leaves exit codes to the prose. It never states the default cap of eight lanes (`driveDefaultCap`, against no cap on the bare verb); `--yes` and the refusal with no terminal to ask at; exit 3 for a second drive and for a drive stopped, stopped short or holding an issue back, exit 2 for a failed check, exit 130 for the second signal; the refusals for an agent runner not enabled or not admitted and for a role pinned to the host; or the `--until` forms (a date read as the end of that day, or an RFC 3339 instant) and the refusal of a time already past. `abcd drain --help` and `commands/drain.md` state each.
- iss-2611060809492476`.abcd/development/brief/04-surfaces/35-drain.md:759-760` says a route of the judge to opencode is skipped with a diagnostic and the judge stays on the host, with no exception for the drive, and `commands/drain.md:384-385` says the same. Under `--drive` that route refuses the start: `drivePreconditions` returns the refusal at `internal/surface/cli/drain_drive.go:246-247`, and `abcd drain --help` lists it. The skip holds for the bare verb only.
- iss-2611060809486452`35-drain.md:942` lists the cap refusals and line 12 says the cap bounds the lanes a drain opens, but the chapter never says that `abcd drain --max 0` is accepted and opens every lane. The run prints `cap: none (--max not given: all)` although the flag was given, and writes `"max": 0`. The refusal of `--max -1` at `internal/core/implement/loop/drain.go:369` asks for a whole number of lanes, 1 or more, which excludes the 0 it accepts, and `abcd build next` refuses `--max 0` (`internal/surface/cli/build.go:430`).
- iss-2611060809475573`.abcd/development/brief/04-surfaces/35-drain.md:654-655` says the cap is set when a drain begins and a different cap named while it runs is refused, and `.abcd/development/brief/04-surfaces/35-drain.md:943` repeats the refusal. That holds for the bare verb and for a drive over a drain that already has a cap. A drive over a live drain with no cap gives it one: `internal/surface/cli/drain_drive.go:327` refuses a differing `--max` only when the drain's cap is above zero, and `internal/surface/cli/drain_drive.go:391` calls `loop.CapDrainInProgress` (`internal/core/implement/loop/terminal.go:1855`), which stores the lanes already opened plus `--max`, or plus the default of eight. The help at `internal/surface/cli/drain.go:235-236` repeats the chapter's sentence.
- iss-2611060809467300The hook row at .abcd/development/brief/04-surfaces/README.md:280 cites 26-mode.md as the home of `stop` and `stop-failure`. That chapter names neither event, the stop check nor API errors. What `abcd hook stop --help` states (a turn's end blocked while work is owed and naming the next item, allowed only with a session cron firing in time, a last message ending on a question blocked once, the host's cap on consecutive continuations) is described nowhere in the brief; 02-constraints/03-invariants.md:165-177 covers only the check's forge read, and 01-ahoy.md:840 only how its shim resolves.
- iss-2611060809453708`04-surfaces/11-history.md:250` says what the session-start hook prints on its output stream is one fixed sentence and a count. Stdout also carries the `## AWAY` block (`internal/surface/cli/cli.go:2166`), the inbox greeting (cli.go:2323), the update-news line, a second constant line when commit checks are off (cli.go:2381) and the checklist (`internal/surface/cli/hook_checklist.go:39-44`). `04-surfaces/29-report.md:109` and `04-surfaces/40-checklist.md:71-75` describe some of these, so the chapters disagree. The reason the sentence gives holds for each: none of them carries text from a tracked file.
- iss-2611060809443412`.abcd/development/brief/05-internals/07-memory.md:185-189` gives three brackets. `internal/core/rules/brackets.go:79-85` has four: an unknown row applies when no source gives the fill and sends pages as one line each. MODERATE sends the top-ranked pages in full up to 8 KiB and the rest as one line each. DEPLETED's lines come from each page's own summary, not `index.md` (`internal/core/memory/recallpages.go:26-27`, `internal/core/recall/pages.go:2`), which also makes :193's query of `index.md` wrong. MODERATE and DEPLETED also shrink the rules to a heading and first rule, which the chapter never says.
- iss-2611060809438042`.abcd/development/brief/05-internals/07-memory.md:193` says the hook queries the `index.md` of both memory scopes and that on a recall-keyword collision across scopes the narrower scope wins, repo overriding user. `index.md` is never read (`internal/core/memory/recallpages.go:27`, `:61`). A machine page is dropped only when a repo page has the identical filename (`pageItems`, `internal/core/recall/pages.go:22`), so a repo page and a machine page with different filenames and the same `recall:` word are both recalled for one prompt.
- iss-2611060809424276`05-internals/03-configuration.md:1602` says the prompt hook's stdout is the domains block, a `## MEMORY` block of notes, then the status block and nothing else, zero bytes with nothing to show, and that the prompt owing the session its name is the one JSON exception. Three parts differ. The `## MEMORY` block also carries memory pages, as `abcd hook --help` says. A `## AWAY` block follows the status block while the away record holds (`internal/surface/cli/cli.go:2006`). And while that record holds, or once it lapsed with something unread, stdout is one JSON object with `systemMessage` on prompts that owe no name and match nothing (`internal/surface/cli/hook_away.go:177-203`). Line 1629 repeats the same contents for the envelope's `text`.
- iss-2611060809422351`.abcd/development/brief/05-internals/03-configuration.md:1629`: The prompt router's documented `--json` envelope and stderr contract omit fields and a line the binary emits. The envelope also carries fill, bracket and system_message (internal/surface/cli/cli.go:1737-1752; run output included "fill":{"source":"unknown",...} and "bracket":"unknown"), none in the table. recalled also holds page keys (run: "page:fact_eng_repo-page.md"). stderr also carries a once-a-session line when the fill is unknown (run: 'abcd rules: how full this session is, is unknown ...').
- iss-2611060809419595`.abcd/development/brief/05-internals/03-configuration.md:150` says the `force_refresh_every_n` counter only re-injects always-relevant domains. At the backstop `Inject` clears the whole ledger and the recalled ledger, so every domain the prompt matches comes back, and `RuleSet.Match` (`internal/core/rules/rules.go:648`) injects nothing the prompt does not name or hit, so a domain that never recall-matches is not injected at all. The comments at `internal/core/rules/inject.go:56`, `internal/core/rules/inject.go:147` and `internal/core/rules/inject.go:455` carry the same wording.
- iss-2611060809405161`.abcd/development/brief/04-surfaces/README.md:301` documents `abcd rules --prompt`, in the only brief section the verb has, and does not name `--fill <percent-used>`, which sets the context bracket that form shows. `abcd rules --help` registers the flag, and `docs/reference/cli/commands.md:5645` is its only documented home.
- iss-2611060809397681The capture wontfix row at .abcd/development/brief/06-delivery/02-verification-matrix.md:65 says `abcd capture wontfix` moves the issue with the reason and timestamp populated. The moved record carries `wontfix_reason` and a Grounds section and no date or time field, and neither internal/core/capture nor internal/core/issueschema defines one for a wontfix.
- iss-2611060809386735`06-delivery/02-verification-matrix.md:64` says `abcd capture resolve` moves the issue with its resolution and timestamp populated, and line 65 says the same of `abcd capture wontfix` with its reason. Neither writes a time. A resolved record carries `resolution:` and `impact:`, a declined one `wontfix_reason:`, and the only time in either is the id's own mint stamp; `internal/core/capture/workflow.go` reads no clock in the transition.
- iss-2611060809373895`.abcd/development/brief/06-delivery/02-verification-matrix.md:63`: The verification matrix says a capture reports its severity, and it does not. Severity is not reported. Text output is 'captured iss-… (open) — <path>'. A `--severity major --json` run returned id, slug, path, status, uncommitted, no_location, match and ledger, with no severity field.
- iss-2611060809360063`.abcd/development/brief/06-delivery/02-verification-matrix.md:29` says a missing opt-in scanner backend falls back to the native scan, never a hard failure on absence. A repository that armed `gitleaks` in `.abcd/config/gitleaks.json` and lacks the binary fails closed: `internal/adapter/gitleaks/gitleaks.go:19-25` returns `ErrConfiguredNotFound`, carried as a coverage gap on which a release refuses (`internal/core/launch/dryrun.go:321`), and only a write path proceeds on the native scanner and names the gap. `.abcd/development/brief/04-surfaces/01-ahoy.md:980` already calls `gitleaks` required where the repository armed it.
- iss-2611060809354261`.abcd/development/brief/06-delivery/02-verification-matrix.md:26`: The verification matrix's ahoy idempotency row quotes wording and a visibility re-confirm the binary does not produce. The binary cannot print that wording: 'already up to date' occurs under internal/core/ahoy and internal/surface/cli only in a code comment (internal/core/ahoy/ahoy.go:282). The line is `abcd is already set up here; nothing changed.` (internal/core/ahoy/setup_report.go:32), and commands/ahoy.md says a fully set-up repository is reported in that one line with nothing written, so no visibility re-confirm appears.
- iss-2611060809346884.abcd/development/brief/06-delivery/01-build-sequence.md:62 says six further forms of `ahoy` write: `uninstall`, `remote apply`, `connect`, `credential --home`, `worktree add` and `worktree prune`. `abcd ahoy shared-folder <folder>` is a seventh: it writes `shared-folder.json` in abcd's home folder (internal/core/runstop/runstop.go:344-360), and .abcd/development/brief/04-surfaces/01-ahoy.md:34 lists it as shipped.
- iss-2611060809343029`.abcd/development/brief/05-internals/05-prompt-quality.md:101` says research files do not exist for any shipped agent. `.abcd/development/research/prompting/agents/intent-fidelity-reviewer.md` is research for the shipped intent auditor (`.abcd/development/research/prompting/agents/README.md:44`), and :151-155 of the same chapter says it is stranded under the old name, so that no shipped prompt has a research file it can find.
- iss-2611060809335201`.abcd/development/brief/05-internals/05-prompt-quality.md:81-82` says the layer-B harness lands with the first Pass-A agent's spec, the point at which a second agent exists to generalise the runner over. Eighteen prompts already ship under `agents/`, as the same section counts at lines 74-75, and no Pass-A agent has shipped (`.abcd/development/brief/05-internals/01-agents.md:76-88`), so the reason given for the timing no longer holds.
1782 more
resolved2504
- iss-2611051821551531A drive's lane parks at its pull request where facilitator.mode is auto: the merge gate arms only a head a review receipt names, and only the land verb records one, so an unattended drive pushes every lane and leaves it open, holding its reservation until the reservation cap stops the run.
- iss-2611050753557564A terminal drive ends its run at a limit resetting past eight hours and after eight hours of outage or no movement, so an unattended run stops at a limit whose reset lies past eight hours.
- iss-2611050535437225abcd land withdraws the arming before a push that moves an armed pull request's head, and arms the new head only where the merge gate does; the committed pre-push hook refuses a fast-forward it reads as moving that head.
- iss-2611050035192370Nothing reads a failed scheduled run of ci.yml: the nightly macOS suite and the nightly Linux checks can stay red on the default branch with no session told, and since the release path now runs its own macOS suite the first anyone hears of a macOS regression can be a cut that stops. The alert is not small enough to add beside the gate: the prompt's STATUS block is read from disk alone and promises never to touch the network, so the cache needs a refresh outside the prompt, or the alert stays silent in any session where nobody ran the verb; the workflow's name is abcd's own, while abcd status serves every managed repository; and the verb's JSON, its command page, its brief chapter and the generated reference all change with it.
- iss-2611042224527148The release path runs no macOS suite, though the product thinker ruled that each release cut runs its own before releasing, whatever the nightly said. With macOS out of the merge queue, a macOS-only regression merged after a nightly run could be tagged and published on Linux checks alone, since every job in release.yml and auto-release.yml runs on ubuntu and a red nightly stops nothing.
- iss-2611041104094416The identity scanner flags every word-bounded occurrence of the caller's account name, and abcd's cloud setup names its account abcd, so record text holding the product's name read back as [redacted-user] and launch renders hard-failed on a clean tree in a cloud session.
- iss-2611041016350835The release workflow's verify job ran go test with no -timeout, so a package past go's 10-minute default failed the job with no test failing, after the merge queue had passed the same tree under a longer limit: on 2026-11-04 internal/core/implement/loop stopped the v0.16.1 release at 600 seconds, before the tag. The scaffolded release workflow carries the same step.
- iss-2611041015338189The shell guard's bundled registry refused a force push but not the other commands that rewrite published history or remove the means of recovering from a rewrite. git filter-repo, git filter-branch, git update-ref, git replace, git reflog expire, git gc --prune=now, git push --mirror, git send-pack --force, git fast-import --force and a gh api PATCH of a ref with force=true all ran unchallenged.
- iss-2611032327111678Nothing enforces dcn-2611031722512037's wall: a session that is not walled can start or coordinate unattended work with no refusal and no warning. On 2026-11-03 a plain claude session in a checkout, holding the person's connectors and personal memory, coordinated build lanes and a release while the person was not watching, and a second account's session was about to do the same, found only because a person asked; abcd mode autonomous, abcd build and abcd drain accept such a session as readily as a walled one.
- iss-2611031719581061abcd land arms a pull request whose branch carries another queued pull request's commits, and the merge queue then removes it as invalid_merge_commit: on 2026-11-03 #1376 (records-coord-1103c) carried #1375's two commits and was armed while #1375 was queued; it entered the queue at 14:46 and was removed 16 seconds later, missing the 15:00 freeze, and had to be re-armed by hand after #1375 merged.
- iss-2611031337128901The queue watch's terminal report of a dropped pull request quotes a re-arm command gh refuses non-interactively: droppedRefusal in internal/core/implement/loop/queue.go gives 'gh pr merge N --auto --match-head-commit=<sha>' with no merge method, while toggleArming builds the full command (with --merge, --squash or --rebase from the queue's rule) that watchQueue has in hand. Found as a note in #1370's landing review (2026-11-03).
- iss-2611031337115764A finished agent is stranded when the step that would collect it is refused: on run-2611031131030791 (2026-11-03) the routed implementer ran 1h37m, committed and wrote its receipt at 13:32, but the next implement step was refused on the run-state schema trap (iss-2611020719494343), and after the state was put right every further step asked the host to start a fresh implementer, though the receipt sat at the path the stage awaited. Only handing it in by hand with implement receipt moved the run on; an unattended run would have launched a second implementer and paid for the work twice.
- iss-2611030857252735TestStatuslineWritesOnlyTheFillFile/managed_by_history_registration_only (internal/surface/cli/statusline_readonly_test.go:352) failed in #1369's merge-group macOS race run 41598350207 on 2026-11-03: stdout was empty because git did not name the checkout within the status line's 300ms git budget under the race load, dropping a pull request from the queue whose change was unrelated. #1362 widened the budgets for TestStatuslineCreatesNoDirectory; this sibling still ran at the default.
- iss-2611022331542403TestTheForgeIsNotAskedPastItsBudget fails under load: on 2026-11-02 in #1347's merge-group macOS race run it reported 'asked []; want only the newest before the budget ran out', because a 100ms pusher budget can be spent before the first branch is asked when the runner is loaded, so the test asserts timing rather than the budget's behaviour.
- iss-2611022247131866ahoy worktree prune keeps merged, clean worktrees it should reclaim when their notes hold the locally built bin/abcd: on 2026-11-02 about ten merged worktrees were kept because that binary is over the notes archive's 4 MiB per-file cap, though it is a build product, not a note.
- iss-2611022247103872A routed implementer's receipt is refused since #1356 for a missing model: on run-2611022037190012 the claude runner launched the implementer, which committed and wrote its receipt without the model field, and the receipt check refused it (the field the landing's Assisted-by trailer names), pausing the lane until the host added the model by hand. Every routed build now stops at its receipt.
- iss-2611021751406429A routed role killed at its bound loses three things the bound alone cannot save: time it spent waiting at the load gate counts against the bound, so a run queued behind other preflights is killed sooner than its work warrants; a killed launch reports no result and so no total_cost_usd, so its spend is missing from every tally; and a role killed after it committed its work counts as a failed start, falls back and parks the lane, stranding committed, tested work behind a missing receipt. iss-2611012202511008 bounded each role by its own timeout and scoped the implementer's definition of done; these are the parts of its remedy left over.
- iss-2611020720003337TestStatuslineCreatesNoDirectory (internal/surface/cli/statusline_readonly_test.go) fails on a loaded machine: its subtest 'an abcd home with no fill directory' takes the status line's 'DROPPED the merging element — facilitator.mode could not be read (git did not answer in time ...: context deadline exceeded)' stderr line for 'a skipped write was said', so a git read that times out under load fails a test about directories. It failed a landing preflight on 2026-11-02 at about 07:15 UTC.
- iss-2611020719494343A lane whose change raises the run state's schema rewrites the live run's state at the new version: its own preflight's load gate (implement load --wait, run through the lane's freshly built binary) renews the run's reservation and saves the run state with the lane binary's schema, after which the driver, still on the default branch's older abcd, refuses every step and receipt ('schema version 18, which a newer abcd wrote'). On 2026-11-02 the lane for iss-2611012047534449, which moves the schema from 17 to 18, did this three times to its own run (about 04:56, 05:57 and 07:15 UTC, the last in its landing preflight), and the version was set back by hand each time, no version-18 field being in use.
- iss-2611012309408370A receipt's model is copied into the run's state when the receipt verifies and is never read again, and the land stage refuses a records commit whose receipts report no model, so a receipt verified without one leaves the lane with no way to land: on 2026-11-01 a host-written receipt for run-2611012100266247 omitted the model, the lane passed three review rounds, and the landing refused; correcting the receipt file changed nothing, implement step --restart refuses a lane at land, and the remedy's fix round cannot be reached, so the model had to be written into state.json by hand (internal/core/implement/loop/land.go, assistedByTrailers).
- iss-2611012202511008The claude runner kills a routed role at its default one-hour bound (internal/core/runner/runner.go, DefaultTimeout), and an implementer's work in this repository can outlast it: on 2026-11-01 the routed implementer of run-2611012100266247 committed its fix, wrote its report and, running its definition of done over the whole internal tree after the loop package alone took 1,459 seconds, was killed at 1h0m0s before writing its receipt. The kill counted as a failed start, the role fell back to the host and the lane parked, with finished, tested work stranded behind a missing receipt. The same night two more routed implementers, on itd-39 and itd-2610142145236613, were killed at the hour (22:52 and 22:53 UTC) partway through make preflight, which their briefs named as the definition of done, each with its work committed and its report written, and each fell back to the host. A killed launch reports no result and so no total_cost_usd, so all three launches' spend is missing from every tally. A receipt the host writes after such a kill also loses whatever the implementer meant to resolve beyond the issue it was handed: one killed implementer's report asked its landing to resolve a second issue, the host's receipt left it out, and an accepted receipt cannot gain a resolve, so that issue waits for a separate records change.
- iss-2611012148181861On the night of 2026-11-01 the product thinker set a per-key ceiling for the night and had work move to their second key when the first reached it, so three sessions could keep working through the night. Their ruling for the budget intent itd-2611011230226453 the same evening is one named key per session and a pause when a cap is reached. Moving to a second key at a cap is therefore practised but not ruled on as abcd behaviour, and nothing in the record says whether abcd should do it itself.
- iss-2611012123291272A review receipt and a preflight receipt each name one head, so every amendment to a records branch, however small, sends both reviewers and the preflight round again in full: on 2026-11-01 one records branch took six full review rounds in an evening, most for a one-sentence fix, each round re-reading every record already approved (internal/core/landing/facilitator.go reads the receipt by head).
- iss-2611012047534449Once a role falls back from a runner to the host, nothing can send it back to the runner, so a lane on the API key cannot recover from one failed start. On 2026-11-01 the claude runner exited with status 1 on lane 2 of run-2610312053481114: it had no API key in its environment, and claude --bare answered 'Not logged in', which the loop recorded only as 'exited with status 1'. The loop handed the implementer to the host session. After that, --route on the lane was refused, because the step hands no role out: a re-told await starts nothing, and --route is refused with --restart. The lane cannot be discarded, because it is not held. Lane 2 of run-2611010452297194, handed to the host before the person routed agent work to the API key, is stuck the same way. The same applies to a runner that hits a rate or spending limit mid-step: switching to a second key helps only the next step, not the lane that failed. Both lanes are parked with no agent.
- iss-2611011737317454macOS ran out of application memory on a 128 GB, 16-core machine on 2026-11-01 at about 17:32, with only this person's sessions active, while several agent sessions drained, built and reviewed in parallel. The Force Quit dialog lists only GUI apps (Ghostty at 8.93 GB, falling to 937 MB afterwards), so the go test processes, race-enabled test binaries and agent sessions running inside the terminal never show. The machine's counters show about 155 GiB swapped out since it booted five days earlier, so this was not the first time it ran past its RAM. The system log needs admin rights to read, so the peak was not attributed to one process; a read shortly after, with 22 test processes live at a load of 57, found the test workload at about 4 GiB and the agent sessions at about 3.8 GiB, so the consumer is unproven.
- iss-2611011402496418A planning interview run in a plain terminal on the API-key runner ended at its first question on 2026-11-01. The interviewer wrote a sound question, but abcd's question check refused it at 39 rows against a 32-row limit, and the refusal was treated as the runner's invalid answer: with no host fallback in a terminal the interview stopped, printing 'runner: claude invalid for planning-interviewer ... the contract's validator refused its answer: the question breaks 1 rule(s): tab 1, whole tab (rows)'. The person was left with an internal message and no next step. The brief tells the role 'abcd refuses a receipt ... whose question breaks a rule below, and the interview stops', and only a refused done outcome is ever handed back for another turn. A host session's own question check shows an over-long question with a warning and has the agent redraft refused ones silently, so the terminal route is stricter than the host route for the one rule a model cannot count exactly. The product thinker ruled the same day (dcn-2611011402510346) that an interview must never stop on a question abcd's check refuses, and that anything which does end an interview tells the person in plain words what happened and what to do.
- iss-2611011343052330Go's test cache is never reused across worktrees, so every preflight runs all packages twice from scratch. A full preflight on 2026-11-01 reported 0 cached results of 133 packages. The cache keys on the test binary, and each worktree's absolute source paths change it: the same unchanged package in a second worktree re-ran, while with -trimpath it came straight from the cache. -trimpath cannot simply be switched on: nine test files locate the repository through runtime.Caller (internal/core/lint/releasereceipts_test.go, internal/core/launch/payload_completeness_test.go, internal/core/launch/scaffold/scaffold_test.go, and six in internal/surface/cli: hooks_sessionstart, hook_scripts, barerender, hooks_selfprovision, bootstrap, githook_prepush), and under -trimpath every one fails, since the path becomes the module path (open github.com/intentdriven/abcd/.github/workflows/release.yml: no such file or directory). Across the last 60 merges, about two thirds of all test time re-ran results that could not have changed.
- iss-2611011153130169TestVulncheckInterruptedLeavesNoCopyBehind (internal/core/lint/preflightscans_test.go) is flaky: it fails with 'the interrupted scan did not end' when its SIGINT races the stub's own fork. The stub `go` writes its started marker with the builtin `:` and only then forks `sleep 30`, so a signal sent in that fork-to-exec window misses the sleep, which is orphaned holding the command-substitution pipes in scripts/preflight-scans.sh open until it ends at 30 seconds, past the test's 20-second wait. The script's interrupt path is not at fault: every slow run still exited 130 through its INT trap with the copy removed. Reproduced locally in 18 of 150 runs with no load and no race detector, each ending at about 30.0 seconds; with the stub changed to `exec sleep 30`, none of 400 runs was slow. On 2026-11-01 it dropped a records-only pull request (#1319) from the merge queue in the macOS race run (Actions run 41298480855), though nothing in that change reaches the lint package. A measurement must use the bash the test runs, which is the first on the test process's PATH, not the stub PATH's.
- iss-2611010041545467On 2026-11-01 at 00:39 abcd implement receipt refused a build run's receipt because the run's state.json was schema version 17 and the binary that answered reads versions 1 to 16. The run had been started through the main checkout's scripts/abcd.sh, which builds and runs whatever that checkout has checked out; a peer session working in the same main checkout switched its branch to an older one in between, so the next invocation rebuilt an older binary under the running session. A session's abcd should not change because a peer switched the shared checkout, and the refusal's remedy (abcd update) does not apply to a source checkout.
- iss-2610312044569253No test reaches indexDigest's ELOOP refusal or its SameFile check after the open (internal/core/implement/loop/autoplan.go, about lines 267 and 275): TestAnIndexTheDigestCannotCopyReadsAsChangedEveryTime reaches the Lstat branch and the copy bound, not the open's branches, because a symlink or a FIFO is refused before the open.
- iss-2610312044551391When the auto-plan's start digest cannot copy the checkout's index (a symlinked index, or one past the copy bound), the lane still runs both plan reviews before the end digest differs and hands it back (internal/core/implement/loop/autoplan.go, the start digest at about line 166), spending two reviews on a result already decided.
- iss-2610311732391345The site lint's link-targets gate judges only the composed pages, so a /docs/ link the verbatim record rendering writes through the same siteHref (the glossary's loop entry links /docs/explanation/process/ from internal/core/site/explorer.go) is never checked: renaming that docs page breaks the record link with every gate passing.
- iss-2610311710599351Committing a model-routing table to abcd's own repository fails five cli tests. TestDisembarkGraveyardWritesLessons, TestDisembarkGraveyardStdin, TestDisembarkPrinciplesDelegated, TestDisembarkPrinciplesStdin and TestDisembarkPressReleaseDelegated read the checkout's .abcd/config/oracle-routing.json, so the routing notice that no connection serves the economy tier lands in front of the --json document they parse. The tests pass once the file is removed, so they depend on the repository they run in rather than on their own fixtures.
- iss-2610311544004033abcd's README parts cannot form a centred header. Each part is written as its own paragraph, so the three badges stack on three lines and cannot join a centred badge row written in HTML, and links and contents are always bulleted lists. With no Markdown level-one heading, the first absent part goes to the very top of the file. In abcd's own README, choosing all six parts put six blocks above the centred logo and title, with a second release badge, so the README was rewritten by hand and the parts turned off.
- iss-2610311224596015itd-39's ## Open Questions section is one bullet, 'None for the product thinker. The three questions first left here are settled under Decisions (2026-10-11); …', and the fail-closed reader in internal/core/intent/questions.go counts every list item without a resolved or deferred marker as a question, so abcd build itd-39 refuses at open_questions (itd-2610091918433290, which shares spec spc-2610111627213138, reads only its own section and was refused at the reservation instead). The record says it is settled in a form the reader does not recognise.
- iss-2610311224444576On 2026-10-31 nine of thirteen intent builds the product thinker chose were refused at the reservation check by one hold: iss-2610252214522207, whose found_at is the single file internal/core/surface/examples.go, holds a live reservation on origin until 2026-10-31T18:42:23Z whose footprint names dozens of paths (brief chapters 01-product, 02-constraints and 04-surfaces, commands/*.md among them) and which carries no run stage, unlike the build lanes beside it. A hold many times wider than its record's own scope, kept for hours with no lane showing progress, starves every autonomous build that touches the brief or the command pages, and nothing flags it: abcd peers lists it like any other live hold.
- iss-2610311100247143The source-ledger flip was refused only under the program name abcd
- iss-2610310815034547The ideate protocol's adversarial leg gives reviewers no way to tell an ambition from a present-tense claim, so an idea about where a repository's product should go is killed because the product does not deliver it yet. On a 2026-10-31 run on a positioning idea (in abcd's own repository, where abcd is the product), both reviewers marked it fatal on current delivery gaps. The product thinker ruled that not yet built is never a reason to kill an ambition: the gap is the roadmap the exercise exists to find.
- iss-2610310331282356The v0.14.0 upgrade guide states in present tense the menu's commands and the agents-only verbs, and both lists now omit shipped verbs (embargo, land, session, status; announce, checklist, memory, reserve).
- iss-2610310331279313The install guide says setup adds the PATH line to .zshrc for zsh and .bash_profile for bash on macOS; setup honours ZDOTDIR and edits the first of .bash_profile, .bash_login and .profile that exists.
- iss-2610310331276186The README's sample status board ends with a version line naming v0.13.4, though the board's last line names the running version and the release is newer.
- iss-2610310331268828The surfaces index says the intent-auditor serves only intent; the build loop also renders its brief and checks its verdict.
- iss-2610310331252620The build sequence counts four ahoy forms that write; worktree add and worktree prune also write, so six do besides install.
- iss-2610310331251654The verification matrix's surface-discipline row omits two shipped violations: checklist show and a plain ahoy worktree list.
- iss-2610310331241438The build sequence says remote apply turns on the forge's secret scanning; it applies the whole GitHub baseline.
- iss-2610310331235711Several brief chapters say internal/surface holds only cli and dashboard and call the dashboard the one network listener; internal/surface/session is a second front door and listener.
- iss-2610310331233804The configuration chapter says eight of fourteen committed configuration records carry schema_version; nine of fifteen do.
- iss-2610310331229293The configuration chapter says abcd's own config carries five blocks; it carries eight.
2456 more
wontfix727
- iss-2611040337254654The Go build cache reached about 323 GB on 2026-11-03 with every entry used within two days, because many worktrees and shards each build their own variants; nothing bounds it and the disk reached 5 GiB free on 2026-11-02, which an unattended run would not survive.
- iss-2611040337216924Reservation renewal happens only when something calls status or step, and a preflight outlasts half a lease on a busy day, so a waiting lane can lapse: a lane's reservation lapsed during a stop on 2026-11-03 and a peer's narrow file then blocked its renewal for 90 minutes.
- iss-2611040337158228implement receipt <path> is refused when several runs are in progress, though the path names the run, and the driver's own next: line omits --run, so following it fails.
- iss-2611040337103775Re-reserving a record with a new footprint replaces the old footprint, with only a warning: on 2026-11-04 adding .github/workflows/ci.yml to iss-2610181757540736 dropped three directories other live work relied on, until a coordinator noticed the warning and reserved all four again.
- iss-2611032348328608A cloud session's records are mangled: the cloud connector's setup names its OS account abcd, and the identity scanner flags the caller's account name, so record text containing abcd is redacted to [redacted-user]. #1384 fixed only the tests this breaks, by running their scans as a neutral caller; a record written in a cloud session still loses the product's own name.
- iss-2611012124381670abcd land --record-review refused two reviewers' returns whose '### Verdict' section began 'Head: 9d2749a96' and 'Verdict: SHIP': 'its verdict "Head: 9d2749a96" is not one a validator writes; nothing was written'. It accepts only the verdict word alone as the first non-empty line under the heading, which the help text does not say ('each naming the head's first nine characters under one ### Verdict heading'), so a return in an equally clear shape is refused and has to be rewritten by hand.
- iss-2610262229350942gh pr create --fill, --fill-first and --fill-verbose have gh compose the title and body from the branch's commits, which the shell guard's forge-text check neither judges nor reports as unread, so a body the attribution gate refuses after the push is posted with no warning.
- iss-2610262045557535itd-2609211913453478's record-families page has a row for step; itd-2609212103565953 says a step is a section, not a record family
- iss-2610262045552105itd-46 lists ship as a live intent sub-verb; itd-2609111003026787 holds intent ship for a cycle
- iss-2610262045533651itd-53 calls the owed review a queue entry; itd-80 calls it a parked OWED receipt
- iss-2610262045524988itd-42 updates a grill SKILL.md; itd-2610090831227812 says abcd ships zero skills
- iss-2610262045516387itd-2609091416295622 defines peers as a read-only view of this checkout's common dir; itd-2609091034175565 has peers fetch origin and list every person's reservations
- iss-2610262045503347--release lands a held lane on implement step but gives back a reservation on build
- iss-2610262045493440itd-2609061543533170 makes the site's status page the record health page; itd-2609212103568351 makes it the Now, Next and Later block
- iss-2610262045489203itd-2609091034175565 refuses any footprint overlap with a live reservation; itd-2610161016394967 lets generated files and a person's own overlap through
- iss-2610262045478245itd-4's capture promote calls /abcd:intent new; itd-2609212130136102 removes intent new
- iss-2610262045465811itd-60 is sequenced as Phase 8; itd-2609211913453478 retires phases as the sequencing device
- iss-2610262045459641itd-60 calls the docs-currency lint abcd docs lint; itd-2609212130136102 moves every check under abcd lint, as lint docs
- iss-2610262045454143itd-60 attributes decisions and reviews to the maintainer; itd-2609212137129937 retires the word in favour of the two named roles
- iss-2610262045442294itd-80 names the verdict ingest abcd intent review ingest; itd-2609150819445595 names the same review family abcd intent audit
- iss-2610262045435815itd-2609231434459890 says the pre-push hook runs make preflight; itd-2609091034175565 has the pre-push hook gate on a preflight receipt
- iss-2610262045422454itd-2609212103565953 starts each step's lane only after the previous has merged; itd-2609201925079472 runs independent steps' lanes side by side
- iss-2610262045411383itd-2609212130136102 caps the person's list at fourteen verbs; itd-2610090831227812 rules that neither surface caps it
- iss-2610262045409665itd-2609231013154443 names abcd changelog as the read-only preview; itd-2610090831227812 merges changelog into launch with no alias
- iss-2610262045380381itd-67 makes the changelog the reroute target for itd-65's doc-history gate; itd-65 supersedes the reroute whole
- iss-2610262045379282itd-67 picks the bump tier by phase-completion detection and keeps the version in plugin.json; itd-73 derives it from shipped intents' impact on an unversioned tree
- iss-2610262045372683itd-6 rules direct model API integrations out and routes everything through RepoPrompt; itd-2609081951381895 ships an OpenAI-compatible API adapter
- iss-2610262045365573itd-6 says abcd never spawns claude -p; itd-2609201916056194 ships a claude CLI print-mode runner
- iss-2610262045357230itd-34 maps a standalone intent to a flow-next spec made by /flow-next:plan; itd-80 has intent plan mint a native spc-N record
- iss-2610262045343669itd-4's issue schema carries related_epics; itd-43 says the validator uses related_specs exclusively
- iss-2610262045336833itd-34 has bundle members share an epic_id field; itd-43 says the intent field is spec_id and epic is gone
- iss-2610262045327872itd-34 says shape classification runs continuously in the pre-commit hook; itd-48 defers continuous pre-commit shape scanning
- iss-2610262045316034itd-2609212137128014 records lab evidence at ~/.abcd/lab/; itd-2610030720038073 renames the home the lab lives in
- iss-2610262045302788itd-2609231434459890 keeps the load-check limits in a settings file under ~/.abcd/; itd-2610030720038073 renames that home
- iss-2610262045296807itd-40 names ~/.abcd/history/index.json as the sole user-scope registry; itd-2610030720038073 renames the home to ~/.abcd.noindex
- iss-2610262045292501itd-2609221656361680 puts the inbox under ~/.abcd/; itd-2610030720038073 makes an existing ~/.abcd stop every abcd command
- iss-2610262045286894itd-3 names a ROADMAP rule domain and teaches 'draft a milestone'; itd-2609211913453478 retires roadmap and milestone as superseded terms
- iss-2610262045278708itd-3 ships the prompt hook as a Python file in hooks/; itd-66 says hooks/ ships shell and the payload carries no Python
- iss-2610262045266820itd-3 rejects a user-level rules.json outright; itd-2610030720038073 records that every managed project's block names the home's top-level rules.json
- iss-2610262045254107itd-3 has ahoy own a CLAUDE.md marker block; itd-2610030814013772 rules that projects carry no CLAUDE.md at all
- iss-2610262045246595itd-46 lists `ship` and `review` among the intent sub-verbs; itd-121 says shipping an intent is a spec verb
- iss-2610262045235833itd-46 says sub-verbs act on existing records and quoted text creates; itd-2609020625400194 adds a capture sub-verb that creates a new record from quoted text
- iss-2610262045222030itd-124 keeps 'audit' for checking a promise and 'lint' for checking form; itd-65 calls its docs-lint row the documentation-auditor
- iss-2610262045214826The lifeboat packer is `disembark pack <repo> <path>` in itd-24 and `disembark <repo> to <dest>` in itd-88
- iss-2610262045201587itd-94 has the agent run `abcd intent ready itd-93` with no other argument and read its verdict; itd-179 makes `intent ready` refuse without a grounds argument
- iss-2610262045199145itd-46 says quoted text alone creates a capture; itd-82 requires a remedy field on every new issue
- iss-2610262045198472itd-67 picks the release bump by phase-completion detection; itd-24 records that phases are retired and the release is the unit
- iss-2610262045177576itd-6 still calls the lifeboat verdict pass lifeboat-oracle and re-audit; itd-125 renamed it a review so that one word names it
679 more