Delete the source-shape tripwire for one put_prepared_batch; run_cache_over
lets a unit test run cycle over a CacheBackingStore failing write 1 or 2:
the round and the decision land together or not at all.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Clears type_complexity in daodejing.rs and large_enum_variant in main.rs.
RoundOutcome's large_enum_variant in run.rs is left for golf-loop-edit-accept, which rewrites that file.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Reading, decide and LADDER_STEP are pure; Decision (weksa.loop_decision) holds
digests and numbers; the latest Accepted decision names the run's head. The
candidate round and its decision are one batch put.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
An encode answer the port reports as InvalidData is that item's Refused(Parse),
not an aborted round.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
RunRecord.inventory is provenance only; open refuses Drift(Inventory) when the
run's own file differs. A run.cc from before has no key 11 and its open fails.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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>
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>
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>
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>
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>
The view no longer collapses five cases into one empty feature list. Scene::relation
returns None for an absent relation. Pins the item speaker over the first
participant and V16 without an addressee.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
EncoderOffer<'cp> borrows its Checkpoint so a Test offer cannot be encoded
after the reading spends it. tests/checkpoint_door.rs scans split.rs for any
public minting item under any name. The split.rs doc says operator tools read
corpus text and the guarded invariant is the round path.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The view keeps its corpus item's speaker and group (LoweringInput::of takes
the item; admissible is gone), and with_scene takes the SpeakerStateStore, so
neither speaker nor scene comes from the caller and only admitted scenes
reach a view. An addressee that names a predication is refused as V17.
Pins scene numbering per group and the no-fallback case for a named
addressee outside the participants; tests/scene.rs fixture now speaks as the
item's speaker.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
for_checkpoint takes &mut Checkpoint and refuses a repeated key
(OfferedAtCheckpoint) after the gate; TrainItems::held replaces holds and block
prints the matched Train item's text; the text-key fold is pinned against the
store's own S6 refusal.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Checkpoint::declare becomes cfg(test) for_test; Checkpoint-using tests move
into src unit tests over split::fixture; Prompt::mint and encode lose the
instructions parameter (MINT_INSTRUCTIONS, ENCODE_INSTRUCTIONS in context.rs).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>