Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
65ebedc
Check the batch 19 specs against main and remove the closed batch 18 …
tamashi095 Oct 17, 2026
0a73fa9
Record root's batch 19 rulings in the specs (R19-1 to R19-6, two PRs,…
tamashi095 Oct 17, 2026
dfe716d
Render send rows in the controls rules and store a hand send gain as …
tamashi095 Oct 17, 2026
a7f5905
Compare a free fader stage's ramp target at a Reposition adoption (#1…
tamashi095 Oct 17, 2026
d3f6db6
Add the graph types for automated send rows (#1654 T2)
tamashi095 Oct 17, 2026
44c9679
Defer a moved target's jump to a live move's end at a Reposition (#17…
tamashi095 Oct 17, 2026
1e75b00
Merge branch 'codex/controls-batch-19f' into codex/controls-batch-19s
tamashi095 Oct 17, 2026
3d4b70c
Render VCA rows in the controls rules and store a hand VCA move as an…
tamashi095 Oct 17, 2026
13abb0c
Gate the owed discharge and delete the conservative level-move flag (…
tamashi095 Oct 17, 2026
1872b54
Gate the owed discharge alike on both hosts (#1711 G4 parity leg)
tamashi095 Oct 17, 2026
1402767
Merge branch 'codex/controls-batch-19s' into codex/controls-batch-19f
tamashi095 Oct 17, 2026
202724b
Add the shared merged automation walk (K1, #1654/#1655)
tamashi095 Oct 17, 2026
015287c
Drop a pending deferral at a discontinuity jump (#1711 U1 fold 1, par…
tamashi095 Oct 17, 2026
7927871
Merge commit '14027678f' into codex/controls-b19-u1fold
tamashi095 Oct 17, 2026
d8544a5
Prepare send row automation and lower its edits (#1654 T4)
tamashi095 Oct 17, 2026
08c0a25
Render send row automation in the following route op on the shared wa…
tamashi095 Oct 17, 2026
c44cafd
Merge branch 'codex/controls-batch-19f' into codex/controls-batch-19s
tamashi095 Oct 17, 2026
4533703
Gate the stale-deferral fix on the C ABI and both hosts (#1711 U1 fol…
tamashi095 Oct 17, 2026
703d52b
Merge branch 'codex/controls-b19-u1fold' into codex/controls-batch-19s
tamashi095 Oct 17, 2026
8fdd233
Merge branch 'codex/controls-batch-19s' into codex/controls-batch-19v
tamashi095 Oct 17, 2026
8b533bd
Integrate send row render and gate it on both hosts (#1654 T5)
tamashi095 Oct 17, 2026
0d58fbd
Keep a deferral when a discontinuity emits no jump (#1711 U1 fold 2)
tamashi095 Oct 17, 2026
eabdba1
Merge branch 'codex/controls-b19-u1fold' into codex/controls-batch-19s
tamashi095 Oct 17, 2026
4d700ee
Compose VCA curves on each reached member lane in the fader stage (#1…
tamashi095 Oct 17, 2026
467689e
Merge branch 'codex/controls-batch-19s' into codex/controls-batch-19v
tamashi095 Oct 17, 2026
b70b899
Prepare VCA event lanes and lower VCA edits (#1655 V3)
tamashi095 Oct 17, 2026
9381bf0
Fix four route-column re-time defects found in review (K1 + #1654 U2 …
tamashi095 Oct 17, 2026
fbb252e
Hold a route column's owed landing per column (K1 + #1654 U2 fold 2)
tamashi095 Oct 17, 2026
ee936dc
Drop a private intra-doc link from route_gain_law's doc (Documentatio…
tamashi095 Oct 17, 2026
c6b570e
Merge branch 'codex/controls-batch-19s' into codex/controls-batch-19v
tamashi095 Oct 17, 2026
c3ee6c5
Merge branch 'codex/controls-b19-u2fold2' into codex/controls-batch-19s
tamashi095 Oct 17, 2026
de392de
Drop the duplicate held-grid test the 19a port brought into 19b's merge
tamashi095 Oct 17, 2026
88ebad2
Add placeholder TBD53: decide how adoption treats a rounding-only tab…
tamashi095 Oct 17, 2026
45f5903
Add placeholder TBD54: land a removed send row exactly across a live …
tamashi095 Oct 17, 2026
be4eb15
OR automated VCA mutes into a following send's follow term (#1655 V4)
tamashi095 Oct 17, 2026
fe4a88b
Land a removed send curve at once and flag it conservatively (#1654, …
tamashi095 Oct 17, 2026
d4726fe
Correct two #1711 decision-record lines (U1 fold 2 verification NITs)
tamashi095 Oct 17, 2026
6a1638b
Gate stored VCA automation on both hosts and document it (#1655 V5)
tamashi095 Oct 17, 2026
e46be57
Merge branch 'codex/controls-batch-19s' into codex/controls-batch-19v
tamashi095 Oct 17, 2026
69c156f
Flag any rebuild that carries an automated following send across a li…
tamashi095 Oct 17, 2026
ab5d12f
Document the route column's held-value rule as defined behaviour (#16…
tamashi095 Oct 17, 2026
2922d91
Release every cursor's hold when a composed fader lane jumps (#1655 U…
tamashi095 Oct 17, 2026
51c4fc7
Fold a flagged rebuild's landing into the send move window (#1654, ro…
tamashi095 Oct 17, 2026
18b7de9
Merge branch 'codex/controls-batch-19s' into codex/controls-batch-19v
tamashi095 Oct 17, 2026
aa8c6ee
Turn send-row automation off and keep the route-op machinery (#1654, …
tamashi095 Oct 17, 2026
194fe34
Name the composed lane's compose_toward target as defined behaviour (…
tamashi095 Oct 17, 2026
e0b60a8
Merge origin/main (batch 19a, #1717) into batch 19b
tamashi095 Oct 17, 2026
2a39f5e
Say the mute-only carry flag over-reports and cuts nothing (B19-R10 c…
tamashi095 Oct 17, 2026
c29e63e
Number the batch 19b placeholder: #1718
tamashi095 Oct 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Land a removed send row exactly across a live move

Filed by root from batch 19 (#1654 U2 review, root ruling B19-R7; controls coordinator, 2026-10-17).
Phase 2. It follows the "split a blocking gate early" practice: #1654 closes on its
passing gates with a conservative flag, and the exact case moves here.

## Product outcome

When a rebuild removes a send's route-row automation (or its source strip's mute automation) while the
send stays a seven-word route and a live send move (a hand gain offset or an un-automated row edit) is
still ramping on that column, the move keeps its own length and the column then lands on the new
static value over the removed row's own length. The revision's watermark reports `OUTCOME_EXACT`. This
issue deletes the conservative flag of B19-R7 and B19-R8.

Any rebuild that carries an automated following send must also keep a live send move on it: the move
keeps its own length, whatever else the rebuild changes.

## Context

- Batch 19 (#1654 after B19-R7): a carried seven-word following route that loses a route row or its
source-mute curve lands the column at once over the removed row's `J`. That can cut a live send move
in flight, so the control plane marks such a rebuild `CandidateOutcome::TransitionFallback` while a
live send move may still ramp (send-only, conservative; the doc text sits beside #1713's).
- MAJOR-1 of the B19-R7 split verification (root ruling B19-R8): any rebuild, an unrelated one too
(a rebuild that edits only the direct route `eq0-main`, an added muted send), cuts a live send move
on an automated following send to `J`. The cut is the at-once branch of `place_carried` in
`crates/graph/src/runtime.rs` (`has_dropped || !any_placed`): a carried column that composes with no
placed value lands at once, so a column with a held ride and a hand move in flight lands over `J`
at the swap. B19-R8 widens the control-plane flag to every transaction rebuild that carries a
following route in both plans while a live send move may still ramp, the transaction's own join
records with a ramp included (MAJOR-2). The exact fix here removes both the cut and that flag.
- Two exact attempts failed review (U2 folds 1 and 2): an "owed landing" held per cursor leaked its
length to later jumps; held per column, it was dropped by a further rebuild (`adopt` reset it,
MAJOR-C) and broken by a seek (its time was a node time computed from a render-time remaining, and a
seek dropped it, leaving a stale value: MAJOR-D). Probes: the batch 19 verifier's
`scratchpad/u2f2v/probes*.rs` (session scratchpad; summarised here).
- Root ruling B19-R10 (batch 19b): send-row rendering (route rows 1-6, the send-gain offset) is
not shipped; #1654 stays open in phase 2 behind this issue and turns send rows on after it. The
route-op machinery (the merged walk, the carry, the conservative flag) shipped with batch 19b
for its production callers, source-mute and VCA-mute following routes. Those routes reach the
flag only as an over-report: the B19-R10 check found that every gate change at a carry is
bit-equal to the same gate change on one uninterrupted plan, so no mute-only or VCA-mute carry
cuts a live send move (W1 and W2 below need send-row value cursors). Under W1 a removed muting
curve opens the column over the live move's own ramp rather than the curve's own length, as a
live record inside a landing does on one plan (recorded, not a cut).
- The last check of the whole send flag term (B19-R9, batch 19) found two more MAJORs, both of
the B19-R7/R8/R9 window:
- MAJOR-W1: a live send move committed while a rebuild is pending (submitted, not yet adopted)
is cut at the candidate's adoption, and the pending candidate is never marked (it reports
`OUTCOME_EXACT`).
- MAJOR-W2: the window closes at the record ramp's end (`first_sample + ramp`) while the
column's R19-3 landing tail still runs, so a rebuild inside that tail can cut the landing and
report `OUTCOME_EXACT`.
- The design this issue must hold: an owed landing kept in render terms (samples left on the column's
ramp, counted down by `frames`), carried by every carry (merged with a new one by the longer length,
R19-4), never dropped by a seek unless the seek's landing composes that column, and never leaving a
value that differs from a fresh plan's after its landing.

## Objective gates

- G1. The batch 19 MAJOR-A, MAJOR-C (two rebuilds) and MAJOR-D (seek inside, forward and back) setups:
bit-equal to the uninterrupted engine until the move's end, then to a fresh plan; `OUTCOME_EXACT`;
both hosts; host-core at Simd8 and Simd4 and the scalar oracle.
- G1b. MAJOR-1: on a riding send with a live hand move (gain offset or `matrix_lr`) in flight, an
unrelated rebuild keeps the move bit-equal to the never-rebuilt twin until its end, then a fresh
plan; `OUTCOME_EXACT`; both hosts. The same for MAJOR-2 (one transaction: a `gain_db` move over
4,000, an upsert of one matrix row and the removal of another).
- G1c. MAJOR-W1: a live send move committed while a rebuild is pending keeps its own length
across the candidate's adoption (bit-equal to the never-rebuilt twin until its end, then a
fresh plan), `OUTCOME_EXACT`, both hosts; with the flag still in place, the pending candidate
completes `TRANSITION_FALLBACK`.
- G1d. MAJOR-W2: a rebuild inside a column's R19-3 landing tail (after the record ramp ended)
keeps the landing's own length (twin, then fresh plan), `OUTCOME_EXACT`, both hosts; with the
flag still in place, it completes `TRANSITION_FALLBACK`.
- G2. The B19-R7/B19-R8/B19-R9 flag (`PlanStateInventory::carries_a_following_route_into_a_following_route`,
`SendMoveWindow`) and its doc text on the five surfaces are deleted; its gates (batch 19b names,
on mute-following sends: `an_unrelated_rebuild_across_a_live_send_move_on_a_following_send_is_flagged_on_the_c_abi`,
`a_send_move_inside_a_rebuild_is_flagged_on_the_c_abi`,
`a_second_rebuild_inside_a_flagged_rebuilds_landing_is_flagged_on_the_c_abi`,
`a_rebuild_carrying_a_following_send_across_a_live_send_move_is_flagged_alike_on_both_hosts` and
`a_second_rebuild_inside_a_flagged_rebuilds_landing_is_flagged_alike_on_both_hosts`) are replaced
by G1 to G1d, which then run on send rows as well (#1654).
- G3. Allocation-free render; no new panic path.

## Dependencies

- #1654 (phase 2; its send rows turn on after this issue), #1713 (the seven-to-six flag, separate).

## Related

- A route column and a single fader cell hold values differently: on a route column a value held by an
earlier column jump follows the column's free time and never moves earlier (R19-3 (d), #1654 T3),
while in a fader cell a later step's jump shortens the hold. Unifying the two rules is phase 2 (root,
batch 19); it is not part of this issue's gates.
Loading
Loading