E
Egora
OverviewHow It WorksArchitectureDesignDashboard
Teacher sign inOpen dashboard
E
Egora

A teacher workspace for planning courses, reviewing drafts, and publishing approved work to students.

© 2026 Egora

How It WorksArchitectureDashboardTeacher sign in
Back to ADR index
0007
ADR · Proposed (2026-05-27 grilling session)

Revert the V2 LLM-Evaluator deletion (commit 0e0703d)

Date
2026-05-27
Deciders
pdg (HITL during the 2026-05-27 grilling)
Supersedes
The 'Update — 2026-05-26 (after grounded simplification)' section of 2026-05-26-v2-filesystem-backbone-design.md
Related:0004 · V2 baseline0005 · Prompts-as-agents (Evaluator returns as prompts)

Context

Commit 0e0703d deleted V2's LLM Evaluator: src/v2/agents/evaluator.ts, contracts/verdict-contract.ts, contracts/fail-loud-dispatcher.ts, the evaluate CLI command, evaluations/ dir. Net: −5 files, ~450 LOC, 8 fewer tests.

Stated rationale: 'Claude Code, Anthropic's Building Effective Agents, Antigravity all use one LLM + deterministic gates + HITL — the LLM Evaluator is double-counting.'

The 2026-05-27 grilling re-baselined V2 against collapsed. The rationale was wrong on two counts.

Error 1 · Misidentified baseline

The 'V1 four-agent shape' the deletion rationale references is V1-original (pre-collapsed). Collapsed already simplified that. Collapsed KEEPS an LLM Evaluator (library-course-generation.yaml lines 84-102) with two modes (per-unit + cross-unit) specifically because:

  • The deterministic linter validates STRUCTURAL correctness only; can't judge whether content delivers on Big Ideas, whether rubrics are pedagogically sound, whether vocabulary is consistent.
  • The HITL gate is binary (teacher approves or doesn't); doesn't provide per-artifact structured feedback to the Generator's self-correct loop.

Error 2 · Misread Claude Code's convergence

Claude Code's Task tool is invoked many times per session — every Read, every Grep, every code-review skill, every diagnose skill is a Task invocation. ONE Task primitive, MANY sub-agents — not 'one LLM.'

Anthropic's 'Building effective agents' post describes orchestrator-workers explicitly: central LLM dispatches multiple worker sub-agents.

Antigravity 2.0 is a multi-agent system: planner, executor, browser, evaluator agents.

The convergent pattern is 'one Task primitive + many prompts' (ADR 0005), not 'one LLM.' Under that frame, the Evaluator deletion solved a problem that didn't exist.

Operator confirmation

During the 2026-05-27 grilling: 'Q-A confirmed. Bring back the Evaluator.' Follow-up: 'the collapsed architecture might have the wrong call. what would claude code do?' — which led to ADR 0005, with Evaluator re-introduced as PROMPT FILES, not a single TypeScript class.

Decision

Revert the SPIRIT of 0e0703d. Re-introduce the V2 Evaluator capability — but under the prompts-as-agents pattern (ADR 0005), not as a single TypeScript class.

  • Deleted files do NOT come back verbatim — they were the wrong shape.
  • Evaluator capability returns as prompts under curriculum-agents/prompts/gates/ (8 prompts: between-modules, unit-closure-m3, unit-closure-m4, all-units-closure-m3, all-units-closure-m4, final-sign-off, outline-to-structure, planning-to-generation).
  • Historical per-edit judge prompts were retired by ADR 0013/0023; reviewed edits now use linear apply plus report-only readiness evidence.
  • Generator's self-correct loop preserves: linter failures → Generator retry; Evaluator gate failures → Orchestrator decides feedback-to-Generator or pause-for-teacher.
  • evaluations/ workspace dir does NOT come back as a top-level dir. Evaluator verdicts live in comments/gates/<gate-name>.md/<id>-judge.md.

Consequences

Positive
  • • Capability parity with collapsed — V2 doesn't ship a regression vs its baseline.
  • • Pattern alignment with ADR 0005 — Evaluator iterations cheap.
  • • Foundation for subsequent waves — R2 (state machine) and R3 (milestone build-out) both depend on having evaluation prompts.
  • • Cleaner separation between report-only evaluators and deterministic substrate checks.
Negative
  • • Reverts the −5 files / ~450 LOC savings (savings were illusory — they removed capability).
  • • Tests need re-introduction (targeting Task primitive + representative gate integration tests).
Neutral
  • • evaluations/ dir doesn't come back; comments-on-the-gate-file is cleaner.
  • • fail-loud semantics become Orchestrator decisions on Evaluator fail verdicts.

Migration / execution

  1. 1.No literal git revert 0e0703d. Too much has happened. Capability re-introduced in R1 via prompts-as-agents harness extension.
  2. 2.Stand up curriculum-agents/prompts/gates/ skeleton with stub headers per gate.
  3. 3.Wire invokeSubAgent to load gate prompts for Orchestrator-invoked evaluations.
  4. 4.Restore Generator's self-correct loop to take Evaluator verdicts as feedback.
  5. 5.Add Orchestrator verdict file convention: gates/<gate-name>.md frontmatter.

Open questions

  • Evaluator verdict schema — exact frontmatter shape. Defer to R3 first milestone close.
  • Generator-vs-Evaluator feedback loop — how many rejection rounds before escalating to teacher.
  • Cross-gate Evaluator memory — does same Evaluator-prompt see prior gate's verdicts on same artifact.
← Previous
0006 · LLM Wiki pattern for the Knowledge Base (per-teacher repo)
Next →
0008 · Pipelined-sequential dispatch with APPROVED threshold
ADR index