0.8.7 Loom Conductor for macOS — six sessions, one operator
Loom

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.

    Stippled plotter drawing: one line entering and thickening into a trunk
  • Partitioner. Ownership decides who may touch what.

    Stippled plotter drawing: a trunk splitting into six limbs
  • Shadows. Every slot works in its own git worktree.

    Stippled plotter drawing: six branch clusters each sealed in a hairline enclosure
  • Verifier. A different session tries to break the claim.

    Stippled plotter drawing: a broken limb doubling back and re-growing
  • Merger. Three tiers, one gate, one compare-and-swap.

    Stippled plotter drawing: six branches rejoining into one green line
01One chat

The chat is the console.

12 schema'd tools · started · delivered · pending · failed · queued

site-demo · shelllive

Never tell the operator more workers started than delivered shows.

$ Loom.dmg
02Ownership

The partitioner decides who may touch what.

overlapping globs → synthetic dep · ordered by topological rank

FILE LANETOPOLOGICAL ORDER → src/shell/** src/ai/tools/** conductor/merger.ts prisma/migrations/** package.json cc-01cc-05 cc-02 cc-03cc-06 · leased symbols cc-04cc-02 · serialized never owned — nobody may edit it
effectiveParallelism = max(1, min(6, deps-free tasks)) — a coupled repo honestly shows 1
  • 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.

03Kahn waves

Dumb code is the scheduler.

the model narrates · a controller recomputes the ready set each wave

  • working
  • refuted
  • verified
readyTasks = queued, and every dep resolves to a task that is done

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.

04Failure ladder

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
site-demo · weavelive

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.

05Landing

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

git ancestry is the truth · the manifest is only a cache

  1. 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
  2. tier 2

    AST splice, fenced by the lease. Out of fence bounces immediately — never a partial splice.

    MAX_FILE_BOUNCES = 2
  3. tier 3

    An ephemeral merge agent gets the canonical diff, the shadow diff, and the lease intents.

    600,000 ms cap
06The gate

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.

07Measured 2026-08-04

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.
islandLane.ts — found by reading both
Stippled plotter drawing: one trunk branching into six limbs that reconverge into a single green line

Six sessions. One operator. One canonical branch.

Loom Conductor runs the fleet, classifies the failures and lands the work.