fix(engine): bus channel kinds from the registry + binding-apply regression tests#110
Merged
Conversation
A channel's kind is stamped by the first registered binding touching it, and binding_kind_for_slot guessed from the slot NAME with a Color fallback — only the time-family names were listed, so an unfilled `trigger` channel (readers only) showed as COLOR in the bus pane while the registry (and the picker) say Instant. binding_kind() now prefers the well-known registry kind for bus endpoints and keeps the slot-name heuristic only for unregistered channels. Also adds server-level regression tests for the M4 bind gesture (the exact studio mutation batch): authored bindings reach the binding graph live and post-commit, and an authored binding to the slot's own default channel suppresses the default and reports Authored. Makes the engine binding-graph probe and Project::runtime_read_parts public for host-level tests. Co-Authored-By: Claude Opus 4.8 <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.
Follow-up to #86's post-merge bug triage (three reported bugs):
Unfilled
triggerchannel showed kind COLOR (real bug, fixed): achannel's kind is stamped by the first binding touching it, and
binding_kind_for_slotguessed from the slot name with a Colorfallback.
binding_kind()now prefers the well-known registry kind forbus endpoints; the slot-name heuristic remains only for unregistered
channels. Unit tests cover both paths.
"New bindings don't apply, even after save" (not reproducible on
main): the full bind → live-apply → authored-presentation → unbind →
live-remove loop verified in the sim, and three server-level regression
tests now pin the exact studio mutation batch (live apply, post-commit,
same-channel). The earlier reports trace to the stale-wasm/panic era
fixed on Studio binding/bus: indicators, bus pane, URI refs, declarative defaults (M0–M5) #86. The engine binding-graph probe and
Project::runtime_read_partsare now public for host-level tests.Authored binding to the slot's own default channel (engine correct;
UI staleness follow-up filed): the engine suppresses the default and
reports the authored writer (test added). The slot popup can lag a
passive read cycle before showing the authored state — follow-up task
filed to derive binding facts through the pending-edit mirror.
Gates:
just check,just test,schema-checkall green.🤖 Generated with Claude Code