Files
waggle-os/docs/briefs/2026-04-22-cc-sprint-12-task1-judge-role-remap.md
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

4.9 KiB

CC Brief — Sprint 12 Task 1 Judge Role Remap (B2 LOCK alignment)

Datum: 2026-04-22 PM Autor: PM Prethodni: Session 2 exit ping, Surprise #5 (judge role mapping konflikt) Odluka (Marko): "Slažem se sa preporukom za sva tri primary. Push sada, slažem se." Scope: 4. commit Sprint 12 Task 1 — nakon push-a tri postojeća commita (8466eaf, b7e52fc, a6e4be9) na origin/main. Procena: 15-30 min, $0 LLM spend.


1. Zašto ovo radimo

Session 2 je implementirao judge role mapping prateći primer iz brief-a (§ 2.1 B):

  • Opus 4.7 → primary
  • GPT-5.4 → secondary
  • Gemini 3.1 → secondary
  • Grok 4.20 → tertiary

Međutim, B2 LOCK § 1 je autoritativni izvor i kaže:

  • Opus 4.7 + GPT-5.4 + Gemini 3.1 = sva tri primary (3-vendor primary ensemble)
  • Grok 4.20 = reserve (tie-break only)

Brief je operativni dokument, B2 LOCK je strukturalna odluka. Autoritet hijerarhije je jasan: LOCK pobeđuje brief. Remap je surgical, 4. commit izoluje promenu od Session 2 trojke radi granularnog rollback-a.


2. Execute sequence

Korak 1 — Push Session 2 commits (pre remap-a)

git push origin main

Expected output: origin/main napreduje za 3 commita (8466eafb7e52fca6e4be9). Ovo ide prvo da Session 2 trojka ostane čista u git istoriji pre nego što remap uđe.

Korak 2 — Edits

File A: benchmarks/harness/config/models.json

Promeni judge_role vrednosti:

  • gpt-5.4 entry: "judge_role": "secondary""judge_role": "primary"
  • gemini-3.1 entry: "judge_role": "secondary""judge_role": "primary"
  • grok-4.20 entry: "judge_role": "tertiary""judge_role": "reserve"

claude-opus-4-7 ostaje "judge_role": "primary" (nema promene).

File B: benchmarks/harness/src/types.ts

JudgeRole enum treba da se proširi za reserve. Trenutna definicija verovatno ima 'primary' | 'secondary' | 'tertiary'. Promeni u:

export type JudgeRole = 'primary' | 'secondary' | 'tertiary' | 'reserve';

Zadrži secondary i tertiary u enumu radi backward-compat — nijedan trenutni entry ih ne koristi nakon remap-a, ali budući modeli mogu.

File C: benchmarks/harness/tests/models-config.test.ts

Session 2 je dodao 2 assertion-a koji sada promašuju:

  • "Grok 4.20 tertiary + floating_alias + xai_via_openrouter" → promeni tertiaryreserve
  • "GPT + Gemini secondary + floating_alias" → promeni secondaryprimary

Plus ako postoji test koji validira judge_role enum vrednosti po entry-u, proveri da pokriva sve 4 uloge (primary, secondary, tertiary, reserve). Ako ne, dodaj minimalnu coverage proveru.

Korak 3 — Verify

cd benchmarks/harness
npx tsc --noEmit
npm test

Expected: 138/138 green (nema promene u test count-u; 3 assertion-a flip-uju vrednosti, ne broj).

Korak 4 — Commit

git add benchmarks/harness/config/models.json \
        benchmarks/harness/src/types.ts \
        benchmarks/harness/tests/models-config.test.ts

git commit -m "fix(benchmarks): Sprint 12 Task 1 B2 LOCK alignment — judge roles remap per B2 LOCK § 1

B2 LOCK § 1 treats Opus 4.7 + GPT-5.4 + Gemini 3.1 as a 3-vendor primary
ensemble with Grok 4.20 as tie-break reserve. Session 2's initial mapping
(from brief § 2.1 B example) placed GPT + Gemini as secondary and Grok as
tertiary. This commit aligns judge_role values with the LOCK authority.

Changes:
- models.json: GPT-5.4 secondary → primary, Gemini 3.1 secondary → primary,
  Grok 4.20 tertiary → reserve
- types.ts: JudgeRole enum extends with 'reserve' (secondary/tertiary
  retained for backward compat)
- models-config.test.ts: 2 assertions updated to reflect new mapping

Test count unchanged (138/138 harness green). tsc clean."

Korak 5 — Push

git push origin main

origin/main napreduje za 4. commit.


3. Acceptance criteria

  • Session 2 trojka push-ovana (3 commita na origin/main)
  • models.json: Opus/GPT/Gemini = primary, Grok = reserve
  • types.ts: JudgeRole uključuje reserve
  • 138/138 harness tests green
  • tsc --noEmit clean
  • 4. commit push-ovan na origin/main

4. Out of scope

  • Ništa osim gore nabrojanog. Blockers #5 + #6 i smoke test suite ostaju za Session 3.
  • Ne diraj judge-runner.ts, ne diraj preregistration.ts, ne diraj B3 addendum per-row pinning fields.
  • Bez novih deps, bez refactor-a.

5. Ako naiđeš na nešto neočekivano

Surprises §-policy važi: ne blokira, zabeležiš u session close ping sa ACCEPT/REMAP predlogom. Ali ovo je surgical remap — očekivanje je da ide clean za 20 minuta. Ako JudgeRole enum već ima reserve (što ne verujem, Session 2 ga nije dodao), samo preskoči tu izmenu u types.ts.


Signal PM-u kada se završi: kratak exit ping sa 4. commit SHA-om + confirmation da je origin/main na 4 commita dalje od pre-Session-2 baseline-a.