diff --git a/docs/port/f6-what-starts-the-sweep.md b/docs/port/f6-what-starts-the-sweep.md index 3d02c00f..1615498e 100644 --- a/docs/port/f6-what-starts-the-sweep.md +++ b/docs/port/f6-what-starts-the-sweep.md @@ -559,3 +559,39 @@ pins the clock cannot answer a question about the clock running*, and *an instrument going quiet is not the subject going quiet*. The second is the same shape as the Decoder's own absence-of-a-quad bug — a count of zero says only that nothing reached the reader. + +--- + +# ✅ Out-of-sample: what the port ships was in the passing half + +The Decoder pre-registered six predictions and tested them on a fresh boot that +had no hand in deriving them. **Three failed.** Audited here against what this +port actually authors, and the answer is **nothing to change**: + +| their prediction | fresh boot | does the port carry it? | +|---|---|---| +| leaf period ratio 1.200 | 1.1753 ✅ | **yes** — this is `rate = 0.5` | +| strip size ratio 1.333 | 1.3009 ✅ | yes, as element identity | +| pulse / sweep loop 0.100 | 0.0963 ✅ | yes, `looping_focus_records` 120 | +| pulse amplitude ≤3 levels | 8.73 🔴 | no | +| `ptcopyright` ramp ratio 0.733 | 0.550 🔴 | no | +| sweep leads plate 0.138–0.141 | **0.0996** 🔴 | **no** — grepped, absent | + +`authored/rendering.json` `leaf_clock` is `{start_units: null, rate: 0.5}` and +nothing else. No separation constant exists in `authored/`, `tools/port/` or +`port/scripts/`. + +📌 **That split is not luck and is worth naming.** Everything the port adopted is +either **declared on the disc** (the parent gate, the 120-unit pulse loop, the +600/720 leaf periods) or **corroborated by three independent legs** (the rate). +Every failed prediction is a figure derived from *relationships between elements +measured in a capture* — the class with no declared counterpart, which +`check-authored-vs-declared` says out loud it cannot arbitrate. The rule "adopt +what the disc declares, or what three unrelated things agree on" selected exactly +the surviving half without anyone knowing which half that would be. + +⚠️ And the Decoder reports that `check_labels.py` — offered last iteration as the +mechanism for capture-only labels — **fails its first independent test**: two of +its four checks fire on a third capture, having been validated on the two that +produced the labels. An instrument validated on its own training data. Nothing +here depends on it, but it is not a mechanism this port should lean on either.