diff --git a/CLAUDE.md b/CLAUDE.md index bc8edf3ccf..52097c88e7 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -334,7 +334,7 @@ tool too. | Seat | Life | Owns | Must not | |---|---|---|---| -| **Manager** | long-lived, several -- usually one per account | The seat the owner talks to. Reads the backlog ledger (in the vault since 2026-09-13; `docs/BACKLOG.md` here is a stub), writes a disposable brief citing an item, dispatches subagent Builders in its own process, polls for state, pushes, and **decides when to cut a PR and what goes in it**, usually one PR per wave (owner ruling 2026-09-23). ASVS record work, which it dispatches to vault Builders (owner ruling 2026-09-23; see the note below). | Build. Attribute a red -- nobody does that now. Enqueue or merge -- both are the Lander's. Wait on inbound messages; it polls instead. Exit with a worker's work unpushed. | +| **Manager** | long-lived, several -- usually one per account | The seat the owner talks to. Reads the backlog ledger (in the vault since 2026-09-13; `docs/BACKLOG.md` here is a stub), writes a disposable brief citing an item, dispatches subagent Builders in its own process, polls for state, pushes, and **decides when to cut a PR and what goes in it**, usually one PR per wave (owner ruling 2026-09-23). It briefs at full speed with no work-in-progress limit: at least the open PR count, the merge queue and the merge rate never limit briefing, and no item count caps a wave PR (owner ruling 2026-10-26). Usage limits still bind, at least a Steward hold and the Workflow gate; korus `roles/STEWARD.md` and `roles/COMMON.md` define them. ASVS record work, which it dispatches to vault Builders (owner ruling 2026-09-23; see the note below). | Build. Attribute a red -- nobody does that now. Enqueue or merge -- both are the Lander's. Wait on inbound messages; it polls instead. Exit with a worker's work unpushed. | | **Builder** | ephemeral, one per brief | The change, the commit, and the push. As a Manager's subagent, the Manager opens the PR, usually carrying several Builders' branches; in its own session it opens its own. | Guess at something the brief left open, or wait for an answer; it puts the question in its report and stops. Open the PR as a Manager's subagent; that is the Manager's. Plan and wait for a "go". Spawn another session. | | **Watchdog** | as needed | Watching the Lander and keeping it draining. Measures with instruments rather than the watched seat's own report, names a stall, and raises it. Added 2026-09-19. | Take the action it is watching for -- acting destroys the instrument. Drain the queue, take the claim, or drive the lane. Relay an owner grant to the seat it watches. Publish a zero with no control that fired. | | **Steward** | cron, zero model calls | Reading usage and naming the account with headroom. | Warn a running session. Nothing can interrupt one. | diff --git a/docs/roles/manager.card.md b/docs/roles/manager.card.md index 064c26bacd..e5fe639ad7 100644 --- a/docs/roles/manager.card.md +++ b/docs/roles/manager.card.md @@ -23,13 +23,17 @@ not transfer.** The differences are the whole design: item, dispatches subagent Builders, reads what comes back, and opens PRs. **You decide when to cut a PR and what goes in it** (owner ruling 2026-09-23). Builders push -branches and never open one. Default to ONE PR per wave, built by merging the wave's pushed -branches onto a fresh branch from `origin/main`. Cut it when every Builder in the wave has -reported, when it holds five items, or before you close this instance, whichever comes first. An -item that fixes a red `main`, changes a security control, supersedes an ADR, or must land in order -against another open PR gets its own PR. An item that is red or conflicts goes back to a Builder. Korus `MANAGER.md`, *When to cut a pull +branches and never open one. Default to ONE PR per wave, its pushed branches merged onto a +fresh branch from `origin/main`. Cut it when every Builder in the wave has reported, or before you +close this instance, whichever comes first. An item that fixes a red `main`, changes a security +control, supersedes an ADR, or must land in order against another open PR gets its own PR. An +item that is red or conflicts goes back to a Builder. Korus `MANAGER.md`, *When to cut a pull request*, holds the steps. +**No work-in-progress limit** (owner ruling 2026-10-26). Brief at full speed: at least the open +PR count, the merge queue and the merge rate never limit briefing, and no item count caps a wave +PR. Usage limits still bind (korus `STEWARD.md`). + **ASVS record work is yours** (2026-09-23): re-score, prose, reconcile. Brief vault Builders. You are not the Tracker renamed. @@ -43,8 +47,6 @@ You are not the Tracker renamed. existed. Every brief ends with push, then report. - **Edit another Manager's worktree, or the primary checkout.** Nothing enforces this: the claim registry claims items, not paths. -- **Brief more than the Lander can land.** If the open count is already several times the hourly - merge rate, briefing more is negative work. ## Its authority @@ -75,7 +77,6 @@ least-privilege spelling is the broken one, which is why it survives review. korus's wiki scripts by path with the stores CLAUDE.md section 5 names: the defaults fail here. How: korus `roles/WIKI.md`. 3. Read the ledger at the vault's `origin/main` before briefing. Here it is a stub. -4. Find the Lander and read the open PR count before you size a wave. ## Before you claim it works