From 518e9ea7313d7f5cf026ab10cf489d2657a3a6fc Mon Sep 17 00:00:00 2001 From: Dejvino Date: Wed, 19 Aug 2026 06:58:27 +0200 Subject: [PATCH] Epic 4: record why direction was negative, and what is left MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first measurement offered three readings for a direction of -0.14. The third one — the arc is not reaching the image — was correct, and it is now +0.24 against an arcless reference of -0.02, with the floor rising exactly as §8 predicted. Records what the two dead channels were, since neither was visible from the source and both passed every gate that existed: the overlay path had an empty candidate set (0/144 stacks), and the camera moved the frame by a median of 0.029 of a half-frame at a random angle so successive shots cancelled. Both cleared their checks because every bound on them was a ceiling. A gate on a device needs a floor. Also ranks what remains, with the broken seed-variety instrument first: three of the four open items are measurements and they all report through it. Co-Authored-By: Claude Opus 5 --- flow-state/EPIC-4.md | 106 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/flow-state/EPIC-4.md b/flow-state/EPIC-4.md index d60f5a9..5c9481f 100644 --- a/flow-state/EPIC-4.md +++ b/flow-state/EPIC-4.md @@ -288,3 +288,109 @@ The no-story control arm (the same report with the story layer bypassed) **did n complete** — the run hung in the browser after the first arm, so the floor and separation figures above are not yet attributable to this work either way. That comparison is the next thing to run, and it should be run before any conclusion is drawn from the numbers. + +--- + +## 12. The second direction measurement — reading 3 was right + +Same invocation, `checks.html?variety=1&library=0&seeds=6`, after the two fixes in §12.1: + +``` + §11 now +direction -0.14 +0.24 arcless reference -0.02 +floor 0.1697 0.2130 +``` + +§8 predicted direction moves off zero **upward** and that the floor **rises**, because that +is what progression is. Both happened, and the epic's headline hypothesis is confirmed. + +Of the three readings offered in §11, **reading 3 was the correct one**: the arc was not +reaching the image. The story layer was never the problem — it had nothing to speak +through. Two of the channels a narrative would have to travel down were inert, and neither +failure was visible from the source: + +**The overlay path was structurally dead.** `buildStack` gated layering on +`surfaceOf(m) === 'composable'`, and no scene in the library declared `surface` — so the +only scene that could ever sit on top was the one declaring `role: 'accent'`, which the +overlay roster excluded by construction. Empty intersection, every time: **0/144 stacks +carried an overlay**. `population` had been wired to the overlay chance per §4 and moved a +number nothing read. Fixed by labelling the library from the phase 12 coverage gate — the +37 scenes painting under 30% of the frame are composable — and collapsing the reserved +accent slot into one path. 1 distinct overlay scene became 27, at 34% of stacks. + +**The camera was inert.** `framing.shift` moved the frame by a median of **0.029** of a +half-frame at a fresh uniform angle every shot, so successive offsets cancelled and the +median jump at a cut was **0.014**. `closeness` reached shot SIZE per §4; the recentre got a +per-track constant and a die roll. Fixed by `look/Camera.js` — see §12.1. Median offset is +now 0.190 and the median reframe 0.135. + +This is the same failure mode the slow axis had before scenes declared `slowAxis`, exactly +as reading 3 predicted, and it had the same shape: a lever that existed, was wired, was +covered by gates, and moved nothing. **Both passed every check that existed**, because every +bound on them was a ceiling. A device doing nothing clears a ceiling comfortably. + +> The lesson worth carrying out of this epic: a gate on a *device* needs a floor, not only a +> limit. Three of the four new camera checks are floors for this reason. + +Readings 1 and 2 are still uncontrolled — the recap arch and the small sample both still +apply, and the honest statement is that direction was measured under them both times, so the +*change* is attributable even though neither absolute figure is clean. + +### 12.1 Built since §11 + +* `look/Camera.js` — the director's camera department, and the answer to "who translates + story into imagery". Story says tension, order and act; this turns that into where the + frame looks and how it travels there. Each director in `directors.js` names a camera. + Jump distance follows tension and act, speed follows energy, curve is one of four, and a + cut chooses between reframing and matching so two scenes can still read as one place. + 94% of shots now move *during* the shot — the recentre is no longer per-shot constant, + which is a deliberate departure from the rule in `framing.js` (that rule was right about + size and wrong about where the camera is looking). +* `surface` declared across the library, `role: 'accent'` retired in favour of + `surface: 'composable'` plus `background: false`, and one layering path instead of two. +* Four camera gates in phase 11, each with a floor. + +--- + +## 13. What is left + +Ranked. Three of the four are measurements, and they all report through an instrument that +is currently broken — hence the ordering. + +**13.1 The seed-variety instrument does not report.** Not in the original plan, and now the +first thing to fix: + +``` +separation — not computable: the reference landed below the floor +floor 0.2130 · ceiling 0.2179 · all six seeds read "thin" +``` + +The ceiling — videos built from casts sharing *no scenes* — is 0.2179 against a floor of +0.2130. Real seeds already differ by about as much as maximally-unrelated ones, so +separation divides by a near-zero interval and comes back `NaN`. This is the `separation +NaN` in the standing phase 12 failure, and it has been there across every run including the +pre-work baseline. + +§11 anticipated this precisely — *"the instrument is what is wrong"* — and proposed the +direction split as the fix. But direction was added **alongside** the broken separation +rather than replacing it, so the gate now leads with an unreadable number while a working +one sits underneath. The decision to make: repair the ceiling, or retire separation and read +**(floor, direction)** as the pair. + +**13.2 The coherence bound (§6).** Never built. Optional while direction sat at zero; +load-bearing now that it is +0.24, because nothing currently stops future work from buying +direction by making adjacent sections incoherent — the named failure mode in §6. + +**13.3 Recurrence (§6).** Never built. `phase13` has a spec-level cousin — was the kind +recast, did tension move more than 0.08 — but not the descriptor-distance statistic +`d(first, last) > d(first, middle)`. That is the ratchet measured in the image rather than +in the spec, and §5.3 calls it the one a viewer names as "it kept going somewhere". + +**13.4 Punctuation (§5.5).** Still the only part of the plan wholly unbuilt. Nothing in +`src/` mentions it. Needs the flash-gate review, which is why it was deferred; §11 said to +do it once the numbers were understood, and they now are. + +**13.5 The no-story control arm.** Still never completed. Less urgent than when §11 was +written — direction clears the arcless reference by 0.26, which is hard to explain without +a story — but it remains the only thing that would attribute the floor rise (0.1697 → +0.2130) to this work rather than to everything else that changed alongside it.