- Rename JUDGE_NAMES from [Judge-GPT, Judge-Claude, Judge-Gemini] to
[Judge A, Judge B, Judge C] everywhere (orchestrator + tests + ad-hoc
A/B script). Removes the Claude-family naming anchor that was
repeatedly pulling the panel toward Claude models even when Student
plan blocked them — the slot is just "one of three judges", not
"the Claude judge".
- Apply the A/B-test-winning headless override (EXECUTION_CONTEXT_BLOCK)
to both _build_meta_judge_chat_payload and _build_judge_chat_payload.
Phrases are verbatim from OpenAI GPT-5 Prompting Guide + Anthropic
Claude headless docs. Tells agents there's no human to answer
clarifying questions; to commit to best-default interpretation and
document the assumption.
End-to-end pipeline run on WYL-77 (2026-04-20) confirmed:
- Meta-judge produced rubric without clarifying question (override
working on ambiguous Tierra prompt)
- 3 judges ran in parallel without SQLite contention (XDG fix held)
- Consensus math gracefully excluded Judge B's malformed YAML
- Verdict REJECT avg=1.00 on prose-only worker delivery
- Retrigger fired; worker honored anchor + blocked path
Known blockers surfaced (not fixed in this commit):
- Shared HOME allows cross-daemon workdir snooping (Judge B read AI
Engineer's task workspace directly). User flagged as feature for
now; revisit if it causes drift.
- gpt-5.4-mini (Judge B) produced malformed YAML on this run; n=1,
can't distinguish chance vs consistent inability — need multi-run
baseline to decide.
- REJECT on "no commit URL" conflates missing-delivery with
bad-work; pipeline signal is correct but reasoning upstream of
judges is unclear.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
On unraid, /mnt/user is the FUSE layer that applies share-routing policy
(cache-first, mover, include/exclude). /mnt/cache bypasses that routing.
Default rule: container bind mounts use /mnt/user/... unless there's a
specific reason to pin to cache.
Also broadens the daemon mount from just /multica/rounds to the whole
/multica namespace. This means future subpaths (agents/<slug>/ for the
credentials migration, coordinator-state/, etc.) are already visible
without another daemon recreate. Per user: "multica both includes shared
and not shared" — one mount covers both.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace mention-trigger invocation (which forced every judge to read the
full issue thread via `multica issue get` on spawn) with multica chat-task
sessions. Each agent now receives exactly one coordinator-authored message
as its full context — no issue-thread inheritance, no worker delivery prose,
no peer-judge identity leak.
Artifacts are materialized on a shared mount at
/mnt/cache/appdata/multica/rounds/<rid>/: worker commit cloned, diff
written, rubric dumped, judge reports written by each judge. In debate
rounds peer reports are passed as PATHS (not inlined content) so judges
Read via their own tools — reproducing CEK's filesystem-mediated isolation.
Also ships:
- Dockerfile for a multica-coordinator container (python:3.11-slim + git)
- scripts/run-coordinator.sh to build + run it on the multica network
- scripts/add-rounds-mount-to-daemons.sh: idempotent in-place recreate of
the 7 multica-daemon-* containers to add the shared mount. Preserves
hostname/env/network/restart/user — only adds the new bind.
84 tests pass. New tests cover each of the C1–C6 contamination fixes
explicitly (no issue thread, no commit link in meta-judge, no peer
identity, peer paths not content, no worker prose).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>