Static ReadonlyLifecycleBundle lifecycle: nothing to create up front (datasets load lazily per gate, and a load is skipped when the table's stamp already names its rows); teardown removes the run's "PSTruth:" pipelines and models. Teardown never throws (the lifecycle contract): a row it could not delete is logged.
StaticAssertLog the measurement and fail the check when it did not pass.
StaticHarness
The adapter every PS gate bundle uses.