Settle the render window on the time selection and delete the experiment that proved it

The millisecond floor lives in the custom-bounds field, not the engine, so
RENDER_BOUNDSFLAG=2 is now the only bounds mode: the two-position type, the
console verdict and the STARTPOS/ENDPOS drift probe all go. capture.cpp 697 -> 622.
This commit is contained in:
2026-08-02 16:55:12 -04:00
parent d85e50c143
commit 8331df2e91
14 changed files with 205 additions and 862 deletions
+18 -12
View File
@@ -765,20 +765,26 @@ these refusals — but it means a future one- or two-frame refusal may be ours,
the tolerance was not widened on speculation. Widening it is a precision-invariant
decision, not a bug fix.
## `capture.cpp` is over the ~600-line ceiling — documented, not split mid-experiment
## `capture.cpp` is over the ~600-line ceiling — the seam is identified, taking it is blocked
**Context.** The bounds-channel live experiment (`RenderBoundsChannel`, this same
section above) added the time-selection guard/read-back plumbing and the always-on
verdict print to `OfflineRenderBackend::capture`, landing the file at 697 lines against
root `CLAUDE.md`'s ~600-line ceiling. The named seam: the drift/verdict instrumentation
block (`ScopedTimeSelection`/read-back/drift-report/verdict-print, roughly
`capture.cpp:449-655`).
**Context.** Removing the settled bounds experiment's instrumentation (the console
verdict and the three-checkpoint `RENDER_STARTPOS`/`ENDPOS` read-back) brought the file
from 697 to **622 measured lines**, against root `CLAUDE.md`'s ~600-line ceiling. The
seam that entry originally named is gone with the instrumentation; nothing left in the
file is bisectable without cutting load-bearing why.
**Deferred, not silent.** ≈60 of the added lines are temporary probe instrumentation
with a known removal date (the experiment closes when `docs/VERIFICATION.md` §Capture
range and bounds comes back), and splitting the file mid-experiment risks moving the
exact code the smoke run is measuring. Split after the experiment closes, onto the seam
named above.
**The remaining seam is a real responsibility boundary**, and the file header already
names it as two things: `OfflineRenderBackend::capture` (the offline render driver)
versus the four helpers BOTH backends share — `makeUniqueTag`, `captureNameFor`,
`collapseCapturedFileToMono`, `stampCaptureSample` — consumed by `capture_batch`,
`capture_orchestrator`, `capture_realtime_shell`, `capture_realtime_finalize` and
`render_in_place`. Lifting those four into their own TU takes the driver under the
ceiling and gives the cross-backend steps their own home.
**Why not taken.** `src/shell/capture/` has no `CMakeLists.txt` of its own — its sources
are listed in `src/app/CMakeLists.txt`, so a new TU needs an edit there. Forcing the
four helpers into an existing TU instead (orchestrator, realtime finalize) would put
them in a wrong home to dodge one build-file line, which is worse than the overshoot.
## bext TimeReference read-back is not a floor detector (dead end, recorded so it is not re-litigated)