Context
LTV-Po adds difficulty-tier snapshot distortions for the lifecycle scheme (noise / missingness / outliers per tier, resolved from b2b_saas_ltv_v1/difficulty_profiles.yaml). That makes higher tiers noisier, but the simulated world is identical across tiers — the motif-calibrated churn / expansion / payment rates don't change with difficulty.
This issue tracks the deeper piece (decided to defer in the Po planning): make advanced a genuinely harder prediction problem, not just a noisier snapshot.
Proposed work
- Scale the lifecycle mechanism parameters by difficulty tier — e.g. compress the latent→hazard signal (weaker per-trait weights), raise baseline churn variance, or flatten the motif separation — so a model genuinely discriminates worse on
advanced even with clean features.
- Keep it motif-calibrated: the engine-calibration test bands (
tests/schemes/lifecycle/test_engine.py) must be re-derived per tier, or the scaling must stay within them.
- Surface the tier effect in the
LTV-Pp validation harness (per-tier × per-window regression-metric bands), which is the natural place to assert "advanced is measurably harder."
Why deferred
LTV-Po ships the recipe + distortion tiers (the user-visible difficulty knob works for snapshots). Simulation-level scaling is a modeling-quality refinement that belongs with the difficulty-band validation in LTV-Pp, not the recipe-wiring PR.
Surfaced during LTV-Pn.4a / Po planning; build_world currently applies no difficulty to the simulation (documented in its docstring).
Context
LTV-Poadds difficulty-tier snapshot distortions for the lifecycle scheme (noise / missingness / outliers per tier, resolved fromb2b_saas_ltv_v1/difficulty_profiles.yaml). That makes higher tiers noisier, but the simulated world is identical across tiers — the motif-calibrated churn / expansion / payment rates don't change with difficulty.This issue tracks the deeper piece (decided to defer in the Po planning): make
advanceda genuinely harder prediction problem, not just a noisier snapshot.Proposed work
advancedeven with clean features.tests/schemes/lifecycle/test_engine.py) must be re-derived per tier, or the scaling must stay within them.LTV-Ppvalidation harness (per-tier × per-window regression-metric bands), which is the natural place to assert "advanced is measurably harder."Why deferred
LTV-Poships the recipe + distortion tiers (the user-visible difficulty knob works for snapshots). Simulation-level scaling is a modeling-quality refinement that belongs with the difficulty-band validation inLTV-Pp, not the recipe-wiring PR.Surfaced during LTV-Pn.4a / Po planning;
build_worldcurrently applies no difficulty to the simulation (documented in its docstring).