Repository navigation
Controls batch 15a: replace an unadopted candidate plan (#1310), prepare across a withdrawn one (#1344), capacities for a superseding candidate (#1398) - #1700
Merged
Conversation
…he boot bound through the boot staging; control_smoothing on replace) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the non-isolated page Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ead the master meter on the C ABI), #1683 successors Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ding candidate (#1398) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…surement (12,969 -> ceiling 14,272) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…caller); #1403 adds it with its first caller 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>
…1310) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sole fixture Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e core) and TBD40 (charge the monitor overlays and edit ramps in the retained rows) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-15a Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Remove the specs of 52 closed issues (git history keeps them). - Batch 15 root rulings are labelled B15-R1..R9, root decisions under owner delegation. - Decision 17 C13 names each direct export batch 15 approved (root, 2026-10-16). - #1644 declares a discontinuity before its seek; #1386 is split, and its browser transport is placeholder TBD41; placeholder TBD42 carries an owner or source B keeps unchanged from P0 from P0's state. - TBD39, TBD40, #1688, #1689, #1285, #1319, #1323, #1396, TBD38 corrected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A paused browser page drops superseded candidate shapes from the core's held epochs, so every structural edit commits on both hosts (parity row). - On Taken, or an empty mailbox with a pending list, every pending epoch up to the newest is promoted before the rebuild (root ruling). - A refusal at the three-plan peak is BACKPRESSURE when the edit fits against the newest held plan alone, else COMPILE_REJECTED (root ruling). - Each held epoch's carried rings are counted once. - Tests for the live-path ramp merge and a republish with a nonzero superseded word; header, docs and records. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Gate 2 compares key and owner sets, with keys that differ between the two plans; gate 1 carries an audible insert. - A donation takes the donor's producer, refuses a fed successor producer, and moves consumers before producers, so no acked PCM is separated from its ring. - Source-crate tests for every unswappable pair and a carried prepared seek. - Record: the reverted-owner gap goes to TBD42; path amendments listed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1310 and its code comments Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ted-source guard (#1310, #1344) - B-1: RETIRED_PROVIDERS = RETIREMENT_CAPACITY; synchronize_plan_epochs drains before it promotes from the atomic. Test: two_taken_candidates_and_a_published_adoption_never_wedge_the_session. - M-1: a parked epoch keeps its resource row (ProviderEpoch::parked) and both admissions charge it until its plan is reclaimed. - Root guard (no ack before a drop): a supersession that reverts a source the withdrawn candidate redeclared and fed is refused with BACKPRESSURE before the commit (host_core::drops_acked_reverted_source), both hosts, parity row. TBD42 lifts it. - m-1..m-5: header/doc wording, apply_donation re-reads the successor producer is unfed, SuccessorFed cases, test doc, spectrum hand-over supersession tests; promote_spectrum keeps an unadopted entry's hand-over. - capi_retained_bytes 165,922 -> 168,810 (measured, x86-64), ceiling 175,296 stays. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…h hosts after the plan latency (#1310) The adoption block was silent on both hosts because the rig's session has plan latency (3 blocks at 48 kHz, 7 at 96 kHz). The row now commits A after the output plays, and asserts the acked chunk is heard lead blocks after adoption and differs from a control run that never fed A's ring, on both hosts, bit-equal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sh ring; private doc links (#1310, #1344) - Root ruling M-A (a): host_core::drops_acked_fresh_source replaces the reverted-only guard. A ring A created (added or redeclared) that the host fed and the donation does not move to B refuses B with BACKPRESSURE before the commit: reverted, redeclared a third way, removed, and added then removed or redeclared. Both hosts; capi cases, host-core unit cases, parity row for (a)-(c) at 48 and 96 kHz. TBD42 lifts only the reverted case. - Removal by the caller's own edit discards the source's queued audio (header, semantics); a discarded-frames counter is placeholder TBD43. - B-A: five private intra-doc links in host-core source.rs are plain code spans. - m-A record, m-B (drain order is defence in depth, untested), m-C (moot: guard reads no kept model). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…raph scopes 'no accepted chunk is dropped' to rings the replacement created, drops a repeated sentence, and rewraps to 100 columns (#1310) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ount the frames a caller's own source removal discards) 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 15a: a structural edit is never refused because a replacement plan is waiting. It supersedes the unadopted candidate, keeping every acked edit, queued observation record, source chunk and held seek that the new plan still uses. The C ABI's plan capacities and resource admission count every plan held at once. The batch also carries the batch 15 spec checks and root rulings for the source and latency chain.
Closes #1344
Closes #1398
Closes #1310
What changed
PreparedHost::carried_baseholds exactly the running plan's (P0's) inventory rows that the withdrawn plan's hand-over reads (PlanStateInventory::restricted_to), and the base is charged (carried_base_retained_bytes). Source rings with an equal declaration are donated from the withdrawn plan to the successor: the consumers move first, then the producers, and the donor is left vacant. A submit to the donor is refused (Vacated), never acked. A fed successor producer refuses the donation (SuccessorFed).crates/engine/src/realtime/plan.rsgains read-onlyas_any/executor_anytwins (control side only; one attempt; accepted by root).maximum_replacement_peak_bytesincluded, and count each held epoch's carried rings once. The lag refusal is deleted. A full table isINTERNAL, with a debug assert, because the sizes make it unreachable.AdmissionPeak::WithRepreparewas dropped by root ruling: it had no production caller, and Classify a latency-growth edit and publish its warm successor from the control plane #1403 adds it with its first caller.BACKPRESSUREwhen the edit fits against the newest held plan alone, andCOMPILE_REJECTEDotherwise. A paused browser page drops superseded candidate shapes from the core's held epochs, so it commits every edit as the C ABI does.crates/engine/src/realtime/plan_exchange.rsgains the reservation'splan/plan_mutaccessors (control side only; one attempt; accepted by root).builtin_bank_bytesceiling falls from 21,056 to 14,272, from the AArch64 measurement of 12,969 (CI job 116713280504).SESSION_REPLACE0x0013 andEditPath::Unchanged(5). It is split into (a) core + C ABI, and (b) browser transport, which is Export the browser session replace transport #1697.Evidence
batch-gates.sh) passes on the integrated tree at 5fb2d33: fmt, bench and realtime policy (150 marked regions in 32 files), host-core feature matrix and loom, workspace clippy, the workspace tests, the doc job (cargo doc -D warnings), all 15 shell gates, the web build and check,check-sdk-headless(564 of 564), the 7 Python gates and the fuzz check. The last commit, 5ea0698, changes only C header comments;check-capi-abipasses on it.--check-matrix --self-test-mutations); render-locked allocations are 0 in every scenario.audit capi:pcm_digestbf7dcedd1d92621f(unchanged), 0 allocations, locks and syscalls.hosts/host-web/tests/control_parity.rs: eight structural edits on a paused host commit alike on both hosts (48 and 96 kHz).BACKPRESSUREbefore it commits (host_core::drops_acked_fresh_source, called in the core's rebuild right after the donation check). This covers four cases: B puts the source back in its P0 form, B redeclares it a third way, B removes it, and A added it and B removes or redeclares it. Nothing changes: the reservation is dropped, A stays published, no event is queued and the revision does not move. Once render adopts A, the retry commits on A. A host that does not render keeps gettingBACKPRESSUREuntil it renders (accepted by root). Both hosts refuse alike: parity rowcontrol_parity::a_supersession_that_would_drop_acked_pcm_is_backpressure_alike_on_both_hostscovers the reverted, third-way and removed cases at 48 and 96 kHz (same code, same revision, retry commits alike, bit-equal output, and the acked chunk is heard once the plan latency has passed, against a control run that never fed it). C ABI testsupersede_tests::a_supersession_that_would_drop_acked_pcm_on_a_fresh_source_is_backpressure(five cases) and host-corewithdrawn_successor::the_guard_refuses_exactly_a_fed_fresh_ring_the_donation_leaves_behind(refused and not-refused cases). With the fold-2 guard (reverted case only), the other four capi cases commit and the chunk is lost.CONTROL_PROTOCOL_SEMANTICS.mdsay so. No counter reports the discarded frames yet: placeholder Count the frames a caller's own source removal discards #1699.Takenwithdrawals while render lagged its retirements, then a published adoption, answeredINTERNALforever) and charges a plan render displaced until the service step reclaims it. The browser keeps a waiting candidate's spectrum hand-over until render adopts it (before, any service step or command between the commit and the adoption dropped it, for every capture kind).Re-pins (each from a measurement)
capi_retained_bytes: 159,354 to 165,922 (Size the C ABI's plan capacities and resource admission for a superseding candidate #1398 tables +1,904; Supersede an unadopted candidate plan by compare-and-swap #1310 carried and kept rows), then 168,810 after fold 2 (x86-64, +2,888: a third retired provider slot of 1,648 bytes, and a 248-byte parked resource row in each of the five provider slots), within the 175,296 ceiling, which stays.builtin_bank_bytesceiling: 21,056 to 14,272 (AArch64 12,969 + 10 %, rounded up to 64).Review
Takenrace; M2 carried bytes double-counted; M3 Prepare a successor across a withdrawn candidate plan #1344 gates weak; M4 hygiene; minors. Fold 1 fixed all of them and added the spec work (52 closed specs removed, B15 labels, C13, Seek the timeline and every source from the browser SDK and the PCM feed #1644, Diff a replacement document against the committed model and export replace from the browser engine module #1386 split, Export the browser session replace transport #1697, Carry an owner a superseding candidate keeps unchanged from P0 from P0's state #1698).Takenwithdrawals while render lagged its retirements, then a published adoption, answeredINTERNALforever); M-1 a plan render displaced but not yet reclaimed was not charged; minors m-1..m-5. Root added the acked-chunk guard to fold 2.RETIRED_PROVIDERS = RETIREMENT_CAPACITYand drain before promotion; parked epochs keep their resource rows and both admissions charge them; the reverted-source guard on both hosts; m-1..m-5; the browser keeps a waiting candidate's spectrum hand-over until adoption. The guard's parity row was silent at the adoption block on both hosts because the rig's session has plan latency (3 blocks at 48 kHz, 7 at 96 kHz); the row now checks the acked chunk after that latency against a control run.host_core::drops_acked_fresh_sourceafter the donation check, five capi cases, host-core unit cases, a parity row for three cases on both hosts, docs and records, the removal contract (Count the frames a caller's own source removal discards #1699), B-A, m-A, m-B; m-C became moot.Issues to file from this batch's specs
diagnose-simd4-on-avx2-refusing-the-nine-track-console-fixture.read-the-browsers-armed-observation-taps-from-the-core.charge-the-monitor-overlays-and-edit-ramps-in-the-capi-row.export-the-browser-session-replace-transport(Diff a replacement document against the committed model and export replace from the browser engine module #1386's browser half).carry-an-owner-or-source-a-superseding-candidate-keeps-unchanged-from-p0(first K slice of batch 15b).Spec bodies to sync after merge
#1285, #1293, #1310, #1316, #1317, #1318, #1319, #1320, #1323, #1324, #1344, #1360, #1386, #1396, #1397, #1398, #1403, #1482, #1522, #1643, #1644, #1654, #1688, #1689, #1690.
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.