# description
A single row in the execution history (`state_executions`). One record per action invocation — regardless of whether the runner was CLI, Skill, or in-process.

# properties.kind.description
Which extension kind was executed. The enum has a single value today (the audit kind was removed pre-1.0); the field is preserved as a forward-compatibility lever.

# properties.extensionId.description
Id of the action that ran (e.g. `skill-summarizer`).

# properties.extensionVersion.description
Semver of the extension implementation at execution time.

# properties.nodeIds.description
Target `node.path` values. Empty for whole-graph actions.

# properties.contentHash.description
Duplicate-prevention hash used at submit time: sha256(actionId + actionVersion + bodyHash + frontmatterHash + promptTemplateHash). May be null for in-process actions that don't memoize.

# properties.status.description
Terminal status. History never stores `queued` or `running` — those live in `state_jobs` until they reach a terminal state.

# properties.failureReason.description
Normalized reason when `status = failed` or `cancelled`. Null for `completed`. `job-file-missing` mirrors the same enum value on `Job.failureReason` (legacy name preserved across the disk-to-DB shift).

# properties.exitCode.description
Subprocess exit code for CLI-runner executions. Null for in-process or Skill-runner executions.

# properties.runner.description
Which runner executed this job. Null when the action runs synchronously without dispatching.

# properties.durationMs.description
Finished - started. Stored denormalized for query speed.

# properties.tokensIn.description
Input tokens reported by the runner. Null if not applicable or not reported.

# properties.reportPath.description
Legacy field preserved across the disk-to-DB shift. Under B2 (DB-only job artifacts) this is always null because reports live inline in `state_executions.report_json`. Phase A of Step 10 will rename to `report` (object/null) carrying the parsed payload; until then the field remains as documented for backward compat.

# properties.jobId.description
Originating job id when applicable. Null for in-process actions.