What is TRACE?
TRACE — Timestamped Record of Agentic Chain Execution.
Timestamp. Record. Append. Compose. Execute.
REACH produces findings. OCTO surfaces decisions. Neither remembers what it did. TRACE is the memory layer — a flat, append-only NDJSON file written alongside your .reach and .octo files. Every event in every run appends one line. Claude reads those lines on demand and can reconstruct, visualize, query, or audit any run without re-executing it.
No database. No dashboard. No always-on process. Just a file and a reader.
Where TRACE Fits
REACH → reaches into systems, surfaces findings
writes to TRACE as a side effect
OCTO → coordinates arms, generates decision surface
writes to TRACE as a side effect
TRACE → records everything that happened, immutably
read by Claude through the MCP server
MCP → lets Claude read, write, execute, and author
the only interface to the TRACE fileEach does one thing. None requires the others to exist. Together they compose into a fully auditable, zero-infrastructure workflow practice.
The File
reach-trace.ndjsonOne JSON object per line. Append-only. Never modified after writing. Lives alongside your .reach and .octo files — or in a .trace/ subfolder for per-run isolation.
Every line is a TRACE event:
{
"trace_id": "uuid-v4",
"run_id": "uuid-v4",
"timestamp": "2026-06-16T08:45:01Z",
"event_type": "ARM_COMPLETE",
"source": "morning.octo",
"payload": {
"arm_name": "git.commits",
"duration_ms": 980,
"exit_code": 0,
"finding_summary": "2 commits yesterday, on track"
}
}run_id groups all events from a single REACH or OCTO execution. trace_id identifies the individual event. Together they make any run reconstructable from the file alone.
The Most Important Convention
Write at the moment of occurrence, not at completion.
✓ write ARM_START → run script → write ARM_COMPLETE or ARM_FAIL
✗ run script → write ARM_START and ARM_COMPLETE together on successA script that crashes between ARM_START and ARM_COMPLETE leaves a detectable open event — an arm that started and never closed. That is useful signal. A script that writes both events only on success leaves a silent gap. Silent gaps are invisible and therefore dangerous.
What TRACE Does Not Do
- No dashboard. Visualization happens on demand through Claude. Nothing persists on screen.
- No schema enforcement. The event schema is a convention, not a validator. A malformed line is skipped, not fatal.
- No event modification. Append-only is not a preference — it is the design. A TRACE file that has been modified is not a TRACE file.
- No always-on process. The MCP server runs when you need it. The trace file exists when you don't.
File Conventions
Single shared file (default)
project/
morning.octo
sprint-review.reach
reach-trace.ndjson ← all runs, all timeGood for personal workflow. Simple. Rotate by month or size as needed.
Per-run isolation
project/
morning.octo
.trace/
r1-morning-2026-06-16.ndjson
r2-sprint-2026-06-16.ndjsonGood for audit scenarios. Each file is self-contained and independently verifiable.
Next
- Event Vocabulary → — the twelve event types, closed set
- The MCP Server → — six tools, the complete surface
GitHub: semanticintent/trace · DOI: 10.5281/zenodo.20739404