The Receiver ignores the three dismiss frames the go-between now sends #62
Labels
No labels
needs-info
needs-triage
ready-for-agent
ready-for-human
v2
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wayfinder:ticket
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
aiko/denpa#62
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found by the verification pass at the end of the 2026-07-30 board run, not by a failing test. This is a half-built path that this run created, and it has exactly the shape the project keeps getting caught by: nothing crashes, nothing fails, the signal simply never arrives.
What is true
ollvt-hermes-bridge#24shipped ADR-0012 — an approval binds to the operator rather than to the socket it was offered to, so an ask goes to every authenticated connection and the first valid answer wins. The losing screens are told to clear their card by a dismiss frame.The go-between emits all three:
src/open_llm_vtuber/adapter_handler.py:70—approval-dismiss:77—clarify-dismiss:84—confirm-dismissGrepping
denpa-client/srcfor all three returns nothing. There is no consumer.What that costs
Answer an approval on the desktop and the tablet keeps showing the card. Press it there and the go-between refuses it — correctly, the ask is already resolved — and the operator gets "That request is no longer waiting for an answer." for a card the app is still drawing.
So the feature reads as broken precisely where it was supposed to feel seamless, and ADR-0001's "answering anywhere dismisses everywhere" is still only half true: it answers anywhere, it dismisses nowhere but locally.
Why nothing caught it
The go-between's suite passes — it emits the frame. The client's suite passes — it never claimed to handle it. Neither side is wrong on its own, which is why this needed a cross-repo grep rather than a test run. Same shape as the microphone that returned full-length buffers of zeros.
Acceptance
websocket-handler.tsxhandles all three dismiss frames and clears the matching pending askRelated
ollvt-hermes-bridge#24, ADR-0012, ADR-0001Merged to
maininee25aaa.Fix. The Receiver now consumes the three dismiss frames the go-between sends, so an approval card clears on every screen once any screen answers — ADR-0001's 'answering anywhere dismisses everywhere', over ADR-0012's wire. New
services/approvals.tsholds the frame handling;use-approvals.tsconsumes it.Tests.
services/approvals.test.tsandhooks/receiver/approval-wiring.test.ts. Gate on merged main: 62 files / 854 tests passing.Cross-seam review of the whole #62-#68 batch found no issues.