Skip to content

Controls batch 14a: exact-byte observation admission, automation target checks at preparation, master strip after boot (#1685, #1645, #1686, #1683) - #1692

Merged
tamashi095 merged 15 commits into
mainfrom
codex/controls-batch-14a
Oct 15, 2026
Merged

tamashi095 merged 15 commits into
mainfrom
codex/controls-batch-14a

Conversation

@tamashi095

@tamashi095 tamashi095 commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

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

  • Admit observation bindings by the exact encoded bytes of the ended event #1685 The core admits observation subscriptions by the exact encoded bytes of the OBSERVATION_ENDED event 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 is 64 + 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 is ObservationLimit { index, event_bytes, frame_bytes }, whole and before any ack. The browser keeps reason 15 observationLimit and RESULT_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 for maximum_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).
  • Validate builtin automation targets against their rows at preparation #1645 controls::automation_diagnostics refuses a builtin automation whose segment shape a row cannot take (control.automation.shape, e.g. a polarity flip written linear). 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 and session-validator call 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).
  • Remove the redundant span kind and end from prepared automation spans #1686 PreparedAutomationSpan is {channel, parameter_index, sample, value}. AutomationSpanKind is 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.
  • Designate the browser master strip after boot #1683 The master strip is a core monitor row, 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_CONTROL keeps the revision and reports path monitor, and at most one strip is master. A transaction that removes the master strip ends the designation. The browser boot word liveControlMasterTrackPlusOne designates 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 generates strip.master(enabled).

Evidence

Re-pins (each from a measurement)

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):

Departures recorded in the specs

Issues to file from this batch's specs

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

tamashi095 and others added 15 commits October 15, 2026 18:35
…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>
…1662, #1683, #1685, #1686; placeholder TBD37)

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>
…'s record

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tamashi095
tamashi095 merged commit 229ac11 into main Oct 15, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant