feat(aterm): generate one macOS .app launcher per live role #1275
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!1275
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/rc44"
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?
aterm bundleswrites one.appper live role into~/Applications, so a role opens from Spotlight, the Dock, or Finder with no terminal to type in. Each bundle wrapsaterm <role>, so the launcher it opens is unchanged.Why the wrapper is generated
A Finder launch starts on a login PATH carrying neither
aos,agent-compose, nor kitty, so generation resolves all four binaries once and bakes them into the wrapper through the env varsatermalready reads. The wrapper exits as soon asatermdetaches the window, soLSUIElementkeeps it from flickering a Dock tile of its own, and a launch that fails before a window opens reports in anosascriptalert rather than vanishing.Safety
Roles come from the live roster, the same read the launcher and its completion use, so no second list of roles exists to go stale. A bundle whose role has left the roster is reported rather than deleted, an app this command did not write is never overwritten, and every target is checked before any is written so a refusal cannot half-regenerate the set.
Docs
docs/aterm.mdsat at exactly its 120-line cap anddocs/*.mdat exactly the 40-doc cap, so neither a new section nor a new page could land. A prose pass folds the composer's three sub-headings into the bold lead-ins the aterm half already uses and merges related paragraphs, which fits the new section with margin and drops no rule.Verification
just aterm-testgreen, ten new tests covering the launcher, plist, stale detection, and the overwrite guard.pre-commit run --all-filesgreen.env -i PATH=/usr/bin:/bin:/usr/sbin:/sbinreachesatermwith the right arguments, and a failing one hands its stderr to the alert.plutil -lintclean on all seven plists.Icons are deliberately out of scope:
--icon <file.icns>sets one shared icon, and per-role icons derived from each role's favorite color are follow-up work.