Adds one markdown role-contract per fleet roster class, modeled on the existing packages/mosaic/framework/fleet/roles/enhancer.md (matching its title / mandate / boundaries structure). enhancer.md was left untouched.
New role files (packages/mosaic/framework/fleet/roles/)
Role
Tier
Summary
board
front
Owns NORTH_STAR.yaml; ratifies/vetoes goals & assumptions; never codes or merges
planner
front
Alias of the existing orchestrator class (documented, not a competing class — two-agent floor preserved); emits phased FRs + depends_on DAG, not tasks
decomposition
front
Splits FRs into one-PR cards via the native mosaic fleet backlog; never starts work
code
exec
Implements one card to green CI; opens PR via pr-create.sh; stays in card scope
review
exec
Correctness/scope/coverage; approves or requests changes; does not merge
security-review
exec
Secret/auth/forbidden-path second line (authoritative list lives in the pr-merge.sh guard)
site-tester
exec
Runtime/behavioral verification vs acceptance criteria
documentation
exec
Prose docs + NORTH_STAR projections; single-writer per TASKS file
merge-gate
gate
Sole approver/auto-merger; names pr-merge.sh + pr-ci-wait.sh as the ONLY merge path; no raw tea/Gitea API; per-decision heartbeat; honors fleet/run/PAUSED
rebase
exec
Owns stale / mergeable==false PRs; rebase+re-run or escalate on real conflict
operator
meta
Consumes/re-raises escalations; owns the PAUSE switch surface
session-review
meta
Post-task retros into structured signals for the enhancer
Every file states explicit non-merge / non-code boundaries.
install.sh
fleet/roles/ is already seeded by the normal sync (rsync/cp path; see the comment block ~lines 27-34 and the seed logic). New fleet/roles/*.md files therefore land automatically — verified by running install in MOSAIC_SYNC_ONLY=1 mode, which seeded all 13 role files (12 new + enhancer) into the target. No new PRESERVE_PATHS entry is needed (that list is for user-owned files that must survive sync, not framework-seeded ones). Added a one-line confirming comment to make the auto-seed guarantee explicit.
No Hermes
No Hermes references anywhere in the new files or the install.sh change (decomposition uses the native mosaic fleet backlog).
## Card A2 — seed role registry markdown library
Adds one markdown role-contract per fleet roster class, modeled on the existing `packages/mosaic/framework/fleet/roles/enhancer.md` (matching its title / mandate / boundaries structure). `enhancer.md` was left untouched.
### New role files (`packages/mosaic/framework/fleet/roles/`)
| Role | Tier | Summary |
|---|---|---|
| board | front | Owns NORTH_STAR.yaml; ratifies/vetoes goals & assumptions; never codes or merges |
| planner | front | **Alias of the existing orchestrator class** (documented, not a competing class — two-agent floor preserved); emits phased FRs + depends_on DAG, not tasks |
| decomposition | front | Splits FRs into one-PR cards via the native `mosaic fleet backlog`; never starts work |
| code | exec | Implements one card to green CI; opens PR via `pr-create.sh`; stays in card scope |
| review | exec | Correctness/scope/coverage; approves or requests changes; does not merge |
| security-review | exec | Secret/auth/forbidden-path second line (authoritative list lives in the `pr-merge.sh` guard) |
| site-tester | exec | Runtime/behavioral verification vs acceptance criteria |
| documentation | exec | Prose docs + NORTH_STAR projections; single-writer per TASKS file |
| merge-gate | gate | **Sole approver/auto-merger; names `pr-merge.sh` + `pr-ci-wait.sh` as the ONLY merge path**; no raw tea/Gitea API; per-decision heartbeat; honors fleet/run/PAUSED |
| rebase | exec | Owns stale / mergeable==false PRs; rebase+re-run or escalate on real conflict |
| operator | meta | Consumes/re-raises escalations; owns the PAUSE switch surface |
| session-review | meta | Post-task retros into structured signals for the enhancer |
Every file states explicit non-merge / non-code boundaries.
### install.sh
`fleet/roles/` is already seeded by the normal sync (rsync/cp path; see the comment block ~lines 27-34 and the seed logic). New `fleet/roles/*.md` files therefore land automatically — verified by running install in `MOSAIC_SYNC_ONLY=1` mode, which seeded all 13 role files (12 new + enhancer) into the target. No new PRESERVE_PATHS entry is needed (that list is for *user-owned* files that must survive sync, not framework-seeded ones). Added a one-line confirming comment to make the auto-seed guarantee explicit.
### No Hermes
No Hermes references anywhere in the new files or the install.sh change (decomposition uses the native `mosaic fleet backlog`).
### Gates
typecheck ✅ · lint ✅ · format:check ✅ · vitest 553/553 ✅
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Add one markdown role-contract per fleet roster class, modeled on the
existing enhancer.md (title / mandate / boundaries structure):
- board (front): owns NORTH_STAR.yaml; ratifies/vetoes goals; never codes/merges
- planner (front): alias of the orchestrator class; emits phased FR + depends_on DAG
- decomposition (front): splits FRs into one-PR cards via native `mosaic fleet backlog`
- code (exec): implements one card to green CI; opens PR via pr-create.sh
- review (exec): correctness/scope/coverage; approves or requests changes
- security-review (exec): secret/auth/forbidden-path second line (guard lives in pr-merge.sh)
- site-tester (exec): runtime/behavioral verification vs acceptance criteria
- documentation (exec): prose + NORTH_STAR projections; single-writer per TASKS file
- merge-gate (gate): sole approver/merger via pr-merge.sh + pr-ci-wait.sh only
- rebase (exec): owns stale / mergeable==false PRs; rebase+rerun or escalate
- operator (meta): consumes/re-raises escalations; owns the PAUSE switch
- session-review (meta): post-task retros into structured signals for the enhancer
Every file states non-merge / non-code boundaries; merge-gate names the
wrapped scripts as the only merge path. No Hermes references. install.sh
gains a confirming comment: fleet/roles/*.md seed automatically via the
existing normal sync, so no per-file PRESERVE/entry is required.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Card A2 — seed role registry markdown library
Adds one markdown role-contract per fleet roster class, modeled on the existing
packages/mosaic/framework/fleet/roles/enhancer.md(matching its title / mandate / boundaries structure).enhancer.mdwas left untouched.New role files (
packages/mosaic/framework/fleet/roles/)mosaic fleet backlog; never starts workpr-create.sh; stays in card scopepr-merge.shguard)pr-merge.sh+pr-ci-wait.shas the ONLY merge path; no raw tea/Gitea API; per-decision heartbeat; honors fleet/run/PAUSEDEvery file states explicit non-merge / non-code boundaries.
install.sh
fleet/roles/is already seeded by the normal sync (rsync/cp path; see the comment block ~lines 27-34 and the seed logic). Newfleet/roles/*.mdfiles therefore land automatically — verified by running install inMOSAIC_SYNC_ONLY=1mode, which seeded all 13 role files (12 new + enhancer) into the target. No new PRESERVE_PATHS entry is needed (that list is for user-owned files that must survive sync, not framework-seeded ones). Added a one-line confirming comment to make the auto-seed guarantee explicit.No Hermes
No Hermes references anywhere in the new files or the install.sh change (decomposition uses the native
mosaic fleet backlog).Gates
typecheck ✅ · lint ✅ · format:check ✅ · vitest 553/553 ✅
🤖 Generated with Claude Code