session-name.sh should record the bundle fingerprint, so a transcript joins to an exact composition #1338

Open
opened 2026-08-28 04:50:37 +00:00 by coilyco-ops · 0 comments
Owner

What is needed

docker/dev-base/session-name.sh is the SessionStart hook that tells a session what it is called. It should also record which bundle composed it, so a transcript joins to an exact composition rather than to a date and a role label.

coilyco-flight-deck/agent-compose#350 specifies why: the seat label is a weak proxy, the corpus spans a roster rename, and any other bundle change landing in the same window is indistinguishable from that rename.

The engine half already landed

agent-compose 3fc8d4e added whoami --json, which emits a metadata-only record beside the seat label:

{"format":"agent-compose.whoami.v1","seat":"Angie [she] uz86","role":"platform","bundle":"sha256:..."}

It carries no host path and no skill content, and stays silent without a projection exactly as the plain form does, so the hook's existing "announce nothing rather than invent one" behaviour needs no special case.

The design question this raises

The hook currently emits agent-facing prose:

🐾 You are <name> this session. When asked "who are you" ... lead with this name.

A 71-character hash does not belong in that sentence. It is for a later reader of the transcript, not for the agent mid-session. So the shape is the open part:

  • A second line the agent is told to ignore, which costs context on every session start.
  • A structured marker the transcript retains but the prose does not carry.
  • Something else entirely, if the transcript format offers a metadata channel that prose does not have to travel through.

Whichever is chosen, the constraint is that it survives into the transcript, since a value the hook prints and the transcript drops satisfies nothing.

Acceptance criteria

  • Given a session transcript alone, a reader recovers the bundle fingerprint of the composition that ran.
  • Two sessions composed from the same inputs record the same value, and sessions on either side of a roster change record different ones.
  • A session with no projection records nothing rather than an empty or synthesised value.
  • The added context cost per session start is measured and stated, not assumed negligible.

Note on what this does and does not prove

The fingerprint names a composition and does not attest to one. agent-compose verify checks content digests for shape and never recomputes them, so the recorded value is a sound join key and is not provenance. Tracked in agent-compose, and it does not block this.

## What is needed `docker/dev-base/session-name.sh` is the SessionStart hook that tells a session what it is called. It should also record which bundle composed it, so a transcript joins to an exact composition rather than to a date and a role label. `coilyco-flight-deck/agent-compose#350` specifies why: the seat label is a weak proxy, the corpus spans a roster rename, and any other bundle change landing in the same window is indistinguishable from that rename. ## The engine half already landed `agent-compose` `3fc8d4e` added `whoami --json`, which emits a metadata-only record beside the seat label: ```json {"format":"agent-compose.whoami.v1","seat":"Angie [she] uz86","role":"platform","bundle":"sha256:..."} ``` It carries no host path and no skill content, and stays silent without a projection exactly as the plain form does, so the hook's existing "announce nothing rather than invent one" behaviour needs no special case. ## The design question this raises The hook currently emits agent-facing prose: ``` 🐾 You are <name> this session. When asked "who are you" ... lead with this name. ``` A 71-character hash does not belong in that sentence. It is for a later reader of the transcript, not for the agent mid-session. So the shape is the open part: * A second line the agent is told to ignore, which costs context on every session start. * A structured marker the transcript retains but the prose does not carry. * Something else entirely, if the transcript format offers a metadata channel that prose does not have to travel through. Whichever is chosen, the constraint is that it survives into the transcript, since a value the hook prints and the transcript drops satisfies nothing. ## Acceptance criteria - [ ] Given a session transcript alone, a reader recovers the bundle fingerprint of the composition that ran. - [ ] Two sessions composed from the same inputs record the same value, and sessions on either side of a roster change record different ones. - [ ] A session with no projection records nothing rather than an empty or synthesised value. - [ ] The added context cost per session start is measured and stated, not assumed negligible. ## Note on what this does and does not prove The fingerprint names a composition and does not attest to one. `agent-compose verify` checks content digests for shape and never recomputes them, so the recorded value is a sound join key and is not provenance. Tracked in agent-compose, and it does not block this.
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#1338
No description provided.