From 5a146f99bd2d996c749fcbc86bf79cb6064dcf83 Mon Sep 17 00:00:00 2001 From: "@permadeath.com" Date: Sat, 29 Aug 2026 04:56:52 -0400 Subject: [PATCH] docs(training): correct the honest-movement-r8 diagnosis The CORPUS_GLOBS explanation is refuted by the dates: the .gz suffix landed 2026-08-26, the corpus was saved 2026-08-23. plan/harness.md already had the answer - the logs were deleted for space after a successful save. --- plan/training.md | 56 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/plan/training.md b/plan/training.md index 21ba472..719adcf 100644 --- a/plan/training.md +++ b/plan/training.md @@ -147,23 +147,45 @@ behaviour a change would have to break. `honest-movement-r8` is in the store with a manifest claiming **5944 decisions** and holding **zero decision logs** - 242 results, 120 host logs, 120 HTML -reports, and nothing to train on. It was saved before `CORPUS_GLOBS` learned the -`.decisions.jsonl.gz` suffix, so `scan` read the compressed logs and counted -them while the copy loop never saw them. - -That is worse than the four corpora that are simply gone. Those describe -themselves honestly as manifest-only; this one **satisfies every check anybody -thinks to run** and yields agreement 0.000 everywhere, or a fit on nothing, to -whoever reaches for it next. - -The defect is the same shape as the other two found tonight: **the count and the -thing counted diverging silently.** `copied` was non-zero because results and -reports copied, and nothing asked whether any *training data* had. - -`save` now compares the decision logs in the source against the decision logs -that landed, refuses on any difference, and removes the half-written corpus -rather than leaving it. `TestTheManifestCannotDescribeDataThatIsNotThere` is -that case. +reports, and nothing to train on. + +**A first version of this section blamed `CORPUS_GLOBS`, and was wrong.** The +claim was that the corpus predated the glob learning `.decisions.jsonl.gz`, so +`scan` counted compressed logs the copy loop could not see. The dates refute it: +the suffix landed on 2026-08-26 in `174c89e`, and this corpus was saved on +2026-08-23 - three days earlier, when compression was not yet a practice at all. +Its logs were plain `.decisions.jsonl`, which the glob already covered. They +copied. + +The real explanation was already written down in +[harness](harness.md#a-corpus-is-kept-compressed), unread: five stored corpora +have no decision logs **because they were deleted for space**. `corpus save` +copied them; something later removed them. That is a different defect in a +different place, and inferring a cause that fit rather than checking the two +dates is the same mistake this file is a list of. + +It matters for where the fix goes. **The verification added here would not have +caught this**: it compares the source against the store at save time, and this +failure happened afterwards. What would catch it is an integrity check at +*read* time, or on a schedule - nothing currently notices a corpus whose data +was removed after it was stored. + +The save-time check is still worth having, for the failure it does cover: the +count and the thing counted diverging while the corpus is being written. +`copied` was non-zero because results and reports copy whether or not any +training data does. `save` now compares the decision logs in the source against +those that landed, refuses on any difference, and removes the half-written +corpus rather than leaving it. `TestTheManifestCannotDescribeDataThatIsNotThere` +is that case. + +Either way this corpus is worse than the four that are simply gone. Those +describe themselves honestly as manifest-only; this one **satisfies every check +anybody thinks to run** and yields agreement 0.000 everywhere, or a fit on +nothing, to whoever reaches for it next. + +- [ ] An integrity check that runs on read, or on a schedule: a stored corpus + whose manifest claims decisions it no longer holds should say so before + somebody fits it. Save-time verification cannot see a later deletion **For jmm, because it sets the precedent for the other four.** Not actioned here: editing somebody's recorded asset is their call, and whichever way this -- 2.51.2