Skip to content

feat(cb-z719.2): the producer stops at each declared gate and waits for the navigator - #469

Merged
rmstdope merged 2 commits into
mainfrom
cb-z719.2-gates
Sep 25, 2026
Merged

rmstdope merged 2 commits into
mainfrom
cb-z719.2-gates

Conversation

@rmstdope

Copy link
Copy Markdown
Owner

Bead cb-z719.2, child of cb-z719. Stacked on #468, which declares the key.

skills/produce-bead/SKILL.md gains The navigator's gates, read once per pass from project-conf navigator_gates. Each gate is a question in the asking state with its own phase word, waiting like every other question, with no clock:

  • plan (plan-gate): after the design is written and before the first increment, the question carries Files to change, Increments and Decided by me; approve or amend, an amendment written into the design; a change to the agreed experience goes to UX through producer-park, never into the plan.
  • review (review-gate): after the sub-agent review is posted and answered, so what reaches the navigator has been read once; the producer asks with the PR link and polls reviewDecision until APPROVED or CHANGES_REQUESTED, answering the navigator's comments on the PR like findings and re-asking after a round.
  • merge (merge-gate): after green checks and approval, in place of gh pr merge; the bead is parked with human and a ## Ready to merge note, the claim released, the pass ended; the navigator merges and closes, or unparks and the next producer finishes.

fix-bug follows, its plan gate being the reproduction test and the intended fix. scripts/agent-state's phase table names the three gate words. The routing table gains "awaiting the navigator's merge". An absent key is today's fleet: no gate, no question.

portable-snippets, state-contract-sync and tests/agent-state.sh green. Changes what every consumer's producers and bugfixer do once the key is declared.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GKiLr59caM9f6DxkrsDYR8

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The review gate's poll loop keys on the persistent aggregate reviewDecision, so a stale CHANGES_REQUESTED immediately re-satisfies the wait on later rounds instead of waiting for the navigator's next review.

Get a fresh assessment by requesting another Copilot review.

Review effort: Balanced
Findings: 1 Medium severity

Open (1)
What changed in this PR

This PR implements the second child of the navigator-gates epic (cb-z719.2), building on the navigator_gates project key introduced in #468. It teaches the producer and bugfixer roles to stop and wait for the navigator at any of three declared gates — plan, review, merge — each expressed as an asking state with its own phase word and no clock. When the key is absent, behaviour is unchanged. Because these are harness skills/ and agents/ changes, they alter how every consumer's builders behave once the key is declared.

Changes:

  • Adds a new The navigator's gates section to skills/produce-bead/SKILL.md (read project-conf navigator_gates, then gate on plan before building, review after the sub-agent review, and merge in place of gh pr merge), and threads references into the pass overview and the State-file phase list.
  • Extends skills/fix-bug/SKILL.md so the bugfixer's plan gate presents the reproduction test and intended fix, with review/merge read as written.
  • Adds an "awaiting the navigator's merge" row to the beads-workflow routing table and documents the three gate phase words in the scripts/agent-state phase reference comment.
File Description
skills/​produce-bead/​SKILL.md Defines the three navigator gates, their phase words, wait mechanics, and the merge-gate park; wires references into steps 2/4 and the State-file phase list.
skills/​fix-bug/​SKILL.md Points the bugfixer at The navigator's gates and defines its plan gate as the reproduction test plus intended fix.
skills/​beads-workflow/​SKILL.md Adds the "awaiting the navigator's merge" lifecycle row (human + ## Ready to merge, planned/stage label kept).
scripts/​agent-state Documents plan-gate/review-gate/merge-gate as asking phases in the phase-vocabulary comment (comment-only).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread skills/produce-bead/SKILL.md Outdated
Comment on lines +125 to +126
until d="$(gh pr view <n> --json reviewDecision -q .reviewDecision)" \
&& [ "$d" = APPROVED -o "$d" = CHANGES_REQUESTED ]; do bd heartbeat <id>; sleep 30; done

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right; the loop now records the newest review before asking and waits for one with a higher id whose state is a verdict, carrying the id forward each round.

@rmstdope
rmstdope changed the base branch from cb-z719.1-gates-key to main September 25, 2026 11:49
rmstdope and others added 2 commits September 25, 2026 13:49
…or the navigator

produce-bead reads navigator_gates once per pass and, for each gate
declared, asks the navigator synchronously in the asking state: plan
puts the design to them before the first increment, review asks for
their review on the pull request after the sub-agent pass and polls
GitHub's reviewDecision, merge parks the bead for them with the pull
request ready. fix-bug follows with the reproduction test as its plan;
agent-state's table names the three gate phases; the routing table
gains the awaiting-merge row.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GKiLr59caM9f6DxkrsDYR8
…e it handled

reviewDecision stays CHANGES_REQUESTED after fixes are pushed until the
navigator submits a new review, so a loop keyed on it spun on every
round after the first.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GKiLr59caM9f6DxkrsDYR8
@rmstdope
rmstdope merged commit e5d3f70 into main Sep 25, 2026
3 checks passed
@rmstdope
rmstdope deleted the cb-z719.2-gates branch September 25, 2026 11:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants