Skip to content

Hotfix: deliver existing owner status when a conversation subscribes - #1381

Merged
trissim merged 1 commit into
mainfrom
hotfix/initial-thread-binding
Oct 31, 2026
Merged

trissim merged 1 commit into
mainfrom
hotfix/initial-thread-binding

Conversation

@trissim

@trissim trissim commented Oct 31, 2026 •

Copy link
Copy Markdown

Defect

Tristan cannot submit to comms-commander-2: Toad reports no live owner binding even though the registry, acquired Core ThreadPresentation and actual ACP load response all contain the same live owner witness. Idle threads need not publish another status change.

Fix

When NativeViewBinding installs its thread observation, immediately consume the status already held by Core's OpenThreadStatus. Register before reading, so later changes retain the existing delivery. Conversation.thread_observed accepts the initial call as well as the existing event callback; it uses the same captured ThreadRead settlement, presentation and input decision. No new read, copied binding, polling, synthetic event or permission bypass.

Two files, +3/-1. Source-first NRA map: eight relevant Toad modules, zero parse omissions. Traced registry owner binding -> ThreadView.presentation -> OpenThreadStatus -> ThreadRead -> Conversation.thread_presentation -> existing owner input decision, plus all subscription callers. Open #1338/#1373 touch separate key/queue regions in Conversation; no competing subscription edit.

Actual saved-session application qualification is in progress. Current Toad main requires newer Core (CommanderUnitRead); qualification uses the paired current sources rather than claiming the older installed Core imports it.

Installed result

Merged and installed with Core #3781 and Toad #1381/#1383. Exact installed Core 1c25645ea1e1; Toad 8b9f26a. Real plain-st/Xvfb journey used a bounded genuine saved-history copy and the configured openai-codex/gpt-6.1-sol/high provider. Before send, the actual focused input reported InputAccepted and LiveThreadOwnerBinding. One fresh physical UI input (39c0fb8091f248e4b0213c18129cdd7b) received the genuine OWNER_BINDING_FINAL_REPLY; the inspected screenshots show the answer, actual #comms tab selection, and the answer retained on return. Ordinary Ctrl-Q exit 0; private root retired; original settings unchanged. No ACP response errors, automated tests or replay of original/uncertain inputs.

Earlier journey sent no input while its observer was unready. Journey 2 received a real answer but exposed Core's missing session_id and Toad's failed-state process access; its observer/quit result is excluded, not silently counted. Both causes are fixed in this paired build. Install initially published packages but failed restarting owners at the disk floor; all original 14 owners were restored, regenerable caches pruned, and the final supported install completed with no pending carries.

Concise retained evidence: /home/ts/.cache/agent-scratch/codex-latency/initial-thread-binding/RESULT.json; inspected images ui-3/02-reply.png, 03-channel.png, 04-return.png.

Copilot AI balanced review requested due to automatic review settings October 31, 2026 01:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@trissim
trissim merged commit 1c9bf73 into main Oct 31, 2026
0 of 2 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.

2 participants