Tutorial 10A established one coordinator and one worker. Now you will use the same small protocol for parallel work and an independent two-reviewer gate.
The goal is not to maximize agent count. Parallelism is useful only when work units are genuinely independent and their results can be reconciled against clear evidence.
You will ask one owner to publish two independent analysis tasks, wait for both to close, publish one two-run review task, and disposition every review result. The intended reviewers use different harnesses without hard-coding particular session IDs.
For the public Palmer Penguins data, split work by question rather than by arbitrary file range:
Neither result depends on the other, so separate workers can claim them concurrently. A later summary task can depend on both closed tasks.
Give the coordinator this prompt:
[loom_demo], coordinate a small parallel analysis of the local public palmerpenguins data. Keep permanent ownership yourself. Publish one task to count rows by island and one task to count rows by species. Each task gets one run, requires a matching repository capability, makes no repository changes, and must report its method plus a total cross-check. Publish a summary task that depends on both analysis tasks. Do not relay work through messages. Heartbeat, scan, and monitor the tasks until both analysis results are submitted; verify and close each before allowing the summary to start.Parallel claims may begin on adjacent scheduler wakes. Kanban guarantees atomic capacity, not simultaneous model starts.
Each worker checkpoints its data source and calculation, then submits. The owner checks that:
344;344;Only after that review does the owner explicitly close both tasks. The dependency gate then makes the summary task claimable.
Independent review belongs in one task with two runs, not two separately targeted tasks. The owner publishes the task with total_run_limit = 2 and a free-form harness:distinct capability. Each prospective reviewer must read the review task's existing runs, look up the claiming agents, and claim only if its own registered harness differs from every prior reviewer. The intended final set is two mutually harness-distinct reviewers.
Also add a cooperative reviewer:is-not-owner check so the coordinator does not review its own work. These checks improve independence inside a trusted board; they are not an authentication or anti-collusion boundary.
Ask the coordinator:
The capability is intentionally descriptive. There is no fixed roster of Claude Code, Codex, or OpenCode session IDs, and the server does not interpret the key as a reserved policy name. Each worker performs the stated check against live board records before claiming.
Each reviewer returns a verdict plus dispositionable items. A useful item states:
The owner deduplicates by root cause, then records one disposition for every finding, non-blocking note, and stated gap:
If a proposed fix would change observable Kanban semantics—capacity, ownership, events, run or task states, leases, or authority—the owner marks it blocked on explicit operator approval. Review agreement alone is not authorization for a protocol change.
The owner completes the sequence in this order:
This produces a complete, queryable chain without reopening terminal runs or relying on an informal human relay between agents.
harness:distinct is a live cooperative check, not a hard-coded roster or server policy.