Repository navigation
Controls batch 12b: the browser accepts structural edits; the last host difference is gone (#1562b, #1584 D6b, #1290 d2) - #1680
Merged
Conversation
build_plan_shape sets the successor's arm bits from the bindings the core carries in SuccessorBase, so on the browser a restarted effect's acknowledged subscription keeps publishing windows from the adoption block, and a removed insert's ends with one OBSERVATION_ENDED and no slot. The worklet host's event docs name the new event. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…romotion (#1290 d2) The preparer leaves each plan's captures and pairing beside its tables; the browser promotes them in commit order at the start of the service step through SpectrumService::adopt_successor with the engine's real carry outcome, so a running stream, an armed one-shot and a collection selection continue across a rebuild; displaced captures drop on the control side. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
web.apply.rebuild_pending, the browser preparer's refuse_rebuild override, allow_rebuild and the test-only structural command are deleted; every structural transaction goes through control_command like the C ABI. The meter header carries the structure epoch (WebMeterHeader 80 -> 88 bytes); the worklet re-reads sources and observation bindings at each map request; the browser SDK names meter frames and observation maps by the strip order of their epoch. A new structural-apply qualification row checks the rebuild path in three browsers. The core hook stays for #1562b-K. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… one ended event holds and size its reserve by capacity (root) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ubscriptions; the core hook goes (#1562b-K) pollMeters names each frame by the control list of the structure epoch it carries; named effect rows resolve from the list's section headers just before a frame is encoded; observation records are re-addressed to the strip's current index; OBSERVATION_ENDED ends managed subscriptions and notifies subscribers once per commit. RuntimePreparer::refuse_rebuild and its call are deleted: both hosts accept rebuilds through the one core path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # .github/ISSUE_SPECS/1290-replace-the-running-browser-session-in-the-rust-host.md # .github/ISSUE_SPECS/1584-subscribe-to-an-effects-observation-tap-with-a-transaction-edit.md # hosts/host-web/tests/browser-v1/direct-oracle.mjs
…rvation records by stable key; core-side effect-ID precondition; host-core armed tap mask) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…an add any valid source (#1562b review B1) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # .github/ISSUE_SPECS/1562-admit-browser-live-edits-in-the-worker-through-the-committed-model.md
…ch evals wait on their condition, not a 20 ms timer Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 15, 2026
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 12b: the browser accepts structural edits. The sequenced
web.apply.rebuild_pendingrefusal and the core hook behind it are gone, so a rebuild-path transaction runs through the one core path on both hosts. The browser keeps meters, acknowledged subscriptions and spectrum captures running across the swap, the SDK follows the new structure, and a rebuild can add any valid source.Closes #1562
#1584 stays open (its C ABI
Observeedit, D1-D5, D7, D8, follows). #1290 stays open for (b), which waits for supersession (#1310); (d1) and (d2) are done and (e) needs no code.What changed
build_plan_shapesets a browser successor's arm bits from theObservationBindingsthe core carries inSuccessorBase: a restarted effect's acknowledged subscription keeps publishing windows from the adoption block; a removed insert's ends with oneOBSERVATION_ENDEDand no slot.SpectrumService::adopt_successorwith the engine's real carry outcome, so a running stream, an armed one-shot and a collection selection continue across a rebuild; a stream that does not carry ends together with its analysis.web.apply.rebuild_pending, the browser preparer's override,allow_rebuildand the test-only structural command are deleted; every structural transaction goes throughcontrol_command.WebMeterHeadergrows 80 -> 88 bytes withstructure_epoch; the worklet re-reads sources and observation bindings at each map request; the browser SDK names meter frames and observation maps by the strip order of their epoch. A newstructural-applyqualification row checks the rebuild path in three browsers.RuntimePreparer::refuse_rebuildand its call are deleted. The SDK names meter frames by the control list of the epoch they carry, resolves named effect rows from the list's section headers just before encoding, re-addresses observation records to the strip's current index, and ends managed subscriptions onOBSERVATION_ENDED.session::STABLE_ID_MAXIMUM_BYTES = 127, now the one constant) and its source PCM and plane staging at the grammar's channel maximum (255), so a rebuild can add any valid source;copy_id_into_stagingreturns a typed error, never a panic.Evidence
batch-gates.shincl. bench and realtime policies, host-core feature matrix and loom) plustrace-graph-audit.sh; browser qualification in chromium, firefox and webkit with--check-matrix --self-test-mutations(including the newstructural-applyrow): all green on the final headd32a9ca3b(SDK headless 550 pass, 0 fail;trace-graph-audit1,000,000 blocks); each browser prints "all qualification gates passed".miso_engine_v1_plan_watermarkat all four rates.control_parity.rsnow scripts six rebuild steps (output route gain and mute,delay_samples, the multiband and delay prepared bypass) with browser and C ABI identical per block; a new row adds the longest-ID stereo source by rebuild to a mono-boot session at four rates.memoryBytesafter boot 2,883,584 -> 3,014,656 (the staging);bridge_retained_bytes1,631,181 -> 1,764,878 with its ceilings re-pinned from measurements.audit capipcm_digestbf7dcedd1d92621f, 0 allocations.check-abi-layout-v1.pyand its self-test pass.Review
One opus-high review of 12b's diff: FAIL on one BLOCKER, fixed here (B1: the browser's source staging was sized from the boot session, so a rebuild adding a stereo or longer-ID source trapped the wasm instance or went sticky after its ack; root ruled the maxima sizing). Folded: observation records wait for (or refuse on) an observation map of a different structure epoch than the list that addresses them, so a subscribe cannot arm another effect's tap during the commit-to-adoption window; a dropped stream's analysis ends at promotion; meter frames the SDK cannot name are counted; an
OBSERVATION_ENDEDolder than a binding's arm is ignored; a live epoch-moving leg in the header-epoch test; a stale decision-record line. Integration fixes: a private doc link, and the meter-epoch evals wait on their condition instead of a 20 ms timer.Issues to file (placeholder specs in this branch)
cap-the-observation-bindings-by-what-one-ended-event-holds(root: also sizes the ended-event reserve by capacity).address-observation-records-by-stable-key-in-the-core.refuse-an-effect-row-edit-whose-effect-changed-in-the-core.expose-the-armed-tap-mask-from-host-core.Open questions sent to root: a launch maximum for source channels (the staging uses the grammar's 255; a ruling of 2 would shrink it to about 1 KB), and whether a session with no source should boot.
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.