feat(aterm): rebuild the branded session launcher, and retire aosterm #1240
No reviewers
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agentic-os!1240
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/vk48"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
aostermhad never been run once. Shell history carries 846acomposeinvocations against zero for it, while CI built and tested it on every push.
It had also drifted off its own contract. It invoked
aoscompose <role> <seat>positionally against a CLI that takes
--role/--agent, so the role wassilently dropped and the launch converged a stray session shadow instead of
starting the requested agent.
What
atermisThe windowed sibling of the
acomposeshell function, running the same nativeruntime rather than the container path: a leased session shadow wrapping
agent-compose launch.acomposetakes over the terminal you typed in,atermleaves it free. Alacritty stays the target.
Two silent-failure holes closed
Alacritty closes the window the instant its child exits, so a failing launch
used to vanish before anyone could read it. The child now runs through an inner
_sessionstage that passes the exit code through and holds the window on anynon-zero exit.
--holdalso holds after a clean exit.The launcher watches the terminal for a startup failure rather than detaching
blind, so "no window appeared" comes back as a message naming the cause.
Stale roles are refused before anything opens
The roster is read live from
agent-compose catalog roles --jsonon every run.A role that left the roster is refused with a near-miss suggestion and the live
slugs listed. Shell history is full of
engineer,ops,creator, andstratsagainst a live roster of seven, so this is the failure it catches most.
A seat is checked twice: it has to belong to the role, and it has to be a
harness
agent-compose launchcan start. A catalogue seat likepenpotis realbut not launchable, and the refusal says which of the two it failed.
Notes
docs/agent-terminal-native.mdbecomesdocs/aterm.mdand absorbs thelauncher sections that were duplicated in
warp-host-setup.md. The docs countsits at its band cap, so this renames in place rather than adding a page.
acomposeshell function is unchanged. The two names now mean twodifferent things rather than one shadowing the other.
title, so an upstream retitle stops reading as a launcher regression.
aterm-*binary where there were two, and therelease smoke check now also asserts the off-roster refusal.
Verified:
pre-commit run --all-files,just aterm-test(48 cases, 75%coverage), 716 pytest tests, and a real branded window launched end to end
against fixture stubs.
🤖 Generated with Claude Code