remove the legacy $AGENT_$PLATFORM_$HOSTNAME style claude agent names #1043

Open
opened 2026-08-13 14:53:28 +00:00 by coilysiren · 1 comment
Owner

Acompose names only moving forward

Acompose names only moving forward
Member

Decision record

Recorded by the director seat, 2026-08-15, from Kai's direction in a live session. Scoping pass on this issue, not a build.

The call: deprovision, sequenced behind one agent-compose fix. Kai confirmed both open questions below.

The form is legacy, confirmed against the tree

  • docs/statusline.md already names it "the pre-acompose <harness>-<os>-<host>-<tag>-<pronouns> self-name" and records that its statusline provider 10-agent-name.sh was removed for duplicating what acompose statusline renders. Half of this issue already shipped.
  • agent-compose v2.22.0 ships whoami, described verbatim as "print what this session calls itself, for a SessionStart hook". The successor exists and is named for this job.
  • scripts/agent-name.sh:65-68 probes a ward agent-name override that was never built, and the comment at line 38 says so. The form has been frozen local computation since it landed.

Blocker, filed as agent-compose#283

whoami is not yet single-valued. Measured in one live session, four answers depending on --target, and the default --target of . returns empty in a native session shadow. It resolves by nearest projection, a filesystem-path proxy for session identity, and no session-to-bundle binding exists on disk.

Repointing the SessionStart hook today swaps a wrong-but-stable name for an empty banner. Per the config-placement law the seat registry lives in acompose, so the session binding belongs there too. That fix lands first.

Sequenced plan

  1. agent-compose#283 - resolve whoami from the session's own launch bundle. Blocking prerequisite, other repo.
  2. Repoint both SessionStart hooks to agent-compose whoami: host via scripts/install-agent-name.py, container via docker/dev-base/claude-managed-settings.json.
  3. Strip name derivation from both agent-name.sh copies. Keep the container-only gitidentity mode, which docs/dev-base-git-identity.md documents as fallback-only behind the Dockerfile-owned AOS_GIT_NAME and AOS_GIT_EMAIL.
  4. Docs and tests: features-agents-sessions.md, dev-base-self-name.md, statusline.md, repo-layout.md, install.md, docs/FEATURES.md, plus tests/test_agent_name_gitidentity.py and tests/test_statusline.py.

Rollout stays in infrastructure/ansible via the claude-hooks role, per the authoring-vs-rollout split.

Confirmed calls

  • Non-composed sessions go nameless. The name becomes a compose-only concept. whoami's self-suppress contract means no banner and no row outside a projection, and the harness pronoun registry (agent-name.sh:26-35) retires with it. That registry is the direct cause of the pronoun conflict this issue exists to fix: it hardcodes claude to she-her regardless of role, while the director seat card says he.
  • The context-budget row gets rescued as a provider, not deleted.

Casualty to rescue before the script is stripped

The four-band context display at scripts/agent-name.sh:78-128, carrying # 250k = failure case per Kai, is already dark on this host. Verified: ~/.claude/settings.json now points statusLine at docker/dev-base/statusline.sh, whose sole base provider is 15-agent-compose.sh, and ~/.config/agentic-os/statusline.d/ is empty. It went dark silently when the composer migration landed. Lift it into a statusline.d provider before step 3 deletes the only copy.

Also observed

#879 looks resolved and closeable. It reported statusLine still wired to agent-name.sh statusline with the composer never rolled out. install-agent-name.py now sets STATUSLINE_SCRIPT to the composer and migrates the legacy command, and the live host setting reflects it. The ctx row going dark is the unremarked side effect of that fix, which step 4 above closes out.

Next owner

Engineer, once agent-compose#283 lands.

## Decision record Recorded by the director seat, 2026-08-15, from Kai's direction in a live session. Scoping pass on this issue, not a build. **The call: deprovision, sequenced behind one agent-compose fix.** Kai confirmed both open questions below. ## The form is legacy, confirmed against the tree * `docs/statusline.md` already names it "the pre-acompose `<harness>-<os>-<host>-<tag>-<pronouns>` self-name" and records that its statusline provider `10-agent-name.sh` was removed for duplicating what `acompose statusline` renders. Half of this issue already shipped. * agent-compose v2.22.0 ships `whoami`, described verbatim as "print what this session calls itself, for a SessionStart hook". The successor exists and is named for this job. * `scripts/agent-name.sh:65-68` probes a `ward agent-name` override that was never built, and the comment at line 38 says so. The form has been frozen local computation since it landed. ## Blocker, filed as agent-compose#283 `whoami` is not yet single-valued. Measured in one live session, four answers depending on `--target`, and the default `--target` of `.` returns empty in a native session shadow. It resolves by nearest projection, a filesystem-path proxy for session identity, and no session-to-bundle binding exists on disk. **Repointing the SessionStart hook today swaps a wrong-but-stable name for an empty banner.** Per the config-placement law the seat registry lives in acompose, so the session binding belongs there too. That fix lands first. ## Sequenced plan 1. **agent-compose#283** - resolve `whoami` from the session's own launch bundle. Blocking prerequisite, other repo. 2. Repoint both SessionStart hooks to `agent-compose whoami`: host via `scripts/install-agent-name.py`, container via `docker/dev-base/claude-managed-settings.json`. 3. Strip name derivation from both `agent-name.sh` copies. **Keep the container-only `gitidentity` mode**, which `docs/dev-base-git-identity.md` documents as fallback-only behind the Dockerfile-owned `AOS_GIT_NAME` and `AOS_GIT_EMAIL`. 4. Docs and tests: `features-agents-sessions.md`, `dev-base-self-name.md`, `statusline.md`, `repo-layout.md`, `install.md`, `docs/FEATURES.md`, plus `tests/test_agent_name_gitidentity.py` and `tests/test_statusline.py`. Rollout stays in infrastructure/ansible via the `claude-hooks` role, per the authoring-vs-rollout split. ## Confirmed calls * **Non-composed sessions go nameless.** The name becomes a compose-only concept. whoami's self-suppress contract means no banner and no row outside a projection, and the harness pronoun registry (`agent-name.sh:26-35`) retires with it. That registry is the direct cause of the pronoun conflict this issue exists to fix: it hardcodes claude to `she-her` regardless of role, while the director seat card says he. * **The context-budget row gets rescued as a provider, not deleted.** ## Casualty to rescue before the script is stripped The four-band context display at `scripts/agent-name.sh:78-128`, carrying `# 250k = failure case per Kai`, **is already dark on this host**. Verified: `~/.claude/settings.json` now points `statusLine` at `docker/dev-base/statusline.sh`, whose sole base provider is `15-agent-compose.sh`, and `~/.config/agentic-os/statusline.d/` is empty. It went dark silently when the composer migration landed. Lift it into a `statusline.d` provider before step 3 deletes the only copy. ## Also observed **#879 looks resolved and closeable.** It reported `statusLine` still wired to `agent-name.sh statusline` with the composer never rolled out. `install-agent-name.py` now sets `STATUSLINE_SCRIPT` to the composer and migrates the legacy command, and the live host setting reflects it. The ctx row going dark is the unremarked side effect of that fix, which step 4 above closes out. ## Next owner Engineer, once agent-compose#283 lands.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#1043
No description provided.