Repository navigation
Combined carrier: Toad #1319 paired with agent-comms #3566 - #1359
Merged
Merged
Conversation
…omms#3538) ReadDeliveryOverview restated Core's input-delivery read with its own include_history; Core deleted it. Toad now sends ReadOwnerOperation carrying InputDeliveryRead(include_history=...) to the held owner and wraps the owner's DeliveryOverview in ReadDeliveryView. No-coordination DeliveryView, require_owner and dismiss_historical_inputs are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnH6dS2Kmg1WxNnAc78YHA
…ms#3538) tests/native/test_native_goal_owner.py: with the real native session, after until_agent_ready(), controller.input_delivery() and controller.input_delivery(include_history=True) are each a ReadDeliveryView whose overview has current_scope OwnerQueueInputDeliveryScope (only the live owner yields it; the no-coordination DeliveryView and the unobserved projection never do), and on the fresh private wire empty inputs and historical_inputs with zero counts. No mocked read, operation, owner or reply. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnH6dS2Kmg1WxNnAc78YHA
…e root (agent-comms#3538) Core moved the notification read off the UI request: LiveNotificationRead and RecordedNotificationRead own references (and the archive), and ReadNotifications(root, operation) is the one UI envelope. - HistoryNotifications.notification_request (a ReadNotifications class used as a root+references constructor) becomes notification_operation, a root-free operation constructor (LiveNotificationRead by default). notification_read binds the ProjectPathOwner root: ReadNotifications(root, operation(refs)). - RecordedContents sets partial(RecordedNotificationRead, source=source). ReadRecordedNotifications is gone. - comms_root keeps keying views and outcomes by the full UI request. - tests: the historical source test requires the generic envelope with RecordedNotificationRead((reference,), source.key); the observation shutdown test builds its request with LiveNotificationRead. Assertions unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnH6dS2Kmg1WxNnAc78YHA
…operation's references (agent-comms#3538)
Both shutdown tests called process.fileno() to unhook a readiness callback that
ObservationProcess no longer has. The one receiver started at activation keeps
running after stop_observing, so the answer has to be held where it is made: in
this test's own observer child.
- test_stopping_observation_keeps_reads_but_sends_no_late_interest proves the
child is ready with an empty-window read and SIGSTOPs it (stop confirmed by a
bounded WNOHANG|WUNTRACED wait). It then registers the real read, stops
observing with every AnsweringReads identity check and the no-late-interest
profile, and SIGCONTs the child. The same receiver settles the read:
set(result.outcomes) is the message's seq/id.
- test_an_observer_dying_during_shutdown_still_releases_its_resources holds the
child, registers a pending empty-window read and SIGKILLs the child.
- The read fails with ObserverDied carrying that pid and -SIGKILL.
- StopSidebar and StopObserving each raise that same object.
- Teardown may report it only as that same cause, and other grouped errors
propagate.
- The connection is closed, the child is gone and nothing is retiring.
- Every path resumes a still-stopped live child and settles any unconsumed read.
- The four paint-fixture reads of request.references now read
request.operation.references; ReadNotifications has no references of its own.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RnH6dS2Kmg1WxNnAc78YHA
…on (agent-comms#3538) read_thread_presentation returned the acquired presentation to Conversation and ObservedSourcePublication, carrying the notification window and backend records into the UI. It now returns .published(), the source-free ThreadPresentation; settlement still reads its read_identity. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnH6dS2Kmg1WxNnAc78YHA
…ion (#1302) The commander page wraps CommanderUnitRead(commander, unit, orders) in the UI's ReadOperation envelope instead of the deleted ReadCommanderUnit. Request id, root, card/collapsed fencing, worker cancellation and the unavailable-detail display are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnH6dS2Kmg1WxNnAc78YHA
…#1302) acp/agent.get_goal_snapshot sends ReadOwnerOperation(wire_root, thread, operation=OwnerGoalRead()) through its existing transcript reader instead of the deleted ReadOwnerGoal. The local NoGoal/Idle answer without coordination, the ClientSessionRequest authority, OwnerSnapshotConsumer's captured turn token, the post-read require_owner and dispatch of every meta.batch update are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnH6dS2Kmg1WxNnAc78YHA
) KnownTranscript.snapshot_request and update_request, and the historical sessions screen, build their UI envelope around TranscriptPageRead with every original cursor and the attached source key; root and publication state stay on the envelope. acp/transcript_reader's RefreshTranscript keeps its original identity. A recorded-reader test asserts the exact page arguments on the operation and root/previous on the envelope. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnH6dS2Kmg1WxNnAc78YHA
…/input-delivery-owner-read
Config only, authorized by root (bus 36182) for the P883 matched cut. The checker guessed the root from src/dot; tools/acceptance.py:34-36 already declares tools as a script root for its sibling imports (performance.*), so mypy_path names both roots instead of guessing one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnH6dS2Kmg1WxNnAc78YHA
…teg-20261029-toad
…teg-20261029-toad
…teg-20261029-toad # Conflicts: # tests/textual/test_historical_notification_source.py
historical_sessions keeps #1302's TranscriptPageRead import beside the shared notification reads; message_notifications takes #1317's read, which passes the captured display to ReadNotifications(display=...), the field the Core carrier (agent-comms #3566) now declares. Loads and imports against the carrier's Core source. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnH6dR85kyFKcc2tQAJLhK
The page API carried before/after/through as TranscriptCursor | None, restating "no bound" as None. Readers, scopes and windows now pass a PagePosition (LatestPage, EarlierThan, LaterThan) and a PageLimit (AtFrontier, Through); cursors build their own positions, and a changed transcript asks its cursor whether a commit is required. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnH6dR85kyFKcc2tQAJLhK
Resolve screens/commander.py: main's selection-driven CommanderDetails with #1319's Core read shape (ReadOperation + CommanderUnitRead). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu
…refresh # Conflicts: # src/toad/acp/transcript_reader.py # src/toad/widgets/comms_chat.py # src/toad/wire_history.py
…de-nra/queue-unification-toad
trissim
marked this pull request as ready for review
October 30, 2026 18:21
There was a problem hiding this comment.
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSpSd8zQxyozgEV2Re7
Conflicts were import lists and one docstring: native_input_record keeps ThreadLookup and drops main's now-unused WireName; phase_evidence takes main's Checkout history with the carrier's MergeHeadReview. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSpSd8zQxyozgEV2Re7
WireSource.read called WireFragment.of without page=, while from_message requires it for its notification identity, so every channel read raised TypeError inside the read worker and the channel sat on "Loading messages..." forever. The merged-pair tests caught it. Helper and read-reference tests move to the shapes the pair declares. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSpSd8zQxyozgEV2Re7
trissim
enabled auto-merge
October 30, 2026 22:40
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.
Toad companion carrier for OpenHCSDev/agent-comms#3670 (carrier of #3566). toad#1319 (9dff68c) merged onto main a78684c; screens/commander.py resolved to main's selection-driven details using #1319's ReadOperation + CommanderUnitRead. Every Toad module imports against the combined Core.
🤖 Generated with Claude Code
https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu