Skip to content

Separate immutable Agent continuity from mutable human routing identity #401

Description

@schickling-assistant

Problem

Agent Spec currently uses the positional identity as all of these at once:

  • the sole stable automation key;
  • the bus address;
  • the durable catalog-state path;
  • the task and PTY identity prefix.

name and description are mutable presentation, but name is non-unique and cannot be used as a selector. There is no immutable surrogate ID and no mutable routable identifier or alias.

This creates a conflict for quick session creation. A session can start before its durable purpose and graph placement are known. The creator must either choose a semantic identity too early or keep a provisional identity forever. Improving the identity later creates a new address and disconnects existing routing, task identity, PTY state, inbox, archive, and context.

Evidence

Source at c4d6f7af3e2a09daebf07e7506f81b4bbba1798e:

  • crates/agent-spec/src/spec.rs: identity is the unique ID; name is mutable presentation.
  • src/run.rs: default task IDs derive from <host>.<identity>.<task>.
  • src/message.rs: recipient identity is encoded in the inbox path.
  • docs/vrs/.decisions/0002-stable-agent-identity-and-mutable-presentation.md: the positional identity is intentionally the sole stable automation ID and a stable-ID alias is explicitly rejected.

A disposable-catalog E2E confirmed:

  1. st2 rename and st2 describe preserved the same process, task ID, PTY generation, and bus identity.
  2. st2 agents --identity resolved only the exact bus identity, not name.
  3. Changing the positional identity produced a new bus/task/PTY identity and left the existing inbox and old PTY state behind.

Design question

Revisit decision 0002 for sessions whose semantic identity is not known at creation time. Explore whether Agent Spec needs both:

  1. an immutable, non-human surrogate used for durable ownership and continuity; and
  2. a mutable, unique human-facing identifier used for routing, separate from non-unique name.

The design must define selector ambiguity, uniqueness scope, rename history or redirects, authorization, CAS behavior, migration of existing identities, and how old addresses resolve. A surrogate must remain an internal continuity key rather than becoming a second competing human address.

A smaller alternative is acceptable if it preserves quick creation, later semantic naming, stable lifecycle/state continuity, and unambiguous automation without adding both concepts.

Posted on behalf of @schickling
field value
agent_identity dev3.direct.omp.vx8nuqjp
session dev3.vx8nuqjp
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.0.11
agent_runtime OMP 18.0.11
tooling_profile dotfiles@b85aac7

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:identityAgent, session, run, and launch-generation identity · Set: manualorigin:janitorFiled by janitor automation · Set: manualstate:open-design-questionUnresolved design choice requiring explicit alignment before implementation · Set: manualtype:featureNew user-visible or system capability · Set: manual

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions