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
+6 -6
View File
@@ -36,14 +36,14 @@ detail not covered there:
- **`renderOffline` is the one seam both a fresh capture and a recipe replay
cross**, which is why the refusal and both transient guards live there rather
than in the action bodies — anything placed in `ResolveScopeSource` alone would
miss `RunRecaptureFromSource` entirely. The bounds channel is inside the backend
miss `RunRecaptureFromSource` entirely. The bounds mode is inside the backend
that seam calls, for the same reason: a replay must hand its window over exactly
the way a fresh capture does.
- **The bounds channel is under live experiment**, and `capture.cpp`'s
`kBoundsChannel` is its single switch. On the time-selection channel the render
window travels in the project's own time selection, so `capture` snapshots and
restores that selection like any other state it borrows. Why there are two
channels: `src/core/capture/render_settings.h`'s `RenderBoundsChannel`.
- **The render window travels in the project's own TIME SELECTION**
(`RENDER_BOUNDSFLAG=2`), so `capture` snapshots and restores that selection on every
exit path like any other state it borrows. The custom-bounds field floors the window
to the millisecond and must not come back — why, in
`src/core/capture/render_settings.h`'s `kRenderBoundsTimeSelection`.
- **FX-bypass guard ordering.** `scope_resolve` reads the M10 provenance-assembly
inputs (track/item selection, FX-chain identity) BEFORE the FX-bypass guard
neutralizes the in-scope chain — provenance must see the chain as it really is,