The native harness set is restated in six places, and the launch profiles have two parsers #1247

Closed
opened 2026-08-26 01:42:43 +00:00 by coilyco-ops · 0 comments
Owner

The set of harnesses AOS can launch natively, claude codex goose opencode, is
written out in six places:

  • aos-cli/composition.go:173
  • aos-cli/launch.go:103
  • aos-cli/launch.go:112
  • aos-cli/native_shadow.go:136
  • aterm/roster.go (nativeHarnesses)
  • shell/common.sh (the acompose explicit-seat gate)

Nothing holds them in step. Adding a harness means finding all six, and missing
one fails in a different way at each site: the shadow refuses, the roster filter
hides the seat, or acompose silently falls through to a host converge instead
of launching.

This is the same shape as the release-count drift in #1242, which went red only
at release time because one restatement of a set went stale.

Why it is not urgent

Pointing a role at a deepseek-backed agent needs no new harness name. goose
and opencode are already in every list, so the switch is one line in
.agents/harness-launch-profiles.yaml (#1246). This only bites when a genuinely
new harness front-end is added.

There is a second copy of the launch profiles too

aos-cli/harness_launch_profile.go parses .agents/harness-launch-profiles.yaml
with strict YAML. aterm/launch_profiles.go parses the same file with a
hand-rolled line reader, carried over from the retired agent-terminal. Both
handle the current schema, and they could disagree on an edit neither was
written for.

Since #1246 added aos _launch-agent, aterm could ask for its default seat
the way the shell now does and drop its parser entirely. aterm already
hard-requires aos on PATH, so that costs no new dependency, and it would also
remove the compiledHarnessLaunchProfilesBase64 ldflag from the aterm release
build.

What a next agent needs

  • One exported set in aos-cli, with the four in-repo literals pointing at it.
  • A way for aterm and shell/common.sh to derive it rather than restate it.
    aos _launch-agent is the precedent for the shell asking instead of parsing.
  • A test that fails when a site drifts, in the shape of the family-list test in
    tests/test_aos_cli_release.py, which was verified by breaking it on purpose.
The set of harnesses AOS can launch natively, `claude codex goose opencode`, is written out in six places: * `aos-cli/composition.go:173` * `aos-cli/launch.go:103` * `aos-cli/launch.go:112` * `aos-cli/native_shadow.go:136` * `aterm/roster.go` (`nativeHarnesses`) * `shell/common.sh` (the `acompose` explicit-seat gate) Nothing holds them in step. Adding a harness means finding all six, and missing one fails in a different way at each site: the shadow refuses, the roster filter hides the seat, or `acompose` silently falls through to a host converge instead of launching. This is the same shape as the release-count drift in #1242, which went red only at release time because one restatement of a set went stale. ## Why it is not urgent Pointing a role at a deepseek-backed agent needs no new harness name. `goose` and `opencode` are already in every list, so the switch is one line in `.agents/harness-launch-profiles.yaml` (#1246). This only bites when a genuinely new harness front-end is added. ## There is a second copy of the launch profiles too `aos-cli/harness_launch_profile.go` parses `.agents/harness-launch-profiles.yaml` with strict YAML. `aterm/launch_profiles.go` parses the same file with a hand-rolled line reader, carried over from the retired `agent-terminal`. Both handle the current schema, and they could disagree on an edit neither was written for. Since #1246 added `aos _launch-agent`, `aterm` could ask for its default seat the way the shell now does and drop its parser entirely. `aterm` already hard-requires `aos` on PATH, so that costs no new dependency, and it would also remove the `compiledHarnessLaunchProfilesBase64` ldflag from the aterm release build. ## What a next agent needs * One exported set in `aos-cli`, with the four in-repo literals pointing at it. * A way for `aterm` and `shell/common.sh` to derive it rather than restate it. `aos _launch-agent` is the precedent for the shell asking instead of parsing. * A test that fails when a site drifts, in the shape of the family-list test in `tests/test_aos_cli_release.py`, which was verified by breaking it on purpose.
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/agentic-os#1247
No description provided.