Repository navigation
Controls batch 14b: first live commit bounded, effect-owner candidate at begin, input-section carry, live window by cells, SDK response codes from the core (#1620, #1621, #1623, #1624, #1630) - #1693
Merged
Conversation
…l path, not reusable state (stopped before coding) 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>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… added parameter entries (#1620, ruling C1) 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>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- #1624: begin reserves fallibly (EffectControlOwnerError::Allocation, refused before the stamp); one owner state holds the candidate; the candidate test commits; heap ceilings re-pinned by a written slack rule. - #1630: the input, fader and matrix carry drains count a carried value the successor's retarget replaces (D15-2, root ruling); a successor input ramp test; a debug assert on the join's records. - #1620: comments say the in-place form adds entries; OwnersGrowth fields are private; the left-bytes claim is dropped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- #1621: the paired-spans test refuses only a window longer than the capacity; stale prose. - #1623: the core refuses a non-finite endpoint (response.grid) and a non-finite override (response.override.value) on both hosts, with a parity row; the encoder stays strict; the sdk CI job checks the generated response-frame and session-key assets; the SDK refuses a non-number and an unknown reply section. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ate, caps) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cond carried value; add_carried's doc names both callers (#1630) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pin the audit's strip preparation bytes (1,136 -> 1,160) 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 14b: the first live edit of a large session costs what a later one costs, the effect control owner keeps its edit candidate only during a transaction, a per-node live effect window is sized by its live cells, a strip's input section carries across a plan swap and then retargets, and the SDK's response preview takes its frame codes from the engine and leaves every refusal to the core.
Closes #1620
Closes #1621
Closes #1623
Closes #1624
Closes #1630
What changed
SetControlthat adds a parameter entry and charges the added entry exactly.session::owners_growthandResourceEstimate::after_owners_editrun the compile's own cap checks. A list that gets shorter, or an addition that does not fit, takes the full path, which gives the typed refusal before any commit. The committed model and canonical snapshot equal the full path's; a differential gate proves this. Before, the first live edit that wrote a parameter the sparse list did not hold took the full path: 77 KB at 1 track, 198 KB at 64, 663 KB at 256. Now the first call is 757 allocations and a 72,865-byte peak at 1, 64 and 256 tracks alike.EffectControlOwnerbuilds its candidate rows and touched mask inbegin, with a fallible reservation (EffectControlOwnerError::Allocation, refused before the stamp), and frees them at commit or discard. One owner state holds the candidate, so the phase and the candidate cannot disagree. The retained saving is 780 B per EQ. This is boot and idle retention; a transaction that begins an EQ allocates the same bytes transiently.window <= capacity, the rule banks already use; the lane still refuses a window shorter than its cells, so no live value can drop.live_values_supersededis exact on every carry path.RESPONSE_GETfield IDs and codes, taken fromprotocol::schemaand the strict decoders; the SDK's hand copies are deleted. The SDK refuses only a value that has no wire spelling. Review fold (root ruling): the core refuses a non-finite grid endpoint (response.grid) and a non-finite override (new coderesponse.override.value) on both hosts, with a parity row. Before, these came back as a genericprotocol.failure. The encoder stays strict, and the wire format is unchanged.Evidence
batch-gates.sh) passes on the integrated tree (head 5f51ba9). The SDK headless suite passes 564 of 564. The run before the last fix caught two stale pins from Carry, then retarget a strip input section across a plan swap #1630's carry marks, the graph fixture and the audit's builtins resource grid; they are regenerated and re-pinned in 538537d.--check-matrix --self-test-mutationson 10496f1, which has the same browser code as the head: chromium 151.0.7922.34, firefox 153.0 and webkit 26.5 all pass. Render allocations are 0 in every row.audit capi:pcm_digestbf7dcedd1d92621f(unchanged), 0 allocations, locks and syscalls.bench_support::allocthread counters).builtin_bank_bytesrow runs only in CI. Its ceiling (21,056) was not re-measured here; the +384-byte carry marks are expected to fit under it.Re-pins (each from a measurement)
capi_retained_bytesceiling 182,400 to 175,296 (Build the effect control owner's candidate at begin #1624: measured 166,374 to 159,354 = nine EQs times 780 B).REFERENCE_EFFECT_CONTROL_BUDGET21,376 to 13,632 (Build the effect control owner's candidate at begin #1624: 19,377 to 12,357).builtin_bank_bytes, eight lanes, ceiling 15,680 to 17,280 (Carry, then retarget a strip input section across a plan swap #1630 review fold: carry marks, 15,321 to 15,705).control_command_heap(debug), under a written slack rule (measured plus 2,000, rounded up to the next 1,000), reason Build the effect control owner's candidate at begin #1624: steady peak 73,000 to 75,000, steady requested 104,000 to 106,000. The new first-call rows from Bound the first live commit of a large session #1620 are a 75,000 peak and 106,000 requested.STRIP_PREPARATION_BYTESgoes from 1,136 to 1,160 (+8 per cell reader, three readers; the change does not depend on lane width), with the builtins fixtureresources.jsonlregenerated and its manifest digest re-pinned (ACCEPTED_MANIFEST_SHA256). The graph fixturedirect-routehasbuiltin_bank_bytes7,047 to 7,239.Review
One opus-high batch review of c211890...23d7c52: FAIL, with no realtime or acked-batch defect. Folded in 3c49a8b (part B) and 81aa9ef (part A):
console-workloadpaired_spans, a required release job) still refused a window below the capacity. It now refuses only a window longer than the capacity.sdkjob now runscargo test -p parameter-metadata --test response_frame --test session_keys. No paths filter is used, and the verdict table is unchanged.response.grid,response.override.value), with a parity row.OwnersGrowthprivate. Generate the SDK's RESPONSE_GET codes and drop its own checks #1623 makes the SDK refuse a non-number and an unknown reply section. Stale prose is fixed.A focused opus-high verification of the fold commits: PASS, with two minors folded in 1fe8b5a. A later write after adoption is now tested not to count as a second carried value (red with the marks left set), and
add_carried's doc names both of its callers. That doc edit is undercrates/engine/src/realtime, doc comment only, made in one attempt.Departures recorded in the specs
crates/host-core/tests/in_place_commit.rs, where the two-path harness is.check_automation_windowacceptswindow <= capacity.ResponseConfigurationKindreplaces literal kind codes in the codec. A literal same-frame C ABI comparison is not possible, so the hosts agree by request content and by the shared refusal table.unsafe).input_recordsandfilter_editsmove intoprepare.rs.Issues to file
control-frame.ts,live-response.tsandbrowser/engine.ts.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.