Forge

Repository

Evaluation that can say not yet.

Forge separates evaluation from generation, blinds system identity, measures reviewer agreement, reverses judge order, and keeps model-quality claims locked until the declared evidence exists.

Current evidence: the engineering controls pass on an eight-item authored fixture. Genuine human annotations have not been collected, so human calibration and model quality remain unestablished.

What is frozen

Evaluation release

Items, protocol, packets, review sheet, and blinding key are fingerprinted under one deterministic evaluation ID.

Human packet

Reviewers see Candidate A and Candidate B without generator identity or position mappings.

Judge packet

Every comparison appears in primary and reversed order so position consistency is measured directly.

Controlled fixture result

0.754 Fixture Krippendorff alpha
0.875 Fixture judge agreement
0.875 Position consistency

Two fixture annotators produced 16 labels over eight items. The report also records Cohen kappa 0.741935, judge macro F1 0.858586, five Forge wins, one baseline win, and two ties. The paired fixture win rate is 0.75 with a 95 percent bootstrap interval from 0.4375 to 1.0. This small controlled set tests the machinery and failure semantics. It is not a performance benchmark.

The claim gate

RequirementDeclared boundaryCurrent status
Independent evaluation setFrozen outside generator contextFramework ready, real set pending
Human coverageAt least 200 genuine human-reviewed itemsPending
OverlapAt least 50 multiply reviewed itemsPending
Reviewer agreementNominal alpha at least 0.667Pending genuine labels
Judge independenceDifferent family from the candidate generatorEnforced in code
Judge alignmentAt least 0.7 exact agreement with human consensusPending genuine labels
Order robustnessAt least 0.8 primary versus reversed consistencyEnforced in code

Reviewer workflow

  1. Freeze independently authored comparisons and the annotation protocol.
  2. Give reviewers only the generated human_review_sheet.csv.
  3. Collect A, B, tie, or both-bad labels with confidence and reason codes.
  4. Lock the labels before exposing the blinding key.
  5. Run a versioned judge from a different model family over both orders.
  6. Publish agreement, slice results, bias checks, intervals, limitations, and failure cases.
make evaluation-fixture

python scripts/prepare_evaluation.py --help
python scripts/run_pairwise_judge.py --help
python scripts/analyse_evaluation.py --help

Why the report can still fail

A controlled fixture cannot become human evidence by changing a label. A same-family judge cannot support a headline comparison. Incomplete review coverage, weak reviewer agreement, low judge agreement, or sensitivity to response order keeps the report in controlled_or_incomplete status. Judge alignment also does not prove that training improved a downstream model.


Read the complete annotation protocol, inspect the technical controls, or run the browser demo.