Property-test a hook's decision over generated events. Throws nothing — returns
a result you assert on (assert.ok(r.passed)), so the counterexample is
inspectable. mutate(event, rng) produces a variation from the running event;
each named invariant is checked against decide(event).
vigiles/testing— Pillar 2 entry point: the harness-testing API. Re-exports the three tiers —runHook(unit),runHarnessTest(deterministic),runEval(eval) — plus the runner-agnostic predicates/assertions. Kept deliberately separate fromvigiles/claude-codeso this surface can stay harness-agnostic as more harnesses are added. Granular paths (vigiles/run-hook, etc.) still work.It re-exports the composition-root runner modules (which do the Claude-Code default-wiring), never an adapter directly — the
agnostic-surfaceeslint boundary forbids importingsrc/adapters/*from here. Seeresearch/adapter-api-design.md.