## TM selector gun checks + interpretability dump. ## Run: nim c -r common_libs/tests/test_tm_selector.nim import std/[strformat, math, random] import gun_harness/offline_range import range_guns import guns/tm_selector import guns/head_on import guns/linear import guns/circular import guns/wall_bounce import guns/accel_predictor proc main() = let names = ["decel-before-turn", "energy-threshold-turner", "oscillator", "random-walk"] for name in names: let fx = synthesizeByName(name) let (drv, gun) = makeTmSelectorDriver(seed = 1) let reps = replayFixture(fx, @[ makeDriver("HeadOn", HeadOnGun()), makeDriver("Linear", LinearGun()), makeDriver("Circular", CircularGun()), makeDriver("WallBounce", initWallBounceGun()), makeDriver("Accel", initAccelGun()), drv], metric = bmPath) echo "=== ", name for r in reps: echo " ", formatReportRow(r) let st = gun[].selectorClauseStats() var wc = "" for c in 0..