NAI OS
Rigor matched to what a wrong answer costs — not to how sophisticated the system can be.
Back to the pattern. Every system prepares and stops; none of them ships without a human reading the result. But "check before you hand it over" is not one mechanism here — it's four, chosen per system for what a wrong answer would cost and whether a second pass could actually fix it.
| Shape | Systems | Who checks | Iterates? |
|---|---|---|---|
| Bounded generator/critic loop | /nai-option-study | option-verifier, web-grounded | Yes — ≤3 rounds, only on FAIL |
| Single adversarial pass | /nai-review, /nai-spec-drafter | finding-checker, spec-rule-checker | No — one pass, verdict stands |
| Orchestrator-computed tie-out | /nai-tax-theo | the orchestrator itself, no checker subagent | No — deltas are ✓ or flagged |
| No cross-check, by design | /nai-chief-of-staff, /nai-newsletter, /nai-paper-ingest | none | n/a |
An option's premise can be wrong and get better on revision, so /nai-option-study
runs a generator/critic loop, capped at 3 rounds, and only a FAIL verdict triggers another round.
The full mechanics — why the critic can't grade its own homework, why the critique travels by
file — are the worked example in 08 Option Studies/loop-pattern.md.
A finding's cited evidence either holds or it doesn't — there is nothing for a second
round to improve. So /nai-review and /nai-spec-drafter check once and
stop: a citation that fails is flagged for the human, never sent back for redrafting.
“One adversarial verify pass, no loop… iterating would let the drafter rewrite
findings until they slip past the checker.” — .claude/commands/nai-review.md.
The same line, almost verbatim, is in nai-spec-drafter.md. Rewriting prose to
satisfy a checker would corrupt the exact citation discipline the check exists to enforce.
/nai-tax-theo has no dedicated checker subagent. Its reconciliation.md
is a table the orchestrator itself computes — bank balance vs. summed transactions, salary
vs. payroll, loan transfers vs. schedule — each row marked ✓ or ✗ with the
delta. When the check is arithmetic, not judgement, dispatching a subagent to re-verify addition
would be theatre.
/nai-chief-of-staff and /nai-newsletter run no verification step at
all. Deliberately: a morning briefing or a newsletter draft is disposable and time-boxed, wrong
today is corrected tomorrow, and the human reads every line before it goes anywhere. The safety
here lives in the tool grant — see why the promise holds
— not in a second agent's judgement.
Match verification rigor to the cost of being wrong, and to whether a second pass can actually fix it. Expensive-and-fixable earns a loop. Expensive-and-binary earns one adversarial pass with no way back. Cheap-and-arithmetic earns a computed tie-out, no subagent. Disposable-and-reviewed earns no check at all — the tool boundary is the safety net.
Full write-up, with citations, at docs/verification-patterns.md.