Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Journal Discipline

The signed ledger is for facts Truss may need to replay, prove, or trust later. It is not a dumping ground for every UI notification.

Journal it

Write or reuse a journaled path when the extension:

  • calls a model or delegated executor;
  • invokes a tool whose output feeds the model or verifier;
  • creates or modifies memory, identity, policy, or durable context;
  • performs a side effect that should not run twice after resume;
  • records contract evidence, self-validation, reviewer output, verdicts, child anchors, fan-out reductions, compactions, or MCP provenance;
  • publishes an anchor receipt.

Keep it off-journal

Do not journal work that only:

  • renders a UI;
  • streams token deltas for presentation;
  • emits desktop/chat/web notifications;
  • indexes an already-signed export for search;
  • draws charts or dashboards from ledger data;
  • records local debug traces that are not evidence.

These consumers should keep a pointer to the source run id and head hash if they persist derived state.

Secret handling

  • Providers resolve credentials internally.
  • MCP HTTP secrets belong in env_headers, not static config.
  • Anchor backends publish hashes only.
  • Errors and event previews should be sanitized.
  • Ledger payloads should contain evidence and hashes, not raw secrets.

Replay rule

If resume would be wrong after re-executing it, the operation needs a recorded result or memo. If resume can recompute it safely from signed data, keep it as a consumer.