Files
Project-M/Assets/_Project/Tests/EditMode
kronic b80aa1b24b Tests: tuning invariants + Authoring reachable from the test asmdef (audit M10/M11/L18)
- New TuningInvariantTests (6 tests). Two gaps the audit named:
  * The six-site knob drift: adding a knob touches the struct field,
    Defaults(), the TuningKnob const and three switches, and nothing
    caught a knob wired into Apply but forgotten in ClampKnob. The clamp
    is the only thing stopping a 0 reaching the i-frame divide, which
    TuningConfig's own header records as "NaNs the kinematic body
    permanently". Now every LIVE knob round-trips Apply -> Get against
    ClampKnob.
    The knob set is read by reflection, not assumed to be 0..Count:
    CLAUDE.md reserves retired indices (20-23), so the space has holes
    on purpose. A second test pins that those stay reserved — re-using
    one would silently re-mean a value in saved feel profiles and in the
    DebugOp wire payload.
  * MeleeTiming had ZERO test references while producing the locked
    20/12/25 contact ticks, and MeleeComboTests pins fixture values that
    differ from the shipped defaults on nine of ten knobs. The new tests
    assert RELATIONSHIPS against Defaults() — finisher contact stays
    inside both CastFacingTicks and MeleeRecoverTicks — so a deliberate
    retune stays green and only a broken coupling fails. That coupling
    was previously enforced only by a [MenuItem] a human had to remember
    to run.
- Test asmdef now references ProjectM.Authoring + Unity.Entities.Hybrid,
  so bakers are reachable from tests at all (L18). Nothing referenced
  them before, which is why "no prefab carries ChargerAuthoring" could
  coexist with a green suite.

CORRECTION to the audit: "10 test files leak ECS Worlds" is REFUTED.
That finding came from counting `.Dispose()` tokens, which misses the
`using (world)` blocks these files actually use. Measured empirically:
World.All is 6 before the suite and 6 after — zero leaked.

304/304 green.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 13:24:50 -07:00
..
2026-06-03 13:46:13 -07:00
2026-06-03 13:46:13 -07:00
2026-06-02 18:28:23 -07:00
2026-06-02 18:28:23 -07:00
2026-06-09 23:26:20 -07:00
2026-06-09 23:26:20 -07:00
UI
2026-06-07 13:28:25 -07:00
UI
2026-06-07 13:28:25 -07:00
2026-06-01 10:48:18 -07:00
2026-06-01 10:48:18 -07:00
2026-06-04 21:49:03 -07:00
2026-05-31 21:35:12 -07:00
2026-06-02 18:28:23 -07:00
2026-07-13 18:30:41 -07:00
2026-06-10 15:22:30 -07:00