Three-run protocol

Generated Markdown for references/concept_three_run_protocol.md.

Open book page Back to the skill graph

# Three-run protocol

_check, apply, apply — run 2 proves in-process convergence, run 3 proves cross-process idempotence._

The three-run protocol is how the testlab proves convergence. It runs each test
through `check`, `apply`, `apply` (all `--json --continue-on-error`):

- **Run 1 (check)** — reports initial status, mutates nothing.
- **Run 2 (apply)** — converges; its internal re-check proves convergence
  **within one process**.
- **Run 3 (apply again)** — proves **cross-process idempotence**: a check that
  only passes on in-process state re-applies here, surfaces as `configured`, and
  fails the test.


Per-step outcomes are asserted with `expect` — see the [step expectation table]../references/fact_step_expectation_table.md.

## Related

- [Testlab]../references/concept_testlab.md

- [Cross-process idempotence]../references/concept_idempotence.md

- [Convergence contract]../references/concept_convergence_contract.md

- [Step expectation table]../references/fact_step_expectation_table.md

[← Back to SKILL.md]../SKILL.md