Repository navigation
Conversation
Core and Toad typed these values weeks ago; the tests kept the old shapes and have failed on main since: - ProjectFileLink requires original_root (bb041c3, 10-15) - terminal_attention.program is a method - Checkout replaced str worktrees (3af6ec8f42, 10-26) - PermissionPresentation.admit became for_request (e8099ab, 10-17) - observations bind through agent_binding - AssistantMessage.content is ReportedParts; tool call ids are ToolCallId - 'no saved session' is NoSessionObservation, not observe(None) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu
The cancellation test's fake binding copied AgentBase.matches_agent and invalidate_observation (toad/agent.py:45,84); it is now an AgentBase member that implements only the abstract send_prompt. The usage test passes TerminalAttention, whose static program() reads TERM_PROGRAM, instead of re-spelling it as a lambda. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu
Under the Vim profile Terminal's own ScrollView arrow bindings gained hjkl spellings, and NavigationKey preemption scrolled the view instead of writing j/k/h/l to the child. Terminal now composes textual's NativeTextKeys (OpenHCSDev/textual#214), so its bindings project in EditingMode; the hand-written allows_application_commands override is deleted because the capability derives it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu
Carry NoSessionObservation and Checkout call migrations from #1364; delete both seen_sequences test forwarders and inspect conversation cursors directly. Restore main-push verification and its push-specific base/head selection.
…text P958: retain the context annotation reader across inspections
Follow declared types in nine stale model tests
…keys Terminal owns printable keys through NativeTextKeys
…--toad P1010: derive history Vim scrolling from arrow identities
Replace sidebar worker absence with a nominal unscheduled value
P928: prepare the Neovim artifact the editor launches
P1032: repaint channel members only for changed pins
P1015: give each Toad app its own launch inputs and lifetime
…toad Consume page-owned message evidence in wire fragments
…l main textual#215 gave KeyDeclaration the KeyDeclarationType metaclass, while Action also inherits DeclaredFamily's FamilyMeta; neither metaclass subclasses the other, so `import toad.widget_actions` raises a metaclass conflict and agent-comms' debt-src/debt-tools die importing the Toad cutover tools on every head. KeyFamilyMeta(FamilyMeta, KeyDeclarationType) is the one class both bases require; same lines as toad#1338's fix, so its merge of main resolves to them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu
Give Action one metaclass with both parents so Toad imports on Textual main
Carry NoSessionObservation and Checkout call migrations from #1364; delete both seen_sequences test forwarders and inspect conversation cursors directly. Restore main-push verification and its push-specific base/head selection.
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.
|
Closing as obsolete: this is almost entirely suite migrations, and since #1397 (c5ba1fd) the full suite runs only for release qualification ( Generated by Claude Code |
Pull request was closed
Summary
13 files, +173/-125 relative to main
c72556c285cde225a1ab63ba9ad1762f03852ddf. Sixteen commits are visible because the seven original checkpoints and their rebased equivalents both remain ancestors: the published history was retained so this update could use a normal fast-forward push without a force-push. Current head:e65569ef0e86b2e6d36d1f9e2aee211083d2c5b8.P1022 repairs retired Core/history callers and restores main-push verification. This is a source delivery, not a green-suite or resolved-hang claim.
Read-work ownership
Before:
VisibleReadMarkingkept an optional private worker; tests called a deleted.markingfacade. The first public rename still leftNoneduplicating the existingNothingToReadanswer.After: public
read_workerstarts asNothingToRead, which is finished and has an awaitable no-workwait(). RealReadWorkinstalls Textual's worker.mark_visibleasks only.is_finished. All seven related accesses use that operation; there is no nullable guard, compatibility alias or shadow marking flag. Unrelated ACP-log input reading remains separate.IDEN-3: fact=no painted-read operation; at=
src/toad/widgets/message_notifications.py:106; derive=the existingNothingToReadmember; by=initialize that value and call the shared operation surface. Paper1 §1 and Theorems 4.6/4.7: renaming an outside encoding does not remove it.Navigation and exact painted-read behavior
The partial-paint test still checks the initial painted set exactly against each message's ledger membership, then separately waits for each previously unread message after navigating to its text. The send-back's test-owned
capture_rangereplacement,restore_reader_rangestransaction andrequest_preparationcall are deleted. It now uses real page scrolling and the existing layout/navigation owners, thenhistory.reveal_message_headandshow_fragment.The divider case waits on the read operation while proving LAST remains unread. Peer replacement intercepts
HistoryViews.mark_page_read, preserving the captured page identity, and usesCommandTarget.namedfor pending counts. Hidden refresh preserves main'sRouteSelection.root_is_currentno-read probe and settled-reader wait.Core declarations replace retired facades
seen_sequencesand local forwarding helpersReadLedger.cursor(...).for_conversation(...), exact declared unread stateSessionRevision.observe(None)NoSessionObservation()ContextManifestPage, actual private registry entry,TurnId.mint()WireHistory.messages/source/stylefacadesCommandTarget.named("peer")views.latest_sequence()andthread_statusMain already owns
Checkout(project)and the NativeContextData migration; both are retained. The redundant Checkout import from replaying the old checkpoint was removed. LegitimateMessagePage.messagesrecords are not deleted merely because their attribute spelling matches the retired facade.Annotation identity versus mounted navigation
The context-tree case uses the real workspace application and ContextExplorer. Same-section reconciliation still requires native cursor/scroll retention. A correction moving model labels into the human section retires the old native row; the surviving detail selection must rebind to the exact corrected short annotation, not manufacture cursor navigation across a retired row. This is the commander-approved contract.
Main-push CI
Adds
pushon main, event-correct checkout/base/head expressions, andcancel-in-progress: ${{ github.event_name != 'push' }}. Current main's six-way sharding is retained; main pushes are not cancelled by later pushes.Evidence and remaining acceptance
3001ecc75: 6 passed / 3 failed / 112.86 seconds / RC1; all original three passed.3e7dac514: 6 passed / 6 failed / 209.74 seconds / RC1.fe378600c: all twelve outcomes retained, 9 passed / 3 failed. Original three passed. Remaining failures were partial-paint, context-tree correction, and peer replacement; subsequent source corrections address them but have not been rerun.git diff --checkclean; whole-tree.markingsearch has zero hits. Partial-paint has zero calls to the rejected range/preparation methods. Targeted NRA AST owner/consumer reproof completed with zero parse omissions, including Textual's worker owner. Dynamic binding is not proved by that syntax result.git ls-remoteat publication; hosted PR readback confirms the exact same head and MERGEABLE.tests/conftest.py:93parent wait remains unqualified. Passing narrow selections did not establish that child hang's cause or removal.Retained local evidence:
/home/ts/.cache/agent-scratch/queue-toad-fix/p1022-publish-owned-navigation.log,p1022-final-source-and-pr.log,p1022-owner-reproof-before.jsonl,p1022-owner-reproof-after.jsonl, and the historical failing-run logs. No proof executable was added to the repository.Assumed: current declared Core APIs are the integration target; annotation detail and mounted cursor remain separate owners; no additional author test execution is authorized. These assumptions are not substitutes for the outstanding hosted and application run.