Term
Principal
An authenticated human, service, or agent identity. A Principal is not an AgentInstance and is not an assignment.
Purpose
Be the subject of authentication and authorization so process identity and work assignment stay separate from who is acting.
Relationships
| Name | Target | Kind | Cardinality | Inverse |
|---|---|---|---|---|
participating_sessions | WorkSession | references | 0..* | participants 0..* |
agent_instances | AgentInstance | observes | 0..* | principal 0..1 |
owned_conversations | HostConversation | observes | 0..* | owner_principal 0..1 |
Invariants
- MUST
ids-are-names: principal_id is a name. Authorization is decided by policy, not by possessing the identifier. - MUST NOT
not-an-instance: A Principal MUST NOT be treated as an AgentInstance. - MUST NOT
no-credentials: A portable snapshot MUST NOT include the Principal's credentials.
Aliases
actor-identity
Deprecated aliases
None.
Not synonyms
- AgentInstance: The instance is a process or endpoint that may present a Principal.
- AgentRun: The run is an assignment given to a Principal or performed via an instance.
- AgentProfile: The profile is a kind, not an authenticated identity.
Examples
- A human user identity that opens a WorkSession.
- A service identity that an AgentInstance presents.
Anti-examples
- A PID.
- An API token stored in a snapshot.
Fields
The identity field is the index of the handle. fields is the exchange shape.
| Name | Kind | Type | Portable | Notes |
|---|---|---|---|---|
principal_id | identity | name | True | |
kind | descriptive | string | True | human, service, or agent identity kind. |
issuer | metadata | string | True |
Native mapping hooks
| System | Native term | Fidelity | Notes |
|---|---|---|---|
project-interop | _none_ | tbd |