Skip to content

Let open viewers survive installs by tracking selected bus identity - #2860

Merged
trissim merged 9 commits into
mainfrom
fix/route-reader-lifetimes
Oct 23, 2026
Merged

trissim merged 9 commits into
mainfrom
fix/route-reader-lifetimes

Conversation

@trissim

@trissim trissim commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Core #2860 and Toad OpenHCSDev/toad#1159 are one paired delivery. Core head 36542eb; Toad head bc5160908139677a78305ca0b8818e7c57096fc0. Both are synced with their current mains; both published heads match ls-remote. Do not ship the Toad attachment call against a Core without this API.

An open viewer previously held the route through its entire life, and after releasing that hold it could still fail to reopen: the viewer's old interpreter cannot decode the new runtime's root. The guard is correct. The root now supplies either permission to attach or its recorded successor.

  • root_runtime.py:24-58: Attachment owns proceed/require. Attached calls attach(); Succession calls succeed(owner). Succession.require still raises ForeignRuntimeError with the original sentence. Root/caller fields retain only the existing error context.
  • root_runtime.py:67-80: the single owner-prefix/maintenance comparison lives in RootRuntime.attachment. The successor is LaunchRuntime(owner.prefix / "bin/python") from RootRuntimeStore, never the current pointer. require_attachable delegates to that result's require. comms.py is unchanged.
  • Existing branch changes retain RecordedBusIdentity in RouteSelection, release observer/ACP lifetime route holds, and allow publication to wait for actual client calls. The main sync retained installer.refusals.UpgradeRefused plus the Comms test import.

Paired Toad uses attachment.proceed before constructing Comms, sends Succeeded(runtime) to the app thread, closes the old app and execs the named runtime's toad entrypoint. It does not catch ForeignRuntimeError, compare prefixes, consult current, retry or grant an old runtime access.

Startup answer on the paired head: NO saved-tab-roster reopen yet. Toad app.py:440-444 invokes ApplicationLifetime.start; application_lifetime.py:149-157 opens home when no --session was given, otherwise only that named session. TabOrder starts with an empty _open list at tab_order.py:14. Toad #1162 is still draft; this pair does not implement its tab restoration.

Source inspection: existing refactor-audit Package.load inventoried the Core declarations/consumers and 288 Toad source modules with zero parse omissions; Textual App.exit, return_value and call_from_thread implementations were read before adapting them. These are source facts, not an execution pass. No tests or practice installs ran in Drafts. The old copied-install results in the earlier body were at older heads and are not qualification of this succession implementation.

Assumed: RootRuntimeStore records the owning prefix; the target runtime contains bin/python and the paired toad console script; the owned preparation worker invokes succession; standard app teardown retires its existing resources; tab restoration remains #1162. The review fork owns guard, outcome and paired-app execution checks.

@trissim
trissim marked this pull request as ready for review October 23, 2026 20:33
Copilot AI balanced review requested due to automatic review settings October 23, 2026 20:33

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.

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.

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

debt-src at c59ba24, every finding:

grew Unformatted:src/agent_comms/root_runtime.py +1

@trissim
trissim merged commit a029793 into main Oct 23, 2026
5 of 8 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