Repository navigation
eval(continuity): blind held-out-4 corpus and one-time measurement - #105
Conversation
# Conflicts: # evals/continuity_recall.py
VerifiedOrganic
left a comment
There was a problem hiding this comment.
Changes requested: one held-out ground-truth label treats recorded speech as post-mortem action, which undermines the recall denominator and interpretation of the measurement. Reviewed the diff against origin/main and inspected seeding/scoring and result aggregates. No project programs or tests were executed, per the review constraints.
VerifiedOrganic
left a comment
There was a problem hiding this comment.
Approved / ready. The prior voicemail ground-truth finding is addressed through a documented post-freeze exclusion: the corpus bytes and module hash are unchanged, deterministic reports are recounted, semantic scoring filters the excluded plant before recall and warning matching, and recorded aggregates now consistently use 55 scored plants (29 deterministic detections and 30 semantic-on detections). Reviewed the full diff against origin/main and the changes since the prior review; no further required findings. Optional: add a small self-test for the errata recount/filter behavior to guard against future aggregate drift. Static review only; no project programs or tests were executed under the review constraints.
VerifiedOrganic
left a comment
There was a problem hiding this comment.
Approved / ready. Reviewed the PR against origin/main and the update since 8729fd8. This revision changes only the errata metadata and recorded results: as_frozen preserves the original 56-plant measurements, corrected clearly identifies the primary 55-plant aggregates, and both retain the +1 semantic lift. The frozen corpus module hash and correction-file hash match their recorded values. The previous ground-truth issue remains addressed; no further required findings. Static review only; no project programs or tests were executed and the checkout was not modified.
Summary
Blind held-out-4 continuity corpus (frozen at
7a5ea85, manifest sha2564273e4cb71647e36a18a74ac68c717c91a37ea0492678197a6517b3a81efae0e) merged withmainat2212d754, plus the one-time measurement of the before binary, the merged-tree binary with the semantic lane off, and the merged-tree binary with the semantic lane on.evals/continuity_recall.py; resolution keeps the frozen held-out-4 subcommand/self-test and main's semantic dispatch.evals/semantic_eval.pygains held-out-4 set registration (seeding, scoring, warning precision) and reporting-only per-type plus warning TP/FP counts. Precision semantics are unchanged.Measurement setup
3ee27fb8…196a9990…ollama:gemma4:31b, temperature 0, seed 7Corpus: 2 manuscripts × 16 chapters, 56 frozen plants (8 per type).
Ground-truth corrections
One frozen plant is mislabeled:
vesta.dead_character_acting.nadi_ch8is framed by Chapter 8 as an old voicemail recording made before the character's death, inside a scene about replaying old messages. A recorded voice is compatible with the death and is not a post-mortem action, so scoring it as a requireddead_character_actingdetection penalizes a correct detector.The frozen corpus bytes and manifest hash are unchanged. The correction is a separate scoring overlay:
4273e4cb71647e36a18a74ac68c717c91a37ea0492678197a6517b3a81efae0e3d025fb94465b39a51828dc7870780065857abe5687ab74dbee66ab7b6a1817fevals/continuity_held_out_4_errata.json3129737b925ce3faebf5069798e5c80cd0d2ef1162d4a81aa1cb4363a94a6411vesta.dead_character_acting.nadi_ch8(dead_character_acting,vesta_station)Because the excluded plant was detected in every configuration, its exclusion removes one detected and one planted item from each total; the semantic-on lift is unchanged.
Totals, as-frozen vs corrected
Semantic-on minus deterministic-after lift: +1 localized, +1 type-present in both views.
Per-type localized, as-frozen (56 plants)
Type-present is identical to localized for this corpus because
score_manuscriptlocalizes before counting; no broad-check-only credit exists.Per-type localized, corrected (55 plants)
Semantic metrics
The erratum changes only the
dead_character_actingdenominator and one detected item; it does not change the semantic warning set.Shadow/on would-be warning and info counts match for every project. The planted
summary_matchesdifferences are verifier discard bookkeeping only, which the evaluator reports for diagnosis and does not gate.Notes
ollamaprovider name loaded in config but did not resolve a model route (route_unavailable), so the successful measurement used the Ollama Cloud OpenAI-compatible chat endpoint. Two earlier semantic attempts made zero judge calls (firstrating_denied, thenroute_unavailable) and are excluded; only the successful run is reported.unknown_candidateerrors in each mode.Tests
python3 evals/continuity_recall.py self-test(includes the held-out-4 corpus self-test and the semantic self-test)python3 evals/continuity_recall.py held-out-4for configs a, b, and ccargo build --release -p spindle-mcpfrom the merged tree