Skip to content

Consolidate DREAM two-axis config-surface test coverage (proposal × n_try × snooker) #497

Description

@wshlavacek

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

  1. 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).
  2. 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.
  3. 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).
  4. 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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions