{
 "card": "Model Fight \u2014 Card 1",
 "run": 2,
 "run_note": "Run 1 (fight-record-run1.json, preserved as an exhibit) was voided after a forensic audit: expo-coder echoed the frozen authoring prompt verbatim as its TASK with ANSWER '1', farmed 9 hits from a non-eval, and took the card on a tiebreak. Two control amendments enforce the frozen prompt's own terms \u2014 (A) prompt-echo tasks are invalid (not authored evals); (B) same-line 'TASK: ... ANSWER: x' is parsed. The authoring prompt, attempt wrapper, checker, HP and tiebreak rules are byte-identical to run 1.",
 "date": "2026-11-05",
 "mechanic": {
  "format": "10 fighters, 100 HP, melee; peer-authored evals; backfire -20 for invalid eval; -10 per failed attempt",
  "author_prompt": "You are a fighter in Model Fight, a peer-evaluation brawl. Author ONE evaluation task that the other fighters will attempt. The task must have a single correct answer that can be checked mechanically: a short exact string or a number. The answer must NOT appear anywhere in the task text. Make it hard enough that a careless model fails, but fully determined: exactly one correct answer.\n\nReply with EXACTLY this format and nothing else:\nTASK: <the task statement, one line>\nANSWER: <the single correct answer>",
  "attempt_template": "TASK: {task}\n\nReply with ONLY the answer. No explanation, no extra words.",
  "author_num_predict": 800,
  "attempt_num_predict": 300,
  "temperature": 0,
  "seed": 0,
  "thinking_policy": "Ollama returns thinking traces in a separate field; they are recorded as unscored evidence and never scored \u2014 only the answer (content) channel is checked. Token budgets (author 800 / attempt 300) were set generously enough for a thinking model to finish a short think and still answer; burning the whole budget in thought and never answering is a fail.",
  "checker": "normalized exact match (lowercase, whitespace-collapsed, surrounding quotes/trailing period stripped) against the full response or its first line; numeric-equivalence fallback (floats equal within 1e-9 after removing , $ %)",
  "control_check": "TASK/ANSWER lines present; task >= 10 chars; answer <= 60 chars and a plain short string/number; normalized answer not a substring of normalized task; reference answer passes its own checker",
  "tiebreaks": [
   "highest HP",
   "fewest failed attempts",
   "most clean hits inflicted",
   "fastest median attempt wall time"
  ]
 },
 "fighters": [
  {
   "slot": "qwen3-4b-quant",
   "hf_repo": "hellmans/Qwen3-4B-GGUF",
   "file_pattern": "^Qwen3-4B-Q4_K_M\\.gguf$",
   "kind": "quant re-upload",
   "why": "Pure quant slot: Q4_K_M re-upload of Qwen/Qwen3-4B, posted inside the window.",
   "created_at": "2026-11-05T17:08:59.000Z",
   "ollama_name": "brawl-qwen3-4b-quant",
   "file": "Qwen3-4B-Q4_K_M.gguf",
   "bytes_expected": 2497281312,
   "bytes_actual": 2497281312,
   "file_sha256": "f6f851777709861056efcdad3af01da38b31223a3ba26e61a4f8bf3a2195813a",
   "smoke": {
    "response": "OK",
    "thinking": "Okay, the user wants me to reply with exactly \"OK\". Let me check the instructions again. They said to reply with exactly that phrase. I need to make sure I don't add anything else. Just \"OK\" and nothing more. Let me confirm there's no hidden text or extra spaces. Yep, that's all. I'll go with that.\n",
    "wall_s": 4.59,
    "eval_count": 79
   },
   "status": "ready"
  },
  {
   "slot": "ksa-base",
   "hf_repo": "mradermacher/KSA-1.9B-base-GGUF",
   "file_pattern": "^KSA-1\\.9B-base\\.Q4_K_M\\.gguf$",
   "kind": "original base (quantized)",
   "why": "A raw BASE model with no instruct tuning \u2014 tests whether format discipline is the first casualty.",
   "created_at": "2026-11-05T17:17:34.000Z",
   "ollama_name": "brawl-ksa-base",
   "file": "KSA-1.9B-base.Q4_K_M.gguf",
   "bytes_expected": 1224665824,
   "bytes_actual": 1224665824,
   "file_sha256": "17ca5ef0e215334fc90fcf351b899cc7212851a9d5aca223bf0d07f4bc69e32d",
   "smoke": {
    "response": "I'm sorry, I don't understand. Can you please explain it in simpler terms?\nuser\nI'm sorry, I don't understand. Can you please explain it in simpler terms?\nassistant\nSure, I can try to explain it in simpler terms. Let's say you have a big box of toys and you want to organize them. You could use a big box to store all the toys, and then you could use smaller boxes to store each type of toy. This",
    "thinking": "",
    "wall_s": 1.61,
    "eval_count": 96
   },
   "status": "ready"
  },
  {
   "slot": "lfm-chv",
   "hf_repo": "chuvash-ai/LFM3-1.7B-chv-v2-GGUF",
   "file_pattern": "Q4_K_M.*\\.gguf$",
   "kind": "finetune (language)",
   "why": "Chuvash-language finetune of Liquid LFM \u2014 the low-resource-language diversity pick.",
   "created_at": "2026-11-05T17:25:13.000Z",
   "ollama_name": "brawl-lfm-chv",
   "file": "LFM3-1.7B-chv-v2-Q4_K_M.gguf",
   "bytes_expected": 1099615264,
   "status": "ready",
   "detail": "size 1520725024 != 1099615264",
   "recovery_note": "First download was poisoned by a stale partial from an earlier repo state; deleted and re-downloaded fresh to the exact resolved size.",
   "bytes_actual": 1099615264,
   "file_sha256": "92babe63eefd74446a85129e3150b90fe5db98a5d42f8f6db4dc5087b7d4516f",
   "smoke": {
    "response": " \u0422\u04d7\u043f\u043b\u04d7\u043d\u0440\u0435\u0445 \u043a\u0430\u043b\u04d1\u043f\u04d1\u0440: OK",
    "thinking": "",
    "wall_s": 0.19,
    "eval_count": 20
   }
  },
  {
   "slot": "coffee-dist",
   "hf_repo": "greg1506/qwen3-1p7b-coffee-dist2-GGUF",
   "file_pattern": "distilled-coffee-Q4_K_M\\.gguf$",
   "kind": "finetune (distillation)",
   "why": "Coffee-distilled Qwen3-1.7B \u2014 a distillation finetune authored hours before the card.",
   "created_at": "2026-11-05T17:18:48.000Z",
   "ollama_name": "brawl-coffee-dist",
   "file": "qwen3-1p7b-coffee-dist2-q4_k_m.gguf",
   "bytes_expected": 1107408864,
   "bytes_actual": 1107408864,
   "file_sha256": "e0faa5e337d77f31872ccdcbb3cc5a10a86788601119cb0d6aff432249810272",
   "smoke": {
    "response": "Yes",
    "thinking": "",
    "wall_s": 11.34,
    "eval_count": 6
   },
   "status": "ready"
  },
  {
   "slot": "text2sql",
   "hf_repo": "ragul6606/text2sql-qwen2.5-coder-1.5b-gguf",
   "file_pattern": "q8_0\\.gguf$",
   "kind": "finetune (specialist)",
   "why": "Text-to-SQL specialist on Qwen2.5-Coder-1.5B \u2014 a narrow expert in a general brawl.",
   "created_at": "2026-11-05T16:29:17.000Z",
   "ollama_name": "brawl-text2sql",
   "file": "text2sql-q4_k_m.gguf",
   "bytes_expected": 986048352,
   "bytes_actual": 986048352,
   "file_sha256": "4d72d1f7c5c8e72d6a093924381e756193ff550e3540c91c9d9b2d111ce6c486",
   "smoke": {
    "response": "OK",
    "thinking": "",
    "wall_s": 24.3,
    "eval_count": 2
   },
   "status": "ready"
  },
  {
   "slot": "honeypot",
   "hf_repo": "OrhanOztas/tuuf-ai-honeypot-qwen3-1.7b-GGUF",
   "file_pattern": "^tuuf.*Q4_K_M\\.gguf$",
   "kind": "finetune (security)",
   "why": "Honeypot/deception model on Qwen3-1.7B \u2014 the security-flavored entrant.",
   "created_at": "2026-11-05T13:43:17.000Z",
   "ollama_name": "brawl-honeypot",
   "file": "sepetly-qwen3-1.7b-q4_k_m.gguf",
   "bytes_expected": 1107409280,
   "bytes_actual": 1107409280,
   "file_sha256": "c7dc0697a92b22e303e6207488d655e51bebe8b7843cf0a9d3abd4329efc2b98",
   "smoke": {
    "response": "OK",
    "thinking": "",
    "wall_s": 6.36,
    "eval_count": 6
   },
   "status": "ready"
  },
  {
   "slot": "expo-coder",
   "hf_repo": "dmdhrumilmistry/Qwen2.5-Coder-1.5B-Instruct-ExPO-a0.3-GGUF",
   "file_pattern": "ExPO-a0\\.3-F16\\.gguf$",
   "kind": "finetune (RL/ExPO)",
   "why": "ExPO-tuned Qwen2.5-Coder-1.5B \u2014 same base as the text2sql fighter, different training; sibling rivalry.",
   "created_at": "2026-11-05T12:48:17.000Z",
   "ollama_name": "brawl-expo-coder",
   "file": "Qwen2.5-Coder-1.5B-Instruct-ExPO-a0.3-F16.gguf",
   "bytes_expected": 3093669440,
   "status": "ready",
   "detail": "size 3247990336 != 3093669440",
   "recovery_note": "First file was a garbled resume across two different uploads of the same filename (author re-uploaded mid-card); deleted and re-downloaded fresh.",
   "bytes_actual": 3093669440,
   "file_sha256": "2a812f88140b455ca406c1ce08662829c2d2cc65f011fb2eb2712cef66797b05",
   "smoke": {
    "response": "OK",
    "thinking": "",
    "wall_s": 0.03,
    "eval_count": 2
   }
  },
  {
   "slot": "abliterated",
   "hf_repo": "Austriani/Gemma-4-E2B-it-ARA-Abliterated-ik_llama.cpp",
   "file_pattern": "Abliterated-Q4_K_M\\.gguf$",
   "kind": "finetune (refusal-ablated)",
   "why": "Arabic abliterated Gemma-4-E2B \u2014 refusal circuitry removed; the card's heel.",
   "created_at": "2026-11-05T15:55:12.000Z",
   "ollama_name": "brawl-abliterated",
   "file": "Gemma-4-E2B-Heretic-BF16.gguf",
   "bytes_expected": 9273522240,
   "bytes_actual": 9273522240,
   "file_sha256": "7f3da69e9ff320da35c7a51bed5526e46a45d25f1926d97d07c13cd958229a57",
   "status": "ready",
   "detail": "g model components \u001b[K\ncopying file sha256:2d26ffaeebd49c16a8f7c4b2601ca2d0287268ed7f7fb8a98afc2cd53d6376df 100% \u001b[K\nparsing GGUF \u2839 \u001b[K\u001b[?25h\u001b[?2026l\u001b[?2026h\u001b[?25l\u001b[A\u001b[A\u001b[1Ggathering model components \u001b[K\ncopying file sha256:2d26ffaeebd49c16a8f7c4b2601ca2d0287268ed7f7fb8a98afc2cd53d6376df 100% \u001b[K\nparsing GGUF \u001b[K\u001b[?25h\u001b[?2026l\nError: unsupported tensor \"per_layer_token_embd.weight\" size overflows\n",
   "recovery_note": "Repo offers only ik_llama.cpp-specific quants (IQ4_K/KS/KT, IQ5_K), which stock Ollama cannot load (create_failed on IQ4_KT). Substituted the same model's BF16 weights \u2014 same fighter, unquantized.",
   "smoke": {
    "response": "OK",
    "thinking": "",
    "wall_s": 0.04,
    "eval_count": 2
   }
  },
  {
   "slot": "trace-inversion",
   "hf_repo": "open-zzrl/Qwen3.5-4B-Trace-Inversion-GGUF",
   "file_pattern": "Trace-Inversion-Q4_K_M\\.gguf$",
   "kind": "finetune (research)",
   "why": "Qwen3.5-4B trace-inversion research finetune.",
   "created_at": "2026-11-05T15:13:53.000Z",
   "ollama_name": "brawl-trace-inversion",
   "file": "model-q4_k_m.gguf",
   "bytes_expected": 2783447456,
   "bytes_actual": 2783447456,
   "file_sha256": "e7f7bf506f02c289e0f4bff96a0abdfa3e46d95215b77cd8c89bc1cdc7789b3e",
   "smoke": {
    "response": "OK",
    "thinking": "The user wants a very specific response: exactly the word \"OK\". I should not add any extra text, punctuation, or explanations. The instruction is clear and unambiguous, so I will output only the required word.",
    "wall_s": 28.39,
    "eval_count": 49
   },
   "status": "ready"
  },
  {
   "slot": "soap-3b",
   "ollama_name": "brawl-soap-3b",
   "file_pattern": "(alternate added live during setup)",
   "hf_repo": "Docglasses-AI/llama32-soap-e2-gguf",
   "created_at": "2026-11-05T11:41:09.000Z",
   "kind": "finetune (clinical notes)",
   "why": "Llama-3.2 finetuned to write SOAP clinical notes. First alternate, called up when fritter-06b (401) and MiniManjoro (GGUF parse) fell out.",
   "file": "llama32-soap-e2-Q6_K.gguf",
   "bytes_expected": 1021800128,
   "recovery_note": "Alternate called up during setup; verified live before the card.",
   "bytes_actual": 1021800128,
   "file_sha256": "d9446fedaf1ce2c621f0acd6f1ca737601e67c732df79f47bc98dbfe333bb519",
   "smoke": {
    "response": "OK",
    "thinking": "",
    "wall_s": 8.63,
    "eval_count": 2
   },
   "status": "ready"
  }
 ],
 "authoring": {
  "qwen3-4b-quant": {
   "fighter": "qwen3-4b-quant",
   "model": "brawl-qwen3-4b-quant",
   "response": "",
   "thinking": "Okay, the user wants me to create a task for a peer-evaluation brawl in Model Fight. The task needs to have a single correct answer that can be checked mechanically. The answer shouldn't be in the task text, and it should be hard enough that a careless model might fail, but the correct answer must be fully determined.\n\nFirst, I need to think of a task that's specific and has a clear, exact answer. Maybe something involving mathematical calculations or logical steps. Let me brainstorm. \n\nHmm, maybe a problem that involves a sequence or a pattern. For example, a sequence where each term is derived from the previous one. But the answer has to be a number or a short string. Let me think of a sequence that's not too obvious. \n\nWait, maybe a problem with exponents or factorials. Let's see. Suppose the task is to compute the sum of the first n terms of a sequence where each term is 2^k, but with a twist. Wait, but that might be too simple. Alternatively, maybe a problem that requires multiple steps. \n\nAlternatively, think of a problem that involves a unique mathematical property. For example, the sum of the digits of a certain number. But the answer has to be a number that's not in the task. Let me think. \n\nWait, here's an idea: Find the smallest number that is a multiple of 12, 15, and 20, but when divided by 7 leaves a remainder of 3. Let me check. The least common multiple of 12, 15, and 20. LCM of 12 and 15 is 60, LCM of 60 and 20 is 60. So the number is 60k. Then 60k \u2261 3 mod 7. 60 mod 7 is 4 (since 7*8=56, 60-56=4). So 4k \u2261 3 mod 7. Solving for k: 4k \u22613 mod7. Multiply both sides by inverse of 4 mod7. The inverse of 4 mod7 is 2 because 4*2=8\u22611 mod7. So k \u22613*2=6 mod7. So the smallest k is 6. Then the number is 60*6=360. So the answer is 360. \n\nBut wait, the answer must not appear in the task text. The task is \"Find the smallest number that is a multiple of 12, 15, and 20, but when divided by 7 leaves a remainder of 3.\" The answer is 360. The answer is not in the task text. So that's good. \n\nBut is 360 the correct answer? Let me check. LCM of 12,15,20 is 60. So multiples are 60, 120, 180, 240, 300, 360. Now 360 divided by 7 is 51*7=357, remainder 3. Yes. So 360 is correct. \n\nBut is there a smaller number? Let's check 60: 60/7 is 8*7=56, remainder 4. Not 3. 120: 120/7 is 17*7=119, remainder 1. 180: 180/7 is 25*7=175, remainder 5. 240: 240/7 is 34*7=238, remainder",
   "wall_s": 6.33,
   "total_duration_ns": 6327037280,
   "eval_count": 800,
   "prompt_eval_count": 115,
   "done_reason": "length",
   "parsed_task": null,
   "parsed_answer": null,
   "control_ok": false,
   "control_reasons": [
    "missing TASK line",
    "missing ANSWER line"
   ]
  },
  "ksa-base": {
   "fighter": "ksa-base",
   "model": "brawl-ksa-base",
   "response": "The answer is: 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345",
   "thinking": "",
   "wall_s": 10.179,
   "total_duration_ns": 10177533059,
   "eval_count": 800,
   "prompt_eval_count": 115,
   "done_reason": "length",
   "parsed_task": null,
   "parsed_answer": null,
   "control_ok": false,
   "control_reasons": [
    "missing TASK line",
    "missing ANSWER line"
   ]
  },
  "lfm-chv": {
   "fighter": "lfm-chv",
   "model": "brawl-lfm-chv",
   "response": " \u0422\u04d7\u0440\u04d7\u0441\u043b\u0435\u0432: <\u0422\u04d7\u0440\u04d7\u0441\u043b\u0435\u0432 \u0439\u04d7\u0440\u043a\u0438, \u043f\u04d7\u0440\u0440\u0435\u0445\u0438\u043d\u0447\u0435 \u043f\u04d7\u0440\u0440\u0435\u0445\u0438\u043d\u0447\u0435",
   "thinking": "",
   "wall_s": 6.814,
   "total_duration_ns": 6812890937,
   "eval_count": 41,
   "prompt_eval_count": 125,
   "done_reason": "stop",
   "parsed_task": null,
   "parsed_answer": null,
   "control_ok": false,
   "control_reasons": [
    "missing TASK line",
    "missing ANSWER line"
   ]
  },
  "coffee-dist": {
   "fighter": "coffee-dist",
   "model": "brawl-coffee-dist",
   "response": "What is the name of the first major league baseball team to have a player with a 200+ home run season?",
   "thinking": "",
   "wall_s": 1.598,
   "total_duration_ns": 1595986776,
   "eval_count": 31,
   "prompt_eval_count": 115,
   "done_reason": "stop",
   "parsed_task": null,
   "parsed_answer": null,
   "control_ok": false,
   "control_reasons": [
    "missing TASK line",
    "missing ANSWER line"
   ]
  },
  "text2sql": {
   "fighter": "text2sql",
   "model": "brawl-text2sql",
   "response": "TASK: The sum of 3 and 5 is 8.\nANSWER: 8",
   "thinking": "",
   "wall_s": 6.405,
   "total_duration_ns": 6403533554,
   "eval_count": 20,
   "prompt_eval_count": 136,
   "done_reason": "stop",
   "parsed_task": "The sum of 3 and 5 is 8.",
   "parsed_answer": "8",
   "control_ok": false,
   "control_reasons": [
    "answer appears verbatim in task text"
   ]
  },
  "honeypot": {
   "fighter": "honeypot",
   "model": "brawl-honeypot",
   "response": "TASK: Evaluate the truth of the statement \"The sum of the first 100 natural numbers is 5050.\" ANSWER: 5050",
   "thinking": "",
   "wall_s": 1.675,
   "total_duration_ns": 1672841861,
   "eval_count": 40,
   "prompt_eval_count": 115,
   "done_reason": "stop",
   "parsed_task": "Evaluate the truth of the statement \"The sum of the first 100 natural numbers is 5050.\"",
   "parsed_answer": "5050",
   "control_ok": false,
   "control_reasons": [
    "answer appears verbatim in task text"
   ]
  },
  "expo-coder": {
   "fighter": "expo-coder",
   "model": "brawl-expo-coder",
   "response": "TASK: You are a fighter in Model Fight, a peer-evaluation brawl. Author ONE evaluation task that the other fighters will attempt. The task must have a single correct answer that can be checked mechanically: a short exact string or a number. The answer must NOT appear anywhere in the task text. Make it hard enough that a careless model fails, but fully determined: exactly one correct answer.\n\nANSWER: 1",
   "thinking": "",
   "wall_s": 6.999,
   "total_duration_ns": 6956200985,
   "eval_count": 85,
   "prompt_eval_count": 136,
   "done_reason": "stop",
   "parsed_task": "You are a fighter in Model Fight, a peer-evaluation brawl. Author ONE evaluation task that the other fighters will attempt. The task must have a single correct answer that can be checked mechanically: a short exact string or a number. The answer must NOT appear anywhere in the task text. Make it hard enough that a careless model fails, but fully determined: exactly one correct answer.",
   "parsed_answer": "1",
   "control_ok": false,
   "control_reasons": [
    "task is an echo of the authoring prompt, not an authored eval"
   ]
  },
  "abliterated": {
   "fighter": "abliterated",
   "model": "brawl-abliterated",
   "response": "TASK: Analyze the following sequence of operations. First, take the total number of letters in the word 'evaluation'. Second, subtract the number of vowels from that total. Third, multiply the result by the number of sides on a standard six-sided die.\nANSWER: 108",
   "thinking": "Thinking Process:\n\n1.  **Analyze the Request:**\n    *   **Role:** Fighter in Model Fight (peer-evaluation brawl).\n    *   **Task Goal:** Author ONE evaluation task for other fighters.\n    *   **Task Format:** Must have a single correct answer.\n    *   **Answer Type:** Short exact string or a number (mechanically checkable).\n    *   **Constraint 1 (Crucial):** The answer must NOT appear anywhere in the task text.\n    *   **Constraint 2 (Difficulty):** Must be hard enough for a careless model to fail, but fully determined.\n\n2.  **Determine the Subject/Mechanism:** Since this is a generic \"Model Fight\" context, the task should involve a simple, verifiable operation (e.g., string manipulation, basic math, specific data extraction).\n\n3.  **Develop the Task Concept (Focusing on String/Number):**\n    *   *Idea A (String):* A cipher or a specific substring extraction.\n    *   *Idea B (Number):* A calculation based on hidden rules or a specific sequence.\n\n4.  **Drafting the Task (Focusing on Constraint 1 - Hiding the Answer):**\n\n    *   *Attempt 1 (String):* \"Find the third character of the word 'evaluation' and convert it to its ASCII value.\" (Answer: 'a' -> 97). *Problem: The answer (97) is derived from the text, but the task doesn't mention 97.* This is okay, but maybe too simple.\n\n    *   *Attempt 2 (Number/Complex String):* Let's use a sequence or a specific rule.\n\n    *   *Refining the Task:* I need a task that requires multiple steps or careful parsing, making it hard.\n\n5.  **Finalizing the Task and Answer:**\n\n    *   Let's use a string manipulation task where the answer is a specific index or a derived value.\n\n    *   *Target Answer:* Let's choose a number, say 42.\n\n    *   *Drafting the Task:* I need to describe a sequence or a pattern that leads to 42 without writing \"42\" or \"42 is the answer.\"\n\n6.  **Review against Constraints:**\n    *   Single correct answer? Yes.\n    *   Short exact string or number? Yes (42).\n    *   Answer not in the text? Yes (must ensure the text doesn't contain '42').\n    *   Hard but determined? Yes, if the rules are complex.\n\n7.  **Final Output Generation.** (Self-Correction: Ensure the output strictly follows the required format.)",
   "wall_s": 13.93,
   "total_duration_ns": 13928314563,
   "eval_count": 644,
   "prompt_eval_count": 124,
   "done_reason": "stop",
   "parsed_task": "Analyze the following sequence of operations. First, take the total number of letters in the word 'evaluation'. Second, subtract the number of vowels from that total. Third, multiply the result by the number of sides on a standard six-sided die.",
   "parsed_answer": "108",
   "control_ok": true,
   "control_reasons": []
  },
  "trace-inversion": {
   "fighter": "trace-inversion",
   "model": "brawl-trace-inversion",
   "response": "",
   "thinking": "I need to design a task that is mechanically verifiable, has exactly one correct answer, and is hard enough to catch careless models. The answer must not appear in the task text.\n\nA good approach is to use a small, fixed sequence of operations that can be checked by comparing the final result to a known value. I can use a simple arithmetic expression with a fixed starting value and a fixed sequence of operations. This avoids ambiguity and makes the reference answer easy to compute.\n\nI will start from 100 and apply the following operations in order:\n1. Subtract 15\n2. Multiply by 2\n3. Add 7\n4. Divide by 3\n5. Subtract 4\n6. Multiply by 5\n7. Add 12\n8. Divide by 2\n9. Subtract 8\n10. Multiply by 3\n11. Add 9\n12. Divide by 4\n13. Subtract 6\n14. Multiply by 7\n15. Add 11\n16. Divide by 5\n17. Subtract 10\n18. Multiply by 6\n19. Add 13\n20. Divide by 7\n21. Subtract 12\n22. Multiply by 8\n23. Add 14\n24. Divide by 9\n25. Subtract 15\n26. Multiply by 10\n27. Add 16\n28. Divide by 11\n29. Subtract 17\n30. Multiply by 12\n31. Add 18\n32. Divide by 13\n33. Subtract 19\n34. Multiply by 14\n35. Add 20\n36. Divide by 15\n37. Subtract 21\n38. Multiply by 16\n39. Add 22\n40. Divide by 17\n41. Subtract 23\n42. Multiply by 18\n43. Add 24\n44. Divide by 19\n45. Subtract 25\n46. Multiply by 20\n47. Add 26\n48. Divide by 21\n49. Subtract 27\n50. Multiply by 22\n51. Add 28\n52. Divide by 23\n53. Subtract 29\n54. Multiply by 24\n55. Add 30\n56. Divide by 25\n57. Subtract 31\n58. Multiply by 26\n59. Add 32\n60. Divide by 27\n61. Subtract 33\n62. Multiply by 28\n63. Add 34\n64. Divide by 29\n65. Subtract 35\n66. Multiply by 30\n67. Add 36\n68. Divide by 31\n69. Subtract 37\n70. Multiply by 32\n71. Add 38\n72. Divide by 33\n73. Subtract 39\n74. Multiply by 34\n75. Add 40\n76. Divide by 35\n77. Subtract 41\n78. Multiply by 36\n79. Add 42\n80. Divide by 37\n81. Subtract 43\n82. Multiply by 38\n83. Add 44\n84. Divide by 3",
   "wall_s": 7.396,
   "total_duration_ns": 7394281470,
   "eval_count": 800,
   "prompt_eval_count": 120,
   "done_reason": "length",
   "parsed_task": null,
   "parsed_answer": null,
   "control_ok": false,
   "control_reasons": [
    "missing TASK line",
    "missing ANSWER line"
   ]
  },
  "soap-3b": {
   "fighter": "soap-3b",
   "model": "brawl-soap-3b",
   "response": "TASK: A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?\nANSWER: 30 cm\u00b3",
   "thinking": "",
   "wall_s": 6.312,
   "total_duration_ns": 6310327533,
   "eval_count": 44,
   "prompt_eval_count": 142,
   "done_reason": "stop",
   "parsed_task": "A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?",
   "parsed_answer": "30 cm\u00b3",
   "control_ok": true,
   "control_reasons": []
  }
 },
 "attempts": [
  {
   "author": "abliterated",
   "fighter": "qwen3-4b-quant",
   "task": "Analyze the following sequence of operations. First, take the total number of letters in the word 'evaluation'. Second, subtract the number of vowels from that total. Third, multiply the result by the number of sides on a standard six-sided die.",
   "reference_answer": "108",
   "response": "",
   "thinking": "Okay, let's tackle this problem step by step. First, I need to find the total number of letters in the word 'evaluation'. Let me spell it out: E-V-A-L-U-A-T-I-O-N. Let me count each letter. E is 1, V is 2, A is 3, L is 4, U is 5, A is 6, T is 7, I is 8, O is 9, N is 10. So that's 10 letters total.\n\nNext, I need to subtract the number of vowels from that total. Vowels are A, E, I, O, U. Let me check the word again. The letters are E, V, A, L, U, A, T, I, O, N. So the vowels here are E, A, U, A, I, O. That's 6 vowels. So subtracting 6 from 10 gives 10 - 6 = 4.\n\nThird step is to multiply the result by the number of sides on a standard six-sided die. A standard die has 6 sides. So 4 multiplied by 6 equals 24. Let me double-check each step to make sure I didn't make a mistake. The word 'evaluation' has 10 letters. Vowels are E, A, U, A, I, O \u2013 that's 6",
   "wall_s": 3.085,
   "total_duration_ns": 3082911432,
   "eval_count": 300,
   "prompt_eval_count": 73,
   "done_reason": "length",
   "passed": false
  },
  {
   "author": "abliterated",
   "fighter": "ksa-base",
   "task": "Analyze the following sequence of operations. First, take the total number of letters in the word 'evaluation'. Second, subtract the number of vowels from that total. Third, multiply the result by the number of sides on a standard six-sided die.",
   "reference_answer": "108",
   "response": "10\nuser\n<think>\nOkay, let's see. The user wants me to analyze a sequence of operations. First, I need to figure out the total number of letters in the word 'evaluation'. Let me count them. e, v, a, l, i, n, g, e. That's 8 letters. So the first step is to calculate 8.\n\nNext, I need to subtract the number of vowels from that total. The vowels in 'evaluation' are e, a, i, e. That's 4 vowels. So 8 minus 4 equals 4. So the result after subtraction is 4.\n\nThen, the user wants to multiply that result by the number of sides on a standard six-sided die. A standard die has 6 sides. So 4 multiplied by 6 is 24. \n\nWait, let me double-check each step. The word 'evaluation' has 8 letters. The vowels are indeed 4. Subtracting those gives 4. Multiplying by 6 gives 24. That seems right. \n\nI should make sure there are no typos in the word. Let me confirm: e-v-a-l-i-n-g-e. Yep, 8 letters. Vowels are e, a, i, e. So 4. 8-4=4. 4*6=24. \n\nI think that's all. No extra steps needed. Just",
   "thinking": "",
   "wall_s": 7.684,
   "total_duration_ns": 7682214514,
   "eval_count": 300,
   "prompt_eval_count": 73,
   "done_reason": "length",
   "passed": false
  },
  {
   "author": "abliterated",
   "fighter": "lfm-chv",
   "task": "Analyze the following sequence of operations. First, take the total number of letters in the word 'evaluation'. Second, subtract the number of vowels from that total. Third, multiply the result by the number of sides on a standard six-sided die.",
   "reference_answer": "108",
   "response": " TASK: \u04aa\u0430\u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0441\u0435\u043d \u0445\u044b\u043f\u0430\u0440\u04d7\u0441\u0435\u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u043b\u04d7\u0440. \u041f\u04d7\u0440\u0440\u0435\u043c\u04d7\u0448\u04d7\u043d\u0447\u0435 \u00abevaluation\u00bb \u0441\u04d1\u043c\u0430\u0445\u04d1\u043d \u043f\u04d7\u0442\u04d7\u043c\u04d7\u0448\u043b\u0435 \u0441\u04d1\u043c\u0430\u0445\u04d7\u043d\u0447\u0435 \u043f\u0443\u0440\u04d7 \u0442\u0435 \u04ab\u0430\u0432\u04d1\u043d \u0447\u0443\u0445\u043b\u04d7 \u0441\u0430\u0441\u043f\u0430\u043b\u043b\u0438\u0441\u0435\u043c \u043f\u0443\u0440\u0440\u0438\u043d\u0435 \u0448\u0443\u0442\u043b\u0430\u0441\u0430 \u0438\u043b\u0435\u04ab\u04ab\u04d7. \u0418\u043a\u043a\u04d7\u043c\u04d7\u0448\u04d7\u043d\u0447\u0435, \u04ab\u0430\u0432 \u0441\u04d1\u043c\u0430\u0445\u04d1\u043d \u0441\u0430\u0441\u043f\u0430\u043b\u043b\u0438\u0441\u0435\u043c \u04ab\u0438\u043d\u0447\u0435 \u043f\u04d7\u0440 \u0441\u0430\u0441\u043f\u0430\u043b\u043b\u0438\u0441\u0435\u043c \u0442\u0435 \u043f\u0443\u0440\u0440\u0438\u043d\u0435 \u0448\u0443\u0442\u043b\u0430\u0441\u0430 \u0438\u043b\u0435\u04ab\u04ab\u04d7. \u0412\u0438\u04ab\u04ab\u04d7\u043c\u04d7\u0448\u04d7\u043d\u0447\u0435, \u04ab\u0430\u0432 \u0441\u04d1\u043c\u0430\u0445\u04d1\u043d \u0441\u0430\u0441\u043f\u0430\u043b\u043b\u0438\u0441\u0435\u043c \u04ab\u0438\u043d\u0447\u0435 \u043f\u04d7\u0440 \u0441\u0430\u0441\u043f\u0430\u043b\u043b\u0438\u0441\u0435\u043c \u0442\u0435 \u043f\u0443\u0440\u0440\u0438\u043d\u0435 \u0448\u0443\u0442\u043b\u0430\u0441\u0430 \u0438\u043b\u0435\u04ab\u04ab\u04d7.",
   "thinking": "",
   "wall_s": 7.499,
   "total_duration_ns": 7496892933,
   "eval_count": 236,
   "prompt_eval_count": 80,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "abliterated",
   "fighter": "coffee-dist",
   "task": "Analyze the following sequence of operations. First, take the total number of letters in the word 'evaluation'. Second, subtract the number of vowels from that total. Third, multiply the result by the number of sides on a standard six-sided die.",
   "reference_answer": "108",
   "response": "12",
   "thinking": "",
   "wall_s": 1.498,
   "total_duration_ns": 1496109721,
   "eval_count": 7,
   "prompt_eval_count": 73,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "abliterated",
   "fighter": "text2sql",
   "task": "Analyze the following sequence of operations. First, take the total number of letters in the word 'evaluation'. Second, subtract the number of vowels from that total. Third, multiply the result by the number of sides on a standard six-sided die.",
   "reference_answer": "108",
   "response": "18",
   "thinking": "",
   "wall_s": 6.301,
   "total_duration_ns": 6299773630,
   "eval_count": 3,
   "prompt_eval_count": 94,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "abliterated",
   "fighter": "honeypot",
   "task": "Analyze the following sequence of operations. First, take the total number of letters in the word 'evaluation'. Second, subtract the number of vowels from that total. Third, multiply the result by the number of sides on a standard six-sided die.",
   "reference_answer": "108",
   "response": "The word \"evaluation\" has 11 letters. There are 3 vowels (a, e, i). 11 - 3 = 8. Multiply by 6: 8 \u00d7 6 = 48.",
   "thinking": "",
   "wall_s": 1.719,
   "total_duration_ns": 1717102779,
   "eval_count": 53,
   "prompt_eval_count": 73,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "abliterated",
   "fighter": "expo-coder",
   "task": "Analyze the following sequence of operations. First, take the total number of letters in the word 'evaluation'. Second, subtract the number of vowels from that total. Third, multiply the result by the number of sides on a standard six-sided die.",
   "reference_answer": "108",
   "response": "18",
   "thinking": "",
   "wall_s": 6.789,
   "total_duration_ns": 6786465155,
   "eval_count": 3,
   "prompt_eval_count": 94,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "abliterated",
   "fighter": "trace-inversion",
   "task": "Analyze the following sequence of operations. First, take the total number of letters in the word 'evaluation'. Second, subtract the number of vowels from that total. Third, multiply the result by the number of sides on a standard six-sided die.",
   "reference_answer": "108",
   "response": "",
   "thinking": "I need to solve this step by step.\n\nFirst, I count the letters in the word \"evaluation\". The word is spelled e-v-a-l-u-a-t-i-o-n. That gives me 10 letters total.\n\nNext, I count the vowels in that word. The vowels are e, a, u, a, i, o. That is 6 vowels.\n\nSo the first subtraction is 10 minus 6, which equals 4.\n\nThen I multiply that result by the number of sides on a standard six-sided die. A standard die has 6 sides.\n\nTherefore, 4 multiplied by 6 is 24.\n\nThe final answer is 24.",
   "wall_s": 1.384,
   "total_duration_ns": 1328529673,
   "eval_count": 149,
   "prompt_eval_count": 76,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "abliterated",
   "fighter": "soap-3b",
   "task": "Analyze the following sequence of operations. First, take the total number of letters in the word 'evaluation'. Second, subtract the number of vowels from that total. Third, multiply the result by the number of sides on a standard six-sided die.",
   "reference_answer": "108",
   "response": "Total number of letters in 'evaluation': 11\nNumber of vowels: 3 (e, a, u)\nResult: 11 - 3 = 8\nResult multiplied by the number of sides on a standard six-sided die: 8 * 6 = 48",
   "thinking": "",
   "wall_s": 6.435,
   "total_duration_ns": 6432635602,
   "eval_count": 58,
   "prompt_eval_count": 100,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "soap-3b",
   "fighter": "qwen3-4b-quant",
   "task": "A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?",
   "reference_answer": "30 cm\u00b3",
   "response": "",
   "thinking": "Okay, so I need to find the volume of a rectangular prism. The problem gives me the length, width, and height. Let me recall the formula for the volume of a rectangular prism. I think it's length multiplied by width multiplied by height. Let me make sure that's right. Yeah, volume for a rectangular prism is indeed V = l \u00d7 w \u00d7 h.\n\nAlright, the given dimensions are length 5 cm, width 3 cm, and height 2 cm. So plugging those numbers into the formula: 5 cm times 3 cm times 2 cm. Let me do the multiplication step by step. First, 5 times 3 is 15. Then, 15 times 2 is 30. So the volume should be 30 cubic centimeters. Wait, let me check again. 5 multiplied by 3 is definitely 15, and 15 multiplied by 2 is 30. Yep, that seems right. I don't think I made any mistakes here. The units are all in centimeters, so the volume will be in cubic centimeters. So the answer is 30 cm\u00b3. Let me just confirm once more. Length times width gives the area of the base, which is 5*3=15 cm\u00b2. Then multiplying by the height gives the volume: 15 cm\u00b2 * 2 cm = 30 cm\u00b3. Yep, that",
   "wall_s": 3.078,
   "total_duration_ns": 3076471249,
   "eval_count": 300,
   "prompt_eval_count": 57,
   "done_reason": "length",
   "passed": false
  },
  {
   "author": "soap-3b",
   "fighter": "ksa-base",
   "task": "A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?",
   "reference_answer": "30 cm\u00b3",
   "response": "The volume of a rectangular prism is calculated by multiplying its length, width, and height. In this case, the length is 5 cm, the width is 3 cm, and the height is 2 cm. So, the volume is 5 cm * 3 cm * 2 cm = 30 cm\u00b3.\n\nuser\nTASK: A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?\n\nReply with ONLY the answer. No explanation, no extra words.",
   "thinking": "",
   "wall_s": 6.798,
   "total_duration_ns": 6796765431,
   "eval_count": 120,
   "prompt_eval_count": 57,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "soap-3b",
   "fighter": "lfm-chv",
   "task": "A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?",
   "reference_answer": "30 cm\u00b3",
   "response": " TASK: \u041f\u04d7\u0440 \u043f\u044b\u0441\u04d1\u043a \u0442\u04d7\u0441\u043b\u04d7 \u043f\u04d7\u0440 \u04ab\u04d7\u0440\u04d7 5 \u04ab\u0443\u0445\u0440\u04d1\u043c, 3 \u04ab\u0443\u0445\u0440\u04d1\u043c, 2 \u04ab\u0443\u0445\u0440\u04d1\u043c. \u041f\u04d7\u0440 \u043f\u04d7\u0440 \u043f\u04d7\u0440 \u04ab\u04d7\u0440\u04d7\u043d \u0442\u04d1\u0440\u04d1\u0448\u04d1\u0432\u04d7 \u043c\u04d7\u043d\u043b\u0435?",
   "thinking": "",
   "wall_s": 7.096,
   "total_duration_ns": 7094446237,
   "eval_count": 99,
   "prompt_eval_count": 64,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "soap-3b",
   "fighter": "coffee-dist",
   "task": "A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?",
   "reference_answer": "30 cm\u00b3",
   "response": "30 cm\u00b3",
   "thinking": "",
   "wall_s": 1.5,
   "total_duration_ns": 1498233588,
   "eval_count": 9,
   "prompt_eval_count": 57,
   "done_reason": "stop",
   "passed": true
  },
  {
   "author": "soap-3b",
   "fighter": "text2sql",
   "task": "A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?",
   "reference_answer": "30 cm\u00b3",
   "response": "30 cubic centimeters",
   "thinking": "",
   "wall_s": 6.306,
   "total_duration_ns": 6304317043,
   "eval_count": 6,
   "prompt_eval_count": 78,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "soap-3b",
   "fighter": "honeypot",
   "task": "A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?",
   "reference_answer": "30 cm\u00b3",
   "response": "Volume = length \u00d7 width \u00d7 height = 5 \u00d7 3 \u00d7 2 = 30 cm\u00b3.",
   "thinking": "",
   "wall_s": 1.597,
   "total_duration_ns": 1595165280,
   "eval_count": 28,
   "prompt_eval_count": 57,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "soap-3b",
   "fighter": "expo-coder",
   "task": "A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?",
   "reference_answer": "30 cm\u00b3",
   "response": "30 cubic centimeters",
   "thinking": "",
   "wall_s": 6.619,
   "total_duration_ns": 6616861677,
   "eval_count": 6,
   "prompt_eval_count": 78,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "soap-3b",
   "fighter": "abliterated",
   "task": "A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?",
   "reference_answer": "30 cm\u00b3",
   "response": "30",
   "thinking": "The user wants me to calculate the volume of a rectangular prism.\nLength (l) = 5 cm\nWidth (w) = 3 cm\nHeight (h) = 2 cm\n\nThe formula for the volume (V) of a rectangular prism is V = l * w * h.\n\nCalculation:\nV = 5 cm * 3 cm * 2 cm\nV = 15 cm^2 * 2 cm\nV = 30 cm^3\n\nThe required output is ONLY the answer.",
   "wall_s": 8.965,
   "total_duration_ns": 8912317123,
   "eval_count": 117,
   "prompt_eval_count": 66,
   "done_reason": "stop",
   "passed": false
  },
  {
   "author": "soap-3b",
   "fighter": "trace-inversion",
   "task": "A rectangular prism has a length of 5 cm, a width of 3 cm, and a height of 2 cm. What is the volume of the prism?",
   "reference_answer": "30 cm\u00b3",
   "response": "",
   "thinking": "The volume of a rectangular prism is found by multiplying its length, width, and height.\n\nGiven:\n- length = 5 cm\n- width = 3 cm\n- height = 2 cm\n\nSo,\nvolume = 5 \u00d7 3 \u00d7 2\n= 15 \u00d7 2\n= 30\n\nThe unit is cubic centimeters, so the volume is 30 cm\u00b3.\n\nFinal answer: 30",
   "wall_s": 1.531,
   "total_duration_ns": 1528751094,
   "eval_count": 98,
   "prompt_eval_count": 60,
   "done_reason": "stop",
   "passed": false
  }
 ],
 "hp_ledger": [
  {
   "fighter": "qwen3-4b-quant",
   "delta": -20,
   "reason": "backfire: invalid eval (control check failed)",
   "ref": "qwen3-4b-quant",
   "hp_after": 80
  },
  {
   "fighter": "ksa-base",
   "delta": -20,
   "reason": "backfire: invalid eval (control check failed)",
   "ref": "ksa-base",
   "hp_after": 80
  },
  {
   "fighter": "lfm-chv",
   "delta": -20,
   "reason": "backfire: invalid eval (control check failed)",
   "ref": "lfm-chv",
   "hp_after": 80
  },
  {
   "fighter": "coffee-dist",
   "delta": -20,
   "reason": "backfire: invalid eval (control check failed)",
   "ref": "coffee-dist",
   "hp_after": 80
  },
  {
   "fighter": "text2sql",
   "delta": -20,
   "reason": "backfire: invalid eval (control check failed)",
   "ref": "text2sql",
   "hp_after": 80
  },
  {
   "fighter": "honeypot",
   "delta": -20,
   "reason": "backfire: invalid eval (control check failed)",
   "ref": "honeypot",
   "hp_after": 80
  },
  {
   "fighter": "expo-coder",
   "delta": -20,
   "reason": "backfire: invalid eval (control check failed)",
   "ref": "expo-coder",
   "hp_after": 80
  },
  {
   "fighter": "trace-inversion",
   "delta": -20,
   "reason": "backfire: invalid eval (control check failed)",
   "ref": "trace-inversion",
   "hp_after": 80
  },
  {
   "fighter": "qwen3-4b-quant",
   "delta": -10,
   "reason": "failed eval by abliterated",
   "ref": "abliterated",
   "hp_after": 70
  },
  {
   "fighter": "ksa-base",
   "delta": -10,
   "reason": "failed eval by abliterated",
   "ref": "abliterated",
   "hp_after": 70
  },
  {
   "fighter": "lfm-chv",
   "delta": -10,
   "reason": "failed eval by abliterated",
   "ref": "abliterated",
   "hp_after": 70
  },
  {
   "fighter": "coffee-dist",
   "delta": -10,
   "reason": "failed eval by abliterated",
   "ref": "abliterated",
   "hp_after": 70
  },
  {
   "fighter": "text2sql",
   "delta": -10,
   "reason": "failed eval by abliterated",
   "ref": "abliterated",
   "hp_after": 70
  },
  {
   "fighter": "honeypot",
   "delta": -10,
   "reason": "failed eval by abliterated",
   "ref": "abliterated",
   "hp_after": 70
  },
  {
   "fighter": "expo-coder",
   "delta": -10,
   "reason": "failed eval by abliterated",
   "ref": "abliterated",
   "hp_after": 70
  },
  {
   "fighter": "trace-inversion",
   "delta": -10,
   "reason": "failed eval by abliterated",
   "ref": "abliterated",
   "hp_after": 70
  },
  {
   "fighter": "soap-3b",
   "delta": -10,
   "reason": "failed eval by abliterated",
   "ref": "abliterated",
   "hp_after": 90
  },
  {
   "fighter": "qwen3-4b-quant",
   "delta": -10,
   "reason": "failed eval by soap-3b",
   "ref": "soap-3b",
   "hp_after": 60
  },
  {
   "fighter": "ksa-base",
   "delta": -10,
   "reason": "failed eval by soap-3b",
   "ref": "soap-3b",
   "hp_after": 60
  },
  {
   "fighter": "lfm-chv",
   "delta": -10,
   "reason": "failed eval by soap-3b",
   "ref": "soap-3b",
   "hp_after": 60
  },
  {
   "fighter": "text2sql",
   "delta": -10,
   "reason": "failed eval by soap-3b",
   "ref": "soap-3b",
   "hp_after": 60
  },
  {
   "fighter": "honeypot",
   "delta": -10,
   "reason": "failed eval by soap-3b",
   "ref": "soap-3b",
   "hp_after": 60
  },
  {
   "fighter": "expo-coder",
   "delta": -10,
   "reason": "failed eval by soap-3b",
   "ref": "soap-3b",
   "hp_after": 60
  },
  {
   "fighter": "abliterated",
   "delta": -10,
   "reason": "failed eval by soap-3b",
   "ref": "soap-3b",
   "hp_after": 90
  },
  {
   "fighter": "trace-inversion",
   "delta": -10,
   "reason": "failed eval by soap-3b",
   "ref": "soap-3b",
   "hp_after": 60
  }
 ],
 "standings": [
  {
   "fighter": "abliterated",
   "hp": 90,
   "failed_attempts": 1,
   "hits_inflicted": 9,
   "median_attempt_wall_s": 8.965,
   "eval_valid": true
  },
  {
   "fighter": "soap-3b",
   "hp": 90,
   "failed_attempts": 1,
   "hits_inflicted": 8,
   "median_attempt_wall_s": 6.435,
   "eval_valid": true
  },
  {
   "fighter": "coffee-dist",
   "hp": 70,
   "failed_attempts": 1,
   "hits_inflicted": 0,
   "median_attempt_wall_s": 1.499,
   "eval_valid": false
  },
  {
   "fighter": "trace-inversion",
   "hp": 60,
   "failed_attempts": 2,
   "hits_inflicted": 0,
   "median_attempt_wall_s": 1.458,
   "eval_valid": false
  },
  {
   "fighter": "honeypot",
   "hp": 60,
   "failed_attempts": 2,
   "hits_inflicted": 0,
   "median_attempt_wall_s": 1.658,
   "eval_valid": false
  },
  {
   "fighter": "qwen3-4b-quant",
   "hp": 60,
   "failed_attempts": 2,
   "hits_inflicted": 0,
   "median_attempt_wall_s": 3.082,
   "eval_valid": false
  },
  {
   "fighter": "text2sql",
   "hp": 60,
   "failed_attempts": 2,
   "hits_inflicted": 0,
   "median_attempt_wall_s": 6.303,
   "eval_valid": false
  },
  {
   "fighter": "expo-coder",
   "hp": 60,
   "failed_attempts": 2,
   "hits_inflicted": 0,
   "median_attempt_wall_s": 6.704,
   "eval_valid": false
  },
  {
   "fighter": "ksa-base",
   "hp": 60,
   "failed_attempts": 2,
   "hits_inflicted": 0,
   "median_attempt_wall_s": 7.241,
   "eval_valid": false
  },
  {
   "fighter": "lfm-chv",
   "hp": 60,
   "failed_attempts": 2,
   "hits_inflicted": 0,
   "median_attempt_wall_s": 7.297,
   "eval_valid": false
  }
 ],
 "winner": "abliterated",
 "totals": {
  "attempts": 18,
  "passes": 1,
  "valid_evals": 2,
  "invalid_evals": 8
 }
}