# Run record `runbook-run/v0.1` One run of one native pack, stored as JSON in `/.local/runbook-runs/.json` (git-ignored). Non-secret only. | Field | Meaning | | --- | --- | | `run_id` | Timestamp plus random suffix | | `pack_id`, `pack_path` | The pack run | | `operator` | One word: the person who ran it | | `params` | Resolved parameter values (validated, never secret) | | `steps..state` | `todo`, `running`, `done`, `failed`, `skipped` | | `steps..verification` | `kind`, `passed`, and for commands `exit_code`, `output_bytes`, `seconds`. Output text is never stored | | `steps..evidence` | The facts the step declared, supplied by the operator | ## Rules - Steps run in order; a step starts only after its predecessors are done or skipped. - A step completes only with a passing verification and its declared evidence. - A verify command runs only when the operator confirms (`--yes`), with a 60 s timeout. - Only read-only steps may be skipped, and a run with skips never exercises a pack. - Values matching the secret markers are refused everywhere they could be recorded. - The engine never edits `pack.yaml`. `rtut run finish` shows the exercise-status diff; `--apply` writes it, and only for a run in which every step is done. CLI: `rtut run new|list|status|cmd|start|verify|done|fail|retry|skip|finish ...`