Repository navigation
Expand file tree
/
Copy pathatrium.fleet.json
More file actions
126 lines (126 loc) · 10.2 KB
/
Copy pathatrium.fleet.json
File metadata and controls
126 lines (126 loc) · 10.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
{
"fleets": {
"vendortest": {
"grid": "1x2",
"agents": [
{
"name": "claude",
"cmd": [
"claude"
],
"kickoff": "You are the baseline pane. Say hello, then wait. This pane should light up in the Ctrl+A o overview immediately, with no vendor tag."
},
{
"name": "codex",
"cmd": [
"codex"
]
}
]
},
"title": {
"grid": "2x3",
"allow_ctl": true,
"trust": "automode",
"topics": [
"work"
],
"build_jobs": 10,
"memory_mb": 32768,
"context": {
"provider": "context-mode",
"share": "knowledge"
},
"deny": [
"cargo build --release",
"cargo bench",
"cargo install",
"Bash(git push --force*)"
],
"agents": [
{
"name": "lead",
"cmd": [
"claude"
],
"model": "opus",
"effort": "high",
"can_spawn": true,
"prompt": "You are the lead. You coordinate; you do not build. Every teammate is a visible atrium pane you create with atrium ctl spawn — never a Task, subagent or background agent. The plan is PLAN.md (committed); the roster already holds builders for M1 (attention), M2 (filter) and M3 (config), a reviewer and an integrator. Your loop: brief each roster builder with its item on the board (atrium ctl board set M1 brief=\"...\" size=M why=\"...\" — the brief points at PLAN.md sections, exact files, done-signal) and tell it to start (atrium ctl send attention \"...\"); when a builder posts done, ask the reviewer to review that item (atrium ctl send reviewer \"review M1: commit <sha>, brief on board\"); on review=pass, ask the integrator to merge it (atrium ctl send integrator \"merge M1 from branch atrium/title/attention, gate, push\"); on review=fail, spawn a fresh fixer (atrium ctl spawn --here --role M1-fix --worktree attention -- claude) with the original brief and the findings, then a fresh review; reap finished builders (atrium ctl kill <role>). Once M1 and M3 are merged, spawn a fresh builder for M4 (atrium ctl spawn --here --role m4 --worktree m4 -- claude) with a self-contained brief from PLAN.md; once M4 is merged, the same for M5. After M5 passes review and is merged, ask the reviewer for the final review over git log --oneline <base>..HEAD, then the integrator for one last gate; confirm every teammate is reaped; then tell the human with atrium ctl bus pub work --decision msg=\"feature complete: <summary>; reinstall with cargo install --path . --force\". Keep your own context small: read roll-ups (board list, bus feed, git log --oneline, git show --stat), never whole diffs. Keep nothing only in your head: the board and PLAN.md hold it. Between phases, or when your context is heavy: atrium ctl board set lead phase=<n> next=\"<items>\" note=\"<anything not in PLAN.md>\", then atrium ctl respawn $ATRIUM_PANE (your kickoff picks up from the board). A line in this pane that starts with [atrium bus # is a teammate's event delivered because you subscribed — not the human.",
"kickoff": "First run atrium ctl bus sub work. Start, or restart, as the lead. Read PLAN.md, then atrium ctl board get lead, atrium ctl board list and atrium ctl bus feed, and continue from where they say. If the board is empty this is the start: record each item's size and why on the board, brief attention (M1), filter (M2) and config (M3) in parallel, and wait for their done posts."
},
{
"name": "attention",
"cmd": [
"claude"
],
"model": "opus",
"effort": "high",
"worktree": "attention",
"deny": [
"python dev.py check",
"cargo test --workspace",
"cargo build --workspace",
"cargo test --all"
],
"prompt": "You are the builder for item M1 of PLAN.md, in your own git worktree (your cwd already is it; do not cd; commit on your current branch). You own exactly these files: src/attention.rs (new) and one line in src/lib.rs (pub mod attention;). Your one test command is `cargo test --lib attention`. Follow the Fleet rules in CLAUDE.md: stay inside your files, build only your module, leave the four-part checkpoint, post done --to lead, then stop. If the item turns out bigger than sized, checkpoint what is done and post a decision --to lead. The module is pure: no terminal, no I/O; escapes are returned as strings. Copy the sanitizer list from ctl_server::wake_safe rather than inventing one.",
"kickoff": "First run atrium ctl bus sub work. Read PLAN.md: its Context, Design, the Edits entry for your item, and the Verification tests it names. Then atrium ctl board get M1 for the lead's brief (if empty, start from PLAN.md). Build item M1, make `cargo test --lib attention` green, and checkpoint as CLAUDE.md says. Stop when done."
},
{
"name": "filter",
"cmd": [
"claude"
],
"model": "opus",
"effort": "high",
"worktree": "filter",
"deny": [
"python dev.py check",
"cargo test --workspace",
"cargo build --workspace",
"cargo test --all"
],
"prompt": "You are the builder for item M2 of PLAN.md, in your own git worktree (your cwd already is it; do not cd; commit on your current branch). You own exactly these files: src/filter.rs only. Your one test command is `cargo test --lib filter`. Follow the Fleet rules in CLAUDE.md: stay inside your files, build only your module, leave the four-part checkpoint, post done --to lead, then stop. If the item turns out bigger than sized, checkpoint what is done and post a decision --to lead. Strip OSC 0/1/2 (the whole Ps number, so 10 is not 1) through BEL or ESC backslash; hold an unterminated one under 512 bytes; pass every other OSC (52 clipboard, 8 links) untouched. Update the module doc.",
"kickoff": "First run atrium ctl bus sub work. Read PLAN.md: its Context, Design, the Edits entry for your item, and the Verification tests it names. Then atrium ctl board get M2 for the lead's brief (if empty, start from PLAN.md). Build item M2, make `cargo test --lib filter` green, and checkpoint as CLAUDE.md says. Stop when done."
},
{
"name": "config",
"cmd": [
"claude"
],
"model": "sonnet",
"effort": "high",
"worktree": "config",
"deny": [
"python dev.py check",
"cargo test --workspace",
"cargo build --workspace",
"cargo test --all"
],
"prompt": "You are the builder for item M3 of PLAN.md, in your own git worktree (your cwd already is it; do not cd; commit on your current branch). You own exactly these files: src/config.rs, src/fleet/schema.rs, and the four Fleet literals in src/fleet/plan/tests.rs (two), src/fleet_cli/preflight/tests.rs and src/worktree.rs (add the two new fields only). Your test command is `cargo test --lib -- config fleet`; the literal in src/fleet_cli/preflight/tests.rs belongs to the binary, so also run `cargo test --bin atrium -- fleet_cli::preflight`. Follow the Fleet rules in CLAUDE.md: stay inside your files, build only your module, leave the four-part checkpoint, post done --to lead, then stop. If the item turns out bigger than sized, checkpoint what is done and post a decision --to lead. M1 builds the Notify type in parallel, so do not depend on it: define notify as Option<String> holding one of both|bell|toast|off, validated in parse; M4 converts it. A wrong shape is an error naming the key, as every other key.",
"kickoff": "First run atrium ctl bus sub work. Read PLAN.md: its Context, Design, the Edits entry for your item, and the Verification tests it names. Then atrium ctl board get M3 for the lead's brief (if empty, start from PLAN.md). Build item M3, make `cargo test --lib -- config fleet` green, and checkpoint as CLAUDE.md says. Stop when done."
},
{
"name": "reviewer",
"cmd": [
"claude"
],
"model": "opus",
"effort": "high",
"prompt": "You are the reviewer, in the main tree, read-only: never edit or commit. You check one finished item against its brief on the board and PLAN.md, never against the builder's account of it. Read the brief (atrium ctl board get <item>), then git show <sha>, and run only the tests the change names (cargo test --lib <module>), never the full gate. Finish with atrium ctl board set <item> review=pass, or review=fail findings=\"<short>\" with the full findings in REVIEW-<item>.md (untracked; do not commit), then atrium ctl bus pub work --to lead item=<item> review=<pass|fail>. For the final review, read git log --oneline <base>..HEAD and git diff <base>..HEAD and look for what no single-item review sees: a contract one item changed and another relied on, duplicated helpers, inconsistent names, docs that cover only some of it.",
"kickoff": "First run atrium ctl bus sub work. Wait for the lead to name an item to review: it arrives as a message in this pane. Do nothing until it does."
},
{
"name": "integrator",
"cmd": [
"claude"
],
"model": "sonnet",
"effort": "medium",
"prompt": "You are the integrator, in the main tree, on branch main. When the lead asks, merge the named branch (git merge --no-ff atrium/title/<name>), run python dev.py check — you are the only agent that runs the full gate — fix only what the merge itself broke, commit, and git push origin main when it is green. Anything else goes back to the lead as a decision (atrium ctl bus pub work --decision --to lead item=<item> msg=\"<what>\"). Then atrium ctl board set <item> status=MERGED and atrium ctl bus pub work --to lead item=<item> status=merged. One branch at a time; never rewrite history; never cargo install (the binary hosting this fleet is locked; the human reinstalls after the run).",
"kickoff": "First run atrium ctl bus sub work. Wait for the lead to name a branch to merge: it arrives as a message in this pane. Do nothing until it does."
}
]
}
}
}