Development record
The person grants their sessions what they may do alone, until a time
Typed links: builds_on
itd-2610180912189125
(the shipped away mode, whose record and hooks this grant sits beside, and
whose "or asking a session to" route Decision 14 reverses) and
itd-2610170638184486
(the checklist, whose pre-run blocker sweep asks the person for every undecided
design decision before they leave, and whose parked person-only guard work this
intent takes over, Decision 5); related_adrs
adr-2610240850193281
(the decision this intent delivers). Merging and cloud sessions are split out
to their own draft (Decision 13).
Press Release
Before stepping away, a person grants their sessions exactly what they may do alone, and abcd holds them to it instead of leaving it to a sentence in chat. Alice, a solo founder who is also the product thinker, types
/abcd:mode autonomous --away --until 09:00before the evening. That grants the default "ship work" preset: every session of this repository on Alice's computer may push the branches it made, open their pull requests and answer its own technical questions, without stopping to ask. None of them merges tomainor cuts a release on the grant alone, and none ever force-pushes, because no preset grants those and abcd's own commands refuse them. The status line shows the grant and its end beside the badge that says whose answer is owed. At 09:00 the grant lapses by itself and sessions go back to asking, and Alice's morning list shows each push and pull request a session made under it. Alice can grant while still at the keyboard too, to stop being asked whether a session may push; and a session told in chat "I'm away, carry on" does not grant itself anything, it names the command."I used to come back to sessions that had waited all night to ask whether they could push," said Alice, a solo founder. "Now I say once what they may do, and in the morning I see exactly what they did with it."
Why This Matters
Written by the agent on 2026-10-24 from the session in which the product thinker found the gap; confirmed by the planning interview the same day.
On 2026-10-24 the product thinker asked a session to build an issue. Getting it started meant committing the issue record on a branch, running the preflight, pushing and opening a pull request, and the session stopped at the push on its own rule that a push or pull request needs a standing permission. The product thinker asked why it paused when "haven't we set the TF role to autonomous?", and found that no such setting exists:
- The badge (
managed,facilitator,product-thinker) is the only thing the mode page offers, and in practice the agent writes it: a question's chip sets it and the answer resets it. - The away mode (
abcd mode autonomous) is the human-set control, but it "grants no rights": nothing inbuild,implement,drainorlandingreads it, and--hold-pusheschanges only the stop hook's wording. - The one setting meant to grant something,
facilitator.mode: auto|human, lives in the repository's config and is not built.
So the person's permission has nowhere to live but a sentence in chat, which
one session hears and its peers do not, and which compaction can drop. The
shipped away mode also promises it can be set by "asking a session to", which
lets a sentence in chat stand for the person's act; this intent withdraws that
route (Decision 14), which is why its impact is breaking.
The away mode was designed with a narrow push grant and then reversed (dcn-2610181003456444, then dcn-2610181016510153), because the guard cannot fence the person's own sessions. That reasoning treats a grant as a fence; the state of the art keeps them apart (see SOTA).
Mechanism
Confirmed by the product thinker in the planning interview, 2026-10-24.
We expect sessions to stop pausing on the acts a grant covers, because the
grant is a record each session reads at its start, after each compaction and
again at each push or pull request it makes, not a sentence one session heard
in chat; and we expect no rise in harm, because the acts a person cannot undo
are in no preset, abcd's own commands refuse them on the grant alone, and the
guard filters the shell routes to them where its hooks run. As one night: the
person runs /abcd:mode autonomous --away --until 09:00 and leaves. A session
fixing an issue on its own branch pushes it and opens its pull request without
asking; a second session started an hour later, which never heard the person,
reads the grant and does the same; a third, compacted at 23:00, reads it again
and carries on. In the morning there are pull requests waiting, nothing on the
default branch has changed, and a force-push or release a session attempted
through abcd was refused.
The claim is wrong if a session under a grant stops to ask about an act the grant covers (the record did not reach it), or if a session acting on the grant alone does something the person cannot easily undo through abcd (the refusals did not hold).
Scope Conditions
Confirmed by the product thinker in the planning interview, 2026-10-24.
- One person on one machine grants their own local sessions of one repository, keyed on its root commit. Cloud sessions are outside this intent (Decision 13): here a cloud session reads no grant.
- The grant holds only where abcd can enforce it: a host whose hooks run abcd's guard. Where they do not, the grant does not apply and the session asks as it would with no grant (Decision 12).
- The grant is a permission, not a lock: it removes the stop for the acts it covers, and does not claim to stop a session that acts without asking, as a session can today. The guard is a mistake filter (adr-42); the refusals that hold are the ones abcd's own commands make.
Acceptance Criteria
Confirmed by the product thinker in the planning interview, 2026-10-24; rewritten to the adversarial reviews' findings the same day.
- Given a grant carrying
push-branchuntil 09:00, when a session pushes a branch this working copy created, before 09:00, then it pushes without asking for permission, and the morning list names the push, the session and the capability. - Given a grant carrying
open-pr, when a session opens a pull request from a branch this working copy created, then it opens without asking and the morning list names it. - Given any grant, when a session acting on the grant alone asks abcd to merge to the default branch or cut a release, then abcd's command refuses it and names the act as outside every preset; and given the same act through a raw shell where abcd's hooks run, then the guard refuses it as a mistake filter.
- Given any grant or none, when a session force-pushes, even on the
person's word in the session, then the push is refused (by the forge on
the default branch, release tags and abcd's own branches; by the pre-push
hook and the guard on every other branch) and the refusal names the person's
own
ghor the forge's web interface as the place to do it. - Given a grant set or revoked while sessions are running, when a running session next pushes or opens a pull request, then it acts on the grant as it now stands, not as it stood when the session started.
- Given a grant whose end has passed, or a grant record that cannot be read, when a session reads it, then it reads as no grant and the session asks as it would without one.
- Given a grant set with no
--until, when it is recorded, then it ends seven days later and the status line names that end. - Given a host where abcd's hooks do not run, when a session there would act on a grant, then the grant reaches it as no grant and it asks.
- Given a grant naming
decide-as facilitatoronly, when a session meets a product question, then it waits for the person and records no answer of its own; and given a technical question, then it answers, recording the answer as a decision. - Given a grant naming the
nothingpreset, when a session pushes, then it asks; giveneverything, then it pushes, opens pull requests and answers both roles' questions; given a list of capabilities, then only those apply. - Given the repository's committed
.abcd/config.jsonwithholds a capability, when the grant is read, then the effective grant omits it, and a capability the repository names that the person did not grant is ignored; an uncommitted change to that file widens nothing. - Given a grant in this repository, when a session in a sibling worktree of it reads the grant, then the grant applies there, and a session in another repository reads none.
- Given a grant set while the person is present, when they later end
the absence with
abcd mode back, then the grant still holds until its own end or until it is revoked. - Given a grant is in force, when the status line renders, then it shows the grant's preset and end beside the waiting-on badge.
- Given a session, when it runs
abcd mode autonomousitself by any route (the binary on PATH, the plugin root's,go run ./cmd/abcd, a builtbin/abcd-<goos>-<arch>, throughsh -cor a script), or writes the grant record or the away store through a shell or a file tool, then the guard refuses it, records the attempt, and the person sees it on their next prompt. - Given the person writes "I'm away, carry on" in chat, when a session reads it, then it records no grant and no absence and names the command.
- Given the person reads the morning list, when it prints, then it lists each act a session took under the grant, with the session, the capability and the time.
Prior Art
- itd-2610180912189125 (shipped): the away mode, record and hooks; this intent sits beside it and withdraws its "asking a session to" route.
- itd-2610170638184486 (draft): the checklist and its pre-run blocker sweep, which asks the person for every undecided design decision before they leave; its parked person-only guard work moves here.
- itd-2610161621364075 (planned): the operating-system fence for the agents abcd's runner launches; the grant is embedded in that fence where it exists.
- itd-148 (planned) and iss-2610240859590333: a session working in its own worktree, which the grant's "a branch this working copy created" relies on.
- adr-42: the guard is a mistake filter, not a boundary.
SOTA
- Claude Code permission modes (default, acceptEdits, plan, auto, bypassPermissions) with allow, ask and deny rules: mature; the mode is kept apart from the session's "needs input" state, and a short list stays prompted in every mode.
- OpenAI Codex CLI: a sandbox axis and an approval axis, with named presets; mature.
- Cline auto-approve: one toggle per capability; mature.
- GitHub Copilot coding agent: may push only to its own branch and can never approve or merge; mature.
- None of them expires a grant on a clock.
Path: 3, bespoke, because the grant is abcd's own record read by abcd's own hooks and commands across the person's sessions of one repository, which none of the tools above holds; the shape follows them (capabilities with presets, a status kept apart from the grant, irreversible acts outside every level).
Decisions
- Grant and fence are two axes (product thinker, 2026-10-24). The grant is adopted as a permission with no boundary claimed. Where abcd fences, the runner's agents under itd-2610161621364075, the grant is embedded in that fence; the person's own sessions get the grant alone. Recorded in adr-2610240850193281.
- The capability set (product thinker, 2026-10-24).
push-branch(push a branch this working copy created),open-pr(open a pull request from it) anddecide-as(answer its own questions as a named role). A fourth,queue-merge, moved to the merging draft by Decision 13. Merging to the default branch, cutting a release and force-pushing are in no preset. decide-astakes either role or both (product thinker, 2026-10-24). The person namesfacilitator,product-thinkeror both on each grant; a session answers only the roles named, recording each answer as a decision, and a question for a role not named waits for the person. It never widens what invariant 19 lets a machine take alone.- The default preset is "ship work" (product thinker, 2026-10-24). A grant
that names no preset carries
push-branch,open-pranddecide-as facilitator. Its first wording made it wait on the checklist's blocker sweep; Decision 16 amends that. - The person-only work moves into this intent (product thinker,
2026-10-24). The grant ships with what protects it: the guard refuses a
session's own
abcd mode autonomousby every route (the binary on PATH, the plugin root's,go run ./cmd/abcd, a builtbin/abcd-<goos>-<arch>, and routes throughsh -cand a script a shell runs); shell and file-tool writes to the grant record and the away store are refused; the PreToolUse matcher gainsEdit,Write,MultiEditandNotebookEdit; refused attempts are recorded and shown to the person. It also takes the two live checks dcn-2610181003456444 required: that the person's!command reaches no pre-tool hook, and that a message relayed from another session starting with!is not run as a shell command. itd-2610170638184486 drops this from its remaining work. - The facilitator-setting fold (product thinker, 2026-10-24). Moved to the merging draft by Decision 13.
- A grant covers one repository (product thinker, 2026-10-24). It is keyed on the repository's root commit, as the away record is, so every worktree and clone of it on this machine shares it; another repository needs its own grant.
- A grant holds whether the person is present or away (product thinker, 2026-10-24). Being away stays its own record, with its question reroute and stop check; the grant is a separate record beside it. Ending the absence does not end the grant; the grant ends at its own time or when the person revokes it.
- Three presets ship (product thinker, 2026-10-24).
nothing(sessions keep asking),ship-work(the default) andeverything(every capability this intent carries,decide-asboth roles). A grant may instead list capabilities one by one. abcd mode autonomousbecomes the grant; being away is a flag on it (technical facilitator, 2026-10-24).abcd mode autonomouswith no--grantgrantsship-work;--grant <preset|capability,...>names another;--untilends it;--awayalso records the absence.abcd mode backends the absence only.- Cloud sessions are autonomous by default (product thinker, 2026-10-24). Moved to the merging draft by Decision 13, where it meets invariant 23 and Decision 12; here a cloud session reads no grant.
- No enforcement, no grant (product thinker, 2026-10-24). Where abcd cannot enforce the grant (no hooks, so no guard), the grant does not apply: the session reads it as absent and asks. The grant reaches a session only through abcd's hook output, never as plain text a session reads for itself, so a host without hooks never sees it as permission.
- The split (product thinker, 2026-10-24, after the two adversarial
reviews). This intent keeps the grant, its protection and the refusals.
queue-merge, the facilitator-setting fold and the cloud default move to a draft of their own, with the findings they carry: the inversion of ruling AM1 (abcd arms a merge only where the ruleset requires a person's approval), the reversal of adr-2610150603484802, and invariant 23. - The grant is set only by the person's explicit command, never from a
sentence in chat (product thinker, 2026-10-24). The person runs
/abcd:mode autonomous(orabcd mode autonomousat a terminal); a session asked in prose ("I'm away, carry on") refuses and names the command. This withdraws the shipped away mode's "or asking a session to" route, so the impact isbreaking. How the guard tells the person's slash command from a session's own call is the spec's to settle, starting from the live checks of Decision 5. - A grant with no end falls back to a cap (product thinker, 2026-10-24).
--untilis optional; a grant that names no end lasts seven days at most, the away mode's existing cap, and the status line shows the end either way. - The grant works without the blocker sweep (product thinker, 2026-10-24). The default preset takes effect when the person sets it; it does not wait for itd-2610170638184486's sweep. When the sweep ships, it runs before an away grant takes effect, so the person is asked every undecided design decision first; until then the person decides that for themselves.
- The refusals apply to a session acting on the grant alone (recorded without a question: one defensible answer). A release the person asks for in the session, or a cut the release orchestrator runs on the person's instruction, is the person's act, not the grant's, and is not refused. The record settles it: AGENTS.md has sessions cut releases on the person's word, and refusing that would refuse the person. Decision 18 narrows this for force-pushes.
- A session never force-pushes, even on the person's word (product thinker, 2026-10-24). Force-pushing is refused whatever the grant and whatever the person says in the session; the person runs it themselves in their own terminal. Merging to the default branch and cutting a release stay as Decision 17 says.
- The force-push stop is deterministic where the forge holds it, and the
gap until then is recorded (product thinker, 2026-10-24). A session and
abcd must never force-push; the person may, through
ghor the forge's web interface. The deterministic form is a forge rule: a ruleset refusing non-fast-forward pushes on every branch, with a bypass for the person's admin role. It holds only once sessions push under a credential of their own, without that role (itd-2610170634394993, its Decision 5), because while a session pushes under the person's own login the bypass lets it through and the login can lift the rule. Today the forge already refuses a force-push to the default branch, release tags and abcd's own reservation and status branches, for everyone. On every other branch this intent ships with the stop that runs on this machine (the committed pre-push hook refusing a non-fast-forward push, and the guard refusing--no-verifyand a changed hooks path), which is a mistake filter, not a guarantee. The gap closes when the credential split lands; the all-branch ruleset is carried in itd-2610170634394993. - The grant joins the autonomous-agents bundle (product thinker, 2026-10-24). It is planned and shipped as one bundle with itd-2610170634394993 (sessions' own weaker credential, and coordination through the remote) and itd-2610170638184486 (the checklist), the bundle the product thinker named on 2026-10-17 as the next big release. So the force-push gap of Decision 19 never ships: the all-branch ruleset lands with the credential split, in the same release as the grant. This supersedes Decision 19's "ships with the stop that runs on this machine". The checklist's 2026-10-17 ruling that the person says they are away "or set it in the app" is narrowed by Decision 14, the same person's later ruling: a sentence in chat sets nothing.
- A grant holds only in a fenced session (product thinker, 2026-10-24, after the bundle's design review). The person's own sessions run as the person's operating-system user, so they can read the person's forge login and any key that mints a session's own credential; a weaker credential alone stops nothing there. A grant therefore takes effect only in a session that runs inside an operating-system fence keeping the person's login and the issuing key out of reach: the fence of itd-2610161621364075 for the agents abcd's runner launches, and, for the person's own interactive sessions, the host's own sandbox, which abcd never switches on (it does not edit host settings) but detects and reports, as that intent's part B names. A session abcd cannot confirm is fenced reads no grant and asks, as Decision 12 has it for a host without hooks.
- The bundle ships as one release (product thinker, 2026-10-24). The bundle review proposed two releases; the product thinker kept one, so every member, the dependency lines and the model budget included, lands in the same cut. The phone page and the shared and public options are not members: they were split out of the checklist on 2026-10-22 into itd-2610222029228127, which the question put to the product thinker wrongly counted in.
The product thinker bundled the spot-check of itd-2610301750162657 with this draft on 2026-10-30 and took it out again the same evening, so that the spot-check could be planned before this bundle is ready; it draws from abcd's record of how each change landed instead of this draft's report.
Open Questions
- The spelling of revoking the grant without ending the absence (the spec's to name).
- How the guard tells the person's
/abcd:mode autonomousfrom a session's own call (Decision 14), once the live checks of Decision 5 have run. - Planning is by the bundle form, all three members at once (Decision 20), so it waits until itd-2610170634394993 and itd-2610170638184486 are plannable; both were reviewed on 2026-10-24 and their findings are not yet applied.
- Decision 21 depends on the fence for the person's own sessions, which itd-2610161621364075 names as its part B, a draft not yet filed.
Audit Notes
Empty. Populated by intent-auditor when intent moves to shipped/.
Frontmatter
| id | itd-2610240850336695 |
|---|---|
| type | intent |
| lifecycle | drafts |
| severity | minor |
.abcd/development/intents/drafts/itd-2610240850336695-before-stepping-away-the-person-grants.md
open on GitHub ↗ · commit history ↗
References2
- itd-2610170638184486Every session keeps a checklist on disk, so no run stalls and no stall spreadsbuilds on
- itd-2610180912189125A session left to work on never stops while it has workbuilds on
Referenced by5
- adr-2610240850193281A human-set autonomy grant permits, separately from the agent-written waiting-on badgerelated
- itd-2610241015120503The person and the repository agree when abcd may merge, and what a cloud session may dobuilt on by
- itd-2610301750162657abcd's unattended work is spot-checked against specs and intentsrelated
- itd-2611031342000215The status line shows each role what it needs, in a table a repository can tunebuilt on by
- itd-2611041549483696An unattended run writes one private daily digest pagebuilt on by
mentions14
- adr-42The guard's parse layer is a mistake filter, not a security boundary — matching is two-tier, and completeness is abandoned as a goal
- adr-2610150603484802A fresh install's facilitator is a person until the repository says auto
- dcn-26101810034564442026-10-18 — Only the person sets the away mode, its push rights are narrow, and the guard's refusal is a mistake filter (facilitator-on-delegation, itd-2610180912189125 review round 2, choice (a); refines dcn-2610180913399042, replacing its clause that an agent sets the mode on the person's word): the prompt hook cannot tell the person's message from one another session relays, and its input names no origin, so a relayed word could let an agent grant itself, and every copy, push rights. So the guard refuses every route to setting the mode that it reads: `abcd mode autonomous` by the binary on PATH, the plugin root's binary or a built `abcd-<goos>-<arch>`; a `go run` of a package ending in `cmd/abcd`; any of them inside `sh -c` or in a script file a shell runs (adr-2610091150447054); a shell write into the away store under `~/.abcd.noindex/away/`; and an Edit or Write tool call on a path inside it. The person sets the mode with their own `!` command, which the host runs directly without going through Claude and so without the pre-tool hook, or at a terminal. A refused attempt is recorded in the store and shown to the person on the next prompt. What the mode grants is the session committing and pushing its own branches and opening their pull requests; never the default branch, a tag, a release cut, another person's pull request, a branch this copy only checked out to review, or a force push; merging follows the repository's own rule. This is chosen over the fallback, and is enough for now, because the grant only governs an agent that follows refusals: one that ignores them can push without any mode, so no shape of the mode adds a boundary inside the person's own session; the guard stops a refusal-following agent from granting itself on a relayed word; the rights are narrow, and every push is reversible and visible on the forge; and the record (who set it and from which copy) and the recorded refusals leave a trail the person reads on return. The guard stays a mistake filter (adr-42, and the decision of 2026-10-17 on the default branch that keeps the headless approver one, naming the OS fence as the boundary). That fence (spc-2610161751056096) is the boundary only for agents abcd's runner launches, whose writes to abcd's home it confines to their own worktree; it does not fence the person's own interactive session, where the stall happened, so there the narrow grant and the trail are the mitigation. The fallback (the mode grants no push rights, and the person's own standing instruction stays the authority to push) applies instead if the live capture shows that a message relayed from another session can run as a `!` command, or that an agent's tool call can reach the host's shell mode (grounds: plan review round 2, choice (a), and the coordinator's two addenda; the host's interactive-mode page, which says shell mode runs commands directly without going through Claude and outside the sandbox that applies to Claude's commands; the abcd-source-ledger-flip guard entry; adr-2610161621415708)
- dcn-26101810165101532026-10-18 — The away mode grants no push rights: the person's own standing instruction stays the authority to commit, push, and open or merge a pull request, exactly as before the mode existed (facilitator-on-delegation on the release orchestrator's ruling, itd-2610180912189125 after plan review round 2; supersedes dcn-2610181003456444, round 2's choice (a), and with it the guard entries that made setting the mode the person's act alone). The OS sandbox of spc-2610161751056096 fences only the agents abcd's runner launches, never the person's own interactive sessions, so for the sessions that actually stalled on 2026-10-16 the guard entries would never become a boundary, and their two days would buy a trust claim the plan cannot make. The fallback dcn-2610181003456444 already named is taken now, not on the live capture's evidence. Where the stop check finds owed work that needs a push (an unpushed branch, a reservation whose work no pull request carries, a behind or failing pull request once its local fix is committed), its reason tells the session to push if its standing instruction allows, and otherwise to queue the push with abcd mode queue for the person's return; a queued step that names the item's branch or record id, on word boundaries, hands that item back to the person for the rest of the window (a branch only while it holds commits its upstream lacks, so only the push waits), and the stop check stops naming it. The away mode is never treated as permission. The person-only acts gain pushing, opening or merging a pull request without a standing instruction that allows it. Who sets the mode returns to dcn-2610180913399042: the person, or a session on their word in that session; since the mode grants nothing, a mode set on a relayed word only keeps sessions working and deciding instead of asking, and the person sees who set it, from which working copy, and the literal abcd mode back on their next prompt. Making the mode the person's act alone moves to itd-2610170638184486 as named remaining work: the guard entry refusing an agent's abcd mode autonomous, its other routes (sh -c and script files), the shell-write and file-tool refusals on the away store, the refused attempts recorded and shown, the capture's checks of the person's ! command and of a relayed !, and the guard reading go run ./cmd/abcd and built abcd-<goos>-<arch> binaries as abcd for every entry, the ledger flip included, a security-relevant widening that gets its own review there (grounds: the release orchestrator's ruling of 2026-10-18 and the reviewer's addendum, both recommending the fallback; spc-2610161751056096 and adr-2610161621415708, which fence launched agents only; iss-2610170619247185, whose standing instruction already allowed pushes and auto-merge; the fallback clause of dcn-2610181003456444)
- dcn-26102410162081642026-10-24 — dcn-2610181016510153 is reversed in whole by adr-2610240850193281: the away mode no longer grants nothing, and a session no longer sets it on the person's word. A person-set autonomy grant now permits pushing a session's own branches, opening their pull requests and answering its own questions as a named role, set only by the person's explicit command; dcn-2610181003456444's person-only guard is reinstated with that wider grant (itd-2610240850336695). The reversal's grounds: a grant only removes a stop and needs no fence, which the reversed decision's boundary argument did not separate.
- dcn-26102719260705232026-10-27 — Ruling by the product thinker on 2026-10-27, relayed by the coordinating session abcd-f5 and restated: the 23 Oct plans for the coordination intent itd-2610170634394993 and the terminal-drain intent itd-2610222215485265 land now, together with the checklist intent itd-2610170638184486 and its built steps 1 to 3 (spc-2610230805429429). This settles the overlap with the 24 Oct note in #1130 that the autonomy grant itd-2610240850336695, the checklist and the coordination intent are planned together as one bundle: that joint planning still happens, and it builds on what lands here rather than re-planning it. The rebase keeps every addition #1130 and the 25 Oct edits made to the three drafts.
- dcn-26110313420201152026-11-03 — Held for the product thinker: a principle that manual facilitation means holding the major responsibility, not approving each decision, so that the facilitator's automatic mode, once widened, makes every decision a human technical facilitator would make except genuine trade-offs and those with wide-ranging consequences. Raised in lab lab-261103114820-bcba06f (finding F-23) on 2026-11-03; the wider mode itself stays with the autonomy-grant draft itd-2610240850336695, and the principle is filed only on the product thinker's word.
- iss-2610240859590333A session wrote records into the main checkout's working tree on main while another live session (abcd-0d) was working in the same checkout, because nothing enforces the rule that a concurrent session works in its own worktree. On 2026-10-24 this session ran capture, intent, decide --adr and go generate from the main checkout: an issue record, an intent draft, an ADR and two regenerated index regions landed in the shared tree, the regenerated indexes folding in a peer's untracked draft. Nothing refused or warned. capture, intent and decide write into whichever checkout they run in; the guard judges shell commands and questions, not where records are written; and the CONCURRENCY rules domain, which carries the rule, recalls only on prompts about worktrees, peers or sessions, so a prompt saying 'file the decision record' never injected it. The agent also skipped the required scan (session listing and abcd peers) before mutating. The rule held only as prose.
- 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-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-2610222029228127Every session's checklist reaches a shared copy and the phone
- itd-2611031342011261abcd keeps a per-session ledger of every agent it launches
- spc-2610301925429250abcd's unattended work is spot-checked against specs and intents