Development record
The facilitator's mode gates the merge
Press Release
A repository says who merges, and abcd keeps to it. A repository declares whether its technical facilitator is a person or abcd. With a person, a maintainer's ready pull request waits for the facilitator's approval: abcd says that approval is needed, and arms the merge only once it is given, whoever asks. With abcd, a maintainer's pull request that has passed its gates and its review pair goes straight into the merge queue, or has auto-merge armed where the forge has no queue, with no one asked, and the status line says merging is autonomous. A contributor's pull request waits for a maintainer's approval in either mode. A fresh install starts with a person, so installing abcd changes nothing about who merges.
"I run my repository alone, so I told abcd it is the facilitator," said Alice, a solo founder. "Now every branch that passes its checks and its review pair is in the queue a minute later, four at a time." Carol, a tech lead, keeps the default: "Nothing merges on my team until one of us has read it, and abcd can't be talked past that."
Why This Matters
iss-2610150524246898 asks abcd to queue every ready pull request at once,
default on. The product thinker refined it on 2026-10-15: when the
facilitator is abcd, every ready pull request auto-merges or is queued; when
the facilitator is a person, that person reviews and approves, and the merge
waits for them. Today nothing records which one a repository has. The build
loop and abcd land stand in with ruling AM1: they arm the merge where a
ruleset requires an approval. That stand-in is looser than it looks. A
code-owner rule counts as an approval requirement for every pull request,
though the forge demands the owner's approval only for owned paths. So in
abcd's own repository a change touching only internal/ merges after CI with
no person reading it.
itd-97 makes the whole facilitator a mode. This intent is its first slice: the declaration, the place it is shown, and the one gate that obeys it, the merge. The rest of itd-97 (scheduling, self-firing reviews, triage) composes later behind the same declaration.
Built on by itd-2610301750162657 (a person spot-checks what abcd's agents changed alone): it samples the pull requests this mode merges with no person asked, and checks a drawn few of them against their specs. Built on by itd-2610301850454860 (abcd records how each change landed): it records which changes this mode merged with no person asked.
Mechanism
We expect this to keep merges where the repository's owners want them, because there is one place that says who merges, one function that every merging path asks, and a guard that refuses the merge commands themselves. So a path that forgets to ask is still stopped.
Scope Conditions
- A repository abcd manages, with
.abcd/config.jsonand a GitHub remote theghclient can reach. - One facilitator mode per repository. A team of product thinkers (itd-99) and per-branch modes are outside it.
- Merges abcd itself starts, through
abcd land, the build loop, or a shell command the guard judges. A person merging in the forge's web page is untouched.
What's In Scope
- The declaration. The key
facilitator.modein.abcd/config.json, with the valueshumanandauto, read throughinternal/core/layered. The bundled default ishuman.~/.abcd.noindex/config.jsonmay also set it, andhumanfrom any layer wins: a person can always take the role back on their own machine, and no repository file can take it from them. (This is the same off-wins rule asland.pushandland.enqueue, and the rules loader's kill switch.) - Shown. The bare
abcdstatus board names the mode and the layer that set it. While the mode isauto, abcd's row in the host's status line says merging is autonomous, through the status line the person consented to and nothing else. - Who is a maintainer. One seam answers it for a pull request's author: their permission on the repository as the forge reports it. Write, Maintain and Admin are maintainers; Read and Triage are contributors. A custom role counts as the role it is based on, and an author with no permission on the repository (the forge answers that it knows none) is a contributor. A permission that cannot be read at all is neither: abcd says the author's role is unverified and arms nothing.
- Who approves. An approval of a pull request's head commit is either a
forge review by a maintainer other than its author, or the technical
facilitator's approval recorded through abcd's own approval act, which a
person runs and the shell guard refuses to an agent. The second exists
because the facilitator usually authors the pull requests abcd opens, and
the forge refuses an author's approval of their own. A contributor's pull
request is armed only after such an approval, in either mode. A
maintainer's pull request is armed at once in
auto; inhumanit is armed only after such an approval, and until then abcd says the facilitator's approval is needed. The product thinker never approves a merge. abcd enforces this itself, since the forge lets a pull request merge with no approval, and it adds no approval rule or code-owner file to the forge. - The merge gate.
mergeGate, the one functionabcd landand the build loop ask before arming a merge (introduced by iss-2610150524246898 with AM1 as its stand-in), reads the mode.auto: queue or arm at once by the ruleset mirror's method. With no queue gating the default branch, arm auto-merge, and where the forge refuses that, say so.human: arm only a head the technical facilitator has approved, and otherwise say the pull request waits for the facilitator's approval. Either mode applies the approvals above first. - The hard rule. While the mode is
human,abcd guardrefusesgh pr merge --auto,gh pr mergeaimed at a queue, and the GraphQLenqueuePullRequestmutation, whoever runs them. It reads the mode through the same resolver. - Proof of review. In
auto, the merge gate arms only a head that a review receipt names: one receipt per commit, written when the review pair's verdicts for that commit pass the stop rule, and found from any worktree the way preflight receipts are. - abcd's own repository sets
facilitator.mode: autoin its committed config, in the same change, so its sessions keep queueing.
What's Out of Scope
- The rest of itd-97: the composed "when" of solo mode.
- Changing any repository's forge settings, rulesets or queue.
- Gating the push of a non-default branch. A push is not a merge (ruling below).
Acceptance Criteria
- Given a repository with no
facilitator.modein any layer and a maintainer's open pull request with no approval of its head, whenabcd landreaches the passing branch, then it arms nothing, and says the pull request waits for the technical facilitator's approval and why. - Given the mode is
humanand a maintainer other than the author has approved the head commit of a maintainer's pull request, whenabcd landreaches the passing branch, then it arms the merge by the ruleset mirror's method. - Given either mode and a pull request whose author has Read or Triage
permission, or none, on the repository, when
abcd landor the build loop reaches it with no maintainer's approval of its head commit, then it arms nothing and says a maintainer's approval is needed; when a maintainer other than the author has approved that head, then the mode decides as for a maintainer's pull request. - Given an approval of an earlier commit and none of the head, when the merge gate reads the approvals, then it counts none.
- Given an author with a custom repository role, when the seam reads their permission, then they count as the role it is based on.
- Given an author's permission the forge cannot be asked for, or a custom role whose base cannot be read, when the merge gate reaches the pull request, then it arms nothing, whatever approvals there are, and says the author's role is unverified.
- Given the mode is
humanand a maintainer's pull request authored from the technical facilitator's own account, when the facilitator records their approval of its head through abcd's approval act, then the next land arms it; when an agent runs that act through a host with the guard hook, then the guard refuses it. - Given
facilitator.mode: autoin.abcd/config.jsonand a merge queue gating the default branch, whenabcd landreaches a passing branch with an open pull request, then the pull request is in the queue when land exits, with no earlier entry awaited. - Given
facilitator.mode: autoand no review receipt names the branch's head commit, whenabcd landreaches its open pull request, then it arms nothing and says the head has no recorded review pair, naming the commit. - Given
autoin the repository's config andhumanin~/.abcd.noindex/config.json, when anything resolves the mode, then it ishuman, and the board names the machine file as the layer that set it. - Given the mode is
human, when an agent runsgh pr merge 123 --auto(or the enqueue mutation) through a host with the guard hook, then the guard refuses it and names the setting that would allow it. - Given the mode is
auto, when the build loop lands a lane, then it arms bymergeGateexactly asabcd landdoes, through one code path. - Given either mode, when the bare
abcdboard renders, then it names the facilitator mode and its layer. - Given the mode is
autoin a managed checkout with abcd's status line installed, when the host refreshes the status line, then abcd's row says merging is autonomous; givenhuman, then the row has no such element. The read asks the network nothing and stays inside the status line's time budget. - Given a value other than
humanorautoin any layer, when the mode resolves, then the read is refused loudly, naming the file, and nothing is armed.
SOTA
Surveyed on 2026-10-23. The ground is shared with the parent intent itd-97, whose findings are in the elicitation and interviews SOTA note (its itd-97 section). The queue mechanics are in the forge, CI and merge SOTA note and under itd-115.
- The two values are two points on the autonomy scale.
humanis Sheridan and Verplank's level 5 (execute if the human approves) andautois level 7 (execute, then inform). Level 6, a veto window before automatic execution, is the one point left out. A queue that waits a fixed time after a pull request goes green is that level, should a third value be wanted. - Hosts refuse this exact act by default. Claude Code's
autopermission mode blocks "Merging a pull request no human has approved" and ignoresautoset in a project's settings. Gemini CLI's YOLO mode can only be enabled from the command line. A repository file cannot raise a person's autonomy, so the off-wins rule (humanfrom any layer wins) matches the field. - "Checks pass" must mean success. Kodiak documents that the forge counts
a
neutralcheck conclusion as passing, so the receipt and the merge gate read a success conclusion, never the absence of a failure. - Auto-merge is a rule only where something is required. It waits for
required reviews and checks; with nothing required it is never offered. The
autopath's "say so where the forge refuses" covers that case. - The code-owner stand-in is looser than it looks, as the record says. Code owners are requested "when someone opens a pull request that modifies code that they own", and any one owner's approval meets the requirement (GitHub, About code owners). The page implies but does not state that a pull request touching no owned path needs no owner, which was the gap AM1 left while it stood in as the merge gate; it was retired from that role on 2026-10-29.
- Bots already work under a human-review rule. Renovate cannot automerge its own pull request until a required review has happened. GitHub's coding agent does not count its requester's approval, and for the forge's reviewer "By default, Copilot's reviews do not count toward required approvals for the pull request" (an opt-in lets its approval satisfy a required-approval rule). A machine's review receipt is evidence for the gate, never an approval the forge counts.
- The human gate decays. Automation bias is not prevented by training or
instructions (Parasuraman and Manzey 2010).
humanmode guarantees that a person merges, not that a person reads.
Path 2: native, with the declaration, the resolver and the guard as the record rules them, shaped to the hosts' "a project file cannot raise autonomy" rule and to the forge's queue and auto-merge as the executors. No dependency. This pass came after the build was planned and had no fit-challenge before the intent shipped, so it stands as notes for a later revision.
Open Questions
None recorded yet.
Decisions
- 2026-10-15, the product thinker: a fresh install's facilitator is a
person (
humanby default). A repository turnsautoon deliberately, and abcd's own repository sets it in its config. This supersedes the "AI by default" clause of adr-2609151528057260 under the security standard rule (abcd never changes how a repository works). The superseding record is filed with this intent. - 2026-10-15, the product thinker (relayed by the release-cutting session):
in
auto, a ready pull request merges with no human step. So a revertable merge is facilitator work, not an action reserved for the product thinker. Auto-merge never means unreviewed: the reviews are automated, not skipped. - 2026-10-15, the product thinker: abcd and the repositories it manages take one code path, with no special case for abcd, because building abcd also tests the process its managed repositories follow.
- 2026-10-15, agreed with the release-cutting session: the push of a non-default branch after a passing preflight is not gated by the mode. The facilitator's approval point is the merge.
- 2026-10-15, the product thinker: until this intent ships,
abcd landkeeps AM1 as the merge gate's stand-in.
- 2026-10-16, the technical facilitator on the product thinker's delegation
(planning):
autoarms only a head a review receipt names, because the product thinker ruled on 2026-10-15 that automated merging is never unreviewed merging (the reviews are automated, not skipped), and a hand or cloud branch otherwise carries no proof the review pair ran. - 2026-10-16, the technical facilitator on the product thinker's delegation
(planning):
humanrefuses arming outright, also where the forge would hold the merge for an approval, as itd-97's criterion for the human facilitator requires; a person merges. - 2026-10-16, the product thinker: this intent moves to planned.
- 2026-10-29, the product thinker: approving a merge is the technical
facilitator's act, never the product thinker's, whose part is to try the
outcome and judge it. In
autonothing waits for an approval; inhumanabcd tells the facilitator their approval is needed and arms once it is given. This supersedes the 2026-10-16 ruling thathumanrefuses arming outright. No forge approval rule or code-owner file is added for it, and the autonomous mode shows in the status line as well as on the board. - 2026-10-29, the product thinker (refining the same day): a maintainer is
anyone with Write, Maintain or Admin permission on the repository, and a
contributor anyone with Read or Triage. A contributor's pull request needs
a maintainer's approval in either mode; a maintainer's goes through in
autoand waits for the facilitator's approval inhuman. Who is a maintainer is read from the repository permission level. The contributor rules are carried on by itd-2610290858115394, which builds on this intent. - 2026-10-29, the technical facilitator on the product thinker's delegation
(records): AM1 is retired as the merge gate's stand-in, but its reading of
approvals is kept for a contributor's pull request and for
human, and it counts only an approval of the head commit by a maintainer other than the author.autokeeps its review-receipt condition. A custom role is judged by its base role, and an author the forge reports no role for is a contributor. - 2026-10-29, the technical facilitator on the product thinker's delegation
(agreed with the maintainer-gate intent's author): a permission that
cannot be read is not a contributor's, since a token that reads reviews
but not permissions would then arm on an approval; it arms nothing and is
called unverified. In
humanthe facilitator's approval is also an act abcd records for the head commit, run by a person and refused to an agent by the guard, because the facilitator authors most pull requests and the forge refuses an author's own approval; a second maintainer is not required. - 2026-10-29, the technical facilitator on the product thinker's delegation
(records): the status line shows the mode only while it is
auto, sincehumanis every fresh install's default and an element there would say nothing new; it goes through the consented status line alone, as nothing else in the host's settings calls abcd.
Audit Notes
Fidelity review OWED (receipt rcp-31c38fe480e8).
Grounds
- pursued: one declared facilitator mode, one merge gate every merging path asks, and a guard on the merge commands keep merges where a repository's owners want them; shown wrong if a merge abcd starts happens while the mode is human with no approval of the head by the facilitator, if a contributor's pull request merges with no maintainer's approval of its head, or if auto arms a head no review receipt names
Frontmatter
| id | itd-2610150602547271 |
|---|---|
| type | intent |
| lifecycle | shipped |
| kind | standalone |
| severity | major |
.abcd/development/intents/shipped/itd-2610150602547271-a-repository-declares-whether-its.md
open on GitHub ↗ · commit history ↗
References1
- itd-97The Facilitator Is a Mode, Not a Personbuilds on
Referenced by13
- adr-2610150603484802A fresh install's facilitator is a person until the repository says autorelated
- adr-2610240850193281A human-set autonomy grant permits, separately from the agent-written waiting-on badgerelated
- iss-2610262034286775itd-2610150602547271 shows the facilitator's mode (human or auto) on the board; the board chapter's mode is what `abcd mode` stores, the badge's state and the away mode.related
- iss-2610262036211949In the mode chapter, mode means the waiting-on badge (managed, facilitator, product-thinker) and the away mode set by abcd mode autonomous; itd-2610150602547271 adds 'the facilitator's mode', facilitator.mode human|auto, shown on the same board.related
- iss-2610262039290078The land page calls AM1's arming 'human mode', but the facilitator-mode intent rules that `human` arms nothing, even where the forge would hold the merge for approvalrelated
- iss-2610262043535279The build loop arms auto-merge whenever the ruleset gates through a queue; the facilitator-mode intent says that by default abcd never arms or queues a pull requestrelated
- iss-2610262043542024itd-82 says merging the drain's pull requests is a human gate by design; itd-2610150602547271 says that in auto mode a ready pull request merges with no human steprelated
- iss-2610262044094024The facilitator mode's values are `duo | solo` in itd-97 and `human` / `auto` in itd-2610150602547271related
- 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 publicbuilt on by
- itd-2610301750162657abcd's unattended work is spot-checked against specs and intentsbuilt on by
- itd-2610301850454860abcd records how each change landedbuilt on by
- itd-2611011325428560A solo private repo can self-attest its gates, labelled sobuilt on by
- spc-2610161609350616The facilitator's mode gates the mergeimplemented by
mentions23
- adr-2609151528057260Three roles, who each artefact addresses, and when the loop stops
- dcn-26101809133884452026-10-18 — The stall fix is its own intent, not a spec of the checklist draft (facilitator-on-delegation, itd-2610180912189125 planning): the slice (the away mode held by abcd, the stop check, and the question reroute) is filed as itd-2610180912189125, which builds on itd-2610170638184486, rather than planned as a first spec of that draft closed with a remainder; planning the draft would move it to planned before the product thinker has walked its criteria on Thursday, and its open trade-offs (the phone, the shared options) would then sit inside a planned record. A separate intent keeps the split with the coordination intent unchanged, since the slice touches nothing on the shared remote, and follows the precedent of itd-2610150602547271, filed as the first slice of itd-97. The idle time a coordinator sees stays out of the slice and comes with the coordination intent's central view (grounds: brief invariant 17; itd-2610150602547271; itd-2610170638184486 scope split; the coordination prep's ship-first decision)
- dcn-26102223565326382026-10-22 — The merge gate's footprint is step-wise (abcd-ae's ruling as coordinator of 2026-10-23, spc-2610161609350616, itd-2610150602547271, following the worktree store's dcn-2610222227336378): the build reserves at start only the files steps 1-3, 5 and 6 change, leaving out internal/core/implement/loop/land.go and its test, which only step 4 changes and which the drain's reservation of iss-2610120138028442 holds while that lane waits for its preflight, and internal/surface/cli/cli.go, which only step 2 changes and which iss-2610171110154902 and iss-2610171200535090 hold until 2026-10-23T08:40Z; when the step that changes a left-out file begins, the spec's packages line widens to name it and a re-run of abcd build reserves the widened footprint (the verb reserves again when the spec has widened, per commands/build.md), judged for overlap like any reservation. Steps 4 and 6 still land as one change. <!-- record-lint: forward-looking -->
- dcn-26102300042637112026-10-23 — The technical facilitator on the product thinker's delegation (planning step 1 of spc-2610161609350616, abcd-43 for abcd-ae, 2026-10-23): the key stays facilitator.mode, the product thinker's own name for it in itd-2610150602547271, and the clash with abcd mode's facilitator state is settled in wording. abcd mode answers whose answer the loop is waiting on right now; facilitator.mode declares who merges. So the bare board names it by outcome, for example 'merges: a person (facilitator.mode human, from the bundled default)' or 'merges: abcd (facilitator.mode auto, from .abcd/config.json)', never a bare 'mode: human'; and commands/mode.md and commands/land.md each say in one sentence how the two differ.
- dcn-26102308401609142026-10-23 — The technical facilitator on the product thinker's delegation (merge gate step 3, spc-2610161609350616, itd-2610150602547271, 2026-10-23): a review receipt is recorded with a repeatable --record-review <return> flag on abcd land, not a land sub-verb, because land's positional argument is a branch name and a sub-verb such as review would shadow a branch of that name; recording lands nothing. A receipt is written only when at least two returns each name the head's first nine characters and state SHIP or APPROVE, so a review of an earlier head cannot be recorded for a later one, and it lives in .abcd/.work.local/review-receipts/<full sha>, found from any worktree through the same lookup the preflight receipts use. The verdict parser in landing is the shared one the build loop's validator parser can move onto later; landing cannot import the loop.
- dcn-26102722135332722026-10-27 — Merge-gate step 1 (itd-2610150602547271) ships refusing a claimed namespace's case twins and its dotted form, but not a misspelt or padded namespace at a file's top level, captured as iss-2610272213410875. Grounds: both review-pair members found no way past the human-wins rule other than a top-level misspelling; that gap applies to every claimant of the layered reader alike, not to this step, and closing it needs a design choice between a top-level key registry and a near-miss check, which is its own change. Decided by the agent under the autonomous-run delegation of 2026-10-27.
- dcn-26102802335753542026-10-28 — Merge-gate step 2 (itd-2610150602547271, spc-2610161609350616): until step 4 wires the merge gate to read facilitator.mode, the board names a person as the merger in every repository and draws an auto as set but not yet read, never as abcd merging. Grounds: landing's mergeGate still runs ruling AM1, so every repository is in human mode today, and a board saying abcd merges would contradict what abcd land does in the same repository; the spec has step 2 name the mode and its layer, which the line still does. Step 4 changes the wording when the gate reads the mode. Found by the round-2 review pair.
- dcn-26102817271513482026-10-28 — Merge-gate step 3 (itd-2610150602547271, recording the review pair's verdicts for a head) goes ahead while other copies hold files it shares, under the coordinator's narrowed rule for lapsed holds (recorded with the store-and-sweep change): a hold that overlaps only in files, on another subject, with nothing pushed, does not hold a ready change back. The laptop's iss-2610241107191205 shares only commands/land.md, has pushed nothing but its reservation ref, and is about lapsed holds and reservations in internal/core/claim. Step 3 changes no claim code and no behaviour of a lapsed hold or reservation: its change stays in internal/core/landing (a review receipt store beside the preflight receipts) and the land verb's --record-review flag. This machine's itd-2609151838312703 (sessions announce what they do) and itd-2610091010348892 (the hosted site) share land.md, 38-land.md, land.go and land_surface_test.go, but neither is about review receipts. With no shared subject, step 3 lands when it is ready, and whichever change lands second merges main. Ruled by the coordinator, abcd-f5, on 2026-10-28; applied by lane A.
- dcn-26102915240305702026-10-29 — Merge-gate step 4 (itd-2610150602547271, spc-2610161609350616), decided where the records leave it open, each the way that fails closed. (1) The facilitator's approval act is a flag of land, abcd land --approve, beside --record-review: it writes .abcd/.work.local/approvals/<full sha>, found from any worktree as the receipts are, and counts as an approval of that commit alone, for a contributor's pull request and in human mode alike. (2) A custom role's base is read from the same permission answer's legacy level (admin or write: a maintainer; read or none: a contributor), so no second call is made; any other level, a read that fails other than with 404, or an answer that does not parse is unverified and arms nothing. (3) A reviewer's approval counts only if it is that reviewer's latest submitted review of any state (a later comment or change request supersedes it, a pending draft does not), approves the head commit itself, is not the author's, and its reviewer reads as a maintainer; a page of 100 reviews counts none, since a later review may sit beyond it. (4) With no merge queue gating the default branch the arming is the forge's auto-merge as a merge commit (--merge), and a forge that refuses it is said, not retried. (5) The build loop reads the mode at the default branch's tip as just fetched, not at the lane's base, so a mode turned back to human after a run started holds; a lane the gate leaves open is parked as before and asked again on each step, so an approval or a review receipt given later arms it. (6) The loop mints no review receipt of its own: its pushed head carries the records commit its validators did not read, so in auto a lane arms only once a review receipt names that head, recorded with abcd land --record-review. Decided by the agent building steps 4 to 6 under the orchestrator's delegation, 2026-10-29.
- dcn-26102915241003252026-10-29 — Merge-gate step 5 (itd-2610150602547271, spc-2610161609350616), decided the way that fails closed. While facilitator.mode is human the shell guard refuses every gh pr merge that merges, not only one aimed at a queue: with no queue gating the default branch a plain gh pr merge merges at once, which is the same unapproved merge; only gh pr merge --disable-auto, which withdraws an arming, is let through. Beside the enqueuePullRequest mutation it refuses enablePullRequestAutoMerge, the GraphQL form of gh pr merge --auto. The guard package sits below the resolver (internal/core/landing reads the mode through the layered reader, which imports the guard), so a front door hands the mode in (guard.WithMergeMode, read through landing.ReadDefaultFacilitator); a mode that cannot be read counts as human, and a registry with no mode handed in (the bundled defaults alone) judges no merge command. The approval act, abcd land --approve, is refused in any mode: through the binary by the registry entry abcd-land-approve, which also teaches it, and through go run ./cmd/abcd by the guard's own check, which no pattern can name. A query the guard cannot read (a gh api graphql -F query=@file) is not seen, as a body held in a variable is not. Decided by the agent building steps 4 to 6 under the orchestrator's delegation, 2026-10-29.
- dcn-26103004390041872026-10-30 — itd-2610150602547271: now that the merge gate reads facilitator.mode, the board's merges line says what the gate does, read through the gate's own resolver (the default branch's committed config and the machine layer) so the board and the gate never disagree: human reads as merging once the technical facilitator approves the head, auto as merging autonomously once a review pair has passed the head, each with the layer that set it, and the facilitator view keeps the key and the mode. A contributor's pull request needing approval in either mode is said in the docs, not on the line.
- iss-2610150524246898Ready pull requests reach the merge queue one at a time, so a queue that can build four entries at once tests one. On 2026-10-15 abcd's own queue was configured to build up to four entries (max_entries_to_build 4), but the coordinator queued each pull request only after the previous one merged, through hand-run watchers. With each queue run taking 25 to 40 minutes, three ready pull requests cost about two hours instead of about forty minutes. abcd's land step arms auto-merge for a build lane, which lets the queue batch, but landings outside the loop have no such step, and iss-2610090642376032 already records that even a lane's arming can leave a pull request unqueued. The product thinker asked (2026-10-15) for queueing ready work together to be the default for every abcd-managed repository, toggled in config. Bound by the security standard rule: abcd adds the queueing, never changes how the repository's queue is configured.
- iss-2610150656282243abcd land and the build loop decide whether a merge is held for a person's approval (ruling AM1) from the committed ruleset mirror under .abcd/work/rulesets/, never from the forge's live rules. A mirror that has gone stale, saying an approval is required when the forge no longer requires one, lets abcd arm a merge that no person gates. Found by the Opus security reviewer of the abcd land change on 2026-10-15; the loop has the same reading, so this predates abcd land. Route exists without abcd: no, the mirror-based decision is abcd's, so abcd fixes it.
- iss-2610222008081888abcd build refuses an intent as held by a peer when the only holders are long-lived local branches cut before the intent left drafts/, which hold the default branch's older copy of the record unchanged since their merge-base. On 2026-10-22, build itd-2610150602547271 was refused (exit 3) naming feat/hosted-sites-design, feat/hosted-sites-setup and fix/fence-day-lease as holding it in drafts/; none of the three changed the record since its merge-base with origin/main (1183-1185 commits behind). peersCheck in internal/core/implement/loop/check.go counts every Location in a bucket other than this checkout's, so any stale branch refuses every intent planned after it was cut; with ~190 worktrees on one machine this blocks most builds and build next.
- iss-2610222359046244abcd build (and abcd reserve) refuses a reservation by naming only the first footprint path that overlaps a live reservation, so a build whose footprint collides with several reservations is refused once per collision: on 2026-10-22/23 the merge gate's build (itd-2610150602547271) was refused in turn on internal/core/implement/loop/land.go (iss-2610120138028442), internal/surface/cli/cli.go (iss-2610171110154902; a second reservation, for an issue filed on the unmerged fix/autonomous-permission-ask-denied branch, held it too, unnamed) and internal/core/landing/config.go (iss-2610222014550692, a directory footprint), each discovered only after the previous one was routed round. <!-- record-lint: forward-looking -->
- iss-2610230059199116A build run renders each lane's brief from the intent and spec as they stand at the lane's base on the default branch, so a refinement recorded during the run (a narrowed footprint, a new requirement or test line on a later step, a decision citing the spec) never reaches the run's own later lanes until it is merged to the default branch by some other change. On 2026-10-23 the merge gate's run (run-2610222359421510, itd-2610150602547271) recorded step-4 security requirements and step-wise footprint decisions on the orchestrating branch; lanes 2-6 would have been briefed without them, and a separate records pull request had to be cut to carry them to main ahead of lane 2.
- iss-2610262035378747The land chapter calls itd-97's auto/human merge toggle 'the facilitator mode'; the mode chapter uses `facilitator` as a value of `abcd mode`'s waiting-on state.
- itd-99A Team of Product Thinkers Decides as One
- itd-115A Ready PR Merges Without Ever Wedging BEHIND
- itd-2610241015120503The person and the repository agree when abcd may merge, and what a cloud session may do
- spc-2610230805429429every-abcd-session-keeps-a-checklist-on
- spc-2610301925429250abcd's unattended work is spot-checked against specs and intents
- spc-2610301950480609abcd records how each change landed