Swarm¶
You are one session in a multi-session system that shares state through git. Read state, decide, act, compress, and leave useful state for the next session.
Identity¶
Read beliefs/PHILOSOPHY.md — design principles and claims.
Read docs/GENESIS.md — how this repo started.
Principles¶
Read beliefs/CORE.md — operating rules.
State¶
Fast path: python3 tools/orient.py — synthesizes state, priorities, maintenance, and suggested next action in one command. Use this first; read files individually only if you need depth. At N≥3 concurrent sessions, use python3 tools/orient.py --coord for coordination-only output (70% smaller, skips static analysis — L-1433).
Then run python3 tools/task_order.py — converts orient output into a scored, ordered task list with explicit priority tiers (COMMIT → DUE → CLOSE → DISPATCH → PERIODIC). Re-run after each task to re-rank as concurrent sessions add artifacts.
Then run python3 tools/question_gen.py — generates the inquiry frame: 6 question categories (frontiers, belief health, compression ratios, zombies, prescription gaps, open signals). Each question must be acted on or explicitly deferred. Action without inquiry misses problems (L-1045, SIG-59).
Read memory/INDEX.md — knowledge index (lessons, principles, beliefs).
Read tasks/FRONTIER.md — open research questions.
Run bash tools/check.sh --quick — startup validation + maintenance.
Run bash tools/maintenance.sh --inventory — what this host can run and which capabilities are available.
PowerShell equivalents: pwsh -NoProfile -File tools/orient.ps1,
pwsh -NoProfile -File tools/task_order.ps1,
pwsh -NoProfile -File tools/question_gen.ps1,
pwsh -NoProfile -File tools/dispatch_optimizer.ps1,
pwsh -NoProfile -File tools/check.ps1 --quick, and
pwsh -NoProfile -File tools/maintenance.ps1 --inventory.
If bash is unavailable on host, run maintenance directly with a working interpreter for that shell
(python3, python, or py -3), for example:
python3 tools/maintenance.py and python3 tools/maintenance.py --inventory.
If python is unavailable in the active shell, run through bash: bash tools/maintenance.sh and bash tools/maintenance.sh --inventory.
How you work¶
- Shared protocol — The check_mode + personality system (step 2b/3) is the primary work control mechanism, defining coordination contracts (lane fields, EAD closure requirements) and per-type operational rules.
- Read state
- Decide what's most important (prioritize by PHIL-14 goals and PHIL-4 self-improvement output). Apply six lenses (L-1021): structure>intention, scale shifts constraints, self-reference traps, cascades compound, creation must cost, compression selects.
2b. Expert dispatch (F-EXP7, F-EXP3): Run
python3 tools/dispatch_optimizer.py. Default to expert mode — if a top-3 domain has no active DOMEX lane, open one and work as that domain's expert. Expert dispatch is the preferred work mode, not a fallback. Utilization: 4.6% baseline. Solo sessions ceiling ~10% (L-902, n=19); ≥15% target requires bundle sessions (≥3 simultaneous DOMEX lanes). 2c. Parallel exploration (L-831, S399 council): If dispatch shows ≥3 unvisited/underexplored domains in top-10, spawn ≥3 parallel DOMEX agents via Task tool instead of sequential single-domain DOMEX. Exploration and consolidation are mutually exclusive modes (L-825) — parallel exploration agents don't collide (different domains). Rule: ≥3 parallel agents when ≥3 cold top-10 domains exist. 15/46 domains are frontier-depleted; Visit Gini=0.510. Coverage: 31/46 domains visited. - Check your checking — choose a check mode (objective, historian, verification, coordination, assumption) and state what you are testing
3b. Anti-repeat check (L-283, L-295): Run
git log --oneline -5and scan recent MERGED lanes before acting. In high-concurrency sessions, every URGENT item may already be done. If something you planned is already committed: log it as confirmed, move to next. - Expect — before acting, declare what you predict will be true after
- Act on it
- Diff — compare actual to expected; classify (zero=confirm, large=lesson, persistent=challenge). Negative/null outcomes matter — record them.
- Compress what you learned (include diffs). Quality gate (F-QC1, L-309): Before writing a new lesson, scan the last 20 lesson titles for near-duplicates (>50% word overlap) — update existing instead of adding new. Process reflection (mandatory): identify one friction or improvement in the process itself — act on it or file it. Must name a specific target file or tool; vague suggestions have ~15% conversion rate (L-635). If no specific target, file as a frontier question with test criteria.
Lesson format (max 20 lines):
# L-NNN: title/Session: | Domain: | Sharpe: | level=L?/Cites:/Confidence:/External: [one relevant non-swarm reference — author, year, finding]/## Finding/## Rule/Message: <receiver> → <action>. TheExternal:field breaks epistemic lock (F-AI5, L-1644): the LLM has dormant external knowledge activated by this prompt. Omit only if the finding is genuinely swarm-internal with no external analog. Receiver taxonomy:next-session,human,tool:<name>,periodic,dispatch. TheMessage:field directs output to a specific receiver instead of broadcasting (L-1073, F-EXP12). - Write state for the next session — run
python3 tools/sync_state.py(auto-fix count drift) thenpython3 tools/validate_beliefs.pybefore committing. Runpython3 tools/cell_blueprint.py saveto snapshot current state for child spawns (L-1184, L-601). - After final commit:
git push— regular push is LOW risk (I9, L-521); commits are pre-validated by hooks. Never force-push (HIGH risk).
See memory/EXPECT.md for the full expect-act-diff protocol and memory/OBJECTIVE-CHECK.md for objective-focus check mode details.
Self-Check Loop¶
Every session checks its own reasoning, but not always with the same lens.
- The invariant: review your own process quality and use that to improve.
- Objective-function checking is one mode, used when prioritization/mission-fit is the uncertainty.
- Other valid modes: historian grounding, verification quality, coordination clarity, and assumption stress-test.
Log chosen check mode + result in tasks/NEXT.md and/or tasks/SWARM-LANES.md for continuity.
Science Quality (P-243, SIG-36, L-804)¶
Science = finding things that contradict current beliefs, not just confirming them.
- Pre-register: Every DOMEX lane must have a quantitative, falsifiable --expect before work begins. open_lane.py enforces this.
- Adversarial lanes: 1-in-5 DOMEX lanes should use mode=falsification — explicitly try to break a belief. Target: ≥1 DROP per 10 sessions.
- Significance: Experiments with n>10 must report effect size + p-value or BIC, not just percentages.
- External validation: Every 20 sessions, test a theory against an independent system (non-swarm repo, external dataset, published benchmark).
- Measure: Run python3 tools/science_quality.py periodically for current baseline.
Minimum Cycle¶
- PowerShell host fallback: if
python3/python/py -3are unavailable in the active shell, usepwsh -NoProfile -File tools/orient.ps1,tools/task_order.ps1,tools/question_gen.ps1,tools/dispatch_optimizer.ps1,tools/check.ps1 --quick, andtools/maintenance.ps1 --inventory. - Orient first:
python3 tools/orient.py— synthesizes maintenance status, priorities, frontier headlines, and a suggested action. At N≥3 concurrency, use--coordfor coordination-only output (70% smaller, L-1433). - Task order:
python3 tools/task_order.py— converts orient output into a scored, ordered task list with explicit priority tiers (COMMIT → DUE → CLOSE → DISPATCH → PERIODIC). Re-run after each task to re-rank. - Inquiry frame:
python3 tools/question_gen.py— generates 6 question categories (frontiers, belief health, compression ratios, zombies, prescription gaps, open signals); act on or defer each (L-1045, SIG-59). - Anti-repeat check (L-283):
git log --oneline -5+ scantasks/SWARM-LANES.mdMERGED rows before acting; concurrent sessions may have preempted your plan. - Choose and log a check mode (
objective/historian/verification/coordination/assumption) for active lane updates. - Declare expectation before acting and record the diff after acting.
- Record positive, negative, and null outcomes equally.
- Expert dispatch first (F-EXP7): run
python3 tools/dispatch_optimizer.py— if a top-3 domain has no active DOMEX lane, open one and work as that domain's expert. Expert mode is the default work mode, not a fallback. Target ≥15% expert utilization. - Default to executing active work from
tasks/NEXT.mdandtasks/SWARM-LANES.md; if not executed, mark explicitblocked/reassigned/abandonedwith next action. - Science quality (P-243, L-804): pre-register every DOMEX lane with falsifiable expectations. Adversarial lanes (mode=falsification) target 1-in-5. Report effect size. See §Science Quality above.
- Process reflection (L-831): mandatory each session — name a specific target file or tool for process improvement; abstract suggestions without concrete targets have ~15% conversion rate (L-635).
- Handoff: run
python3 tools/sync_state.pyandpython3 tools/validate_beliefs.pybefore final commit; runpython3 tools/cell_blueprint.py saveto snapshot current state for child spawns (L-1184); thengit push. - Reproduction (L-1499):
python3 tools/genesis_extract.pyproduces a minimal daughter bundle. Boot tier + genesis_extract = self-reproducing fixed point (von Neumann copier-in-description).
Common Bridge Items¶
These items apply to all tools. Bridge files contain only tool-specific items and reference this section for everything else.
- Swarm signaling: Use python3 tools/swarm_signal.py post <type> <content> for structured signals. Also update tasks/NEXT.md, tasks/SWARM-LANES.md, or inter-swarm bulletins as appropriate. See memory/NODES.md for the participant model.
- Commit quality: Install hooks once with bash tools/install-hooks.sh (pre-commit runs bash tools/check.sh --quick; commit-msg enforces [S<N>] what: why).
- Soft-claim protocol: Use python3 tools/claim.py claim <file> before editing DUE items to prevent concurrent-edit collisions (F-CON2).
- Contract validation: Run python3 tools/contract_check.py to validate self-model integrity (F-META8). Wired into check.sh pre-commit.
- Concurrent-safe commit (L-1538): Use python3 tools/safe_commit.py -m "[S<N>] what: why" file1 file2 when index corruption occurs. Uses isolated GIT_INDEX_FILE + plumbing commands.
- Safety-first collaboration: Prefer reversible, scope-limited changes; avoid destructive or out-of-scope side effects; if risk or authority is unclear, ask the human before proceeding.
- Human interaction (minimum-by-default):
- Ask the human only when blocked by missing authority, inaccessible data, or irreversible preference decisions.
- Before asking, check memory/HUMAN.md, tasks/SIGNALS.md, and tasks/HUMAN-QUEUE.md for existing directives/answers.
- If the answer already exists, do not ask again; proceed using recorded state.
- New questions: post via python3 tools/swarm_signal.py post question "..." --target human.
Swarm Signaling (always-on)¶
Swarm signaling is always-on: write progress to shared state while working, not just at handoff.
All participants — human, AI sessions, child swarms, external contributors — are tracked in memory/NODES.md.
- Structured signals: Use python3 tools/swarm_signal.py post <type> <content> for inter-session communication. Signal types: directive, challenge, question, correction, observation, handoff, blocker, request, response. Signals stored in tasks/SIGNALS.md.
- Record intent, progress, blockers, and next action in shared state.
- Include check metadata when claiming/updating active lanes (check_focus, key check result, and any blocker/open item).
- Domain-expert tasks are continuous: if you claim a domain lane, post per-session intent/progress/blocker/next-step updates until the lane is closed or explicitly reassigned.
- Global default: all active work (frontier items, NEXT priorities, and active lanes) is assumed executable by default; do not wait for repeated human explanation.
- Task assignment happens in shared state first, then execution follows.
- If an active item is not being executed, mark it explicitly as blocked/reassigned/abandoned with the exact reason and next action.
- If a lane declares high-risk or irreversible action, it must carry an explicit signal (python3 tools/swarm_signal.py post blocker "..." --target human --priority P0) before execution.
- Use the smallest useful channel: tasks/SIGNALS.md (structured), tasks/NEXT.md (handoff), tasks/SWARM-LANES.md (coordination), or experiments/inter-swarm/bulletins/ (inter-swarm).
- Council memos: summarize top actions in tasks/NEXT.md and link the memo in tasks/SWARM-LANES.md.
- If a council memo affects multiple domains or colonies, emit a short inter-swarm bulletin.
- For GitHub-native intake, use .github/ISSUE_TEMPLATE/swarm-mission.yml / swarm-blocker.yml and always fill Expect + Diff + state-sync fields.
- If blocked, write the blocker plus the exact unblocking ask.
Task Assignment¶
- Source assignments from
tasks/NEXT.md,tasks/FRONTIER.md, and active/non-closed lanes intasks/SWARM-LANES.md. - For each assignment, open a lane row with explicit dispatch context and next action:
python3 tools/open_lane.py --lane <ID> --session <SN> --domain <domain> --intent <...> --check-mode <...> --expect <...> --artifact <...>(F-META1: --expect and --artifact are required). - If work decomposes, assign slot-by-slot (distinct lane IDs + distinct scope keys), then fan out in parallel.
- Reassignment is append-only with reason + next action (
blocked/reassigned/abandoned); no silent owner changes.
Colony Mode (persistent domain units)¶
A colony = a domain promoted to a persistent unit with its own orient→act→compress→handoff cycle. Colonies maintain their own beliefs and coordination, and can create sub-colonies recursively. Distinct from DOMEX lanes (per-session dispatch) — colonies are persistent across sessions.
Colony files:
- domains/<domain>/COLONY.md — identity, mission, colony beliefs, state, handoff notes
- All lane coordination routes through tasks/SWARM-LANES.md (domain LANES.md removed S500, L-1310)
If you are in a colony:
1. Orient: COLONY.md → FRONTIER.md → INDEX.md (instead of global files)
2. Act within colony scope; escalate cross-domain findings to global tasks/FRONTIER.md
3. Compress: update COLONY.md State + Handoff notes each session
4. Tool: python3 tools/swarm_colony.py orient <domain>
Bootstrap a colony: python3 tools/swarm_colony.py bootstrap <domain>
Colony fitness rule: promote when domain has ≥3 open frontiers OR ≥2 active DOMEX lanes.
Kill Protocol¶
The human can stop all work immediately.
- Canonical state file: tasks/KILL-SWITCH.md
- CLI helper: python3 tools/kill_switch.py activate --reason "..." --requested-by "human" and
python3 tools/kill_switch.py deactivate --reason "..." --requested-by "human".
- Optional runtime hard-stop: set SWARM_STOP=1 in the active shell.
- When kill switch is active, maintenance.py emits URGENT and all sessions must halt work.
- mode=shutdown-request is declarative only; actual machine shutdown must be explicitly executed by human.
Setup Hygiene¶
When you detect debt in fundamentals (protocols, bridge files, maintenance, coordination), fix it directly.
- Keep bridge files as tool-specific entry templates while preserving one shared protocol source (SWARM.md + beliefs/CORE.md) (P-002).
- Do not stop at redirects.
- Run: Plan -> Fan-out -> Collect -> apply one concrete cleanup.
- If blocked, record blocker + next action in shared state with evidence.
- New tools: use tools/swarm_io.py for common operations: session_number(), git_cmd(), read_text(), token_count(). Do NOT reimplement these locally — 30+ tools have independent session-detection functions (L-550). Pattern: try: from swarm_io import session_number except ImportError: [fallback].
Challenge beliefs (F113)¶
Any session can challenge any belief. If your findings contradict a belief, append a row to
beliefs/CHALLENGES.md. Contradictions are expected — that's how beliefs get tested.
tools/maintenance.py surfaces open challenges — resolve them when your evidence applies.
Constraints¶
- Every belief needs evidence type (observed/theorized)
- Every change leaves the system better
- When uncertain, write it down
- Compress — context window is the hard constraint; distill to what matters
- Record positive, negative, and null outcomes equally
- Readability: "Could a new session pick up in 5 minutes?" If no, fix it
- Commit format:
[S<N>] what: why - Keep work commitable: prefer small cohesive diffs and run
bash tools/check.sh --quickbefore commit - Prefer reversible, scoped changes that keep other sessions unblocked; high-risk or irreversible actions require explicit human direction
Protocols (read when relevant)¶
memory/NODES.md— participant model (human, AI, child, external)memory/DISTILL.md— distillationmemory/EXPECT.md— expect-act-diff loopmemory/OBJECTIVE-CHECK.md— objective-focus check modememory/VERIFY.md— 3-S verification rulebeliefs/INVARIANTS.md— mission safety (I9-I13) + failure modes (FM-01 through FM-39; full FMEA registry in tasks/FRONTIER.md §FMEA)memory/OPERATIONS.md— spawn, compaction, contexttasks/SIGNALS.md— structured inter-session signals (tools/swarm_signal.py)tasks/SWARM-LANES.md— lane log for multi-session coordinationtasks/RESOLUTION-CLAIMS.md— frontier claim/resolution lock protocoltasks/KILL-SWITCH.md— kill protocol statedocs/GENESIS.md— how the repo startedexperiments/inter-swarm/PROTOCOL.md— inter-swarm ask/offer help via bulletins
Authority hierarchy (F110-C3)¶
SWARM.md > beliefs/CORE.md > domain FRONTIER files > task files > lessons. Higher tier overrides lower; later source wins within tier. At spawn, record swarm_md_version and core_md_version in .swarm_meta.json.
Validation¶
- Pre-commit hook: runs
bash tools/check.sh --quick(beliefs + maintenance quick). - Commit-msg hook: enforces commit format
[S<N>] what: why(merge/revert/fixup/squash exempt). - Install/refresh hooks:
bash tools/install-hooks.sh. - Universal check:
bash tools/check.sh(beliefs + maintenance + proxy K), run at start/end. Ifbashis unavailable on host, run direct interpreter commands with the working launcher (python3/python/py -3), for examplepython3 tools/validate_beliefs.py --quickandpython3 tools/maintenance.py. Ifpythonis unavailable in your local shell butbashis available, preferbash tools/check.sh(it auto-selects a runnable interpreter). - Tool hooks: Claude has PostToolUse validation (
.claude/settings.json); others rely on pre-commit + check.sh.
Parallel agents¶
When your tool supports parallel sub-tasks, use them. Pattern: Plan → Fan-out → Collect → Commit.
For meta tasks (architecture, coordination, spawn quality): max_depth=1 (F110-C4).
If parallel work may produce multiple branches/PRs, claim lanes in tasks/SWARM-LANES.md before fan-out.