From 013458a02a4fce06753294a2640bfae64500a264 Mon Sep 17 00:00:00 2001 From: "@permadeath.com" Date: Sat, 29 Aug 2026 03:08:06 -0400 Subject: [PATCH] docs(training): four more instances, and two formulations from battle-armor All four were in a checker that failed 1188 correct designs three times. Their "a long-green proxy measures incuriosity rather than correctness" explains why every instance here was old and none was caught by CI. --- plan/training.md | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/plan/training.md b/plan/training.md index ded5ae3..21ba472 100644 --- a/plan/training.md +++ b/plan/training.md @@ -253,10 +253,10 @@ recovery. thing standing between the tactic vocabulary and a single-corpus measurement -## Eleven instances of one mistake +## Fifteen instances of one mistake -Written as one section rather than left spread across three epics, because they -were found separately over one night and are the same mistake eleven times: **a +Written as one section rather than left spread across four epics, because they +were found separately over one night and are the same mistake fifteen times: **a proxy was consulted where a direct check was available and cheap.** Each proxy is true in the common case, which is why none of them looked wrong. @@ -310,11 +310,43 @@ detached script so the checking shell is not in its own match set. | `value_destroyed == 0` | the target's armour is intact | read what `value_destroyed` sums | an ablation that answered about the wrong half of a column | | a corpus's *name* | the corpus I mean | the commit and basis in the manifest about to be written | one corpus stamped with another's provenance | | `pgrep -f 'sds.cli bench'` | the benchmark is still running | the pid, and `kill -0` | above | +| a field appears in a `put` call | the wire always carries it | read the guard around the `put` | two fields required that are Mek-only and prone-only | +| `prone` re-derived from the entity | the `prone` the node was written with | read it off the node | two different moments compared as one | +| a fault *label* | which check raised it | one label per check | `canStand` listed twice, both raising the same name | +| `canMakeAntiMekAttacks()` | the unit has the weapons for it | read the mounted weapons | a capability answering a different question | Two of the six are operational rather than code, and they are not a different lesson: the worktree removal and the scratch deletion each had a one-command direct check available and used a plausible signal instead. +**Four of the fifteen are the battle-armor agent's**, found while sweeping 1188 +designs through the observation. The sweep failed all 1188 three times running, +and every time the **checker** was what was wrong rather than the wire. Their +third is a shape none of the others has: `canStand` appeared twice in the +required list and both checks raised the same fault name, so fixing one changed +the count by nothing - which read as evidence the wire was at fault. **A +diagnostic that cannot distinguish its own causes sends you looking in the wrong +place**, which is worse than one that is merely silent. + +Their two general formulations are the sharpest anyone produced, and both are +theirs: + +> A proxy over a fixture only fails when somebody changes the fixture, so a +> long-green proxy measures incuriosity rather than correctness. + +That is why every instance here was old and none was caught by CI. Green for +months is not evidence; it is the absence of anyone having looked. + +> What caught mine was not review but widening the fixture for an unrelated +> reason. + +True of two of theirs and of several here. If it generalises, the practical +defence is less about care at the moment of writing and more about +**periodically changing what a test is pointed at**. It sits beside the reading +rule below rather than replacing it: that one is about how you read a result +you are looking at, this one is about how you find the ones you never read at +all. + **Three of them were made while fixing the others**, which is worth stating plainly rather than filing as bad luck. The scratch-directory deletion happened while chasing a corpus defect; the corpus mis-stamping happened while writing @@ -324,6 +356,12 @@ on this class of bug does not confer immunity to it - it is not something careless people do, it is something everybody does, including while actively looking for it. +The battle-armor agent's four sharpen that rather than merely adding to it: all +four were in a **checker**, and the checker failed 1188 designs three times +running while the thing it was checking was correct. A tool written to find this +class of mistake is not exempt from it, and when it makes one the mistake +arrives wearing the authority of a diagnostic. + **Why the wrong check survives long enough to matter.** The `value_destroyed` one is the clearest case and the mechanism generalises: -- 2.51.2