autonomy wal inspect¶
Print WAL entries with optional kind/time/bridge/outcome filters
Synopsis¶
Reads all entries from the WAL and prints them to stdout.
Filter flags (combinable):
--since <duration> only show entries written within this window
(e.g. 5m, 1h, 24h)
--kind <kind> only show entries whose event kind matches
(e.g. autonomy.decision, ai.rollout)
--outcome <value> only show entries whose attrs.outcome equals value
(e.g. allow, deny). Typically paired with
--kind autonomy.decision. Replaces the
'--json | jq select(.event.attrs.outcome == "…")'
pipe with a first-class flag (#1149).
--bridge-only only show entries whose 'bridge_origin' attr
names a recognized bridge (today: the governed
ROS 2 bridge, value 'governed_ros2_bridge').
Direct-node POSTs and non-ROS 2 entries — which
don't carry the marker — are filtered out.
Closes the #939 4-E.a operator-UX gap: before
this flag the only way to see bridge-routed
decisions distinctly was to pipe --json through
jq with 'select(.event.attrs.bridge_origin == …)'.
This flag is the first-class equivalent.
Size cap:
--limit N cap output at N most-recent matching entries
AFTER --since/--kind/--outcome/--bridge-only filters apply.
Default 0 = no cap (preserves current behavior).
Matches the --limit shape used by 'audit query',
'logs', 'rollout history', and 'ha backup list'
so muscle memory carries across surfaces (#719).
Output modes:
default human-readable table (seq, time, kind, attrs summary)
--json JSONL — one JSON object per line
--stream tail the WAL and emit full JSON records (one per line) as
new entries are appended. Starts at the current tail (no
replay). Filters --kind / --outcome / --bridge-only compose.
Exit with Ctrl-C. Mutually exclusive with --limit / --since
(both are 'historical' concepts). Poll interval controlled
by --stream-poll (default 250ms). #1149.
Recovery:
--lenient downgrade SEQ_GAP hard-fail (#1149) to WARN-and-continue
so an audit trail with gap-class corruption on disk
becomes readable. Structural corruption (first_seq_not_one,
invalid JSON, safe_seq invariant violations) still fails
hard. Read-only paths only; the runtime always opens strict.
See docs/operations/failure-modes.md § "Path 4 — Read-side
rescue for SEQ_GAP" for the full runbook.
Usage¶
autonomy wal inspect [flags]
Options¶
--bridge-only only show entries whose event.attrs.bridge_origin names a recognized bridge (today the governed ROS 2 bridge, value 'governed_ros2_bridge'). Direct-node POSTs are excluded. First-class equivalent of --json | jq 'select(.event.attrs.bridge_origin != null)'. (#939 4-E.a)
--dir string WAL directory (default: XDG_CACHE_HOME/autonomyops/telemetry)
--json output as JSONL (one JSON object per line)
--kind string filter by event kind (e.g. autonomy.decision)
--lenient downgrade SEQ_GAP hard-fail (#1149) to WARN-and-continue so an audit trail with gap-class corruption on disk becomes readable. Structural corruption (first_seq_not_one, invalid JSON, safe_seq invariant violations) still fails hard. Read-only paths only; the runtime always opens strict.
--limit int cap output at N most-recent matching entries AFTER --since/--kind/--bridge-only filters (0 = no cap; matches the --limit shape used by 'audit query', 'logs', 'rollout history', 'ha backup list' so muscle memory carries across surfaces). #719
--outcome string filter by attrs.outcome (e.g. allow, deny). Typically paired with --kind autonomy.decision. Composes with every other filter. (#1149)
--since string show entries written within this duration (e.g. 5m, 1h)
--stream tail the WAL and emit full records as they are appended, one JSON object per line on stdout. Starts at the current tail (new events only). Filters --kind / --outcome / --bridge-only compose with streaming. Exit with Ctrl-C. Mutually exclusive with --limit / --since (both are 'historical' concepts). (#1149)
--stream-poll int stream mode: poll interval in milliseconds between checks for new appended entries (default 250, minimum 50). Lower = tighter latency, more IO; higher = looser latency, less IO. Ignored outside --stream. (#1149) (default 250)
Options inherited from parent commands¶
--require-signed-manifest Refuse to start if the SHA256SUMS release manifest or its cosign signature is missing/invalid (Tier 2 binary-integrity check; default: build-time compile-in via -ldflags -X, build-hardened artifacts=true, all others=false)
See also¶
autonomy wal— Inspect the local telemetry WAL