Overlay should carry an outro line, so a session can close in its own voice #359

Open
opened 2026-08-26 02:51:19 +00:00 by coilyco-ops · 1 comment
Member

Raised from an aterm design pass, coilyco-flight-deck/agentic-os#1245.

What is missing

The overlay composes annotation for the identity a session opens with. There is nothing for the identity a session closes with, so every renderer that wants a closing line either invents one or prints a bare status.

aterm's hold banner today is the whole of it:

Session failed (exit 3)

The original plan was to enrich that with role, seat, duration, and a log path. That was wrong, and the reason is worth recording: a log pointer is useless as foreground prettiness. Someone reading a closing banner is leaving, not debugging. Whatever they need for debugging they will get from scrollback or the tracker, not from a line they are already walking away from.

So the banner should carry voice, not telemetry.

The ask

An outro key beside annotation, composed per role and personality the same way the annotation is, with at least a clean-exit and a failure variant so the tone can differ between finishing and falling over.

Why this is a small ask

The generator already exists and already works. native-ui emits twelve personality-derived spinner verbs per role, plus role-specific spinner tips, all drawn from the same personality vocabulary an outro would use. Frontend gets Whirling, Confettiing, Kaleidoscoping, Refracting, Blooming, from confetti, ferris-wheel, kaleidoscope, stained-glass, bloom. An outro is that machinery pointed at a different moment.

Consumers

aterm's _session stage first. Anything else that ends a composed session gets it for free, which is the argument for it living in the overlay rather than in aterm.

Raised from an aterm design pass, coilyco-flight-deck/agentic-os#1245. ## What is missing The overlay composes `annotation` for the identity a session opens with. There is nothing for the identity a session closes with, so every renderer that wants a closing line either invents one or prints a bare status. aterm's hold banner today is the whole of it: ``` Session failed (exit 3) ``` The original plan was to enrich that with role, seat, duration, and a log path. That was wrong, and the reason is worth recording: **a log pointer is useless as foreground prettiness.** Someone reading a closing banner is leaving, not debugging. Whatever they need for debugging they will get from scrollback or the tracker, not from a line they are already walking away from. So the banner should carry voice, not telemetry. ## The ask An outro key beside `annotation`, composed per role and personality the same way the annotation is, with at least a clean-exit and a failure variant so the tone can differ between finishing and falling over. ## Why this is a small ask The generator already exists and already works. `native-ui` emits twelve personality-derived spinner verbs per role, plus role-specific spinner tips, all drawn from the same personality vocabulary an outro would use. Frontend gets Whirling, Confettiing, Kaleidoscoping, Refracting, Blooming, from confetti, ferris-wheel, kaleidoscope, stained-glass, bloom. An outro is that machinery pointed at a different moment. ## Consumers aterm's `_session` stage first. Anything else that ends a composed session gets it for free, which is the argument for it living in the overlay rather than in aterm.
Author
Member

Confirmed still unshipped as of agent-compose v2.54.0, checked against a live overlay rather than the version this was filed on.

agent-compose overlay --role platform --seat claude --expression acting --json returns these document keys:

format, schema_version, person, role, role_display_name, purpose,
seat{key,harness,name,pronouns,tier}, annotation, expression,
favorite_color, personalities[]

annotation is there. There is no outro key, so the ask is unchanged and nothing upstream has partly delivered it.

Consumer note. The aterm side is aterm/session.go, and the banner this replaces is still literally what the body quotes. Current strings on main at d24e5d5a:

"Session ended. Press Enter to close."
"Session failed (exit %d). Press Enter to close."

Both live in runSession, one on the clean-exit hold and one on the failure hold, which is already the clean-exit and failure split this issue asks the overlay to carry. So the aterm-side wiring is a two-line substitution once the key exists.

Confirmed still unshipped as of `agent-compose v2.54.0`, checked against a live overlay rather than the version this was filed on. `agent-compose overlay --role platform --seat claude --expression acting --json` returns these document keys: ``` format, schema_version, person, role, role_display_name, purpose, seat{key,harness,name,pronouns,tier}, annotation, expression, favorite_color, personalities[] ``` `annotation` is there. **There is no `outro` key**, so the ask is unchanged and nothing upstream has partly delivered it. **Consumer note.** The aterm side is `aterm/session.go`, and the banner this replaces is still literally what the body quotes. Current strings on `main` at `d24e5d5a`: ```go "Session ended. Press Enter to close." "Session failed (exit %d). Press Enter to close." ``` Both live in `runSession`, one on the clean-exit hold and one on the failure hold, which is already the clean-exit and failure split this issue asks the overlay to carry. So the aterm-side wiring is a two-line substitution once the key exists.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agent-compose#359
No description provided.