Repository navigation
Controls batch 19a: a live level move keeps its own length across a Reposition swap - #1717
Merged
Merged
Conversation
…specs Amend #1654, #1655 and #1711 against 323433f: fresh anchors, the mapping onto the batch 17-18 code, the rulings each needs, gates at Simd8 and Simd4 on both hosts, and the authorized paths. #1711 records the diagnosis of the moving stage target (the adoption rule compares the curve with fader_gain, not the ramp target) and the owed-discharge gate. Remove the closed specs #1651-#1653; git history keeps them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the #1713 note) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
F1) settle_adoption compared the curve with fader_gain, which RememberGain moves while grid events are held, so every heard level move landed at the swap. A free stage now compares with the kernel's ramp target (BuiltinFaderBank::ramp_target); a held stage keeps fader_gain. G1 is now bit-equal for VCA and hand moves heard 1, 12, 24, 26 and 30 blocks, on the C ABI and in host-core at Simd8 and Simd4 (red without the fix). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… F2) At a Reposition adoption, a free stage's live ramp now runs to its end as the uninterrupted engine runs it; a moved target defers the cell's J jump to the first free sample after the ramp (CellState::defer_jump), and a restartable cell holds its grid events until the deferral fires. A free live write and the hold releases clear the deferral. The stretched landing (long_landing, max(J, remaining)) is deleted. Gates G2 and R19-1 on the C ABI, in host-core at Simd8 and Simd4, and as a both-host parity case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1711 F3, F4) G4: an exact unmute that frees a held lane discharges the owed move (C ABI and every host-core form; red with the line deleted). D2: LevelMoveWindow and the B17-R14/R15 TransitionFallback term are deleted, with their doc text in abi.rs, the C header, C_ABI_V1_QUALIFICATION.md and both d.ts files (the #1713 text stays). Every G1, G2 and R19-1 case now asserts OUTCOME_EXACT with no fallback on both hosts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t 1) A step of the new table inside a live move's remaining ramp fired its own J jump but left the deferral pending, so the grid stayed held and the lane froze until the move's end while the watermark said EXACT. A discontinuity jump on a restartable cell now clears the deferral. Host-core gates at Simd8 and Simd4 (red before: sample 2,944, 2.9e-2) and a gate for a hand mute inside a pending deferral. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d 1, part 2) C ABI and both-host gates for a table step inside a deferred move's ramp (red with the fix reverted); the outcome-only two-rebuild test is deleted (its no-move EXACT check moves into G1); the deleted mute-curve parity case's bit check is restored; the G2 parity test now carries the committed hand offset so the deferral is exercised on both hosts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fold-1 clear ran before jump_event, so an unchanged value at a discontinuity dropped a deferral that was still owed (in the shared walk a value grid then cut a gate jump). The clear now runs only when the jump is emitted. K1 gate an_unchanged_value_jump_keeps_the_gate_deferral (red before). The G2 parity test compares every block with a fresh pair whose step sits at the fader's node time (the soft-clip slot's 31 samples). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…le difference (phase 2) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Batch 19a ships #1711 alone (option C). The fold-2 rule's K1 gate ships with K1 in 19b, so a small events.rs unit test now holds the rule: a discontinuity whose jump emits nothing keeps a pending deferral (red with the fold-1 rule). The 1711 spec records the note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Controls batch 19a: a live level move keeps its own length across a Reposition swap. When a rebuild changes only an automated fader ride's table while a VCA move or a hand move on that fader is still ramping, the move now runs to its end as the uninterrupted engine runs it, and the revision's watermark reports
OUTCOME_EXACT. The conservative fallback flag of batch 17 (B17-R14/R15) is deleted.Closes #1711
What changed
fader_gain, whichRememberGainmoves while grid events are held. So every heard move landed at the swap. A free stage now compares with the kernel's ramp target (BuiltinFaderBank::ramp_target); a held stage keepsfader_gain.Jjump waits for the move's first free sample (CellState::defer_jump), and a restartable cell holds its grid events until it fires. A free live write and the hold releases clear the deferral. The stretched landing (long_landing,max(J, remaining)) is deleted. Root ruling R19-1: for a moved target withremaining >= J, the old ramp finishes, then theJjump.self.owed = falseline on a free fader write is observable; a gate is red without it.LevelMoveWindowand itsTransitionFallbackterm are gone fromcrates/control-plane/src/control.rs, with their text inabi.rs, the C header,docs/C_ABI_V1_QUALIFICATION.mdand both d.ts files. The Carry a following route's column moves exactly into a six-word successor #1713 route flag and its text stay. Every G1, G2 and R19-1 case assertsOUTCOME_EXACTwith no fallback on both hosts.Evidence
audit capipcm_digestbffc21e857b5e134, unchanged (the audit session has no stored automation). 0 violations, 0 allocations.crates/engine/src/realtime/was edited.CellState.deferredalready existed). capi_retained 168,722 of 175,296 (main 168,746; -24 B: the B17-R14Option<LevelMoveWindow>in the control plane'sSessionStateis gone). Boot growth 19,857,408 bytes, unchanged (pin 20,971,520). simd128 artifact 4,380,022 B (main 4,384,816; -4,794 B, the deleted landing code).check-capi-abi.shpasses.batch-gates.shall green on codex/controls-batch-19a at 8c2107b: fmt; bench and realtime policy; host-core clippy default / no-default / all features and the loom spectrum handoff; workspace clippy -D warnings; no-feature release and debug checks; workspace tests (all features); the whole documentation job; builtins, console and effect-runtime fixtures; graph determinism; effect contract; host-core policy; protocol wasm parity; SDK generated and types; C ABI; protocol allocation audit; builtins and builtins-graph trace audits; test-web-audioworklet; check-cross-targets; web build, check-web-audioworklet, SDK headless; CI path routing, test-support CI, browser expected resources, SDK deletions, command reason and kind vocabularies, script reachability; fuzz check.--check-matrix --self-test-mutations) all pass at 8c2107b.Review
A fresh opus-high adversarial reviewer, then a focused verification of each fold (each fold touched render).
Not in this PR
an_unchanged_value_jump_keeps_the_gate_deferral) ships with K1; in 19a the rule is held by an events.rs unit test (a_discontinuity_whose_jump_emits_nothing_keeps_a_pending_deferral, red with the fold-1 rule) and the fader gates.Placeholders to file
.github/ISSUE_SPECS/1716-decide-how-adoption-treats-a-rounding-only-table-difference.md; phase 2). A split table can differ from the old one only inf32rounding; the cell then jumps overJwhere a fresh plan never jumps (about 1.7e-4). That is specified D2 behaviour, so EXACT is honest; no gate claims bits for the two-rebuild case.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.