concept · 07

Audit and replay

You didn't add logging — it's already there. Every start, transition, and executor attempt emits a structured JSON event, including the moves the agent tried and couldn't make.

You didn’t add logging. It’s already there.

Your agent reached for deploy before tests had run, and because deploy isn’t a legal move yet, Praxec refused it — recorded as transition.rejected. You wired the kernel in and didn’t write a line of logging; every workflow start, transition, and executor attempt — including the retries and the moves the agent tried and couldn’t make — emits a structured JSON event on its own. Route it to stdout, a file, or wherever you keep logs. A correlationId threads a whole run together, so you can reconstruct exactly what the agent did.

A log you can reconstruct from, not just read

Because the record is structured and correlated, it answers the questions you actually ask after a run: did tests really pass before it merged? How many retries did that refactor cost? Which move did it try first? Filter by correlationId to pull a whole run in order; every executor attempt carries the hash of the exact script it ran, so you can reproduce the precise command that fired — not a paraphrase of it.

# every event for one logical run, in order
$ grep '"correlationId":"c_91a3"' audit.jsonl

Those same structured events are what feed dashboards and cost attribution later, if you grow into wanting them.

← All concepts