Repository navigation
fix(#221): restore #210's boundary-B mechanism, silently reverted by #213's rebase - #222
Conversation
…213's rebase PR #213 ("PR 3 of #187: the score pipeline") was rebased onto main mid-flight. The committed diff (9150a02) removes every line PR #210 (074b88d, "#101 M-G: boundary B becomes a mechanism") had added, in exactly the files #210 touched: - src/dag/timescale.ts (realtimeOutputAllowed, TIME_SCALE_KEY) — deleted. - test/timescale_boundary.test.ts — deleted (all 159 lines). - src/dag/clock.ts — Clock.timeScale / BatchClock.timeScale / RealtimeClock.timeScale — removed. - src/dag/applier.ts — the Applier no longer publishes TIME_SCALE_KEY. - src/dag/index.ts — no longer re-exports TIME_SCALE_KEY / realtimeOutputAllowed. - webaudio_synth.ts, midi_out.ts, lyria.ts — none of the three synth-role nodes consult realtimeOutputAllowed any more. Verified before restoring: `git diff 074b88d^ HEAD -- <each file>` was empty for all six source files, i.e. HEAD's state for each was byte-identical to before #210 ever landed. docs/design/stream-applier.md was the one file the rebase left untouched, so it still (correctly) describes the mechanism as shipped — it was the code that silently went missing, not the docs. This is not doc drift: it is a full, silent revert of reviewed, tested, shipped behaviour, live in production, and the behaviour it protects is exactly the one #210's own description opens with — real-time output (WebAudio, MIDI, Lyria) pitch-shifting instead of muting under a Clock speed other than 1. Nothing today sets a speed other than 1 (per #210), which is exactly the condition under which a missing guard stays invisible. Fix is a mechanical restoration, not a reimplementation: `git checkout 074b88d -- <file>` for the six untouched-since files, plus re-creating the two files 9150a02 deleted outright. No other change. Gate: npm run typecheck clean, npm test 139/139 files / 1696/1696 tests green (incl. the restored structural test enumerating every synth-role node), npm run build clean, npm run catalog no diff (no node/param surface changed). Closes #221 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Review note: self-reviewed onlyNo independent sub-agent spawn tool was available in this worker's toolset (no What I checked, playing skeptic against my own diff:
Nothing above surfaced a defect. Proceeding to the hosted CI gate and squash-merge. |
|
Note found post-merge: this duplicated a parallel session's fix. Issue #221 (opened by this session) was closed as a duplicate of #219 (filed ~3 min earlier by a different session investigating the same regression independently) before this PR was even opened; #219's fix landed as #220 ( Verified harmless: |
What this restores
PR #213's rebase onto
mainsilently reverted PR #210's entire "boundary B" mechanism (real-time output nodes go silent rather than pitch-shift whenClock.timeScale≠ 1). Full diagnosis in #221.Verified before restoring:
git diff 074b88d^ HEAD -- <file>was empty for all six source files #210 touched — i.e.HEAD's state for each was byte-identical to before #210 ever landed. This PR restores exactly those six files to their post-#210 state (git checkout 074b88d -- <file>) and re-creates the two files that were deleted outright (src/dag/timescale.ts,test/timescale_boundary.test.ts). No other change — this is a mechanical restoration of previously-reviewed, previously-merged code, not a reimplementation.docs/design/stream-applier.mdneeded no change: it was the one file the rebase left untouched, so it already (correctly) describes the mechanism as shipped.Gate
npm run typecheck— cleannpm test— 139/139 files, 1696/1696 tests green, including the restoredtest/timescale_boundary.test.ts(the structural test that fails if asynth-role node stops consultingrealtimeOutputAllowed)npm run build— cleannpm run catalog— no diff (no node/param surface changed)Closes #221
🤖 Generated with Claude Code
https://claude.ai/code/session_011HSBVhDjRU4apSLcRkavv9
Self-reviewed only — no independent sub-agent spawn tool was available in this worker's session; see the review note comment on this PR for the self-adversarial checklist performed instead. Flagging for a post-merge review to be queued.