The git-workflow AGENTS.md block is missing the autonomous-vs-interactive axis, and four of five PR-lane repos never got the block at all #1302

Open
opened 2026-08-27 03:25:22 +00:00 by coilyco-ops · 0 comments
Owner

The git-workflow block in AGENTS.md is missing an axis, and four of the five PR-lane repos are missing the block entirely. The second half is mechanical. The first is a real gap in the rules and is the reason to do both at once rather than fan out prose that is still incomplete.

The missing axis

The managed block states its merge rules flatly:

  • "ALWAYS merge your own pull request on pull-request-and-merge, in the same turn, as soon as it is green."
  • "NEVER merge on pull-request or remote-branch-only. Those two stop where they stop, and the director merge lane carries a pull-request from there."

Both sentences assume autonomous execution. A director or TPM merge gate is a thing that happens later, by someone else, because in a goal-mode, Ward-bound, headless, or otherwise unattended run there is nobody to ask right now. That is the correct reading there.

In a directly steered interactive session the same gate has a better resolution: ask the human. A human-gated step and a director or TPM gated step both collapse to a structured question in the moment, rather than to a handoff that outlives the session. The block never says this, so an agent reading it in an interactive session has to guess whether "the director merge lane takes over" means "stop and hand off" or "the person in front of you is the gate".

The estate already carries the vocabulary for the split. The native interactive adaptation section draws exactly this line: an "unwarded native agent in a directly steered interactive session" against a "Ward-bound, composed, staged, containerized, headless, unattended, long-burn, or async run, while an explicit slash goal is active, or when live interaction is uncertain". The git-workflow block should key off the same distinction instead of inventing a second one.

Name the mechanism rather than gesturing at it. An interactive gate is AskUserQuestion, called in the same turn, not prose and not a deferral. The base already fixes that shape under "Run until a wall worth a human": the harness's structured question tool, AskUserQuestion in Claude Code, up to four questions in one call, recommended option first, and a second call rather than prose when the batch runs past four. The git-workflow block should point at that rule rather than restate it, so the two never drift.

Concretely, on pull-request-and-merge in an interactive session, a merge the agent judges to need a human reads as one AskUserQuestion with the merge as the recommended first option, answered in the same turn. On pull-request, where the agent never merges, the interactive resolution is the same call rather than a silent stop at an open pull request.

It does not widen authority. It narrows a handoff into a decision the human can make in one turn.

The stale copies

scripts/apply-git-workflow.py renders the block as a marked managed section, and only agentic-os carries it. Verified today:

  • agentic-os - managed block at AGENTS.md:78, correct
  • infrastructure - AGENTS.md:43, hand-written: "Nothing lands straight on main, and the merge stays director-gated"
  • sirens-echo - AGENTS.md:161, the same inverted sentence plus "Ward honors it only after ward#1661"
  • deploy - AGENTS.md:52, hand-written and correct in substance, still unmanaged so it drifts on the next revision
  • ward - not verified, no checkout to hand

All three hand-written lines claim to be "byte-identical across the five PR-lane repos ... per agentic-os#994". They are not byte-identical to each other, and none matches the managed block.

What it cost today

Working infrastructure#929, an agent on the pull-request-and-merge lane held a green, mergeable pull request carrying a live-incident fix. The global rule said merge it. infrastructure/AGENTS.md:43 said director-gated. The agent stopped and asked which source governed, during an active outage, on a lane whose whole purpose is that the author merges its own work.

Both halves of this issue were in play. The copy was stale, and even the current copy would not have said that asking the human was the right resolution in an interactive session.

Scope

  • agentic-os#1235 already tracks the mechanical fan-out of the block to the other four repos
  • this issue owns the mode axis, which should land in the generator before the fan-out, so the copy that reaches four repos is the complete one
  • the fan-out is a fleet-wide mutation, so per the authoring-vs-rollout split the generator stays in agentic-os and the rollout belongs in infrastructure/ansible rather than a hand-run pass

Acceptance

  • the managed block distinguishes autonomous execution from a directly steered interactive session, and says what a director, TPM, or human gate resolves to in each
  • it names AskUserQuestion as the interactive gate, called in the same turn, and cross-references "Run until a wall worth a human" for the call's shape rather than restating it
  • it states that the interactive resolution grants no authority the autonomous reading withholds
  • all five PR-lane repos carry the regenerated block, and no AGENTS.md describes this lane as "director-gated" without naming the mode
  • re-running the generator against each repo is a no-op
The git-workflow block in `AGENTS.md` is missing an axis, and four of the five PR-lane repos are missing the block entirely. The second half is mechanical. The first is a real gap in the rules and is the reason to do both at once rather than fan out prose that is still incomplete. ## The missing axis The managed block states its merge rules flatly: * "**ALWAYS merge your own pull request on `pull-request-and-merge`**, in the same turn, as soon as it is green." * "**NEVER merge on `pull-request` or `remote-branch-only`.** Those two stop where they stop, and the director merge lane carries a `pull-request` from there." Both sentences assume autonomous execution. A director or TPM merge gate is a thing that happens **later, by someone else**, because in a goal-mode, Ward-bound, headless, or otherwise unattended run there is nobody to ask right now. That is the correct reading there. In a directly steered interactive session the same gate has a better resolution: **ask the human**. A human-gated step and a director or TPM gated step both collapse to a structured question in the moment, rather than to a handoff that outlives the session. The block never says this, so an agent reading it in an interactive session has to guess whether "the director merge lane takes over" means "stop and hand off" or "the person in front of you is the gate". The estate already carries the vocabulary for the split. The native interactive adaptation section draws exactly this line: an "unwarded native agent in a directly steered interactive session" against a "Ward-bound, composed, staged, containerized, headless, unattended, long-burn, or async run, while an explicit slash goal is active, or when live interaction is uncertain". The git-workflow block should key off the same distinction instead of inventing a second one. Name the mechanism rather than gesturing at it. An interactive gate is **AskUserQuestion**, called in the same turn, not prose and not a deferral. The base already fixes that shape under "Run until a wall worth a human": the harness's structured question tool, `AskUserQuestion` in Claude Code, up to four questions in one call, recommended option first, and a second call rather than prose when the batch runs past four. The git-workflow block should point at that rule rather than restate it, so the two never drift. Concretely, on `pull-request-and-merge` in an interactive session, a merge the agent judges to need a human reads as one `AskUserQuestion` with the merge as the recommended first option, answered in the same turn. On `pull-request`, where the agent never merges, the interactive resolution is the same call rather than a silent stop at an open pull request. It does not widen authority. It narrows a handoff into a decision the human can make in one turn. ## The stale copies `scripts/apply-git-workflow.py` renders the block as a marked managed section, and only agentic-os carries it. Verified today: * **agentic-os** - managed block at `AGENTS.md:78`, correct * **infrastructure** - `AGENTS.md:43`, hand-written: "Nothing lands straight on `main`, and **the merge stays director-gated**" * **sirens-echo** - `AGENTS.md:161`, the same inverted sentence plus "Ward honors it only after ward#1661" * **deploy** - `AGENTS.md:52`, hand-written and correct in substance, still unmanaged so it drifts on the next revision * **ward** - not verified, no checkout to hand All three hand-written lines claim to be "byte-identical across the five PR-lane repos ... per agentic-os#994". They are not byte-identical to each other, and none matches the managed block. ## What it cost today Working infrastructure#929, an agent on the `pull-request-and-merge` lane held a green, mergeable pull request carrying a live-incident fix. The global rule said merge it. `infrastructure/AGENTS.md:43` said director-gated. The agent stopped and asked which source governed, during an active outage, on a lane whose whole purpose is that the author merges its own work. Both halves of this issue were in play. The copy was stale, and even the current copy would not have said that asking the human was the right resolution in an interactive session. ## Scope * agentic-os#1235 already tracks the mechanical fan-out of the block to the other four repos * this issue owns the mode axis, which should land in the generator **before** the fan-out, so the copy that reaches four repos is the complete one * the fan-out is a fleet-wide mutation, so per the authoring-vs-rollout split the generator stays in agentic-os and the rollout belongs in infrastructure/ansible rather than a hand-run pass ## Acceptance * the managed block distinguishes autonomous execution from a directly steered interactive session, and says what a director, TPM, or human gate resolves to in each * it names `AskUserQuestion` as the interactive gate, called in the same turn, and cross-references "Run until a wall worth a human" for the call's shape rather than restating it * it states that the interactive resolution grants no authority the autonomous reading withholds * all five PR-lane repos carry the regenerated block, and no `AGENTS.md` describes this lane as "director-gated" without naming the mode * re-running the generator against each repo is a no-op
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agentic-os#1302
No description provided.