Repository navigation
Controls batch 14a: exact-byte observation admission, automation target checks at preparation, master strip after boot (#1685, #1645, #1686, #1683) - #1692
Merged
Conversation
…ent (#1685) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#1686) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1685, root ruling) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#1645) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ation meets the order rule Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r row (#1683) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ends on it) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…zz lockfile Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- #1685: the binding table charges its kept capacity and a later set's text as two peaks (measured 31,386 B against the old 26,640 B charge). - #1686: the descriptor fuzz loop's modulus is 5 again. - #1645: the order rule holds within render's reach, 128 samples (root ruling (a): each curve's 64-sample lead and lag); no per-comparison String clone; three asserts close the test gaps; two tests with no unique value are deleted. - #1683: the master takes effect at adoption; a boot-word master follows its strip through a live write and a rebuild; a solo and a master on one strip are two writes on both paths; the boot word and the row rules are documented side by side; the parity test reads typed fields; the registry names the master row. 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 14a: observation subscriptions are admitted by the exact bytes of the event that ends them, builtin automation is validated against its rows before any ack, prepared automation spans lose the fields no producer fills, and an app sets the master strip after boot through one core row on both hosts.
Closes #1685
Closes #1645
Closes #1686
Closes #1683
What changed
OBSERVATION_ENDEDevent a commit could emit. This replaces Cap the observation bindings by what one ended event holds #1676's key count, which assumed two 127-byte IDs per key. A key is64 + pad8(strip ID) + pad8(effect ID)bytes, measured with the real codec at compile and checked against it. Each observation slot keeps its key size in existing padding, so admission allocates nothing (counted 0). The refusal isObservationLimit { index, event_bytes, frame_bytes }, whole and before any ack. The browser keeps reason 15observationLimitandRESULT_UNSUPPORTED. The ended-event reserve charges a ceiling over every admissible key set. At the browser's 16 KiB frame, a 64-track session subscribes a meter tap on every insert. The C header now gives the rule formaximum_control_frame_bytes: 64 insert meters with IDs of 8 bytes or less need 5,184 bytes, and 6,208 bytes with 16-byte IDs (root ruling).controls::automation_diagnosticsrefuses a builtin automation whose segment shape a row cannot take (control.automation.shape, e.g. a polarity flip writtenlinear). It also refuses an input-filter curve that puts the HPF at or above the LPF (control.automation.order), for every pair of stored values up to 128 samples apart, because render leads or lags each stored filter value by up to 64 samples. Preparation, the classifier andsession-validatorcall it, so both hosts refuse alike, before any ack. Review fold: a static HPF or LPF edit on a strip with filter automation also meets the order rule, on the full classifier and the fast path (Render stored input HPF and LPF automation #1660 keeps only the classification of such edits).PreparedAutomationSpanis{channel, parameter_index, sample, value}.AutomationSpanKindis deleted, and its retired values stay documented. The validation verdicts are unchanged for every valid point. A test that existed only for a removed field is deleted. No rendered bit moved.master, on every strip. It is held by strip ID in the control plane's monitor overlay, like solo, and is never saved or snapshotted.SET_CONTROLkeeps the revision and reports pathmonitor, and at most one strip is master. A transaction that removes the master strip ends the designation. The browser boot wordliveControlMasterTrackPlusOnedesignates the first plan only; every later plan follows the overlay by ID. This fixes a latent defect: a rebuild reused the boot index after a strip was inserted before the master. The SDK generatesstrip.master(enabled).Evidence
batch-gates.sh) passes on the integrated tree (head c211890, after the review fold). The SDK headless suite passes 560 of 560. The first run's fuzz check failed onfuzz/Cargo.lock, because Validate builtin automation targets against their rows at preparation #1645 adds theautomationcrate tocontrols. The lockfile is updated offline in c19b867, andcargo check --lockedon the fuzz manifest passes.--check-matrix --self-test-mutationson c211890 passes in chromium 151.0.7922.34, firefox 153.0 and webkit 26.5. Render allocations are 0 in every row.audit capi:pcm_digestbf7dcedd1d92621f(unchanged), 0 allocations, locks and syscalls.hosts/host-web/tests/control_parity.rs: Designate the browser master strip after boot #1683, designate, move, refuse and clear the master after an empty boot. Admit observation bindings by the exact encoded bytes of the ended event #1685 has no C ABI observe edit yet (Subscribe to an effect's observation tap with a transaction edit #1584), so its core admission is tested throughSessionState, which every host calls.Re-pins (each from a measurement)
memoryBytes(initialStatus,beforeDisposeStatus): 2,818,048 to 2,883,584, one 64 KiB page (Designate the browser master strip after boot #1683: one more own row per strip in the catalog, plus the overlay's master). Measured on the base and on the head.observation_reserve_bytes, (active, token)): at 4 KiB with 51 slots or more, (26,616, 3,720) to (27,880, 3,928); at 16 KiB with 64 slots, (113,118, 15,810) to (101,792, 15,904). No pinned row moved, because the C ABI allocator oracle reads the function itself.fuzz/Cargo.lockgainsautomation(Validate builtin automation targets against their rows at preparation #1645).Review
One opus-high batch review of origin/main...96a5ee5: FAIL, with no blocker. No ack precedes a drop on any path: #1685 admits before anything is queued and the commit reserves room for the ended event before preparing; #1683 validates the master write before commit and writes the overlay after the last fallible step. Folded in 64bd6b9 (records) and c211890 (code):
ORDER_REACH), so stored automation is never accepted and later refused in render. The reviewer's counterexample is a refused case, and the test is red at a reach of 64. Render stored input HPF and LPF automation #1660 must keep each reach at or below 64 samples, or widen the rule in the same change.Stringclone, gains three asserts, and deletes two tests that duplicated Refuse automation on effect parameters that are not block-rate #1335's. Line widths and stale specs (Render stored input HPF and LPF automation #1660, Process an effect node in pieces at automation events #1662, Admit observation bindings by the exact encoded bytes of the ended event #1685 sizing) are fixed.Departures recorded in the specs
controls, not in builtins-compiler (amendment). Gate 3's stage index is 4. Thelive_deltatest target needs thecontrol-providerfeature.Issues to file from this batch's specs
pin-the-browser-wasm-memory-as-a-ceiling(root ruling: an exactmemoryBytespin that moves one page with unrelated changes becomes a ceiling with a recorded margin).🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.