Skip to content

feat: open exact agent instances from profiles - #251

Merged
wesbillman merged 5 commits into
mainfrom
peon/profile-instance-navigation
Sep 25, 2026
Merged

wesbillman merged 5 commits into
mainfrom
peon/profile-instance-navigation

Conversation

@kalvinnchau

Copy link
Copy Markdown
Contributor

Change

  • Open individual live and archived native instances from profile rows, with exact-instance runtime and actions.
  • Preserve identity navigation, tabs, focus and recovery while enforcing viewer/community scope and verified ownership.
  • Keep mounted detail during successful same-head ownership refreshes; verify each new signed head before admission.

Verification

  • Typecheck, lint, full Node integration and 3,712 Vitest tests passed.
  • Twelve profile journeys passed in Chromium and WebKit on rerun after fixture-load timeouts.
  • Added two browser scenarios per engine for contextual-panel selection, tabs/back, close/reopen and focus restoration; component tests cover failure and ownership matrices.
  • Held-refresh regression reproduced the prior unmount and passed with the fix.
  • Native IPC, process execution, durable restoration and live archive authority remain deferred to attended validation.

cid added 4 commits September 24, 2026 20:55
Signed-off-by: cid <d9f92a72922bf45c17379a47d64dae84b6020397c2d5a52b5317d512068cd9d3@buzz.block.builderlab.xyz>
Signed-off-by: cid <d9f92a72922bf45c17379a47d64dae84b6020397c2d5a52b5317d512068cd9d3@buzz.block.builderlab.xyz>
Signed-off-by: cid <d9f92a72922bf45c17379a47d64dae84b6020397c2d5a52b5317d512068cd9d3@buzz.block.builderlab.xyz>
Signed-off-by: cid <d9f92a72922bf45c17379a47d64dae84b6020397c2d5a52b5317d512068cd9d3@buzz.block.builderlab.xyz>
@kalvinnchau
kalvinnchau requested review from a team, comp615 and wesbillman as code owners September 25, 2026 04:06

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Carl, an automated reviewer, commenting via Wes’s GitHub account.

One P2 blocker: mounted profile rows do not recover archive labels after a same-session live-transport disconnect. Details and the minimal fix are inline; restore lazy archive demand after reset and cover that transition deterministically.

Source-only review traced exact native selection/action routing, signed-owner admission/revocation, same-head retention, viewer/community boundaries and panel lifecycle. Existing CI 36093076449 passed for this head integrated with base df7b7e7f45739f3e06e12d81623385701acdc51d: 3,712 Vitest tests and 662 browser journeys. Windows native validation was skipped. No PR code was executed for this review; native IPC/process execution, durable restoration and live archive acceptance remain unverified.

const hasInstances = !!communityOrigin && matches.length > 0;
useEffect(() => {
if (hasInstances) void session.archives.ensure();
}, [session, hasInstances]);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] Re-demand archive evidence when the mounted session resets it

With this profile left open, a live transport disconnect calls archives.clear() (session.ts:1799-1810), publishing an empty idle snapshot. The relay service/session, native matches and hasInstances stay unchanged, so this effect does not rerun. Reconnect refreshes observed profiles but does not refresh archives: an archived row therefore loses its Archived label and stays unlabeled until the panel remounts or another archive consumer happens to load it.

Include archives.status in the effect dependencies and ensure when matching instances exist and that status is idle, as the existing template consumer does. Add a mounted-row regression that starts with ready archived evidence, drives it to idle without changing session/native matches, observes the new read, and verifies the label returns. This is a missing lazy-demand transition, not a request for polling or live archive subscription.

Co-authored-by: Kalvin Chau <kalvin@block.xyz>

Signed-off-by: Kalvin Chau <kalvin@block.xyz>
Signed-off-by: am <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@buzz.block.builderlab.xyz>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Carl, an automated reviewer, commenting via Wes’s GitHub account.

Source review clear. The prior archive-reset blocker is fixed at e892e7395c8f28ac1b9e1a0e0a7d97e4f34fecda. Mounted rows now re-demand archives when the shared snapshot returns to idle. The deterministic component regression preserves the same native matches, verifies the new demand and restored Archived label, and checks no repeated demand through loading/ready. Existing assertions are preserved; no new blocker found in the two-file change since 1e7cc8a2.

Exact-head CI passed against base df7b7e7f45739f3e06e12d81623385701acdc51d: 3,713 Vitest tests and 662 browser journeys. Windows native validation was skipped. This was source-only review with no PR execution or reruns; the new test simulates the archive-store transition, not a live reconnect. Native IPC/process execution, durable restoration and live archive acceptance remain unverified.

Non-blocking existing limitation: if the archive read fails, this profile has no archive-retry control; its label remains absent until another archive consumer refreshes. An explicit retry is a separate follow-up, not a new condition on the agreed idle-demand repair. This is a follow-up comment, not approval.

@wesbillman
wesbillman merged commit ec50136 into main Sep 25, 2026
12 checks passed
@wesbillman
wesbillman deleted the peon/profile-instance-navigation branch September 25, 2026 13:21
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