fix: restore boundary-B safety mechanism deleted by #213's merge - #220
Merged
Merged
Conversation
PR #210 (074b88d, merged 2026-09-09T08:02) shipped `Clock.timeScale`, `realtimeOutputAllowed` (src/dag/timescale.ts), the Applier publishing the scale onto engine resources, and all three synth-role nodes (webaudio-synth, midi-out, lyria) consulting it before producing real-time output — the mechanism enforcing "never silently pitch-shift" at a non-1x clock speed. PR #213 (9150a02, merged two hours later the same day, "the score pipeline") is unrelated to any of this but its diff deletes every piece of it: timescale.ts, test/timescale_boundary.test.ts, the timeScale property on Clock/BatchClock/RealtimeClock, the TIME_SCALE_KEY publish in Applier, the re-export in dag/index.ts, and the realtimeOutputAllowed guard in all three synth nodes. Nothing in #213's description mentions touching any of this — it has the shape of a bad rebase/merge silently clobbering a sibling PR's content (the same failure mode as i2mint/wads#97). Restored verbatim from 074b88d; reverse-applies cleanly against current main and nothing landed since (#213's own score node, #214 delayed edges, #215 source-node splits) touches these files, so there is no reconciliation needed beyond re-adding what was removed. Verified: typecheck, full test suite (1696 tests / 139 files, including the restored 9-test timescale_boundary.test.ts), and build all green locally. Closes #219 Co-Authored-By: Claude Sonnet 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.
What broke
PR #210 (074b88d, merged 2026-09-09T08:02) shipped the boundary-B mechanism (
Clock.timeScale,realtimeOutputAllowed, the Applier publishing it, and all three synth-role nodes consulting it — "never silently pitch-shift" at a non-1x clock speed).PR #213 (9150a02, merged two hours later the same day, "the score pipeline") is unrelated but its diff deletes every piece of it —
src/dag/timescale.ts,test/timescale_boundary.test.ts, thetimeScaleproperty onClock/BatchClock/RealtimeClock, the publish line inApplier, the re-export indag/index.ts, and therealtimeOutputAllowedguard inwebaudio-synth,midi-out, andlyria. Nothing in #213's own description touches any of this — it has the shape of a bad rebase/merge silently clobbering a sibling PR's content, same failure mode as i2mint/wads#97.Full diagnosis in #219.
Fix
Restores the deleted code verbatim from 074b88d. It reverse-applies cleanly against current
main, and nothing landed since (#213's own score node, #214 delayed edges, #215 source-node splits) touches these files — no reconciliation needed beyond re-adding what was removed.Verification (local)
npm run typecheck— cleannpm test— 1696/1696 tests, 139/139 files, including the restored 9-testtest/timescale_boundary.test.tsnpm run build— cleanSelf-reviewed only (no independent refute-review sub-agent was available this pass — this is a low-risk pure restoration of previously-shipped, previously-reviewed code, not novel behavior). Flagging per the review rule so a post-merge review can be queued if wanted.
Closes #219
🤖 Generated with Claude Code
https://claude.ai/code/session_011HSBVhDjRU4apSLcRkavv9