A declared host offers different things depending on what runs on it. Today the
UI assumes one shape and the code assumes another, so a host that cannot do
something fails at the click instead of saying so.
Proposed ladder, each tier naming what it requires:
- observe — transcripts only. Works anywhere ssh and a readable
~/.claude/projects exist. Shipped.
- liveness — requires
~/.claude/sessions/<pid>.json. No multiplexer
needed.
- inject — requires a channel; see the injection issue.
- attach — requires a multiplexer named in the descriptor.
- launch — requires a multiplexer, or degrades to headless.
Scope: a host profile computed from the descriptors and a small probe, a tier
shown in the UI, and every affordance above a host's tier disabled with the
reason stated. No feature should be discovered to be missing by failing.
A declared host offers different things depending on what runs on it. Today the
UI assumes one shape and the code assumes another, so a host that cannot do
something fails at the click instead of saying so.
Proposed ladder, each tier naming what it requires:
~/.claude/projectsexist. Shipped.~/.claude/sessions/<pid>.json. No multiplexerneeded.
Scope: a host profile computed from the descriptors and a small probe, a tier
shown in the UI, and every affordance above a host's tier disabled with the
reason stated. No feature should be discovered to be missing by failing.