golf-loop-round: the smallest loop that scores one round end to end #28

Merged
weksa merged 9 commits from weksa-lowering/golf-loop-round into main 2026-11-10 04:42:53 +00:00

2026-11-10

Weksa
Pin the scored counts of the Dao round
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 04:15:57 +00:00
Weksa
Fix the golf_loop test that did not compile in the previous commit
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 04:15:00 +00:00
Weksa
Round: means count a refused item as 0, a failed round discards its packets, the round line is pinned
Validation and Train means are over every item of the split with scored counts
beside them, so refusing a weak item cannot raise a mean. A round that fails
before its record is put (embedder down) removes its packets.cc, and a round
starts from none, so a rerun with revised answers is not refused as a changed
packet. RoundRecord::summary_line owns the printed line and is pinned with exact
values. The RoundRecord compile_fail doctest gives every field and fails on
E0451, with its twin literal in a lib unit test.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 04:14:39 +00:00
Weksa
Kill the mutation survivors: error texts, unreadable files, the second round's number
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 04:04:36 +00:00
Weksa
weksa loop open|round: pin a run's stores, run one round, print one line
Round reads its stores only from the run record; prompts without answers are
written to the round directory and the command exits 3. Map line 7b records
what landed and what the follow-ups still own.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 03:51:18 +00:00
Weksa
run::round: a pinned run encodes Train and Validation, admits, lowers, scores and records the round
encode.rs reads a model answer into a PacketDraft (the one JSON door for
models) and the encoder step sets everything the model does not write. round
asks every offer first and writes nothing while any prompt is unanswered, then
admits into the round's own packets.cc, lowers, scores in one call and keeps a
RoundRecord with Train rows and Validation only as means and refusal counts.
The Dao stores reproduce the base scores (Train 44.18, Validation 78.56).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 03:50:04 +00:00
Weksa
ModelPort and AnswerFiles; the encode prompt lists the live inventory and has a digest
The encoder's instructions are written, Prompt::encode takes the run inventory
and revision, and Prompt::digest names a prompt for AnswerFiles: a prompt with
no answer file is written to <digest>.prompt and nothing else happens.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 03:47:24 +00:00
Weksa
RunStores is the one public producer of TrainItems and EncoderOffer: a run pins its corpus and entity stores by digest
TrainItems::from_corpus and EncoderOffer::for_round become pub(crate). RunStores
(run.rs) creates a run over three stores, records their canonical paths and
FNV-1a 64 digests plus the prompt and lowerer source digests in run.cc, and
reopens only from that record, refusing on drift. RunRecord and RoundRecord are
published CultCache types. tests/context.rs and the context.rs doctests move to
RunStores; the two mutated-clone gate cases become a unit test.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 03:45:49 +00:00