docs(design): record success-semantics and evaluation decisions#53
Merged
Conversation
Add a design document capturing two deliberate, load-bearing decisions that were previously implicit in the code, plus the review that produced it. An outside reading of the code mistook each for a defect; they are not, and this doc exists so they are not "fixed" by accident. - Decision 1: IterationResult.success means "the assignment ran" (harness did not error), not "the work is good". Semantic success is delegated to control.json (stop) and goal_check.json (evidence). Worker exit codes are a noisy proxy and are intentionally not consulted. Unconditional since the first commit of harness_runner.py — original intent, not drift. - Decision 2: the packaged inner_outer_eval eval workflows use LLM-as-judge on described outcomes and forbid agent-authored deterministic checks, because agent-authored checks were brittle and self-gameable. Documents the boundary: the failure mode was agent-*authored* checks, not repo-owned contract tests — targets that own a trustworthy suite should add a deterministic backstop under the judge rather than drop the judge. Supporting analysis (the July 2026 review, incl. an independent parallel pass) is included under design/analysis/ for the decision trail. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PN8aFwwxA8FzMy9LgpbQFt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a design document —
design/designs/success-semantics-and-evaluation.md— that writes down two deliberate, load-bearing decisions that were previously only implicit in the code. During the July 2026 review, an outside reading of the code (including an independent parallel analysis pass) mistook each for a defect. They are not defects. This doc exists so the next reader — human or agent — does not "fix" them by accident.Both decisions share one principle: do not infer semantic success from noisy mechanical signals; delegate the success/acceptance decision to an explicit evaluation layer.
Decision 1 — Iteration success means "the assignment ran", not "the work is good"
IterationResult.successisTruewhenever ateam-harnessrun returns normally,Falseonly when the harness itself raises. It is not a judgment about whether the work was accomplished, andTeamHarnessResult.agents(worker exit codes) is intentionally not consulted — worker exit codes are a noisy proxy (a coordinator can legitimately return after a worker fails). Semantic success is delegated tocontrol.json(the sole stop switch) andgoal_check.json(evidence only). This has been unconditional since the first commit ofharness_runner.py(a4cca5e) — original intent, not drift. The doc records the one bounded consequence (scheduler cadence keys off mechanical success) and an opt-in fix for it, should it ever matter.Decision 2 — Evaluation is LLM-as-judge; agents don't author deterministic checks
The packaged
inner_outer_evaleval workflows create onlyharness_judgechecks on described outcomes and forbid agent-authored deterministic checks — because in practice, agent-authored deterministic checks were brittle and self-gameable (the implementer inventing its own pass/fail lets it game itself). The doc records the important boundary: the failure mode was agent-authored checks, not repo-owned contract tests. A target repo that already owns a trustworthy suite (e.g. a futureugm_wp) should add a deterministic backstop under the judge rather than drop the judge.Also included
design/analysis/— the July 2026 review that produced these decisions, including an independent parallel analysis pass. Kept as the decision trail and to make the design doc's cross-references valid.Not included
No code changes. A follow-up PR will add a separate proposals design doc for the forward-looking improvements (double-loop hardening, human-in-the-loop pause state, per-child budgets, events/cost ledger, etc.).
🤖 Generated with Claude Code
https://claude.ai/code/session_01PN8aFwwxA8FzMy9LgpbQFt