docs(taxonomy): define ATIF traces versus receipts

82136c3934a3 · AtlantisPleb · · parent 260233c5eda2

docs(taxonomy): define ATIF traces versus receipts

Name Trace as the public-safe ATIF projection of an agent session.
Keep receipts as PostgreSQL authority. Record coding-agent session
terms and keep Decision Trace and Chrome traces as different words.

Deploy story

What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.

Not deployed through the forge lane

No push, promotion, build, or deploy receipt references this commit (receipts are scanned over a bounded recent window). Changes shipped by full node replacement carry their proof in the release gate receipt instead.

Changed files

  • modified docs/taxonomy.md

Diff

1 file changed, +122 -3

docs/taxonomy.md modified +122 -3

@@ -31,6 +31,7 @@ Beside that stack, and often confused with it:

31 31
  forge ───────── the canonical git remote at openagents.com
32 32
  github ──────── a read-only mirror, never authority
33 33
  receipt ─────── append-only durable evidence of something that happened
34
  trace ───────── public-safe ATIF projection of an agent session, not authority
34 35
  invariant ───── a contract in INVARIANTS.md with an executable proof
35 36
```
36 37

@@ -84,13 +85,57 @@ the issue and project controllers, which serve the local forge.

84 85
**Receipt** — append-only durable evidence that something happened. The word
85 86
spans several families, each tied to its own invariants: turn receipts,
86 87
push receipts, build and deployment receipts, consent receipts, outcome
87
receipts. Always say which one when it matters.
88
receipts. *Checkpoint receipts are proposed; they record a session save
89
point and its link to a forge commit.* Always say which one when it
90
matters. Session context is not stored by pushing a metadata branch to
91
GitHub. The forge already hosts the Git; PostgreSQL already hosts the
92
evidence. A trace is a projection of that evidence, not a receipt.
93
94
### Traces
95
96
**ATIF** — Agent Trajectory Interchange Format, pinned at `ATIF-v1.7`. The
97
JSON interchange schema for logging an agent interaction as a sequence of
98
steps (user, agent, system), tool calls, observations, and metrics. The
99
canonical in-repo schema lives in `@openagentsinc/atif`. Harbor's RFC names
100
the root object a trajectory; OpenAgents product copy says trace.
101
102
**Trace** — the product object: a public-safe ATIF document of an agent
103
interaction, visibility-gated (`public`, `unlisted`, or `owner_only`),
104
exportable and, when published, dereferenceable. Sarah's
105
`GET /data/export/atif` builds one ATIF document from the owner's
106
conversation (messages, tool steps, turn receipts). The shareable store and
107
`/trace/{uuid}` viewer live on the Node web app (`GET /api/traces/{uuid}`,
108
ingest `POST /api/traces`). A trace is not authority: PostgreSQL turns, tool
109
steps, and receipts remain the source. A conversation is not a trace until
110
it is exported or ingested. Changelog rows may carry `trace_ref` /
111
`trace_digest` pointers. *Issue-linked traces (work-system E6) are
112
proposed.*
113
114
**Trajectory** — the ATIF schema name for the document (`AtifTrajectory`,
115
`trajectory.json`, `trajectory_id`). Use it in schema and code. Product copy
116
says trace.
117
118
Do not confuse an agent trace with:
119
120
- **Decision Trace** — ProductSpec history of intent changes caused by
121
  evidence. Always say Decision Trace.
122
- **Chrome or SCV trace artifacts** — browser profiles and diagnostics, not
123
  agent trajectories.
124
- **qa-runner `session-trace.json`** — an internal Khala beat log that maps
125
  *into* ATIF. Not the product object.
126
- **Experience-memory `trace:v1:<digest>`** — a digest ref on a memory
127
  record, not `/trace/{uuid}`.
88 128
89 129
### Turns and conversation
90 130
91 131
**Turn** — one user-to-assistant exchange: paired durable messages, tool
92 132
steps, provider steps, and an immutable provenance receipt
93
(`INVARIANTS.md`, TURN-001..005).
133
(`INVARIANTS.md`, TURN-001..005). One execution of a coding agent inside a
134
session is a turn, not a separate "run" object.
135
136
**Token usage** — counts of input tokens, output tokens, cache-creation
137
tokens, cache reads, and API calls recorded on a turn or inference. Usage
138
is evidence on the receipt, not a substitute for the receipt.
94 139
95 140
**Sarah** — a persona and behavior package inside OpenAgents, not a separate
96 141
service. Persona artifacts are pinned by SHA under `priv/sarah/persona/`.

@@ -103,7 +148,74 @@ authority.

103 148
**Memory planes** — account-scoped, consent-gated projections: conversation
104 149
recall (hybrid lexical + semantic), profile memory, learned preferences,
105 150
experience memory, graph memory. All disposable except the authoritative
106
messages and tool steps underneath them.
151
messages and tool steps underneath them. *Search over coding-agent session
152
history (checkpoints, trailers, and receipts) is proposed as a use of these
153
planes, not a second index.*
154
155
### Coding-agent sessions
156
157
These terms describe *why* a forge commit changed. Evidence lives in
158
PostgreSQL receipts. The portable, redacted projection of that evidence is a
159
trace. The forge already hosts Git, so there is no separate metadata remote
160
and no metadata branch to export to GitHub.
161
162
**Coding-agent session** — *a complete interaction with a coding agent from
163
start to finish: prompts, responses, tool steps, code changes, checkpoints,
164
token usage, and line attribution. Distinct from a Phoenix or LiveView
165
session. Spans one or more turns. Proposed as a named product unit; today
166
the durable pieces are turns, work jobs, and SCV runs.*
167
168
**Session context** — the prompts, responses, tool activity, code changes,
169
and metadata that explain what happened during a coding-agent session.
170
Authoritative copies live in PostgreSQL (messages, tool steps, receipts),
171
not on a Git branch.
172
173
**Nested session** — *a child session created when an agent spawns another
174
agent or subagent during the same body of work. Proposed as a first-class
175
roster and transcript link on the forge; do not flatten it into the parent
176
turn.*
177
178
**Checkpoint** — *a save point in a coding-agent session, linked to a forge
179
commit when the work is committed. Persistent checkpoints are receipts in
180
PostgreSQL, not objects on a Git branch. Compact SCV checkpoints are
181
structured state (facts, evidence refs, decisions, remaining work), not a
182
transcript dump. Proposed as a named receipt family.*
183
184
**Checkpoint linking** — *the join from a forge commit to the checkpoint
185
and session context behind it. Proposed. A commit trailer or an explicit
186
API write records the join; free-form commit messages are not the
187
authority.*
188
189
**Rewind** — *restoring the worktree to an earlier checkpoint during an
190
active session. Proposed. Rewind is a local worktree operation; it is not
191
a forge reset and not a GitHub force-push.*
192
193
**Shadow branch** — *a temporary local Git branch that holds intra-session
194
snapshots so rewind does not commit onto the working branch. Named with a
195
worktree identifier so concurrent worktrees do not collide. Never pushed
196
to the forge or to GitHub. Proposed.*
197
198
**Commit trailer** — structured metadata appended to a Git commit message.
199
Forge commit pages already display trailers, including an agent-session
200
trailer when one produced the commit, and changelog entries can be sourced
201
from a trailer. *Trailers that carry a checkpoint identifier and line
202
attribution are proposed.*
203
204
**Line attribution** — *an inferred count of how many changed lines in a
205
commit were written by the agent and how many were written by a human,
206
recorded as a commit trailer. Proposed. The percentage is inferred from
207
diffs and hook timing, not from keystrokes, and is not proof of
208
authorship.*
209
210
**Dispatch** — *a markdown summary of recent agent work across one or more
211
repositories, branches, and time windows. Proposed. A dispatch is a
212
projection, not a receipt.*
213
214
**Skill** — *a reusable workflow that teaches a coding agent to search
215
session history, explain a change from receipts, review a branch with
216
intent context, or hand off a session. Proposed as a product surface.
217
Operator skill files under `.agents/skills/` are local tooling, not this
218
term.*
107 219
108 220
### Execution
109 221

@@ -205,5 +317,12 @@ is exactly one component system; adding a second is forbidden.

205 317
4. **Computer, not machine**, in product copy — even though the code still
206 318
   says `machine`.
207 319
5. **Name the receipt.** Turn, push, build, deployment, consent, outcome.
320
   When checkpoints exist, they are a receipt family, not a Git branch.
208 321
6. **Module means two things.** Elixir module or module artifact — say which.
209 322
7. **An invariant is not true until its proof runs green.**
323
8. **Say which session.** A coding-agent session is not a Phoenix session.
324
   Session transcripts belong in PostgreSQL, not on a ref the GitHub mirror
325
   would export.
326
9. **Say which trace.** An agent trace is an ATIF document. A Decision Trace
327
   is ProductSpec history. A Chrome trace is a profile artifact. A trace is
328
   not a receipt and not a coding-agent session.

This page updates live while a promote is in flight · changelog