a 'yes' cell runs probe.holds(type), which drives real code through
that type's adapter and asserts the behaviour;
an absent cell runs the probe's checker for the cell's declared
enforcedBy, which asserts the refusal message, the hidden predicate, or
the unchanged state. A probe that has no checker for a declared
enforcement fails the cell, so an absent cell can never pass by not being
looked at.
Follows the shape of tests/unit/data/_shared/refinement-loop-contract.ts:
one shared contract, thin per-type adapters, called from the file that owns
the fixtures. That is also why the probes are not all in one file — several
rows need module mocks (vi.mock) that are per file.
The runner that holds one row of the geometry-behaviour matrix against the code.
A row's probe file calls defineBehaviourConformance once, with the row id and a BehaviourProbe. It emits one test per geometry type:
'yes'cell runsprobe.holds(type), which drives real code through that type's adapter and asserts the behaviour;enforcedBy, which asserts the refusal message, the hidden predicate, or the unchanged state. A probe that has no checker for a declared enforcement fails the cell, so an absent cell can never pass by not being looked at.Follows the shape of
tests/unit/data/_shared/refinement-loop-contract.ts: one shared contract, thin per-type adapters, called from the file that owns the fixtures. That is also why the probes are not all in one file — several rows need module mocks (vi.mock) that are per file.