Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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. |
Expand Down
17 changes: 9 additions & 8 deletions docs/roles/manager.card.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand All @@ -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

Expand Down Expand Up @@ -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

Expand Down
Loading