# okstra-inspect facet — run-audit

Loaded lazily by the dispatch table in `SKILL.md` (core). Shared rules — Step 0 preflight, the standard task-key resolution rule (0/1/N), the no-task fallback, and Output Rules — live in the core file and still apply here.

## run-audit

Trigger phrases: "okstra run-audit", "run audit", "진행 점검", "태스크들 제대로 가고 있나", "silent failures".

Check every run's artifacts against progress invariants. This catches what the error log cannot: a run that never logged a failure but still ended wrong. Read-only.

### run-audit.1 — Run the audit

```bash
okstra run-audit
```

### run-audit.2 — Report (Korean)

Group the `violations` array by `invariant` and report one section each:

| invariant | 위반 태스크 수 | 프로젝트 수 |
|---|---:|---|

Under each, list the affected `taskKey` values with their `detail` and `source`. Always cite `source` — the reader must be able to open the file the verdict came from.

### run-audit.3 — Split the two outcomes

State plainly which violations are this task's own state versus a repeated okstra defect:

- an invariant broken in **one** task → that task's own state; tell the user what to do about that task
- an invariant broken across **two or more** tasks → a repeated okstra defect; say so and cite every affected `taskKey` so the user can decide what to do with it
- `approval-not-forgotten` is the exception no matter how far it spreads. It means a human has not approved yet, not that okstra did something wrong. Report it as a to-do list of tasks awaiting the user's approval instead.

This facet reports; it never files anything anywhere.
