{
  "studyVersion": "guard-methods-1",
  "baseCommit": "bed77724cc2da56e0fec9ccd73656b9ab33ffa09",
  "startedAt": "2026-10-13T02:37:58.708Z",
  "methods": [
    "baseline",
    "imitation",
    "curriculum",
    "shaping",
    "prioritized",
    "uniform"
  ],
  "runsPerMethod": 3,
  "trainingRepsPerRun": 100000,
  "totalTrainingReps": 1800000,
  "trainedRole": "g",
  "config": {
    "dt": {
      "mass": 280,
      "strength": 74,
      "speed": 87,
      "skill": 70
    },
    "g": {
      "mass": 315,
      "strength": 89,
      "speed": 72,
      "skill": 70
    },
    "duration": 5,
    "blockRange": 2.2,
    "engagementTime": 1.2,
    "contactInterval": 0.2,
    "contactDrive": 1,
    "contactFootwork": 1
  },
  "sourceSHA256": {
    "analytics.js": "20fdae4e830cff4f4f161c05c8f20bf6633a59b84746e9e79f6810b66abfbe8d",
    "contact.js": "67c83504ba6127985b092593722907c047bcd1136c009cf18a303abc645e05b5",
    "sim.js": "ad9c45e66c72c1854690f529dbbff5fcd22bebc5ac951064d6f26c74685544ed",
    "state-machine.js": "9dec3a40411b976914a0788c1b440ae97e7ef79f02f7d4cdd706131569de0db9",
    "training-methods.js": "3b1b917ec3fc4012243e6414e9e7ba0282d0a2271501fd8d7831669371e01a3e"
  },
  "trainingSeedBases": [
    2147483648,
    2684354560,
    3221225472
  ],
  "trainingStride": 7919,
  "evalSeeds": {
    "development": 51000001,
    "standard": 101000001,
    "trainedDT": 201000001,
    "recovery": 301000001
  },
  "perPolicyEvalCounts": {
    "development": 1000,
    "standard": 5000,
    "tacticsOnly": 5000,
    "trainedDT": 2000,
    "recovery": 1000
  },
  "frozenDTSource": "Balanced-ratings session; 1,000,000 DT training reps",
  "methodsConfig": {
    "imitation": {
      "classifier": "Tabular majority vote on aggregated coach labels",
      "coachMix": "0.8 at start, linearly to 0 by 60% of training"
    },
    "curriculum": {
      "first20Percent": "Head-on bull rush",
      "next30Percent": "Bull / left arc / right arc",
      "final50Percent": "50% normal, 30% lateral/feint, 20% guard offset ±1.7 yd"
    },
    "shaping": {
      "lambda": 0.25,
      "gamma": 0.94,
      "potentialWeights": {
        "lane": 0.5,
        "pocketCushion": 0.3,
        "motion": 0.2
      },
      "terminalPotential": 0
    },
    "replay": {
      "capacity": 8192,
      "updatesPerRep": 16,
      "alpha": 0.6,
      "betaStart": 0.4,
      "betaEnd": 1,
      "priorityErrorClip": 2,
      "priorityEpsilon": 0.01
    }
  },
  "notes": [
    "Physical engine, observation bins and available actions unchanged across arms.",
    "All methods train guard opening tactics with the same outcome-only bandit.",
    "Imitation replaces guard position Q-learning with a tabular teacher-label classifier; use the study viewer, not the main v3 importer.",
    "No per-method hyperparameter tuning after held-out results.",
    "Uniform replay is an additional computation control, not a fifth proposed method.",
    "Evaluation-only correction: recovery test initially displaced every guard right. Corrected the random-function invocation, added a both-sides regression test, and re-evaluated all 18 frozen policies. Training, standard tests and policy selection were unchanged."
  ],
  "originalTrainingSourceSHA256": {
    "analytics.js": "20fdae4e830cff4f4f161c05c8f20bf6633a59b84746e9e79f6810b66abfbe8d",
    "contact.js": "67c83504ba6127985b092593722907c047bcd1136c009cf18a303abc645e05b5",
    "sim.js": "ad9c45e66c72c1854690f529dbbff5fcd22bebc5ac951064d6f26c74685544ed",
    "state-machine.js": "9dec3a40411b976914a0788c1b440ae97e7ef79f02f7d4cdd706131569de0db9",
    "training-methods.js": "c58f1f2d13f1a4c5a65e13788d4d7323565901e2ac1828b414dcf0faf29d249a"
  }
}