halo-halo

Eval

draft-automated, single-annotator v0. "predicted" = live src/core/segmenter.ts output at report-generation time. "reviewed" (this report's reference for these numbers) = the machine-drafted v0-set label, confirmed-or-corrected once by the builder during eval/v0-set/ construction (eval/v0-set/reviewed-overrides.json holds only the divergent items). This is NOT the single-annotator human self-test-retest protocol docs/batch2-linguistic-spec.md Section 4 defines, and no such pass has run yet (docs/DEVIATIONS.md). These numbers measure whether the CURRENT code reproduces its own reviewed v0-set labels — a regression/consistency check, not an accuracy claim against independent gold, and not inter-annotator agreement. Single-annotator v0, seeking co-annotators.

Source

Texts16 (original compositions, no scraped content — eval/v0-set/texts.json)
Tokens (leaves)438
Reviewed overrides applied1 (see reviewed-overrides.json)

Boundary-F1 (primary metric)

High variance at small n (docs/batch2-linguistic-spec.md Section 5.2) — a single missed or extra boundary swings this number by several points at this sample size. Does not say WHICH label was wrong on either side of a correctly-placed boundary.

PrecisionRecallF1n (gold switch points)TPFPFN
100.0%97.9%98.9%959302

Per-label token accuracy (secondary — never pooled)

Per-label, never pooled (Section 5.1) — a trivial always-predict-majority-label baseline would score high pooled accuracy while being useless at the rare classes (MIXED, AMBIGUOUS, NE) this project exists to surface.

TagSupport (n)Accuracy
TAG317100.0%
ENG5698.2%
MIXED3100.0%
NE5100.0%
OTHER56100.0%
AMBIGUOUS1100.0%

Confusion matrix (rows = reviewed/gold, columns = predicted)

gold \ predTAGENGMIXEDNEOTHERAMBIGUOUS
TAG31700000
ENG0550001
MIXED003000
NE000500
OTHER0000560
AMBIGUOUS000001

Self-test-retest kappa

Not available. Self-test-retest kappa requires two independent annotation passes over blind-shuffled items (docs/batch2-linguistic-spec.md Section 4.1) — that is what the annotation workbench (/annotate) is for, and no human pass has run yet. No kappa number is fabricated or estimated here.

Reproduce this page

pnpm gen:eval regenerates eval/results/v0-eval-report.json from the live segmenter — deterministic, no timestamps, no randomness, verified byte-identical across repeated runs, so pnpm ci:eval-check (run in CI) fails on any drift between the committed file and what the current code actually produces.