Skip to content

lifecycle: simulation-level difficulty scaling (advanced = genuinely harder world) #129

@shaypal5

Description

@shaypal5

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    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