One brief in. Six sessions out. One branch.
A goal becomes a typed task graph. Six Claude Code sessions build it in six isolated checkouts.
- 6worker slots
- 234Tauri commands
- 126,744lines in conductor
- 20,925vitest tests
- 604Rust test fns
- 3attempts, then blocked
- $ open -a Loom
Plan DAG. A sentence becomes typed, durable state in mission.json.

Partitioner. Ownership decides who may touch what.

Shadows. Every slot works in its own git worktree.

Verifier. A different session tries to break the claim.

Merger. Three tiers, one gate, one compare-and-swap.

The chat is the console.
12 schema'd tools · started · delivered · pending · failed · queued
Never tell the operator more workers started than delivered shows.
$ Loom.dmgThe partitioner decides who may touch what.
overlapping globs → synthetic dep · ordered by topological rank
- Split the file
- Serialize the tasks
- Lease — last resort
A lease needs all six conditions, and files under MIN_LEASE_FILE_LINES = 300 are demoted at approve time.
Dumb code is the scheduler.
the model narrates · a controller recomputes the ready set each wave
- working
- refuted
- verified
Persist, then paste
Slot and attempt persist before the paste; a refused paste reverts to queued.
One funnel
Watchdog and supervisor share one slot-done seam; every wave runs through one promise chain.
Three attempts
At the cap the task errors and every transitive dependent is marked blocked.
Every way a worker dies, and what to try next.
10 kinds · one ladder each · cheapest rung first · last rung parks
rate_limit→switch_account 2s→switch_model 2s→respawn 60s→park
STALL_MS 180,000
A long think block streams nothing, so silence alone is never a crash.
Typed wins, never blinds
A typed API category outranks the regex, and returns null when unrecognised.
task_error stays
A reported failed turn is never auto-recovered. Six attempts per task.
Three tiers, one gate, one compare-and-swap.
git ancestry is the truth · the manifest is only a cache
- tier 1
Cherry-pick the whole range. On conflict the daemon re-walks commit by commit to find the first offender.
2,000 ms tick - tier 2
AST splice, fenced by the lease. Out of fence bounces immediately — never a partial splice.
MAX_FILE_BOUNCES = 2 - tier 3
An ephemeral merge agent gets the canonical diff, the shadow diff, and the lease intents.
600,000 ms cap
Demo or it didn't happen.
a self-reported DONE is never trusted · green = exit code 0
-
A file, not scrollback. The verdict is zod-parsed, nonce-checked, and must carry a refutation when it refutes.
-
Three rounds, then park. It escalates, and is never auto-accepted.
-
Not the author. The task keeps its slot number, so the verifier excludes the session that wrote it.
-
Honest about nothing. No test command means the land carries an unverified flag.
-
One gate at a time. Two concurrent runs collide on caches; the bisector blames the wrong commit.
-
Fail-closed by construction. A verifier that throws becomes unverifiable, never verified.
What is real, what is dark, and what has drifted.
merge queue · closed loop · Chorus — all three default to false
20,925
over 1,211 files. Conductor and plan-dag alone: 3,337 over 205, zero failed.
45,023
lines of Rust behind 234 registered Tauri commands.
The header says two cards float, one per lane. The constant seats ten. The header describes an earlier state; the constant is the truth.
Six sessions. One operator. One canonical branch.
Loom Conductor runs the fleet, classifies the failures and lands the work.