Conversation
…nnot do A host profile computed from what each refresh already knows (synced, last error, live descriptors) names the highest tier reached among observe, liveness, inject, attach and launch, and the reason each tier above it is missing. The host dot's tooltip shows it. While the last refresh failed, Stop is disabled and an attachable row opens its transcript, each with the reason as title, instead of failing at the click. First slice: no new probe, no inject affordance (#219), no launch tier. Refs #218
|
Reviewing |
|
Adversarial review at |
…ock stop A single transient poll failure disabled Stop and attach although both run their own ssh and the last descriptors are kept on failure. Stop is no longer gated by the profile; attach opens the transcript only after three consecutive failed refreshes, the tooltip still stating the last error. Refs #218
|
Re-review at |
First slice of #218 (capability tiers and the host profile).
What changed
remote-host-profile.js: a purecomputeHostProfile({ at, error, descriptors })returning the highest tier reached among observe, liveness, inject, attach, launch, plus the reason each tier above it is missing. Inputs are what each refresh already knows; no new ssh probe.messagingSocketPathon a POSIX absolute path. attach: a live descriptor naming a tmux pane with a valid pid. launch: never available in this build.getRemoteHostProfile(alias)on the indexer;annotateRemoteAttachableputs the profile on the project and, on a host whose last refresh failed,remoteAttachable: falsewithremoteAttachBlocked/remoteStopBlockedon its sessions.docs/remote-hosts.md,.ai/contexts/session-cache.md, CHANGELOG.Decisions
~/.claude/projectsfails the whole cycle, so it is not told apart from an unreachable host.Not done
inotifywait), no inject affordance (design(remote): choose the injection channel for remote sessions #219), no launch tier.Tests
test/remote-host-profile.test.js(12),test/remote-index.test.js(profile follows cycles),test/annotate-remote-attachable-local-status.test.js(blocked/healthy host),test/dom-sidebar-remote-host-tier.test.js(5, jsdom),test/stop-session-ui.test.js.&& !hostBlockeddropped inannotateRemoteAttachable, Stopdisabledremoved.confirmAndStopSession(app.js), which has no test harness.task checkpassed.Refs #218