Skip to content

fix(engine): bus channel kinds from the registry + binding-apply regression tests#110

Merged
Yona-Appletree merged 1 commit into
mainfrom
fix/binding-bus-bugs
Jul 16, 2026
Merged

fix(engine): bus channel kinds from the registry + binding-apply regression tests#110
Yona-Appletree merged 1 commit into
mainfrom
fix/binding-bus-bugs

Conversation

@Yona-Appletree

Copy link
Copy Markdown
Member

Follow-up to #86's post-merge bug triage (three reported bugs):

  1. Unfilled trigger channel showed kind COLOR (real bug, fixed): a
    channel's kind is stamped by the first binding touching it, and
    binding_kind_for_slot guessed from the slot name with a Color
    fallback. binding_kind() now prefers the well-known registry kind for
    bus endpoints; the slot-name heuristic remains only for unregistered
    channels. Unit tests cover both paths.

  2. "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_parts are now public for host-level tests.

  3. 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-check all green.

🤖 Generated with Claude Code

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>
@Yona-Appletree
Yona-Appletree merged commit f6c105f into main Jul 16, 2026
3 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

Development

Successfully merging this pull request may close these issues.

1 participant