Total Recall
Record a permanent, human-reviewable memory trail of what was decided, why, and on what evidence during autonomous or long-running work.
When an agent works unattended, across multiple phases, or makes irreversible technical choices, a human reviewer needs to reconstruct what happened without reading thousands of lines of transcript or re-running the entire workflow. Maintain a single canonical decision trail so the work is auditable, reproducible, and verifiable.
The Log Format
A single TSV (Tab-Separated Values) file with one row per decision or checkpoint:
- ts: ISO8601 UTC timestamp (
YYYY-MM-DDTHH:MM:SSZ).
- phase: The current lifecycle phase or work stream (e.g.
discovery, harness, refactor, verification).
- decision: What was chosen or executed, expressed in a single line.
- why: The plain-language rationale. State the direct reason or constraint without buzzwords or robotic jargon.
- evidence: A concrete pointer that verifies the claim (e.g. commit SHA, PR number,
file:line, test output path, screenshot artifact). Never multi-line prose.
- result: The concrete outcome or verified state (e.g.
tests green, reverted, pixel-diff 0, INCONCLUSIVE, open).
Start a clean decision log by copying the header from resources/manual/decision-log-template.tsv.
Example Decision Log
| ts |
phase |
decision |
why |
evidence |
result |
2026-05-24T09:02:00Z |
frame |
Counted work first, about 100 components and 75 hours |
Needed scope bounds before starting autonomous run |
commit 3a9f1c2 |
Identified 5 blockers before starting |
2026-05-24T09:40:00Z |
harness |
Captured baseline screenshots before modifying styles |
Ensure visual regression harness catches deviations |
scripts/snapshot.sh, baseline/ |
Saved 120 reference snapshots |
2026-05-24T11:15:00Z |
widget |
Migrated component styles to tailwind utilities |
Keep changes surgical and behavior identical |
commit 7c21e0a, pixel-diff 0 |
Visual diff 0, tests pass |
2026-05-24T12:30:00Z |
widget |
Discarded subagent output due to empty visual diffs |
Verified source files directly rather than trusting summary |
worktree reset |
Reverted and added strict validation |
Logging a Row
Write entries in plain, direct language as if briefing a colleague. Avoid AI buzzwords, puffery, and abstract corporate speak (the unslop skill applies to decision logs too).
Using the Helper Script
Use the included helper script to guarantee well-formed TSV entries and guard against formula injection:
skills/reflection/total-recall/resources/manual/log.sh <logfile> <phase> <decision> <why> <evidence> <result>
The script automatically:
- Stamped ISO8601 UTC timestamps.
- Initializes headers on first use if the log file does not exist.
- Strips internal tab and newline characters.
- Prefixes cells starting with
=, +, -, or @ with a single quote (') to prevent spreadsheet formula injection.
What to Log
- Major technical forks: Choices between architectural approaches or trade-offs.
- Milestone checkpoints: Completion of discrete units with their associated test verification.
- Pivots and rollbacks: Any approach abandoned or reverted, along with the triggering evidence.
- Blockers and anomalies: Unresolved issues or unexpected environment behaviors surfaced.
- Loop iterations: In autonomous loops, log one row per iteration summary.
Do not log trivial, self-evident edits (e.g. fixing a typo, running a standard linter).
Where the Log Lives
- Working artifact (default): Keep the file at
decisions.tsv in the repository root or .audit/<task-slug>.tsv for parallel tasks. Keep it local and uncommitted for routine work.
- Committed record: Commit the log when working on large cross-system migrations, high-risk refactors, or when human reviewers explicitly require a persistent audit trail.
Core Rules
- One row, one decision: Every row must represent a single, focused checkpoint fitting entirely on one line.
- Append-only integrity: Never edit or delete existing rows. If a prior decision is reversed or found flawed, append a new row recording the pivot and rationale.
- Concrete evidence pointers: Evidence must point to a reproducible artifact, commit SHA, file line, or test run.
- No em-dashes: Do not use Unicode U+2014 em-dashes in log messages or documentation. Use standard hyphens, colons, or commas.
Transcript Audit
Before finishing a run, verify that the log reflects ground truth by auditing it against the conversation transcript:
- Verify actions: Confirm every logged decision corresponds to an actual command or file modification.
- Verify evidence: Check that listed commits, test outputs, or files actually exist and prove the claimed result.
- Check for missing pivots: If an approach was attempted, failed, and abandoned during the run, ensure that pivot is recorded.
- Prune noise: Remove trivial or redundant rows that add cognitive load without audit value.
Cross-Model Review
For high-stakes tasks where subagent execution is available, spawn a subagent on an alternative model family to provide fresh-eyes review:
- Pass the decision log and execution summary to the reviewing subagent.
- Have the reviewer flag:
- Weak, missing, or unverifiable evidence pointers.
- Skipped verification steps or unverified assertions.
- High-risk choices or subtle scope creep.
- Conclude the final summary with an
Attention section citing findings from the reviewer.
Reviewing the Trail
In the terminal: Render formatted TSV tables using column:
column -s$'\t' -t decisions.tsv | less -S
On GitHub / Web: GitHub natively renders committed TSV files as interactive, sortable tables.
1---2name: total-recall3description: Record a human-reviewable decision trail for long-running, autonomous, or high-risk tasks. Writes an append-only TSV decision log (ts, phase, decision, why, evidence, result) and audits it against runtime transcripts. Use when running multi-phase migrations, autonomous loops, risky refactors, or when requested via /total-recall.4---56# Total Recall78Record a permanent, human-reviewable memory trail of what was decided, why, and on what evidence during autonomous or long-running work.910When an agent works unattended, across multiple phases, or makes irreversible technical choices, a human reviewer needs to reconstruct what happened without reading thousands of lines of transcript or re-running the entire workflow. Maintain a single canonical decision trail so the work is auditable, reproducible, and verifiable.1112## The Log Format1314A single TSV (Tab-Separated Values) file with one row per decision or checkpoint:1516- **ts:** ISO8601 UTC timestamp (`YYYY-MM-DDTHH:MM:SSZ`).17- **phase:** The current lifecycle phase or work stream (e.g. `discovery`, `harness`, `refactor`, `verification`).18- **decision:** What was chosen or executed, expressed in a single line.19- **why:** The plain-language rationale. State the direct reason or constraint without buzzwords or robotic jargon.20- **evidence:** A concrete pointer that verifies the claim (e.g. commit SHA, PR number, `file:line`, test output path, screenshot artifact). Never multi-line prose.21- **result:** The concrete outcome or verified state (e.g. `tests green`, `reverted`, `pixel-diff 0`, `INCONCLUSIVE`, `open`).2223Start a clean decision log by copying the header from `resources/manual/decision-log-template.tsv`.2425### Example Decision Log2627| ts | phase | decision | why | evidence | result |28| :--------------------- | :-------- | :---------------------------------------------------- | :---------------------------------------------------------- | :--------------------------------- | :------------------------------------ |29| `2026-05-24T09:02:00Z` | `frame` | Counted work first, about 100 components and 75 hours | Needed scope bounds before starting autonomous run | `commit 3a9f1c2` | Identified 5 blockers before starting |30| `2026-05-24T09:40:00Z` | `harness` | Captured baseline screenshots before modifying styles | Ensure visual regression harness catches deviations | `scripts/snapshot.sh`, `baseline/` | Saved 120 reference snapshots |31| `2026-05-24T11:15:00Z` | `widget` | Migrated component styles to tailwind utilities | Keep changes surgical and behavior identical | `commit 7c21e0a`, `pixel-diff 0` | Visual diff 0, tests pass |32| `2026-05-24T12:30:00Z` | `widget` | Discarded subagent output due to empty visual diffs | Verified source files directly rather than trusting summary | `worktree reset` | Reverted and added strict validation |3334## Logging a Row3536Write entries in plain, direct language as if briefing a colleague. Avoid AI buzzwords, puffery, and abstract corporate speak (the [unslop](../../writing/unslop/SKILL.md) skill applies to decision logs too).3738### Using the Helper Script3940Use the included helper script to guarantee well-formed TSV entries and guard against formula injection:4142```bash43skills/reflection/total-recall/resources/manual/log.sh <logfile> <phase> <decision> <why> <evidence> <result>44```4546The script automatically:47481. Stamped ISO8601 UTC timestamps.492. Initializes headers on first use if the log file does not exist.503. Strips internal tab and newline characters.514. Prefixes cells starting with `=`, `+`, `-`, or `@` with a single quote (`'`) to prevent spreadsheet formula injection.5253### What to Log5455- **Major technical forks:** Choices between architectural approaches or trade-offs.56- **Milestone checkpoints:** Completion of discrete units with their associated test verification.57- **Pivots and rollbacks:** Any approach abandoned or reverted, along with the triggering evidence.58- **Blockers and anomalies:** Unresolved issues or unexpected environment behaviors surfaced.59- **Loop iterations:** In autonomous loops, log one row per iteration summary.6061Do not log trivial, self-evident edits (e.g. fixing a typo, running a standard linter).6263## Where the Log Lives6465- **Working artifact (default):** Keep the file at `decisions.tsv` in the repository root or `.audit/<task-slug>.tsv` for parallel tasks. Keep it local and uncommitted for routine work.66- **Committed record:** Commit the log when working on large cross-system migrations, high-risk refactors, or when human reviewers explicitly require a persistent audit trail.6768## Core Rules69701. **One row, one decision:** Every row must represent a single, focused checkpoint fitting entirely on one line.712. **Append-only integrity:** Never edit or delete existing rows. If a prior decision is reversed or found flawed, append a new row recording the pivot and rationale.723. **Concrete evidence pointers:** Evidence must point to a reproducible artifact, commit SHA, file line, or test run.734. **No em-dashes:** Do not use Unicode U+2014 em-dashes in log messages or documentation. Use standard hyphens, colons, or commas.7475## Transcript Audit7677Before finishing a run, verify that the log reflects ground truth by auditing it against the conversation transcript:78791. **Verify actions:** Confirm every logged decision corresponds to an actual command or file modification.802. **Verify evidence:** Check that listed commits, test outputs, or files actually exist and prove the claimed result.813. **Check for missing pivots:** If an approach was attempted, failed, and abandoned during the run, ensure that pivot is recorded.824. **Prune noise:** Remove trivial or redundant rows that add cognitive load without audit value.8384## Cross-Model Review8586For high-stakes tasks where subagent execution is available, spawn a subagent on an alternative model family to provide fresh-eyes review:87881. Pass the decision log and execution summary to the reviewing subagent.892. Have the reviewer flag:90 - Weak, missing, or unverifiable evidence pointers.91 - Skipped verification steps or unverified assertions.92 - High-risk choices or subtle scope creep.933. Conclude the final summary with an `Attention` section citing findings from the reviewer.9495## Reviewing the Trail9697- **In the terminal:** Render formatted TSV tables using `column`:9899 ```bash100 column -s$'\t' -t decisions.tsv | less -S101 ```102103- **On GitHub / Web:** GitHub natively renders committed TSV files as interactive, sortable tables.