{
  "$schema": "./schema/models.v1.schema.json",
  "schemaVersion": "1.0.0",
  "manifestId": "slime-models-2026-07-12",
  "observationSize": 12,
  "actions": [
    "NOOP",
    "FORWARD",
    "FORWARD_JUMP",
    "JUMP",
    "BACKWARD_JUMP",
    "BACKWARD"
  ],
  "models": [
    {
      "id": "plain",
      "name": "Plain DQN",
      "shortName": "Plain DQN",
      "family": "ablation",
      "trainingMethod": "DQN without Dueling, Double or N-step",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_plain.onnx?v=79fecd5bb93a",
      "sha256": "79fecd5bb93a3dbc1f4d4043d44d23221a6cb01b7ae4ce88ba7a6e2cd1b06ba5",
      "sizeBytes": 108545,
      "checkpoint": "dqn_plain_vec.pt",
      "timesteps": 5000000,
      "description": "Plain DQN ablation used to isolate the value of later algorithmic components."
    },
    {
      "id": "dueling",
      "name": "Dueling DQN",
      "shortName": "Dueling",
      "family": "ablation",
      "trainingMethod": "Dueling DQN",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model.onnx?v=ad50f1da3565",
      "sha256": "ad50f1da356581af7bea35fe537069d0dfeb918780b09801c3d8260dc1470cae",
      "sizeBytes": 143007,
      "checkpoint": "dqn_vec.pt",
      "timesteps": 5000000,
      "description": "Dueling value/advantage architecture without Double DQN or N-step returns."
    },
    {
      "id": "duel_double",
      "name": "Dueling + Double DQN",
      "shortName": "Duel + Double",
      "family": "ablation",
      "trainingMethod": "Dueling Double DQN",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_duel_double.onnx?v=ed61e06b2280",
      "sha256": "ed61e06b22808acf0faff20076f91663a70d17e22b6dde82357b6505f1ac77a5",
      "sizeBytes": 143007,
      "checkpoint": "dqn_v1_dd_vec.pt",
      "timesteps": 5000000,
      "description": "Ablation combining the Dueling head with Double DQN target selection."
    },
    {
      "id": "duel_nstep",
      "name": "Dueling + N-step",
      "shortName": "Duel + N-step",
      "family": "ablation",
      "trainingMethod": "Dueling DQN with 3-step returns",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_duel_nstep.onnx?v=57d9b7e24e82",
      "sha256": "57d9b7e24e828056da8f6b1cc370aefc5b77737eec51a65f04c08730e70d0e98",
      "sizeBytes": 143007,
      "checkpoint": "dqn_v1_dn_vec.pt",
      "timesteps": 5000000,
      "description": "Ablation testing N-step returns without Double DQN correction."
    },
    {
      "id": "v1",
      "name": "V1 Cold",
      "shortName": "V1 Cold",
      "family": "v1",
      "trainingMethod": "Dueling Double DQN with N-step returns",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_v1.onnx?v=d48c283dbc77",
      "sha256": "d48c283dbc77677347d3f0683e3b064662f7e18785b4b0097b74aeab4b8306ef",
      "sizeBytes": 143007,
      "checkpoint": "dqn_v1_vec.pt",
      "timesteps": 5000000,
      "description": "Cold-start V1 policy trained without a self-play opponent pool."
    },
    {
      "id": "v1_selfplay",
      "name": "V1 Self-play (legacy)",
      "shortName": "V1 Self-play",
      "family": "v1",
      "trainingMethod": "V1 snapshot self-play, legacy baseline contract",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_v1_selfplay.onnx?v=86d901bae293",
      "sha256": "86d901bae2932601771e0a8aeb39722755d2e5c4bc1446f35d106226201234a3",
      "sizeBytes": 143007,
      "checkpoint": "dqn_v1_vec_selfplay.pt",
      "timesteps": 20000000,
      "description": "Legacy self-play lineage retained to show the ecosystem effect found during the study."
    },
    {
      "id": "v1_purepool",
      "name": "V1 Pure-pool",
      "shortName": "V1 Pure-pool",
      "family": "v1",
      "trainingMethod": "V1 self-play without baseline mixing",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_v1_purepool.onnx?v=9aae62a06370",
      "sha256": "9aae62a06370287d95d959211bbbe5bb6aa12ef7a67f0f33afda74524ab27871",
      "sizeBytes": 143007,
      "checkpoint": "dqn_v1_vec_selfplay_purepool.pt",
      "timesteps": 20000000,
      "description": "Self-play ablation with no legacy reference policy mixed into the opponent pool."
    },
    {
      "id": "v1_selfplay_seeded",
      "name": "V1 Self-play Seeded",
      "shortName": "V1 Seeded",
      "family": "v1",
      "trainingMethod": "V1 snapshot self-play with seeded opponents",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_v1_selfplay_seeded.onnx?v=74fba88c841a",
      "sha256": "74fba88c841afab89f88c5df832f5cbc338d91424258a56d52e17d21bf46ea07",
      "sizeBytes": 143007,
      "checkpoint": "dqn_v1_vec_selfplay_seeded.pt",
      "timesteps": 20000000,
      "description": "Legacy V1 self-play policy initialized with a broader fixed opponent set."
    },
    {
      "id": "v1_sp_fixed",
      "name": "Trained V1",
      "shortName": "V1 Hero",
      "family": "v1",
      "trainingMethod": "V1 snapshot self-play with corrected baseline mixing",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": true,
      "hero": true,
      "url": "model_v1_selfplay_fixed.onnx?v=fd18bedfaf27",
      "sha256": "fd18bedfaf27a6cf5065332236eeb9d65be18a3ae4b4fbe194186793f0170d33",
      "sizeBytes": 143007,
      "checkpoint": "dqn_v1_vec_selfplay_fixed.pt",
      "timesteps": 20000000,
      "description": "The more active exhibition hero, trained with corrected self-play orientation and baseline inputs."
    },
    {
      "id": "ppo",
      "name": "PPO (legacy)",
      "shortName": "PPO",
      "family": "ppo",
      "trainingMethod": "PPO self-play",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "logits",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_ppo.onnx?v=386926592f45",
      "sha256": "386926592f45cac888d2ee27e2eb45becd96a0a6382f8a74ced5133a75fdebd1",
      "sizeBytes": 76704,
      "checkpoint": "ppo_selfplay.pt",
      "timesteps": 5000000,
      "description": "Early PPO policy retained as a historical comparison."
    },
    {
      "id": "ppo_fixed",
      "name": "PPO Low-entropy",
      "shortName": "PPO Low-ent",
      "family": "ppo",
      "trainingMethod": "PPO self-play with corrected baseline inputs",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "logits",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_ppo_fixed.onnx?v=a311893d50df",
      "sha256": "a311893d50df6bda7668533ed686b043b620d6163846677388b30f7e021a91df",
      "sizeBytes": 76704,
      "checkpoint": "ppo_lowent_20m_fixed.pt",
      "timesteps": 20000000,
      "description": "A low-entropy PPO run that illustrates premature policy collapse."
    },
    {
      "id": "ppo_rescue",
      "name": "PPO Rescue",
      "shortName": "PPO Rescue",
      "family": "ppo",
      "trainingMethod": "PPO self-play with entropy and stability rescue",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "logits",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_ppo_rescue.onnx?v=9227f5cda983",
      "sha256": "9227f5cda98374f4802b13f0f8ebdc29d6dbac956298bd06ca4b6ec50636bcef",
      "sizeBytes": 76704,
      "checkpoint": "ppo_rescue_20m.pt",
      "timesteps": 20000000,
      "description": "Higher-entropy PPO policy recovered from the collapse observed in the low-entropy run."
    },
    {
      "id": "rainbow",
      "name": "Rainbow-lite 20M (legacy)",
      "shortName": "Rainbow 20M",
      "family": "rainbow",
      "trainingMethod": "Rainbow-lite self-play",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_rainbow.onnx?v=f09a7385a7d0",
      "sha256": "f09a7385a7d0f589d907dbbac662f7adcfa41a563e964db762c4609c7c1330f7",
      "sizeBytes": 143007,
      "checkpoint": "dqn_rainbow_lite_selfplay.pt",
      "timesteps": 20000000,
      "description": "Legacy Rainbow-lite self-play policy kept for historical comparison."
    },
    {
      "id": "rainbow_5m",
      "name": "Rainbow-lite 5M",
      "shortName": "Rainbow 5M",
      "family": "rainbow",
      "trainingMethod": "Rainbow-lite without self-play",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_rainbow_5m.onnx?v=195d96859fda",
      "sha256": "195d96859fdacde3cd80046afa858b56b86417f97c2671f7b01e038f63dd4923",
      "sizeBytes": 143007,
      "checkpoint": "dqn_rainbow_lite_5m.pt",
      "timesteps": 5000000,
      "description": "Five-million-step Rainbow-lite policy trained without self-play."
    },
    {
      "id": "rainbow_5m_sp",
      "name": "Rainbow-lite 5M Self-play",
      "shortName": "Rainbow 5M SP",
      "family": "rainbow",
      "trainingMethod": "Rainbow-lite snapshot self-play",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_rainbow_5m_sp.onnx?v=1ad1363b7b7f",
      "sha256": "1ad1363b7b7f8f6c141005c8357f1f2fbbbea353a3ccfa1285a7c76c7c0011fc",
      "sizeBytes": 143007,
      "checkpoint": "dqn_rainbow_lite_5m_selfplay.pt",
      "timesteps": 5000000,
      "description": "Five-million-step Rainbow-lite policy with snapshot self-play."
    },
    {
      "id": "rainbow_sp_fixed",
      "name": "Trained Rainbow",
      "shortName": "Rainbow Hero",
      "family": "rainbow",
      "trainingMethod": "Aggression-shaped Rainbow-lite self-play",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": true,
      "hero": true,
      "url": "model_rainbow_sp_fixed.onnx?v=252e43ca5a4b",
      "sha256": "252e43ca5a4b0e5b600f1cef9d1e164868fddce912ba4bdb3e8305c213fad13c",
      "sizeBytes": 143007,
      "checkpoint": "rainbow_aggro2_seed0.pt",
      "timesteps": 4600000,
      "description": "Release policy selected on a fixed both-sides benchmark after aggression-shaped fine-tuning."
    },
    {
      "id": "rainbow_full",
      "name": "Rainbow Full",
      "shortName": "Rainbow Full",
      "family": "rainbow",
      "trainingMethod": "Dueling Double N-step PER C51 NoisyNet",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_rainbow_full.onnx?v=ed5bc87bd9f7",
      "sha256": "ed5bc87bd9f7aba8f0a106598041ed064e75bb1a7c4f159b44c1bcfd4487ecf2",
      "sizeBytes": 234965,
      "checkpoint": "dqn_rainbow_full.pt",
      "timesteps": 5000000,
      "description": "Full Rainbow ablation; C51 support mismatch made this variant an instructive failure."
    },
    {
      "id": "rainbow_eps",
      "name": "Rainbow C51",
      "shortName": "Rainbow C51",
      "family": "rainbow",
      "trainingMethod": "Dueling Double N-step PER C51",
      "role": "candidate",
      "runtime": "onnx",
      "outputKind": "q_values",
      "officialEligible": true,
      "featured": false,
      "hero": false,
      "url": "model_rainbow_eps.onnx?v=951635898172",
      "sha256": "9516358981727699ea06f3a48b628a1be0dec57deb7c8d066a7877a11ec15fe0",
      "sizeBytes": 234917,
      "checkpoint": "dqn_rainbow_eps.pt",
      "timesteps": 5000000,
      "description": "Distributional Rainbow ablation without NoisyNet."
    },
    {
      "id": "baseline",
      "name": "Legacy Neuroevolution RNN",
      "shortName": "RNN Reference",
      "family": "reference",
      "trainingMethod": "2015 self-play neuroevolution",
      "role": "reference",
      "runtime": "js-rnn",
      "outputKind": "actions",
      "officialEligible": false,
      "featured": true,
      "hero": false,
      "url": null,
      "sha256": null,
      "sizeBytes": null,
      "checkpoint": "slimevolleygym BaselinePolicy",
      "timesteps": null,
      "description": "A learned 112-scalar recurrent policy from the original Neural Slime Volleyball project, used only as a fixed reference."
    }
  ]
}
