Context
ADR-0067 unified the DREAM family into one DreamAlgorithm engine with two orthogonal config axes — proposal ∈ {de, whitened, kalman} × n_try — plus the snooker mix-in (orthogonal to proposal). The design thesis is "variants are config points, not subclasses."
Test coverage of that surface is currently scattered per-file (test_dream_class.py = de, test_pdream_class.py = whitened, test_multitry_dream.py = n_try, test_kalman_dream.py = kalman) and strongest on the happy paths. Stage 3b (#358, PR #489) added a kalman × snooker-heavy recovery case and a consolidated test_dream_config_rejection_matrix, but the valid surface is still not asserted as a coherent whole.
Gaps to close
- A single valid-combination smoke matrix. Parametrize over
(proposal ∈ {de, whitened, kalman}) × (n_try ∈ {1, k>1}) minus the deliberately-unsupported (kalman, k>1), asserting each expressible point constructs, runs, and yields finite samples. This makes "config points, not subclasses" an explicit regression net in one place, and guards the calculate_new_pset dispatch precedence (whitened → kalman → de).
- Fast-tier cross-product coverage. The MT × whitened cross-product (
whitened-k3) is currently slow-tier only; a fast smoke case would catch dispatch regressions on every run.
- Composition coverage.
snooker × each proposal (snooker fires orthogonally at snooker_prob); and the kalman burn-in→de handoff (that post-window samples come from the reversible de+snooker phase — the correctness basis for the burn-in-only Kalman jump).
- Meta: keep the benchmark-oracle
_EXCLUDE set honest. test_benchmark_harness._EXCLUDE (the frozen pre-migration config witness) must be manually extended for every new DREAM config key (proposal, n_try, now kalman_burnin_frac) — otherwise a new key surfaces as a surprise 16-way failure partway through the gate. Consider a guard test that asserts _EXCLUDE stays in sync with the schema's post-freeze keys, so adding a key forces a conscious decision rather than a red gate.
Non-goal
Regenerating the frozen pre-migration oracle (benchmark_effective_golden.json) — it is a deliberate independent witness that the ADR-0012 config migration reproduces the old per-method .conf files byte-for-byte; post-freeze keys are excluded, not regenerated.
Filed as a follow-up to PR #489 (ADR-0067 Stage 3).
Context
ADR-0067 unified the DREAM family into one
DreamAlgorithmengine with two orthogonal config axes —proposal ∈ {de, whitened, kalman}×n_try— plus thesnookermix-in (orthogonal toproposal). The design thesis is "variants are config points, not subclasses."Test coverage of that surface is currently scattered per-file (
test_dream_class.py= de,test_pdream_class.py= whitened,test_multitry_dream.py= n_try,test_kalman_dream.py= kalman) and strongest on the happy paths. Stage 3b (#358, PR #489) added akalman × snooker-heavyrecovery case and a consolidatedtest_dream_config_rejection_matrix, but the valid surface is still not asserted as a coherent whole.Gaps to close
(proposal ∈ {de, whitened, kalman}) × (n_try ∈ {1, k>1})minus the deliberately-unsupported(kalman, k>1), asserting each expressible point constructs, runs, and yields finite samples. This makes "config points, not subclasses" an explicit regression net in one place, and guards thecalculate_new_psetdispatch precedence (whitened → kalman → de).whitened-k3) is currently slow-tier only; a fast smoke case would catch dispatch regressions on every run.snooker × each proposal(snooker fires orthogonally atsnooker_prob); and thekalmanburn-in→dehandoff (that post-window samples come from the reversiblede+snooker phase — the correctness basis for the burn-in-only Kalman jump)._EXCLUDEset honest.test_benchmark_harness._EXCLUDE(the frozen pre-migration config witness) must be manually extended for every new DREAM config key (proposal,n_try, nowkalman_burnin_frac) — otherwise a new key surfaces as a surprise 16-way failure partway through the gate. Consider a guard test that asserts_EXCLUDEstays in sync with the schema's post-freeze keys, so adding a key forces a conscious decision rather than a red gate.Non-goal
Regenerating the frozen pre-migration oracle (
benchmark_effective_golden.json) — it is a deliberate independent witness that the ADR-0012 config migration reproduces the old per-method.conffiles byte-for-byte; post-freeze keys are excluded, not regenerated.Filed as a follow-up to PR #489 (ADR-0067 Stage 3).