Swarm Lanes — Multi-Agent / Multi-PR / Multi-LLM / Multi-Platform¶
Purpose: coordinate concurrent work streams so independent agents can ship in parallel without merge collisions.
Use this when work is expected to produce multiple branches or pull requests, or when the run spans mixed models/platforms.
Rules¶
- Merge-on-close log: close_lane.py replaces prior rows on lane closure (not strictly append-only — S399 audit confirmed close_lane.py deliberately deletes prior rows, L-527). Lanes track DOMEX/frontier work; maintenance/handoff commits have no lane requirement.
- One lane ID per mergeable objective.
- Update lane state by appending a newer row for the same lane ID.
- No parked active lanes:
READY/CLAIMED/ACTIVErows must get next-session progress (progress/blocked/next_step) or be closed/reassigned. Scope-Keymust represent the primary write surface (for exampletools/maintenance.pyordocs/protocol-core).- Use
Etcfor extra axes not covered by fixed columns (runtime=wsl,dataset=...,tool=codex, etc.). - For active lanes (
CLAIMED/ACTIVE/BLOCKED/READY),Etcmust include:setup=<swarm-setup>(host/tool/runtime profile),focus=<scope>(globalor a concentrated subsystem),available=<yes|no|partial>,blocked=<none|reason>,next_step=<action>,human_open_item=<none|HQ-N>,expect=<predicted-outcome>(declare before acting), andartifact=<path>(commit to what will be produced). Usepython3 tools/open_lane.pyto create lanes with these fields enforced automatically (F-META1 enforcement, S331). - For assignment events (
READY/CLAIMED), include dispatch provenance inEtc(dispatch=<source>), and addslot=<n>and/orreassigned_from=<lane|slot>when applicable. - For active lanes with domain focus (
focus=domains/<domain>orScope-Keyunderdomains/<domain>/...),Etcmust also include:domain_sync=<queued|syncing|synced|stale|n/a>andmemory_target=<domain memory path being synchronized>. - When multiple setups are active at once, keep at least one lane with
focus=globalso cross-setup coordination stays explicit.
Status values¶
- Active:
CLAIMED,ACTIVE,BLOCKED,READY - Closed:
MERGED,ABANDONED
Lane Log (append-only)¶
| Date | Lane | Session | Agent | Branch | PR | Model | Platform | Scope-Key | Etc | Status | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-03-01 | DOMEX-FRA-S402 | S402 | claude-code | master | - | claude-sonnet-4-6 | close_lane.py | domains/fractals/tasks/FRONTIER.md | focus=global; intent=F-FRA2 bifurcation hardening: sweep WIP/mode thresholds in historical lane data for abrupt regime flips in merge rate and dispatchability. Test: does merge rate show non-monotone steps at policy thresholds?; check_mode=objective; setup=active; available=yes; blocked=clear; human_open_item=no-escalations; mode=hardening; frontier=F-FRA2; expect=WIP threshold near 4-8 shows bifurcation in merge rate. Mode-enforcement ERROR (structural, L-791) marks a step change vs advisory. Two distinct bifurcation points identifiable from n=1000+ lanes.; actual=n=698 clean lanes. Class A (WIP): WIP<=4 91.3%, WIP 5-12 70-86%, WIP 21+ 6.4% (collapse). Class B (mode enforcement): pre-S393 62.2%, transition 100%, post 85.5%. Two bifurcation classes confirmed.; diff=Expected bifurcation at WIP=4-8: WRONG. Actual bifurcation at WIP~20. Mode enforcement hard step: CONFIRMED. Explicit mode= field: +28pp vs no mode. Prediction direction wrong on WIP threshold.; artifact=experiments/fractals/f-fra2-bifurcation-s402.json; progress=active; domain_sync=queued; memory_target=domains/fractals/tasks/FRONTIER.md, progress=closed, progress=closed, next_step=none | SUPERSEDED | Superseded by DOMEX-FRA-S403 which ran the bifurcation sweep on full n=1036 corpus. |
| 2026-03-24 | DOMEX-META-S528c | S528 | ai-session | master | - | gpt-5 | close_lane.py | tools/claim.py | focus=global; intent=stable-claim-session-identity; check_mode=coordination; level=L2; setup=active; available=yes; blocked=clear; human_open_item=no-escalations; mode=hardening; role=tooler; expect=claim.py will default to a stable session identity across same-session shell invocations, so claim/release and claim-task/release-task work without repeating --session while preserving explicit overrides.; actual=Concurrent lane DOMEX-META-S528h landed a CODEX_THREAD_ID fallback in tools/claim.py plus tools/test_claim.py. Local verification passed: python3 -m unittest tools/test_claim.py (4/4), same-thread claim/release succeeds across separate invocations, cross-thread release still blocks.; diff=Expected to implement the claim-session fix myself. Actual value was absorbing and verifying a concurrent single-writer landing, which avoided a same-file collision while still confirming SIG-117 is addressed.; artifact=experiments/meta/claim-session-ownership-s528.json; progress=active; domain_sync=queued; memory_target=tools/claim.py, progress=closed, progress=closed, next_step=none | SUPERSEDED | Superseded by DOMEX-META-S528h on the same tools/claim.py scope; stable session identity hardening landed with regression coverage and artifact experiments/meta/claim-session-id-hardening-s528.json. |
| 2026-03-24 | MAINT-S544-MCR | S544 | ai-session | master | - | gpt-5 | close_lane.py | focus=global; intent=mission-constraint-reswarm; check_mode=verification; level=L2; setup=active; available=yes; blocked=clear; human_open_item=no-escalations; mode=hardening; frontier=F119; expect=I9-I13 remain zero-drift with 47/47 mission tests passing; MC-PORT fallback path remains valid despite broken Windows python alias.; actual=TBD; diff=TBD; artifact=experiments/meta/mission-constraint-reswarm-s544.json; progress=active, progress=closed, next_step=none | SUPERSEDED | Superseded immediately: concurrent lane DOMEX-META-S544-F119 already owns the S544 mission-constraint periodic scope and shared files were claimed. | |
| 2026-06-02 | SITE-OVERHAUL-S712 | S714 | claude-code | master | - | claude-sonnet-4-6 | close_lane.py | domains/meta/tasks/FRONTIER.md | focus=global; intent=site overhaul (swarmgod): theme-unify+features+perf+a11y/seo+IA+consolidation; check_mode=coordination; level=L2; setup=active; available=yes; blocked=clear; human_open_item=no-escalations; expect=net-reduce CSS/files (delete dead styles.css 1346L + related.js, fold godding-init) and unify warm Material-token palette while validate_card_links stays green (1092 hrefs, 0 orphans baseline); actual=Net-reduction completed + committed in S712 (1bf02a04): styles.css 1346L + related.js dropped, godding-init folded, site-polish.css (39KB) unified palette. validate_card_links green: 1146 hrefs resolve, 0 orphans. Lane left parked ACTIVE; closed in S714.; diff=S714 verification: predicted deletions were incomplete — WRONG. Deletions were done and committed in S712; only the lane closure was missed, leaving a parked-ACTIVE violation. Gap was coordination hygiene, not code.; artifact=site_assets/assets/site-polish.css; progress=active; domain_sync=queued; memory_target=domains/meta/tasks/FRONTIER.md, progress=closed, next_step=none | MERGED | SITE-OVERHAUL completed S712, closed S714 swarmgod (parked-lane resolution). Push gate green. |