/judge-fleet
Bulk LLM-judging protocol for fleet-dispatched verdict runs (KG cluster, eval harness). Triggers: judge fleet, bulk judge, R3 verdicts, kg-judge, RT gate, evidence_degraded. NOT for single reviews, Phoenix UX, or non-judge evals.
$ golems-cli skills install judge-fleetUpdated 2 weeks ago
Three R3 runs (morning + evening 2026-06-06) proved seven non-negotiables. A generic "judge these N items" dispatch loses artifacts, degrades silently, and bulk-applies refuted merges. This skill encodes what the rerun briefs already harden — so agents don't re-learn from /tmp wipes and DB locks.
When to use
- Dispatching or executing bulk LLM judges (J1, J2, red-team gate, Phase-2 sweep)
- Planning fan-out over hundreds of prompt files → verdict JSON/JSONL
- Bulk-apply or triage after a judge fleet completes
- Dispatcher writing worker briefs for brainlayer eval_results/ campaigns
NOT for: one-off PR review, Phoenix annotation UX, or skills that don't produce verdict artifacts.
The seven rules (in dispatch order)
1. Pre-dispatch precondition validation
Before fan-out, verify:
- BrainLayer DB is not enrichment-locked — probe
brain_search(MCP or CLI) on one stem; timeout/lock → HOLD, do not dispatch judges concurrently with enrichment - Staging directory exists on disk and is writable (repo path under
eval_results/, not ephemeral) - Prompt inventory count matches brief (e.g. 154 + 154 + 70 RT stems)
Evidence: enrichment-locked DB nullified 308-verdict runs twice (79% morning, 100% evening evidence_degraded).
2. Durable staging — NEVER /tmp
All verdicts, sidecars, RT results, and DONE sentinels live under a durable repo path:
eval_results/<campaign>/prompts/
eval_results/<campaign>/verdicts/
eval_results/<campaign>/rt-mandatory/
eval_results/<campaign>/DONE/Multi-hour judge runs never stage in /tmp — overnight wipes lost 9/21 deliverables.
3. Per-prompt reasoning — no compiled judgment scripts
Each prompt gets individual LLM reasoning with cited evidence.
Forbidden: batch Python with hardcoded TECHNOLOGY_STEMS / lookup-table classifiers, regex-rule refutation scripts masquerading as RT, or collapsing "brain_search retry-once per stem" into 2–6 representative searches per batch.
Scripts for validation (schema check, set-diff coverage) are fine; scripts that produce verdicts are not.
4. Completion via durable DONE sentinel files
Cross-worker completion gates use sentinel files, not terminal grep or chat markers:
eval_results/<campaign>/DONE/J1.done
eval_results/<campaign>/DONE/J2.done
eval_results/<campaign>/DONE/RT_MANDATORY.doneR3_J1_DONE printed only in final chat was never observable to RT — file-count heuristics are a fallback, not the protocol.
5. Append-only per-worker collab sections
Workers report learnings via append-only writes — one section per worker/batch:
### 2026-06-06T09:35Z J2 (prompts 155-308)
...Forbidden: concurrent StrReplace on a shared anchor in one collab file (6 workers → repeated anchor-miss retries). Prefer per-worker section files or atomic append to distinct headings.
6. evidence_degraded honesty flag
When brain_search fails (DB lock, timeout), every affected verdict MUST:
- Set
evidence_degraded: true - Cite only packet + on-disk grep evidence (never fabricate memory hits)
- Post degradation loudly in collab summary
Bulk-apply MUST treat evidence_degraded verdicts as a filter — do not silently merge degraded evidence as if live memory confirmed it.
Dispatcher checklist (copy into briefs)
PRE-FLIGHT: brain_search probe OK? staging dir exists? prompt count verified?
STAGING: eval_results/<campaign>/ — NEVER /tmp
WORKERS: per-prompt LLM reasoning; validation scripts OK, verdict scripts NOT OK
DONE: write eval_results/<campaign>/DONE/<worker>.done — do NOT rely on chat markers
COLLAB: append-only per-worker sections — no shared-anchor StrReplace
HONESTY: evidence_degraded when brain_search fails — flag in collab
MERGE: RT gate complete; REFUTE re-judged; filter degraded before bulk-applyFull SKILL.md source — includes LLM directives, anti-patterns, and technical instructions stripped from the Overview tab.
Three R3 runs (morning + evening 2026-06-06) proved seven non-negotiables. A generic "judge these N items" dispatch loses artifacts, degrades silently, and bulk-applies refuted merges. This skill encodes what the rerun briefs already harden — so agents don't re-learn from /tmp wipes and DB locks.
When to use
- Dispatching or executing bulk LLM judges (J1, J2, red-team gate, Phase-2 sweep)
- Planning fan-out over hundreds of prompt files → verdict JSON/JSONL
- Bulk-apply or triage after a judge fleet completes
- Dispatcher writing worker briefs for brainlayer eval_results/ campaigns
NOT for: one-off PR review, Phoenix annotation UX, or skills that don't produce verdict artifacts.
The seven rules (in dispatch order)
1. Pre-dispatch precondition validation
Before fan-out, verify:
- BrainLayer DB is not enrichment-locked — probe
brain_search(MCP or CLI) on one stem; timeout/lock → HOLD, do not dispatch judges concurrently with enrichment - Staging directory exists on disk and is writable (repo path under
eval_results/, not ephemeral) - Prompt inventory count matches brief (e.g. 154 + 154 + 70 RT stems)
Evidence: enrichment-locked DB nullified 308-verdict runs twice (79% morning, 100% evening evidence_degraded).
2. Durable staging — NEVER /tmp
All verdicts, sidecars, RT results, and DONE sentinels live under a durable repo path:
eval_results/<campaign>/prompts/
eval_results/<campaign>/verdicts/
eval_results/<campaign>/rt-mandatory/
eval_results/<campaign>/DONE/Multi-hour judge runs never stage in /tmp — overnight wipes lost 9/21 deliverables.
3. Per-prompt reasoning — no compiled judgment scripts
Each prompt gets individual LLM reasoning with cited evidence.
Forbidden: batch Python with hardcoded TECHNOLOGY_STEMS / lookup-table classifiers, regex-rule refutation scripts masquerading as RT, or collapsing "brain_search retry-once per stem" into 2–6 representative searches per batch.
Scripts for validation (schema check, set-diff coverage) are fine; scripts that produce verdicts are not.
4. Completion via durable DONE sentinel files
Cross-worker completion gates use sentinel files, not terminal grep or chat markers:
eval_results/<campaign>/DONE/J1.done
eval_results/<campaign>/DONE/J2.done
eval_results/<campaign>/DONE/RT_MANDATORY.doneR3_J1_DONE printed only in final chat was never observable to RT — file-count heuristics are a fallback, not the protocol.
5. Append-only per-worker collab sections
Workers report learnings via append-only writes — one section per worker/batch:
### 2026-06-06T09:35Z J2 (prompts 155-308)
...Forbidden: concurrent StrReplace on a shared anchor in one collab file (6 workers → repeated anchor-miss retries). Prefer per-worker section files or atomic append to distinct headings.
6. evidence_degraded honesty flag
When brain_search fails (DB lock, timeout), every affected verdict MUST:
- Set
evidence_degraded: true - Cite only packet + on-disk grep evidence (never fabricate memory hits)
- Post degradation loudly in collab summary
Bulk-apply MUST treat evidence_degraded verdicts as a filter — do not silently merge degraded evidence as if live memory confirmed it.
7. Mandatory red-team gate before bulk-apply
Never bulk-apply straight from judge verdicts.
Run RT on the riskiest subset first (degraded + medium-confidence + merge recommendations). Phase-2 continuous sweep across all verdicts. Re-judge REFUTE entries before any merge. Historical refute rates: ~49% of RT-mandatory stems, ~41% Phase-2.
Dispatcher checklist (copy into briefs)
PRE-FLIGHT: brain_search probe OK? staging dir exists? prompt count verified?
STAGING: eval_results/<campaign>/ — NEVER /tmp
WORKERS: per-prompt LLM reasoning; validation scripts OK, verdict scripts NOT OK
DONE: write eval_results/<campaign>/DONE/<worker>.done — do NOT rely on chat markers
COLLAB: append-only per-worker sections — no shared-anchor StrReplace
HONESTY: evidence_degraded when brain_search fails — flag in collab
MERGE: RT gate complete; REFUTE re-judged; filter degraded before bulk-applyIntegration
| Skill | Relationship |
|---|---|
/never-fabricate | Read verdict files before claiming counts; no synthesized completion times |
/cron-payload-discipline | Monitor ticks waiting on judge fleet use live file counts + DONE sentinels, not hardcoded "154/154 done" |
/cmux-agents | Dispatch briefs must inline absolute staging paths and precondition steps |
/pr-loop | Skill changes ship through full PR loop with eval scorecard in body |
/skill-creator | RED/GREEN evals required before merge |
Anti-patterns
| Don't | Evidence |
|---|---|
| Dispatch judges while enrichment holds DB lock | 100% evidence_degraded, ~500 duplicate judgments |
Stage verdicts in /tmp | 9/21 deliverables lost to wipe |
judge_j2.py lookup-table batch classify | Invalid enum + misclassifications; caught only post-hoc |
RT polls sleep 120 waiting on J1 chat DONE | R3_J1_DONE never in terminal; fragile gating |
| StrReplace shared collab anchor with 6 workers | Anchor-miss retries; luck-dependent no-duplicates |
| Bulk-apply without RT | 34/70 refuted (49%); ~126/308 Phase-2 REFUTE |
Best Pass Rate
100%
Gemini 2.5
Assertions
24
5 models tested
Avg Cost / Run
$0.1263
across models
Fastest (p50)
2.8s
Haiku 4.5
Behavior Evals
Phase 2 baseline — skill quality on ClaudeBehavior Baseline
Adapter Evals
Phase 2C — cross-AI portabilityAdapter Portability
| Assertion | Opus 4.6 | Sonnet 4.6 | Haiku 4.5 | Codex | Gemini 2.5 | Consensus |
|---|---|---|---|---|---|---|
| precondition-brain-search-probe | 4/5 | |||||
| durable-staging-never-tmp | 5/5 | |||||
| done-sentinel-files | 5/5 | |||||
| rt-gate-before-bulk-apply | 5/5 | |||||
| does-not-proceed-while-locked | 2/5 | |||||
| hold-until-unlock | 5/5 | |||||
| names-concurrency-collision | 5/5 | |||||
| evidence-degraded-if-forced | 4/5 | |||||
| rejects-verdict-compiled-script | 4/5 | |||||
| requires-per-prompt-reasoning | 4/5 | |||||
| allows-validation-scripts-only | 3/5 | |||||
| cites-invalid-enum-risk | 4/5 | |||||
| rejects-terminal-grep-primary | 4/5 | |||||
| requires-done-sentinel-file | 5/5 | |||||
| file-count-is-fallback-only | 4/5 | |||||
| fixes-protocol-for-future | 4/5 | |||||
| rejects-shared-anchor-strreplace | 4/5 | |||||
| append-only-per-worker-sections | 3/5 | |||||
| suggests-per-worker-files-or-atomic-append | 5/5 | |||||
| notes-luck-not-protocol | 4/5 | |||||
| does-not-bulk-apply-pass-now | 4/5 | |||||
| re-judge-refute-first | 3/5 | |||||
| filters-evidence-degraded | 5/5 | |||||
| cites-refute-rate-honestly | 5/5 |
Token Usage
Cost per Run
| Model | Input Tokens | Output Tokens | Cost / Run | Cost / 1K Runs |
|---|---|---|---|---|
| Opus 4.6 | 7,558 | 4,580 | $0.4569 | $456.90 |
| Sonnet 4.6 | 4,111 | 4,766 | $0.0838 | $83.80 |
| Haiku 4.5 | 2,319 | 2,672 | $0.0039 | $3.90 |
| Codex | 3,168 | 2,675 | $0.0693 | $69.30 |
| Gemini 2.5 | 1,300 | 1,440 | $0.0177 | $17.70 |
Response Time (p50)
Response Time (p95)
| Model | p50 | p95 | Overhead |
|---|---|---|---|
| Opus 4.6 | 8.0s | 14.8s | +86% |
| Sonnet 4.6 | 3.2s | 6.0s | +90% |
| Haiku 4.5 | 2.8s | 5.5s | +97% |
| Codex | 6.6s | 10.8s | +63% |
| Gemini 2.5 | 3.6s | 6.0s | +67% |
Last evaluated: 2026-03-12 · Data is generated from skill assertions (real cross-model benchmarks coming soon)
Changelog entries are derived from eval runs and skill version updates. Full cascading changelog (Phase 4D) coming soon.
Best Pass Rate
100%
Assertions
24
Models Tested
5
Evals Run
6
- +Initial release to Golems skill library
- +24 assertions across 6 eval scenarios