Skip to content

Testing ​

How to run the test pyramid — unit / golden / property / simulation / model checking / upgrade matrix, and the bar each layer must clear.

Status: Skeleton; the simulation harness and the property suite land incrementally.

Pyramid and Current Status ​

LayerTechniqueHow to runBarStatus
L1 unit / goldenCodec golden frames, registry lockmoon testAll green✅ Protocol error-code registry lock / constant lock / wire error-path reconciliation
L2 property@quickcheck (seed/count pinned)moon test (seed committed)Daily count increases kept on a separate tier✅ Decode-injectivity (seed=20261001) + frame codec CF1-CF4 (pins 20261010-13); CF4 daily sweep runs a logged run-unique seed at count=1000
SimulationClock/Net/Disk/Rng traits + buggifySeed replayrepro_rate=100%; ≥ 10 regression seeds⬜ planned
Model checkingfencing.qnt / lease.qnt / protocol.qnt (quint 0.33.0)quint parse / typecheck / run --invariant=...Both fencing invariants hold at MaxSeq=4✅ fencing dual invariants (promiseCoversEveryAppliedEntry, appliedIsPrefix) run green; lease and protocol parse and typecheck (protocol is still the shell); quint verify (Apalache) not exercised here
L4 upgrade matrix8-case scriptCI / manualMatrix green⬜ planned

Reproduction Discipline ​

  • Any failing seed must reproduce bit-for-bit when replayed (acceptance scenario ③); regression seeds are frozen into test/m1/regression/.