{
  "id": 693745,
  "title": "AMO: Agentic Math Orchestrator for Olympiad Mathematics",
  "content": "<h2>Abstract</h2>\n<p>We present <strong>AMO</strong>(Agentic Math Orchestrator), a multi-layer orchestration architecture designed to maximize the inference-time capabilities of frozen open-weight Large Language Models (LLMs) on olympiad-level mathematics. Operating under a strict 5-hour, single-GPU competition environment without internet access, AMO wraps GPT-OSS-120B with parallel reasoning, an asynchronous verification pipeline, real-time trajectory auditing, evidence-weighted answer selection, and topology-aware routing. Rather than fine-tuning the model, we treat mathematical robustness as a systems-engineering challenge. We introduce novel mechanisms including a pre-generation Scout Pool for structural classification, an Adaptive Orchestrator for continuous time-budgeting, dynamic switching between Standard and Agentic Beam Search modes, and a Master Vision conflict-resolution pipeline. We achieved a top public score of 45 using our baseline architecture and 41 using the fully orchestrated AMO version. Through extensive ablations, trace analysis, and local benchmark testing, we document specific LLM failure modes in competitive mathematics—such as extremum bias, execution timeouts, and frame-sensitive divergence—and present our architectural mitigations.</p>\n<hr>\n<h2>SECTION 1 — Introduction</h2>\n<p>The AI Mathematical Olympiad (AIMO) Progress Prize 3 presents a unique test-time compute challenge: solve 50 original, olympiad-level mathematical problems spanning algebra, combinatorics, geometry, and number theory within a 5-hour wall-clock budget on a single H100 GPU. The environment is strictly constrained—no internet access, no external APIs, and no opportunity for between-submission fine-tuning. Furthermore, the competition scoring heavily penalizes inconsistency; each submission is evaluated twice on the private set, awarding a half-point only if one run is correct. Consequently, mathematical robustness under inference constraints matters as much as the raw capability of the underlying model.</p>\n<p>This paper addresses a central challenge: given a powerful, frozen open-weight model (GPT-OSS-120B), how do we build an agentic system that converts high theoretical <em>pass@K</em> capability into reliable, single-submission correctness? The baseline notebooks on OSS120B had shown the high ceiling of it. With the limited time and resources in the competition period, we decided to focus on improving the efficiency and stability of oss120B solvers by creating an agentic dynamic time aware system to maximize the ceiling and floor. Through careful analysis we found many failure points, which could be solved/improved by optimized agentic solutions rather than focusing on a fine tuning to hope for a blackbox solution.</p>\n<p>The standard baseline approach to this problem—simply running $N$ parallel Tool-Integrated Reasoning (TIR) solvers and applying majority voting—is highly inefficient. Blind parallel generation wastes massive amounts of compute on \"doomed\" reasoning paths. If a solver misinterprets the problem in Turn 1, the subsequent twenty minutes of generation and Python execution are effectively dead compute. Furthermore, blind majority voting is vulnerable to \"false majorities,\" where multiple solvers anchor onto the same flawed assumption and confidently confirm one another's incorrect answers. </p>\n<p>To revolutionize this baseline, we introduce the <strong>Agentic Math Orchestrator (AMO)</strong>. AMO steps away from blind parallel generation, transforming the LLM into a highly structured, asynchronous multi-agent research team. The entire lifecycle of a problem is meticulously managed from end to end:</p>\n<ol>\n<li><strong>Pre-Computation Scouting:</strong> Before any heavy solving begins, a pool of \"Scout\" agents maps the structural topology of the problem (e.g., mathematical domain, extremum traps, large-number bounds).</li>\n<li><strong>Dynamic Routing &amp; Budgeting:</strong> An adaptive orchestrator evaluates the remaining wall-clock time and routes the problem to either <strong>Standard Mode</strong> (using parallel solvers seeded by a MiniPlanner pool) or <strong>Beam Mode</strong> (a deep, self-evaluating search tree), continuously adjusting resource allocation to ensure no problem is starved of compute.</li>\n<li><strong>Async Summarization Verification &amp; Master Vision:</strong> As soon as any solver proposes an answer, an asynchronous Summarizer and Bug Report (Verifier) pipeline is launched in the background. If competing answers without a majority emerge, a Master Vision agent synthesizes the findings to launch targeted \"Resolver\" agents, preventing the system from guessing blindly.</li>\n</ol>\n<p>A cornerstone of our architecture is the <strong>Agentic Beam Search</strong>. Designed to artificially compress the model’s $pass@20$ capability into a smaller compute footprint, this mode pauses parallel solvers mid-flight to conduct adversarial self-evaluations. By pruning mathematically unviable trajectories and applying Maximum Marginal Relevance (MMR) text-clustering to the surviving paths, we force mathematical diversity. This ensures the model searches fundamentally distinct frameworks rather than racing down identical dead ends, drastically increasing the odds of finding the correct solution.</p>\n<p>To reliably extract the correct answer from this agentic swarm, we replaced simple majority voting with a <strong>Multi-Tiered Evidence Hierarchy</strong>. Answers are selected based on rigorous criteria: Resolver agent voting weight, Verifier confidence scores (where adversarial Python scripts attempt to falsify the claim), and \"Code Supremacy\" (awarding bonuses to answers explicitly proven by constraint solvers like <code>z3</code>,<code>ortools</code>, <code>pulp</code> etc. and python tool output verified answer). While we initially explored using token-level entropy dynamics as a primary selection parameter, extensive testing revealed that without a trained calibration model, entropy added noise (especially in python tool based agents)—fluent hallucinations were often indistinguishable from genuine computation. Similarly, early attempts at inter-agent collaboration (such as SwarmRAG or sharing intermediate reasoning bulletins) didn't get into the final submission, after we observed they created echo chambers of correlated errors.</p>\n<p>Finally, treating robust inference as a systems-engineering challenge required deep forensic visibility. To build this system, we logged every solver trace including reasoning step, tool call, and token metric as well as the scout/summarizer/verifier/master vision reports from extensive local benchmark runs. We developed a custom Streamlit-based <strong>Trace Viewer</strong> to replay these multi-turn conversations. This visualizer was instrumental in identifying specific model pathologies—such as infinite loop traps, premature guessing, and format hacking. Insights derived directly from this Trace Viewer birthed our <strong>Regex Flaw Registry</strong>, a real-time monitoring system that penalizes flawed trajectories and injects mid-flight corrective nudges to steer solvers back on track.</p>\n<p>In the following sections, we detail the complete AMO architecture, documenting our dynamic resource scaling, multi-mode solver logic, and the empirical ablations that define our approach to inference-time mathematical orchestration.</p>\n<hr>\n<h2>SECTION 2 — Problem and Competition Analysis</h2>\n<h3>2.1 The Host's Pass@K Analysis and What It Reveals</h3>\n<p>Recent evaluations published by the competition hosts compared the results of open-weight models (OSS-120B vs. Nemotron-30B) across both public and private sets. While these evaluations were likely conducted without strict inference-time constraints and lacked access to Python execution tools, they provided a critical baseline for the raw reasoning capability of OSS-120B.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Fc3afa40a42ea107551dffdbc15c86c9c%2Fhostanalysis2.png?generation=1776744674727446&amp;alt=media\" alt=\"Host Analysis of OSS120B compared ot Nemetron-30B on Public and Private Questions\"></p>\n<p>The key finding: at pass@100, only 1–2 problems across both sets remained completely unsolvable. At pass@20, a strong open-weight model (class-equivalent to OSS-120B) averaged 43–48 on the private set, with the public and private difficulty distributions showing overlapping 95% confidence intervals. This analysis dictates our fundamental strategy:</p>\n<ol>\n<li><strong>The ceiling is orchestration, not knowledge:</strong> The model possesses the requisite mathematical priors to solve nearly the entire set.</li>\n<li><strong>The gap is consistency:</strong> The delta between a pass@20 ceiling of 45/50 and a baseline notebook ceiling score of 44/50 shows the capability of model, but consistency is what's missing.</li>\n<li><strong>The goal:</strong> Approximating pass@20 performance within a pass@1 or pass@2 budget constraint requires filtering out pathological reasoning traces before they consume the clock.</li>\n</ol>\n<p>The Host's analysis was done on OSS120B models without python tools. So the ceiling of OSS120B with python tool should be higher. </p>\n<ul>\n<li><strong>Easy (approx. 25–27 problems):</strong> Problems falling into the pass@1 to pass@3 range. OSS-120B solves these reliably even without Python tools. For these, standard parallel solvers converge rapidly on a majority answer without advanced orchestration.</li>\n<li><strong>Medium (approx. 13–15 problems):</strong> Problems in the pass@3 to pass@5 range. While the addition of Python tools improves performance, a clean majority breakout is not guaranteed. In this tier, a minority answer may actually be the mathematically correct one, necessitating an architecture that weights verified answers over raw frequencies.</li>\n<li><strong>Hard (approx. 8–10 problems):</strong> Problems in the pass@20 to pass@100 range. With a strict 5-hour, single-GPU limit, executing 20+ parallel solvers per problem is computationally impossible. We needed an architecture that artificially compresses the pass@20 search space down to a pass@5 compute footprint by upsampling the most promising trajectory paths. This requirement birthed our Agentic Beam Search model (detailed in Section 4.3).</li>\n</ul>\n<h3>2.2 A Taxonomy of Failure Modes</h3>\n<p>Through forensic trace analysis of our local benchmarks (detailed in Section 3.1), we categorized LLM failures not by mathematical subject (e.g., Geometry vs. Algebra), but by behavioral pathology:</p>\n<ul>\n<li><strong>True Unsolvability:</strong> The model fundamentally lacks the mathematical insight required, even at pass@100. No orchestration can fix this.</li>\n<li><strong>Memory-Anchored Fast Failure:</strong> The model recognizes a superficial pattern from its training data, bypasses genuine mathematical search, and fluently hallucinates a confidently wrong answer. The signature in our traces is a very short generation, 0–1 Python calls, and execution under 60 seconds. This is an unrecoverable failure type without retraining. We identified multiple such instances in our benchmark (e.g., <code>imo-bench-algebra-092</code>), where the model clearly overfitted to training data and converged on a known, but incorrect, schema.</li>\n<li><strong>Frame-Sensitive Divergence:</strong> The problem permits multiple plausible initial readings. Solvers committing to a flawed frame produce long, internally consistent, but totally incorrect solutions. In the \"Norwegian number\" reference problem, solvers that anchored on standard divisibility rules solved the wrong problem with absolute confidence. Our Master Vision–Resolver pipeline was built explicitly to break these flawed frames.</li>\n<li><strong>Extremum Bias Under Majority Voting:</strong> Problems asking for a \"maximum\" or \"minimum\" require proving a bound is achievable (constructive) <em>and</em> that no better bound exists (impossibility). Solvers frequently prove only the constructive direction, reporting a valid but non-tight bound. For example, on <code>imo-bench-algebra-055</code> (a maximum problem), we observed 4 solvers converging on 1055, while only 1 solver correctly found 2079. Under standard majority voting, the system would confidently select the wrong, sub-optimal bound.</li>\n</ul>\n<h3>2.3 Why OSS-120B and Inference-Time Optimization</h3>\n<p>The baseline notebook provided by the competition using OSS-120B with 8 parallel solvers and simple majority voting already produced scoresranging from 34-44. This proves the model demonstrably gets problems right when it gets the framing correct. Fine-tuning requires datasets, training time, and GPU resources. We had joined the competition fairly late with about 2 months left and the risk-to-reward for finetuning a model to have high scores was low. With limited weekly GPU time and number of days we had, building around OSS120B seemed to be the best option. We had an initial baseline method built with 6 solvers and summarizer-verifier-mastervision-resolver pipeline (not async but once per answer) score 45 in public leaderboard with oss120B-high reasoning model. This demonstrates that 45+ correct answers are achievable, the effort-to-return ratio strongly favors building the best possible amplifier (test-time compute scaling) for a model we trust, rather than training it to know marginally more.</p>\n<hr>\n<h2>SECTION 3 — Infrastructure Foundations</h2>\n<h3>3.1 Building a Stable Benchmark Dataset</h3>\n<p>To prevent public leaderboard overfitting, we constructed <code>benchmark_50_v2</code>, a 50-problem local dataset curated from AIMO reference problems and external IMO benchmarks across algebra, combinatorics, geometry, and number theory. All architectural decisions and ablations in this paper are measured against this reliable ground truth, ensuring our improvements generalize to the hidden private set. This dataset is attached along with the writeup. The final submission we made scored 39/50 on this benchmark dataset with 9 minutes to spare. This was the highest score we had among all our inference pipelines built. This was the major reason, we were confident to submit the pipeline which scored only 37 in public leaderboard instead of the 45 which was second on the public leaderboard. This benchmark local run dataset was influential in helping us understand what different failure modes are, how to mitigate them, how to orchestrate time etc. Without these local runs, it was very hard/impossible to build a stable process with the runtime obfuscated in the leaderboard submissions.</p>\n<h3>3.2 Inference Infrastructure: vLLM and Persistent Jupyter Sandboxes</h3>\n<p>Our base engine is GPT-OSS-120B served via <code>vLLM</code> with <code>fp8</code> weight quantization and <code>fp8_e4m3</code> KV caching, achieving 96% GPU memory utilization with a 65,536 token context. The model is invoked via the Harmony tool protocol. \nCrucially, to eliminate the multi-second latency of cold-starting Docker/Jupyter instances on every tool call, we pre-warm and maintain a pool of 20 persistent, state-isolated Jupyter kernels. </p>\n<h3>3.3 Extended Python Toolbox</h3>\n<p>Standard environments provide <code>math</code>, <code>numpy</code>, and <code>sympy</code>. Through trace analysis, we observed the LLM natively attempting to write formal constraint formulations, only to fail via <code>ImportError</code>. By pre-installing <code>z3-solver</code>, <code>ortools</code> (CP-SAT), <code>pulp</code>, <code>mip</code>, and <code>pyscipopt</code>, we converted silent failures into productive optimization queries. Traces confirmed <code>z3</code> dominated small-constraint satisfiability, while <code>ortools</code> excelled at large combinatorial enumeration.</p>\n<h3>3.4 Trace Viewer: Forensic Analysis Infrastructure</h3>\n<p>We developed a Streamlit application (<a href=\"https://aimo-trace-viewer.streamlit.app/\" target=\"_blank\">aimo-solver-trace-viewer</a>) to parse and read the trace logs. This trace viewer was instrumental in understanding how OSS120B solves a prooblem and was instrumental in many of the designs we built. These logs included the raw turns based reasoning at different roles and channels and per turn entropy calculated. Every local run was executed in debug mode, saving the full multi-turn reasoning traces of all solvers and resolvers, including per-turn entropy calculations. This visualizer was instrumental in designing our architecture:</p>\n<ul>\n<li><strong>Pathology Identification:</strong> By reading full traces, we understood exactly where and why wrong-answer solvers deviated from the correct path.</li>\n<li><strong>The Regex Flaw Registry:</strong> We discovered solvers outputting \"Hail Mary\" answers (e.g., arbitrarily guessing 0 or 99999 when stuck) or generating lists of answers despite explicit instructions prohibiting it. Because the baseline <code>_select_answer</code> function blindly extracted numbers from <code>\\boxed{}</code> formats, these hallucinations often bypassed validation. We implemented a real-time Regex Flaw Registry to catch these outputs, penalize the solver's score, and inject mid-flight corrective nudges.</li>\n<li><strong>Infinite Loop Termination:</strong> Traces revealed that solvers occasionally fixated on \"Infinity\" as an answer. Despite multiple corrective injections, these solvers refused to pivot. We implemented a hard-kill rule: if a solver attempts an infinite answer 3 times, its thread is terminated to conserve compute.</li>\n<li><strong>Debunking Entropy:</strong> We initially hypothesized that token-level entropy could weight answer selection. However, the Trace Viewer revealed that entropy had only a weak correlation to correctness. In a Python-tooled environment, entropy fluctuations largely reflected the model's confidence in Python syntax rather than mathematical truth. Consequently, we discarded entropy as a primary routing metric.</li>\n</ul>\n<p>We have published the streamlit app public. You can play around with the traces you have generated (by running the submission code attached below) or by using the sample traces attached below for specific questions (Norwegian Problem, imo-bench-combinatorics-014)  </p>\n<h3>3.5 Identifying the Extremum Problem</h3>\n<p>The Trace Viewer exposed a critical, systematic vulnerability in standard LLM orchestration: the <strong>Extremum Trap</strong>. </p>\n<p>When a problem asks for the <em>smallest</em>, <em>largest</em>, <em>minimum</em>, or <em>maximum</em> value, it inherently possesses a multi-modal solution space. A sub-optimal bound (e.g., a configuration that yields 1055 when the true maximum is 2079) is mathematically \"valid\" in the sense that it satisfies all the constraints of the problem. </p>\n<p>When observing our benchmark runs (e.g., <code>imo-bench-algebra-055</code>), we found that standard solvers would quickly find a sub-optimal bound, write a Python script to verify that it satisfies the constraints, receive a <code>True</code> output, and confidently halt. Because it is computationally much easier to find a sub-optimal configuration than the absolute mathematical limit, a majority of parallel solvers will converge on the weaker bound. </p>\n<p><strong>Why Verification Fails Here:</strong> Even our advanced asynchronous Verifier (Bug Report) agents struggle to falsify these sub-optimal answers. If a solver claims the maximum is 1055, the Verifier writes a script checking if 1055 is achievable. The script returns <code>True</code>, and the Verifier assigns a high Confidence Score to the wrong answer.</p>\n<p>This empirical discovery mandated a systemic architectural intervention. We realized that for extremum problems, <strong>raw frequency and verification scores are misleading signals</strong>. This necessitated the creation of our dedicated Extremum Protocol (detailed in Section 4), which forces the Orchestrator to bypass majority breakouts entirely, intentionally seeking out minority answers that offer tighter, mathematically verified bounds.</p>\n<hr>\n<h2>SECTION 4 — AMO: The Agentic Math Orchestrator</h2>\n<p>The AMO system abandons the standard paradigm of blind, unguided parallel sampling. Instead, it executes as a highly sophisticated, closed-loop pipeline of specialized LLM agents and deterministic Python guardrails. By treating reasoning as a continuous control problem, AMO maximizes test-time compute efficiency.</p>\n<h3>4.1 The Orchestrator and Deck-Aware Time Allocation</h3>\n<p>n a 5-hour, 50-problem constrained environment, a static time-per-problem budget creates severe latency spikes; a single hard problem consuming 800+ seconds early in the run will irreversibly starve subsequent problems. The AMO Orchestrator serves as the global brain of the system, replacing static budgets with a closed-loop Bayesian controller.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F699d2691ab16b8282e06a75d1b89cadc%2Forchestrator.jpg?generation=1776744853119000&amp;alt=media\" alt=\"Figure 2 - Orchestrator &amp; Dynamic Budgeting Flowchart\"></p>\n<p><strong>Initialization and Global Time Metrics:</strong>\nThe Orchestrator initializes a difficulty \"Deck\" modeled on the host's pass@K empirical distribution (27 Easy, 13 Medium, 10 Hard). It maintains a rolling 10-problem adaptive time history for each tier to \"learn\" the specific compute friction of the current test set. At the start of each problem, global time metrics are calculated continuously:</p>\n<ul>\n<li><code>Time_Left = 5H - Elapsed - Buffer (120s)</code></li>\n<li><code>Fair_Share = Time_Left / Problems_Left</code></li>\n<li><code>Expected_Cost = Σ (Deck_Remaining[L] × Rolling_Avg_Time[L])</code></li>\n<li><code>Surplus_Ratio = Time_Left / Expected_Cost</code></li>\n</ul>\n<p><strong>Bayesian Regime Shifting &amp; Resource Binding:</strong>\nRelying solely on an LLM's perceived difficulty is dangerous. The Orchestrator cross-references the Scout's difficulty rating (see Sec 4.2) with the <code>Surplus_Ratio</code> to execute Bayesian regime shifts:</p>\n<ul>\n<li><em>Time Abundance (<code>Surplus_Ratio &gt; 1.5</code> or <code>Fair_Share &gt; 360s</code>):</em> Upgrades the problem tier (e.g., Medium $\\rightarrow$ Hard), unlocking the computationally expensive Agentic Beam Search.</li>\n<li><em>Time Crunch (<code>Surplus_Ratio &lt; 0.7</code> or <code>Fair_Share &lt; 230s</code>):</em> Engages the Emergency Brake, forcibly downgrading Hard problems to Standard execution to protect the global clock.</li>\n</ul>\n<p>Based on the calculated <code>Fair_Share</code>, the Orchestrator dynamically binds all execution parameters to prevent clampdowns:</p>\n<table>\n<thead>\n<tr>\n<th>Fair Share Target</th>\n<th>Max Initial Solvers</th>\n<th>Early Stop Threshold</th>\n<th>Max Verifier Turns</th>\n<th>Rescue Resolvers</th>\n<th>Planners Used?</th>\n<th>Extremum Force</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>&lt; 240s</strong> (Extreme)</td>\n<td>5</td>\n<td>3</td>\n<td>5</td>\n<td>0</td>\n<td>No</td>\n<td>1</td>\n</tr>\n<tr>\n<td><strong>&lt; 280s</strong> (Tight)</td>\n<td>6</td>\n<td>4</td>\n<td>5</td>\n<td>2</td>\n<td>No</td>\n<td>1</td>\n</tr>\n<tr>\n<td><strong>&lt; 320s</strong> (Moderate)</td>\n<td>7</td>\n<td>4</td>\n<td>5</td>\n<td>2</td>\n<td>Yes (N=10)</td>\n<td>2</td>\n</tr>\n<tr>\n<td><strong>&lt; 352s</strong> (Healthy)</td>\n<td>8</td>\n<td>5</td>\n<td>7</td>\n<td>2</td>\n<td>Yes (N=12)</td>\n<td>3</td>\n</tr>\n<tr>\n<td><strong>≥ 352s</strong> (Abundant)</td>\n<td>8 (or Beam)</td>\n<td>5</td>\n<td>8</td>\n<td>2</td>\n<td>Yes (N=16)</td>\n<td>4</td>\n</tr>\n</tbody>\n</table>\n<p>The Absolute Budget is mechanically clamped: <code>Budget = min(max(fair_share * 2.6 + resolver_bonus, MIN_CAP), MAX_CAP)</code>, coupled with a strict global failsafe <code>min(Budget, Time_Left * 0.85)</code> ensuring the system never throws a Kaggle timeout exception.</p>\n<p><strong>Post-Solve Empirical Reclassification:</strong>\nAfter a problem is solved, the Orchestrator evaluates the <em>actual</em> difficulty to update the Deck. It computes the consensus ratio (e.g., 4/5 solvers agreeing = 80%). If consensus $\\ge 80\\%$, it classifies the problem as Easy regardless of initial predictions. Conversely, if wall-clock time exceeded 800s, it forces a Hard classification. This feedback loop ensures the rolling time averages accurately reflect empirical reality.</p>\n<h3>4.2 Scout Pool: Structural Problem Analysis</h3>\n<p>Before launching computationally expensive solvers, AMO must map the problem's mathematical topology to inject specific guardrails, identify expected problem level etc.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F94d9e95c3a2384e3b83346e62aa10091%2FScout.jpg?generation=1776744789688538&amp;alt=media\" alt=\"Figure 1: Scout Pool &amp; Consensus Engine Flowchart\"></p>\n<p>The <strong>Scout Dispatcher</strong> launches 4 parallel threads at a higher temperature (T=0.6) using unique random seeds. The LLM is explicitly instructed <em>not</em> to solve the problem, but to output a JSON schema mapping the domain, extraction operations, large number flags, and timeout risks.</p>\n<p><strong>Consensus Normalization (Anti-Poisoning):</strong>\nBecause LLMs hallucinate, a single flawed scout reading could poison the entire solver pool. We aggregate the 4 JSON blueprints using a Map-Reduce paradigm:</p>\n<ul>\n<li><strong>Domain Rules (Majority Vote):</strong> The system tallies domain tags. If a domain (e.g., Geometry) receives $\\ge 2$ votes, hardcoded domain-specific axioms (e.g., feasibility bounds, collinearity checks) are retrieved and additively injected into all downstream solver system prompts.</li>\n<li><strong>Extremum Protocol Trigger:</strong> If more than 3 scouts flag <code>is_extremum = True</code> AND the extraction operation is <code>direct</code>, the system activates a global <strong>Extremum Override</strong>. This disables early-verifier breakouts and forces tight-bound verification during Answer Selection. This makes sure we have checks enabled to make sure we are submitting the best extremum fit verified answer and not just the majority voted.</li>\n<li><strong>Objective Difficulty Scoring:</strong> LLMs systematically underestimate problems they will get wrong. Instead of trusting the LLM's stated difficulty, we compute an objective score avoiding LLM bias. A base score is calculated across the 4 scouts, appending structural penalties: $+1.0$ for <code>timeout_risk</code>, $+1.5$ for <code>adversarial_structure</code>, $+1.0$ for <code>find_all</code> operations. The average of these scores across valid scouts dictates the final initial routing tier (Easy/Medium/Hard).</li>\n</ul>\n<h3>4.3 The Agentic Beam Search Paradigm</h3>\n<p>A fundamental limitation of open-weight LLMs in competitive mathematics is trajectory drift. While a model might possess the mathematical priors to solve a problem (demonstrated by a high pass@100 rate), parallel sampling without intervention wastes vast amounts of compute on \"doomed\" reasoning paths. If a solver commits to a mathematically flawed frame in Turn 1, the subsequent twenty minutes of generation and Python execution become effectively dead compute. </p>\n<p>Furthermore, we operate under strict hardware limits: a single H100 GPU can practically sustain only 8 to 12 parallel solvers when pushing towards a 65,536 token context limit. For Hard (and some Medium) tier questions where the empirical success rate is pass@20 or even pass@100, simply running 8 parallel solvers at high temperature ($T=1.0$) is mathematically inefficient and relies heavily on luck. To reliably conquer these problems within our allocated 5-hour time budget, we must achieve a higher effective sample size, strictly enforce mathematical diversity, and drastically increase trajectory accuracy—all without exceeding the GPU's memory or the Orchestrator's time allocation.</p>\n<p>To solve this, we introduce <strong>Agentic Beam Search</strong>. Unlike traditional token-level beam search, which evaluates localized token probabilities, Agentic Beam Search operates at the <em>reasoning-trajectory level</em>. Its primary objective is to artificially compress the model's pass@20 capability into a pass@5 compute footprint. It achieves this by spawning a large initial pool of solvers (e.g., N=20), aggressively pruning mathematically unviable trajectories mid-flight, and reallocating the GPU's memory and compute only to diverse, high-potential paths.</p>\n<p>Because we operate in a zero-internet inference environment without a pre-trained Process Reward Model (PRM) like GenSelect, we construct our beam evaluation heuristic using a combination of self eval of solvers, empirical execution signals, and text-based clustering.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F9f42bad3d2d2bad5807d06da4e24f3bc%2Fagentic_beam_search.jpg?generation=1776744933303486&amp;alt=media\" alt=\"Figure 3.a - Agentic Beam Search Flowchart\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F1bd97520ea24f9002c3fc1977d3db70d%2Fagentic_beam_self_eval.jpg?generation=1776745869037702&amp;alt=media\" alt=\"Figure 3.b - Agentic Beam Self Eval\"></p>\n<h4>4.3.1 The Heuristic Evaluation (BEAM_EVAL)</h4>\n<p>At designated checkpoints, the solver's execution is paused. Without dropping the existing KV-cache, an adversarial <code>BEAM_EVAL</code> prompt is injected into the <code>Role.ASSISTANT</code> channel. The model is forced to objectively audit its own reasoning trace and output a JSON schema scoring itself out of 5 across five strict criteria:</p>\n<ol>\n<li><strong>Decomposition Clarity:</strong> Are all constraints formulated into strict algebraic equations?</li>\n<li><strong>Structural Insight Depth:</strong> Has a highly specific, non-trivial theorem been identified and justified?</li>\n<li><strong>Assumption Transparency:</strong> Are edge cases actively hunted and explicitly listed for verification?</li>\n<li><strong>Solution Path Concreteness:</strong> Is there precise algorithmic pseudocode, or is the solver \"hand-waving\" intermediate steps?</li>\n<li><strong>Viability &amp; Progress:</strong> Are the Python executions returning mathematically useful data, or is the solver stuck in a timeout/syntax loop?</li>\n</ol>\n<p>The model is also instructed to extract a 100-word <code>approach_summary</code> of the current trajectory.</p>\n<h4>4.3.2 Grounding in Execution Reality</h4>\n<p>LLM-as-a-Judge mechanisms are notoriously prone to self-confirmation bias; a model will frequently award high scores to fluent but mathematically hallucinated reasoning. To ground the beam score in objective reality, we blend the subjective LLM evaluation with an empirical Python execution score (<code>python_score = successful_calls / total_calls</code>). We also subtract the <code>trace_penalty</code> accumulated by the Regex Flaw Registry (e.g., penalties for outputting infinity or using lazy phrasing). \nThe base node score is calculated as:\n$$Beam_Score = 0.8 \\times \\left(\\frac{self_eval_sum}{25}\\right) + 0.2 \\times python_score - trace_penalty$$</p>\n<h4>4.3.3 Enforcing Mathematical Diversity via Embedding-Based MMR</h4>\n<p>Selecting the top-$K$ nodes based purely on the $Beam_Score$ risks severe mode collapse. If three solvers adopt the same fundamentally flawed (but highly confident) combinatorial approach, keeping all three wastes precious beam width. To combat this, we explicitly require <em>mathematical diversity</em>.</p>\n<p>During the <code>BEAM_EVAL</code> phase, the LLM extracts a 100-word <code>approach_summary</code> of its current trajectory. To measure semantic similarity accurately, we project these summaries into a dense vector space using a lightweight, pre-trained sentence embedding model (e.g., <code>all-MiniLM-L6-v2</code>). We then calculate the cosine distance between the embeddings of all surviving nodes. </p>\n<p>Finally, we apply a greedy Maximum Marginal Relevance (MMR) selection algorithm. A candidate's final evaluation score heavily rewards its semantic distance from the approaches of already-selected nodes:\n$$Final_Eval_Score = 0.9 \\times Beam_Score + 0.1 \\times \\min_{selected}(Cosine_Distance)$$\nBy using dense embeddings rather than fragile keyword matching, this guarantees that the surviving beams explore fundamentally distinct mathematical frameworks, dramatically increasing the probability that the true solution path survives the prune.</p>\n<p>We deploy this Agentic Beam Search framework in two distinct areas of the AMO architecture, scaling its depth based on the Orchestrator's time budget.</p>\n<h4>Instantiation 1: The MiniPlanner Pool (Single-Turn Seeding) Used In Standard Mode</h4>\n<p>On problems where the Orchestrator detects a \"Moderate\" or \"Healthy\" time budget, framing failures are our primary threat. Before any full solvers are launched, we instantiate a single-turn version of the beam search to generate starting hypotheses.</p>\n<ul>\n<li><strong>Mechanism:</strong> We spawn 10 to 12 lightweight, 2-turn planners. They evaluate the problem and propose a mathematical approach.</li>\n<li><strong>Evaluation &amp; Pruning:</strong> The <code>BEAM_EVAL</code> rubric is applied to these 10-12 solvers. Using the MMR text-cosine algorithm, we prune the pool down to 6 to 8 highly diverse, high-quality starting plans.</li>\n<li><strong>Seeding:</strong> These surviving plans are prepended to the traces of the Standard Mode solvers. By investing compute in single-turn diversity upfront, we guarantee that our parallel solvers do not blindly race down identical dead ends.</li>\n</ul>\n<h4>Instantiation 2: Full Beam Mode Execution (Multi-Turn Funnel) Used in Beam Mode</h4>\n<p>When the Orchestrator calculates a <code>Surplus_Ratio &gt; 1.5</code> (Time Abundance) or on a Hard problem, it bypasses Standard Mode entirely and deploys the full, multi-turn Agentic Beam Search to find the most diverse best solver traces.</p>\n<h3>4.4 Execution Routing: Agentic Beam vs. Standard Mode</h3>\n<p>We deploy the Agentic Beam Search framework scaled to the Orchestrator's time budget.</p>\n<h4>4.4.1 Standard Mode &amp; The MiniPlanner Pool</h4>\n<p>When routed to Standard Mode (Tight/Moderate budgets), framing failures are our primary threat. Before full solvers are launched, we instantiate a 2-turn version of the beam search to generate starting hypotheses.</p>\n<ul>\n<li><strong>The MiniPlanner Pool:</strong> We spawn 10-12 lightweight planners. They evaluate the problem, propose an approach, and are immediately scored by the <code>BEAM_EVAL</code> rubric. This is a mini version of full agentic beam search</li>\n<li><strong>MMR Diversity Seeding:</strong> Using the text-cosine MMR algorithm, we prune the pool down to 6-8 highly diverse, high-quality starting plans. These surviving plans are prepended to the traces of the Standard Mode solvers. Investing compute in single-turn diversity upfront guarantees our parallel solvers do not blindly race down identical dead ends.</li>\n</ul>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F785cdb70a8b23033e181df8fa5364050%2Fstandard_mode_solver.jpg?generation=1776745033197404&amp;alt=media\" alt=\"Figure 5 - Standard Mode Solver Architecture Flowchart\"></p>\n<p>Standard Mode executes 6-8 Tool-Integrated Reasoning (TIR) solvers concurrently. They operate under deterministic real-time guardrails (Section 4.5) and are designed to race toward a verified majority breakout to conserve time for later problems.</p>\n<p>Execution is governed by deterministic, real-time guardrails:</p>\n<ul>\n<li><strong>Flaw Registry:</strong> A regex engine parses real-time generation. <ul>\n<li><em>Tier 1 (Fatal):</em> Outputting infinity/lists injects hard overrides; 3 strikes terminate the solver.</li>\n<li><em>Tier 2.5 (Timeouts):</em> Detecting naïve loops (e.g., <code>itertools.permutations</code>) instantly injects a <code>Role.ASSISTANT</code> nudge demanding <code>z3</code> or a soft-timeout loop (<code>if time.time() - t0 &gt; 15: break</code>).</li></ul></li>\n<li><strong>Live Guide Checkpoint:</strong> At T=380s$, a deep LLM audit is triggered. If the trajectory is flawed (e.g., dropped constraints), corrective guidance is seamlessly injected into the <code>ASSISTANT</code> channel, preserving internal monologue continuity.</li>\n</ul>\n<h4>4.4.2 Beam Mode</h4>\n<p>For Hard problems with abundant time, we deploy an Agentic Beam Search to explore full multi-turn reasoning trajectories.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F808b5c456e32aa6b849f7cbd00adf11d%2FBeam_Mode_Solver.jpg?generation=1776745802921454&amp;alt=media\" alt=\"Figure 4 - Beam Mode Solver Flowchart\"></p>\n<ol>\n<li><strong>Phase 1:</strong> 20 parallel Python-tooled solvers are spawned for 2 turns (or 120 seconds).</li>\n<li><strong>Beam Self-Eval:</strong> Without losing the existing KV-Cache, a strict auditing prompt is injected into the <code>ASSISTANT</code> role. The model scores its own trajectory out of 25. </li>\n<li><strong>MMR Pruning:</strong> We apply the formula: \n<code>Beam Score = 0.8 * self_eval + 0.2 * py_score - trace_penalty</code>\n<code>Final Eval Score = 0.9 * Beam Score + 0.1 * distance_score</code>\nThe top 16 solvers survive.</li>\n<li><strong>Phase 2 &amp; Deep Run:</strong> Survivors run for 4 more turns, are evaluated, pruned down to 8, and enter a \"Deep Run\" until completion.</li>\n</ol>\n<h3>4.5 Live Interventions &amp; Context-Preserving Guardrails</h3>\n<p>A major contribution of AMO is the realization that LLMs must be actively \"steered\" during generation. However, standard conversational injection (using <code>Role.USER</code>) breaks the model's internal monologue and induces conversational mode collapse. </p>\n<p>Instead, we utilize <strong>Context-Preserving Assistant Injections</strong>. When a flaw is detected, we format the correction as an internal thought (e.g., <em>\"Wait, I am attempting naïve brute force. I must add a soft-timeout…\"</em>) and append it to the vLLM <code>Conversation</code> object as <code>Role.ASSISTANT</code>. Because the existing prompt token IDs are reused, <code>vLLM</code>'s prefix caching handles this seamlessly without re-computing attention for the prefix, saving massive compute while forcing the model to adopt the correction as its own logic.</p>\n<p><strong>4.5.1 The Regex Flaw Registry</strong>\nWe actively parse the real-time text stream against a global registry of behavioral pathologies:</p>\n<ul>\n<li><em>Tier 1 (Fatal):</em> Outputting infinity, decimals, or lists. Injects a severe constraint reminder. 3 strikes result in thread termination.</li>\n<li><em>Tier 2.5 (Timeouts):</em> Detecting <code>itertools</code>, <code>collections.deque</code>, or naïve <code>while</code> loops triggers an instant injection demanding the use of <code>z3</code> or the insertion of a strict soft-timeout block (<code>if time.time() - t0 &gt; 15: break</code>), directly preventing hard Kaggle kernel timeouts.</li>\n<li><em>Tier 3 (Silent):</em> Detecting \"guess\", \"assume by symmetry\", or memory-search language applies silent trace weight reductions to the final answer scoring.</li>\n</ul>\n<p><strong>4.5.2 The Live Guide Checkpoint Algorithm</strong>\nTo catch complex mathematical drift, we trigger an LLM-based audit mid-flight.</p>\n<ol>\n<li><strong>Trigger:</strong> At $T=380s$, if the solver has $\\ge 1$ Python calls but no answer.</li>\n<li><strong>Audit Prompt:</strong> A deepcopy of the current trace (ensuring 100% prefix cache hit) is appended with an Early/Late Audit Prompt asking: <em>Is the computation consistent with printed outputs? Have constraints been dropped?</em></li>\n<li><strong>Parse &amp; Inject:</strong> The Live Guide outputs an <code>URGENCY</code> score (0.0 to 1.0) and <code>CORRECTION_TEXT</code>. If <code>URGENCY &gt;= 0.90</code>, the correction is injected into the main solver's <code>ASSISTANT</code> channel, demanding a specific, verifiable computational action. </li>\n</ol>\n<h3>4.6 Asynchronous Verification Pipeline (S-V-MV)</h3>\n<p>AMO does not trust simple majority voting. As solvers find answers, their traces are immediately passed to an asynchronous pipeline. This architecture was inspired by two works: <em>Long-horizon Reasoning Agent for Olympiad-Level Mathematical Problem Solving (Intern-S1-MO)</em> [2] and <em>Gemini 2.5 Pro Capable of Winning Gold at IMO 2025</em> [1].</p>\n<p>The core idea of agentic solution to solving IMO level math problems in [2] was to iteratively reason-verify-summarize it into lemmas, by adding the lemmas created in each steps into a lemma library memory, added in as input into next iteration along with the question. The architecture idea they have used is added below. </p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Fd5619890df7ef3f7b559037e3097d71e%2Fintern-s1-MO-agentic-framework.jpg?generation=1776817495224311&amp;alt=media\" alt=\" The agentic framwork of Intern-S1-MO\"></p>\n<p>While Intern-S1-MO iteratively reasons-verifies-summarizes by adding lemmas into a library memory (shown above), this multi-step sequential solving is not custom-fit for OSS-120B under severe time starvation. Furthermore, the <em>Gemini 2.5 Pro</em> approach of iteratively verifying until a confident answer is reached is feasible for 6 IMO questions in 5 hours, but not for 50 AIMO questions. Consequently, our Async Summarizer-Verifier-Master Vision pipeline adapts these inspirations into a highly parallelized, AIMO-specific architecture:</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Ff7d21b6059b91c5cca94acd3f551814a%2Fsummarizer-verifier-mastervision.jpg?generation=1776745065882961&amp;alt=media\" alt=\"Figure 6 - Async Summarizer, Verifier, and Master Vision Flowchart\"></p>\n<ol>\n<li><strong>Summarizer Agent:</strong> Condenses the full trace of upto 65K tokens into a summarized structured ledger: Winning Approach, Edge Cases, Hail Marys (Explicit Guesses), and the Tool Ledger. Acts as a strict data extraction API with single turn</li>\n<li><strong>Verifier Agent (Bug Report):</strong> An adversarial auditor that attempts to computationally falsify the claim over 6-8 turns. <ul>\n<li><em>Step 0:</em> Write a 10s direct falsification script. If it fails, reject immediately.</li>\n<li><em>Step 1-3:</em> Check unverified claims, build scaled enumerators, and output a Confidence Score (0.0 - 1.0) and <code>TRUST|VERIFY|REJECT</code>.</li></ul></li>\n<li><strong>Master Vision Agent:</strong> If time remains but no consensus is reached, the Master Vision is invoked  to resolve multi-modal ties as a prior infomration gatherer for the resolvers.<ul>\n<li><em>Synthesis Mode (Max Verifier Score &gt; 0.50):</em> Isolates the exact point of mathematical divergence between competing solvers, tags <code>[VERIFIED]</code> lemmas, and sets a Rescue Entry Point.</li>\n<li><em>Clearinghouse Mode (Max Verifier Score &lt; 0.50):</em> Declares the archive as unreliable noise. Maps an explicit \"Poison Map\" of framing traps to avoid.</li></ul></li>\n<li><strong>Resolvers:</strong> Rescue solvers (2 new solvers) are launched, enriched with the Master Vision bulletin.They do not have to waste time re-deriving verified info and lemmas from ground but instead can start from all the findings from previous solvers, properly verified and audited by master vision agent . These resolver answers carry up to 5x voting weight on extremum problems and 2X voting weight on normal problems, there by making sure the resolvers if invoked have the higher say in what answer to submit.</li>\n</ol>\n<h3>4.7 Breakout Vetoes &amp; Final Answer Selection</h3>\n<p>To save time, AMO attempts an <strong>Early Breakout</strong> if an answer reaches the Majority Vote (5/8 solvers get same answer) OR Majority Threshold total (Total verifier score &gt; 2.4 for an answer across all solvers completed so far). This early breakout saves time. Baseline notebook in AIMO3 had majority vote based breeakout alone, but with our verifier pipeline running async, we can have the verifier score available soon after an answer is generated for a solver too. So in cases where we didn't reach majority and a solver is still running, we wouldn't have to waste time waiting for it complete, if we have 3 verifiers all passing high for the same answer. However, because false majorities exist, this breakout is rigorously gated. We make sure we don't breakout in these 2 specific situations even if we hit majority vote breakouts:</p>\n<ul>\n<li><strong>The Verifier Veto:</strong> If the Max Verifier Score for the candidate answer is &lt; 0.50 across all the N solves (aka none of the solvers that gave majority answer had a passing verifier score in async), the breakout is aggressively blocked (unless in severe time crunch), forcing the system to wait for better validation and/or move to resolver.</li>\n<li><strong>The Extremum Veto:</strong> If the problem was flagged as an Extremum, and a <em>better</em> verified bound exists among the other running solvers (e.g., candidate answer is 1055, but another solver verified 2079 on a 'max' problem), the breakout is vetoed to force Master Vision resolution and then resolver, making sure that we have a third eye selecting the final answer to submit by quality rather than quantity. If in time crunch and no time is left for master vision - resolver pipeline, we select the extremum direction verified answer (We will still only conisder answers that got a verifier score TRUST) instead of majority votes. </li>\n</ul>\n<p><strong>The Evidence Hierarchy Selection:</strong>\nIf no breakout occurs, final selection abandons frequency counting for a strict evidence hierarchy:</p>\n<ol>\n<li><strong>Weighted Votes:</strong> Resolvers, armed with the Master Vision, carry massive weight (5x if extremum).</li>\n<li><strong>Max Verifier Score:</strong> Highest Bug Report confidence. Comes in play if weighted votes is tied</li>\n<li><strong>Code Supremacy:</strong> Solvers receive a +0.5 multiplier for formal proofs via <code>z3</code>/optimizers, and +0.3 for standard empirical Python validation.We have this checked with regex search on the entire python tool outputs in the trace once an answer is found</li>\n<li><strong>Average Beam Score:</strong> (For Beam Mode runs).</li>\n<li><strong>Raw Vote Count:</strong> Treated strictly as a tie-breaker.</li>\n</ol>\n<p><strong>Extremum Fallback:</strong> If an Extremum problem times out before Resolvers finish, AMO overrides raw vote counts entirely. It explicitly scans the pool to select the <em>tightest verified bound</em> (Verifier Score &gt; 0.78) or the bound possessing the highest Code Supremacy, directly neutralizing the LLM Extremum Bias.</p>\n<hr>\n<h2>SECTION 5 — Dynamic Time Management</h2>\n<p>In a strictly constrained 5-hour, 50-problem inference environment, mathematical capability is irrelevant if the system runs out of time. One of the most critical vulnerabilities of the baseline architecture was its naive approach to budget allocation, which directly resulted in late-stage problem starvation. </p>\n<p>To resolve this, AMO implements a closed-loop, predictive time management system that treats inference time as a dynamically traded commodity, smoothing the allocation curve across the entire problem set.</p>\n<h3>5.1 The Pathology of Baseline Time Allocation</h3>\n<p>The standard baseline approach utilizes a naive <code>time_left / questions_left</code> heuristic, often clamped to a fixed maximum (e.g., 900 seconds) for early questions. Because LLMs operating at T&gt;0 can easily get trapped in long, unyielding reasoning paths, difficult problems presented early in the sequence will ruthlessly consume their maximum allowed budget. </p>\n<p>As early questions bleed the global clock, the <code>time_left</code> plummets. By the time the system reaches question 20 or 30, the <code>fair_share</code> drops precipitously, triggering a \"cascading starvation\" effect. </p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Fe6236f43cb51d2064bdd1bd6d2638470%2Ftiming_comparison.jpg?generation=1776823605316092&amp;alt=media\" alt=\"Allocated Time Budget Comparison: AMO Orchestrator vs Baseline\">\n<em>Figure 7: A direct comparison of the Allocated Time Budget across 50 questions during a local benchmark run. Top (Green): AMO Orchestrator. Bottom (Red): Baseline timing method.</em></p>\n<p>The bottom chart (red) in Figure 7 perfectly illustrates this catastrophic failure mode. The baseline system statically allocates 900 seconds for the first few questions. Because actual computation exhausts this budget, the available time crashes. From question 15 onward, the allocation becomes violently erratic, frequently plummeting to 300 seconds. By the final decile (questions 40-50), the system is effectively crippled, lacking the compute time necessary to execute deep reasoning or parallel sampling, regardless of the actual mathematical complexity of those final questions.</p>\n<h3>5.2 The AMO Orchestrator's Predictive Budgeting</h3>\n<p>To prevent cascading starvation, AMO's Orchestrator abandons static maximums in favor of a forward-looking, deck-aware predictive model. </p>\n<p>Before any problem begins, the system relies on an expected difficulty \"Deck\" (initialized to 27 Easy, 13 Medium, 10 Hard based on pass@K priors as explained before) and maintains a 10-problem rolling time history for each tier. Rather than just looking at how much time is left, AMO predicts how much time the <em>entire remaining test set</em> will cost:\n$$Expected_Cost = \\sum_{L \\in {E,M,H}} \\left( Deck_Remaining[L] \\times Rolling_Avg_Time[L] \\right)$$</p>\n<p>This allows the Orchestrator to calculate a <code>Surplus_Ratio</code> ($Time_Left / Expected_Cost$). If the <code>Surplus_Ratio &lt; 1.0</code>, the system knows it is running behind schedule <em>relative to the expected difficulty of the remaining questions</em>, even if absolute time appears plentiful. </p>\n<h3>5.3 Bayesian Regime Shifting and Soft Clamping</h3>\n<p>The <code>Surplus_Ratio</code> enables continuous Bayesian regime shifting, allowing the system to scale its computational footprint up or down dynamically:</p>\n<ul>\n<li><strong>Time Abundance (Surplus &gt; 1.5):</strong> The system aggressively invests surplus time. If the Scout flags a problem as \"Medium,\" the Orchestrator upgrades it to \"Hard,\" forcibly routing it into the more expensive, higher-yield Agentic Beam Search mode.</li>\n<li><strong>Time Crunch (Surplus &lt; 0.7):</strong> The system protects the global clock. Hard problems are downgraded to Standard Mode, and the maximum number of initial parallel solvers is constrained.</li>\n</ul>\n<p>Instead of fixed ceilings, the actual Allocated Budget is a dynamic function of the <code>Fair_Share</code>, modulated by the problem tier and scaled via a predefined multiplier (empirically tuned to 2.6) plus a bonus for Resolver agents:\n$$Budget = \\min(\\max(Fair_Share \\times 2.6 + Resolver_Bonus, MIN_CAP), MAX_CAP)$$\nA global failsafe (<code>Time_Left * 0.85</code>) sits above this logic to guarantee the Kaggle kernel will never hit a hard timeout.</p>\n<h3>5.4 Empirical Reclassification and the Feedback Loop</h3>\n<p>A predictive system is only as good as its priors. Because the initial difficulty Deck is an assumption, AMO continuously corrects its own internal models. </p>\n<p>Post-solve, the Orchestrator executes an <strong>Empirical Reclassification</strong>. It ignores the Scout's initial difficulty estimate and looks purely at execution reality. If 7 out of 8 solvers independently arrived at the same answer in under 400 seconds, the problem is reclassified as \"Easy,\" regardless of its mathematical domain. If the system had to invoke the Master Vision Agent and consumed 850 seconds, it is reclassified as \"Hard.\"</p>\n<p>The system then decrements the corresponding tier in the Deck and updates the <code>Rolling_Avg_Time</code> array. This closed feedback loop allows AMO to \"learn\" the true pace of the unseen test set in real time. </p>\n<h3>5.5 Visualizing the Impact: The Smooth Allocation Curve</h3>\n<p>The success of this architecture is visually confirmed in the top chart (green) of Figure 7. </p>\n<p>Unlike the baseline's erratic crashes, the AMO Orchestrator produces a smooth, undulating allocation curve. By intelligently clamping early-stage over-expenditure and utilizing the difficulty deck to forecast future costs, the system maintains a highly stable budget between 600 and 960 seconds per question. </p>\n<p>Most importantly, <strong>AMO successfully protects the end of the test set</strong>.  When questions 40 through 50 arrive, the system still possesses ample budget (frequently &gt;800 seconds) to deploy Master Vision, Resolvers, and full Beam Search iterations. By treating compute as a dynamically managed asset rather than a static allowance, AMO ensures that every problem receives the exact level of orchestration it requires, maximizing the probability of single-submission correctness.</p>\n<hr>\n<h2>SECTION 6 — Empirical Validation: Local Benchmarks vs. Leaderboard Variance</h2>\n<p>A persistent challenge in the AIMO competition environment is the extreme volatility of the public leaderboard. Because the test set is small (50 questions) and LLM sampling at T&gt;0 is inherently stochastic, a fragile architecture can occasionally \"get lucky\" and achieve an artificially high score, only to collapse on subsequent runs. </p>\n<p>Realizing that optimizing purely for the public leaderboard was leading to overfitting and architecture fragility, we halted leaderboard-driven development approximately one month before the deadline. We constructed <code>benchmark_50_v2</code>, a localized dataset of 50 olympiad problems carefully curated from AIMO reference sets and the MATH corpus prize submissions. All subsequent architectural decisions were rigorously evaluated against this stable ground truth. <em>(Note: Because this local benchmark was instituted late in the development cycle, local run data is sparse or unavailable for our earliest architectural iterations).</em></p>\n<h3>6.1 Performance and Variance Tracking</h3>\n<p>The table below documents our submission history (only including non-experimental LB submissions to avoid any bias) , tracking both local benchmark accuracy and public leaderboard scores across various architectural iterations. </p>\n<table>\n<thead>\n<tr>\n<th>Method / Architecture</th>\n<th>Run ID</th>\n<th>Local Score (Out of 50)</th>\n<th>Public Leaderboard Score</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>AMO-Final-Submission</strong></td>\n<td>1</td>\n<td>38</td>\n<td>37</td>\n</tr>\n<tr>\n<td><strong>AMO-Final-Submission</strong></td>\n<td>2</td>\n<td>39</td>\n<td>38</td>\n</tr>\n<tr>\n<td><strong>AMO-Final-Submission</strong></td>\n<td>3</td>\n<td>39</td>\n<td>41</td>\n</tr>\n<tr>\n<td><strong>AMO-Final-Submission</strong></td>\n<td>4</td>\n<td>39</td>\n<td>37</td>\n</tr>\n<tr>\n<td>SwarmRAG-Async-SVM</td>\n<td>1</td>\n<td>31</td>\n<td>39</td>\n</tr>\n<tr>\n<td>SwarmRAG-Async-SVM</td>\n<td>2</td>\n<td>30</td>\n<td>35</td>\n</tr>\n<tr>\n<td>SwarmRAG-Async-SVM</td>\n<td>3</td>\n<td>37</td>\n<td>41</td>\n</tr>\n<tr>\n<td>SwarmRAG-Async-SVM</td>\n<td>4</td>\n<td>28</td>\n<td>38</td>\n</tr>\n<tr>\n<td>SwarmRAG-Async-SVM</td>\n<td>5</td>\n<td>28</td>\n<td>33</td>\n</tr>\n<tr>\n<td>Standard - SVM</td>\n<td>1</td>\n<td>32</td>\n<td>35</td>\n</tr>\n<tr>\n<td>Standard - SVM</td>\n<td>2</td>\n<td>-</td>\n<td><strong>45</strong></td>\n</tr>\n<tr>\n<td>Standard - SVM</td>\n<td>3</td>\n<td>-</td>\n<td>38</td>\n</tr>\n<tr>\n<td>Standard - SVM</td>\n<td>4</td>\n<td>-</td>\n<td>35</td>\n</tr>\n<tr>\n<td>baseline-with-multiinjection</td>\n<td>1</td>\n<td>-</td>\n<td>33</td>\n</tr>\n<tr>\n<td>baseline-with-multiinjection</td>\n<td>2</td>\n<td>-</td>\n<td>41</td>\n</tr>\n<tr>\n<td>baseline-with-multiinjection</td>\n<td>3</td>\n<td>-</td>\n<td>41</td>\n</tr>\n<tr>\n<td>baseline-with-multiinjection</td>\n<td>4</td>\n<td>-</td>\n<td>35</td>\n</tr>\n<tr>\n<td>blackboard-collaborative-bul</td>\n<td>1</td>\n<td>-</td>\n<td>33</td>\n</tr>\n<tr>\n<td>blackboard-collaborative-bul</td>\n<td>2</td>\n<td>-</td>\n<td>35</td>\n</tr>\n<tr>\n<td>blackboard-collaborative-bul</td>\n<td>3</td>\n<td>-</td>\n<td>27</td>\n</tr>\n<tr>\n<td>Scout-CRAG-Arbiter</td>\n<td>1</td>\n<td>-</td>\n<td>30</td>\n</tr>\n<tr>\n<td>Scout-CRAG-Arbiter</td>\n<td>2</td>\n<td>-</td>\n<td>38</td>\n</tr>\n<tr>\n<td>Scout-CRAG-Arbiter</td>\n<td>3</td>\n<td>-</td>\n<td>35</td>\n</tr>\n<tr>\n<td>Scout-CRAG-Arbiter</td>\n<td>4</td>\n<td>-</td>\n<td>36</td>\n</tr>\n<tr>\n<td>baseline-notebook</td>\n<td>1</td>\n<td>-</td>\n<td>39</td>\n</tr>\n</tbody>\n</table>\n<h3>6.2 Analyzing the 45-to-41 Gap: The Variance Trap</h3>\n<p>At first glance, the public leaderboard data presents a paradox: our simpler <code>Standard - SVM</code> architecture achieved the highest peak score of the competition (45), yet our final, fully orchestrated <code>AMO</code> architecture peaked at 41. </p>\n<p>However, a closer analysis of the variance reveals why relying on the <code>Standard - SVM</code> architecture is computationally dangerous. While it achieved a 45 on Run 2, it also scored a 35 on Runs 1 and 4, representing a massive <strong>10-point variance swing</strong>. In a competition where the final private score is determined by running the notebook twice and penalizing inconsistency (awarding a half-point if only one run is correct), a highly variant architecture is an unacceptable liability. The 45 was a statistical outlier—a \"lucky\" run where the unstructured solvers happened to avoid timeout traps and frame-divergences. When tested on our stable local benchmark, this same architecture scored 32. Moreover, we were confident with our AMO-Final-Submission as it was more sound in logic as well as stable in local tests. We ran out of time to have few more test runs and experiments on the public leaderboard with this method. One of the lesson we learnt is to start early on AIMO4 to avoid this issue. </p>\n<h3>6.3 The Stabilization of AMO and why we selected this for final submission</h3>\n<p>The transition to the final <code>AMO</code> architecture was a deliberate engineering decision to trade peak variance for a heavily raised, stable floor. By introducing the Agentic Beam Search, the Async Verifier Pipeline, and the Regex Flaw Registry, we actively constrained the model's stochasticity. The results on our local benchmark demonstrate unprecedented stability: <strong>38, 39, 39, 39</strong>. The system became highly predictable, proving that our infrastructure successfully shielded the model from unrecoverable reasoning drifts.</p>\n<p>This stability translated directly to the public leaderboard, where the AMO-Final submission consistently grouped in a tight band of <strong>37 to 41</strong>, drastically suppressing the 10 point swings seen in earlier iterations. While architectural complexity—such as the overhead of Scouts and Evaluators—consumes inference time and slightly caps the maximum number of problems that can be fully explored, the resulting consistency guarantees the best odds for robust performance on the private evaluation. While it was tempting to go with leaderboard 45 submission, we decided to trust the data. The AMO architecture is superior to standard-SVM pipline and covers a lot of gaps. While the evaluation is done on 50 questions alone and there is a certain luck involved which might favor simpler systems (simplicity is perfection in small samples) we believe the AMO solution is more robust and is the best hedge to any problem and ordering. </p>\n<h3>6.4 Architectural Ablations &amp; Failures</h3>\n<p>The data table also highlights the empirical failure of several collaborative agent patterns, providing the foundation for our ablations (detailed in Section 7):</p>\n<ul>\n<li><strong>SwarmRAG &amp; Blackboard:</strong> Methodologies that allowed solvers to share intermediate insights (<code>SwarmRAG-Async-SVM</code> and <code>blackboard-collaborative-bul</code>) exhibited extreme volatility. Local scores plummeted as low as 28, and leaderboard scores crashed to 27. Our traces confirmed that these setups actively facilitated \"echo chambers\" of correlated errors.</li>\n<li><strong>CRAG (Corrective RAG):</strong> The <code>Scout-CRAG-Arbiter</code> runs hovered in the mid-30s. Injecting external problem corpus data during inference caused the model to overfit to the retrieved examples rather than focusing on the actual problem constraints.</li>\n</ul>\n<p>Ultimately, the empirical data proved that in a compute-constrained environment, isolation, adversarial verification, and structured search (AMO) heavily outperform both blind parallel sampling (<code>baseline</code>) and unverified agentic collaboration (<code>SwarmRAG</code>).</p>\n<hr>\n<h2>SECTION 7 — Experimental Components and Ablation</h2>\n<p>There were many different types of attempts we made on trying to build the best agentic structure for AIMO3. Some of them were novel and forward-looking but ultimately didn't make it into the final AMO to avoid noise, complexity, and lack of time. </p>\n<h3>7.1 Entropy-Based Answer Selection</h3>\n<p>Motivated by EDIS (arXiv:2602.01288), which suggests that entropy dynamics in token generation reveal reasoning quality, we computed mean, max-window, and tail entropy from raw vLLM <code>top_logprobs</code>.  </p>\n<ul>\n<li><em>Result:</em> Ablated. Without a trained calibration model, entropy metrics added noise. The OSS-120B model's entropy profile during fluent-but-wrong reasoning was practically indistinguishable from genuine mathematical computation. We tried to build interventions looking at entropy spikes, but it was evident that entropy is not a good signal for long OSS-120B traces, especially with Python tooling.</li>\n</ul>\n<h3>7.2 SwarmRAG: Collaborative Answer Sharing</h3>\n<p><em><a href=\"https://www.kaggle.com/code/davidacad10/41-50-aimo-swarmrag-with-entropy-based-signals\" target=\"_blank\">Notebook with SwarmRAG</a></em></p>\n<ul>\n<li><em>Hypothesis:</em> Concurrent solvers writing to a shared, in-memory ledger would accelerate convergence.</li>\n<li><em>Approach:</em> We created an agentic system where each solver's reasoning traces and Python codes were saved into a local VectorDB by creating embeddings using <code>all-MiniLM-L6-v2</code>. We had 2 RAG systems (one for traces, one for code). The RAG calls were infused as Python modules in the sandbox tools.</li>\n<li><em>Result:</em> Ablated. While the idea genuinely converged faster to correct answers in some problems, we noticed wrong solver responses poisoned other solvers. This created an \"echo chamber\" of correlated errors. Coordination among agents actively amplifies errors when the shared signal is not externally verified. This could be fixed by adding a Corrective RAG, but that adds an LLM call which loses time.</li>\n</ul>\n<h3>7.3 Collaborative Bulletin-Based Solvers</h3>\n<ul>\n<li><em>Hypothesis:</em> Broadcasting structured \"VERIFIED THEORY\" text from completed solvers would guide stuck solvers.</li>\n<li><em>Result:</em> Ablated. Orchestrating a bulletin system needed another LLM agent, losing time. Furthermore, the authoritative label caused solvers to blindly anchor on flawed premises, suffering the same poisoning issue as SwarmRAG. We pivoted entirely to the Master Vision - Resolver pipeline instead.</li>\n</ul>\n<hr>\n<h2>SECTION 8 — Bibliography</h2>\n<ol>\n<li>Gemini 2.5 Pro Capable of Winning Gold at IMO 2025     arXiv:2507.15855 [cs.AI]</li>\n<li>Long-horizon Reasoning Agent for Olympiad-Level Mathematical Problem Solving . arXiv:2512.10739 [cs.CL]</li>\n<li>Tree of Thoughts: Deliberate Problem Solving with Large Language Models     arXiv:2305.10601 [cs.CL]</li>\n<li>(2024) <em>MACM: Utilizing a Multi-Agent System for Condition Mining in Solving Complex Mathematical Problems</em>. arXiv:2404.04735.</li>\n<li>(2026) <em>EDIS: Diagnosing LLM Reasoning via Entropy Dynamics</em>. arXiv:2602.01288.</li>\n<li>(2025) <em>AIMO2 Winner NemoSkills GenSelect</em>. arXiv:2504.16891.</li>\n<li>Deep Think with Confidence     arXiv:2508.15260 [cs.LG]</li>\n<li>BREAKING MENTAL SET TO IMPROVE REASONING THROUGH DIVERSE MULTI-AGENT DEBATE (<a href=\"https://openreview.net/pdf?id=t6QHYUOQL7\" target=\"_blank\">https://openreview.net/pdf?id=t6QHYUOQL7</a>)</li>\n</ol>",
  "comments": [
    {
      "id": 3457762,
      "author_name": "Sam Bealing",
      "author_url": "",
      "post_date": "2026-05-14T09:52:03.320000",
      "content": "<p>Following up on the questions from <a href=\"https://www.kaggle.com/philipvonderlind\" target=\"_blank\">@philipvonderlind</a>, here are some additional questions to help us assess your submission:</p>\n<ol>\n<li><strong>Entropy debunking:</strong> Your Trace Viewer analysis concluded that token-level entropy has only weak correlation to correctness in a Python-tooled environment (\"entropy fluctuations largely reflected the model's confidence in Python syntax rather than mathematical truth\"). Several top public notebooks, including the popular <a href=\"https://www.kaggle.com/code/nihilisticneuralnet/44-50-let-me-over-cook\" target=\"_blank\">44/50 notebook</a>, use entropy weighting in their voting. How do you reconcile your finding with their reliance on it? Is the gain there also within noise, or are they using entropy in a way that is different from what you found not to work?</li>\n<li><strong>Verifier Agent error rates:</strong> Your Verifier Agent is described as \"an adversarial auditor that attempts to computationally falsify the claim over 6-8 turns\". Adversarial verification could either catch wrong answers the solver missed (good) or reject correct answers that look unusual (bad). Do you have data on the Verifier's true-positive rate (correctly rejecting wrong claims) vs false-positive rate (rejecting correct claims)?</li>\n<li><strong>Extremum Protocol invocation:</strong> You introduce the Extremum Protocol to address Extremum Bias as a systematic failure mode. On the 50-problem local benchmark, how often does the protocol actually fire, and on what fraction of those firings does it flip the answer from a wrong majority vote to the correct one?</li>\n</ol>\n<p>Look forward to reading your responses on these.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3457751,
      "author_name": "Philip Vonderlind",
      "author_url": "",
      "post_date": "2026-05-14T09:19:50.313000",
      "content": "<p>Hi, thank you for your submission to the Writeup Prize. <a href=\"https://www.kaggle.com/sambealing\" target=\"_blank\">@sambealing</a> and I will post some questions below that help us in assessing your submission more closely, as described in the <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/discussion/689703\" target=\"_blank\">updated discussion post.\n</a></p>\n<p>I like your use of plots to communicate the proposed architecture. I have a few questions about some of the stages:</p>\n<ol>\n<li><p><strong>Benchmark</strong>: You mention constructing a local benchmark to test your approach. Could you describe why you chose to create your own benchmark and explain the methodology behind it? There were many Math Corpus Prize submissions that have been widely used by the community, so I would be curious to understand the motivation. In addition, the scores on your local benchmark appear more stable than the public leaderboard results, which seem to have much higher variance. How do you explain this difference? For example, could it be related to always evaluating problems in the same order, differences in difficulty, or other benchmark-specific factors?</p></li>\n<li><p><strong>Time Management</strong>: You mention using the more extensive “Beam Search” generation strategy when there is abundant time remaining. Could this become problematic if many hard problems appear toward the end of the evaluation, after a significant amount of time has already been spent on expensive Beam Search runs earlier? Did you encounter or document such cases during development?</p></li>\n<li><p><strong>Temperature</strong>: Why does your SCOUT stage use a temperature of <code>0.6</code>? It would be helpful to motivate this choice with ablations showing that a non-default temperature improves performance. For example, the <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/model-capability-dominates\" target=\"_blank\">submission</a> by <a href=\"https://www.kaggle.com/natnitarach\" target=\"_blank\">@natnitarach</a> argues that <code>t=1</code> is already the most diverse and highest-performing setting for <code>gpt-oss-120b</code>.</p></li>\n<li><p><strong>Scouts</strong>: In practice, is the SCOUT phase worth the GPU time it consumes? I would expect it to use a non-negligible portion of the overall budget, which might otherwise be spent on generating additional solution completions. Did you run any experiments confirming that the SCOUT phase improves final performance enough to justify its cost?</p></li>\n<li><p><strong>Citations and Reproducibility</strong>: Please cite the publicly shared notebook, as it appears to serve as the basis for at least parts of your final submission. In addition, please share the code for all ablations and experiments, and document the steps required to reproduce them.</p></li>\n</ol>\n<p>Looking forward to your response :)</p>",
      "votes": 0,
      "replies": []
    }
  ],
  "comment_count": 2,
  "messages": [
    {
      "id": 3446759,
      "postDate": "2026-04-22T04:22:32.973Z",
      "content": "<h2>Abstract</h2>\n<p>We present <strong>AMO</strong>(Agentic Math Orchestrator), a multi-layer orchestration architecture designed to maximize the inference-time capabilities of frozen open-weight Large Language Models (LLMs) on olympiad-level mathematics. Operating under a strict 5-hour, single-GPU competition environment without internet access, AMO wraps GPT-OSS-120B with parallel reasoning, an asynchronous verification pipeline, real-time trajectory auditing, evidence-weighted answer selection, and topology-aware routing. Rather than fine-tuning the model, we treat mathematical robustness as a systems-engineering challenge. We introduce novel mechanisms including a pre-generation Scout Pool for structural classification, an Adaptive Orchestrator for continuous time-budgeting, dynamic switching between Standard and Agentic Beam Search modes, and a Master Vision conflict-resolution pipeline. We achieved a top public score of 45 using our baseline architecture and 41 using the fully orchestrated AMO version. Through extensive ablations, trace analysis, and local benchmark testing, we document specific LLM failure modes in competitive mathematics—such as extremum bias, execution timeouts, and frame-sensitive divergence—and present our architectural mitigations.</p>\n<hr>\n<h2>SECTION 1 — Introduction</h2>\n<p>The AI Mathematical Olympiad (AIMO) Progress Prize 3 presents a unique test-time compute challenge: solve 50 original, olympiad-level mathematical problems spanning algebra, combinatorics, geometry, and number theory within a 5-hour wall-clock budget on a single H100 GPU. The environment is strictly constrained—no internet access, no external APIs, and no opportunity for between-submission fine-tuning. Furthermore, the competition scoring heavily penalizes inconsistency; each submission is evaluated twice on the private set, awarding a half-point only if one run is correct. Consequently, mathematical robustness under inference constraints matters as much as the raw capability of the underlying model.</p>\n<p>This paper addresses a central challenge: given a powerful, frozen open-weight model (GPT-OSS-120B), how do we build an agentic system that converts high theoretical <em>pass@K</em> capability into reliable, single-submission correctness? The baseline notebooks on OSS120B had shown the high ceiling of it. With the limited time and resources in the competition period, we decided to focus on improving the efficiency and stability of oss120B solvers by creating an agentic dynamic time aware system to maximize the ceiling and floor. Through careful analysis we found many failure points, which could be solved/improved by optimized agentic solutions rather than focusing on a fine tuning to hope for a blackbox solution.</p>\n<p>The standard baseline approach to this problem—simply running $N$ parallel Tool-Integrated Reasoning (TIR) solvers and applying majority voting—is highly inefficient. Blind parallel generation wastes massive amounts of compute on \"doomed\" reasoning paths. If a solver misinterprets the problem in Turn 1, the subsequent twenty minutes of generation and Python execution are effectively dead compute. Furthermore, blind majority voting is vulnerable to \"false majorities,\" where multiple solvers anchor onto the same flawed assumption and confidently confirm one another's incorrect answers. </p>\n<p>To revolutionize this baseline, we introduce the <strong>Agentic Math Orchestrator (AMO)</strong>. AMO steps away from blind parallel generation, transforming the LLM into a highly structured, asynchronous multi-agent research team. The entire lifecycle of a problem is meticulously managed from end to end:</p>\n<ol>\n<li><strong>Pre-Computation Scouting:</strong> Before any heavy solving begins, a pool of \"Scout\" agents maps the structural topology of the problem (e.g., mathematical domain, extremum traps, large-number bounds).</li>\n<li><strong>Dynamic Routing &amp; Budgeting:</strong> An adaptive orchestrator evaluates the remaining wall-clock time and routes the problem to either <strong>Standard Mode</strong> (using parallel solvers seeded by a MiniPlanner pool) or <strong>Beam Mode</strong> (a deep, self-evaluating search tree), continuously adjusting resource allocation to ensure no problem is starved of compute.</li>\n<li><strong>Async Summarization Verification &amp; Master Vision:</strong> As soon as any solver proposes an answer, an asynchronous Summarizer and Bug Report (Verifier) pipeline is launched in the background. If competing answers without a majority emerge, a Master Vision agent synthesizes the findings to launch targeted \"Resolver\" agents, preventing the system from guessing blindly.</li>\n</ol>\n<p>A cornerstone of our architecture is the <strong>Agentic Beam Search</strong>. Designed to artificially compress the model’s $pass@20$ capability into a smaller compute footprint, this mode pauses parallel solvers mid-flight to conduct adversarial self-evaluations. By pruning mathematically unviable trajectories and applying Maximum Marginal Relevance (MMR) text-clustering to the surviving paths, we force mathematical diversity. This ensures the model searches fundamentally distinct frameworks rather than racing down identical dead ends, drastically increasing the odds of finding the correct solution.</p>\n<p>To reliably extract the correct answer from this agentic swarm, we replaced simple majority voting with a <strong>Multi-Tiered Evidence Hierarchy</strong>. Answers are selected based on rigorous criteria: Resolver agent voting weight, Verifier confidence scores (where adversarial Python scripts attempt to falsify the claim), and \"Code Supremacy\" (awarding bonuses to answers explicitly proven by constraint solvers like <code>z3</code>,<code>ortools</code>, <code>pulp</code> etc. and python tool output verified answer). While we initially explored using token-level entropy dynamics as a primary selection parameter, extensive testing revealed that without a trained calibration model, entropy added noise (especially in python tool based agents)—fluent hallucinations were often indistinguishable from genuine computation. Similarly, early attempts at inter-agent collaboration (such as SwarmRAG or sharing intermediate reasoning bulletins) didn't get into the final submission, after we observed they created echo chambers of correlated errors.</p>\n<p>Finally, treating robust inference as a systems-engineering challenge required deep forensic visibility. To build this system, we logged every solver trace including reasoning step, tool call, and token metric as well as the scout/summarizer/verifier/master vision reports from extensive local benchmark runs. We developed a custom Streamlit-based <strong>Trace Viewer</strong> to replay these multi-turn conversations. This visualizer was instrumental in identifying specific model pathologies—such as infinite loop traps, premature guessing, and format hacking. Insights derived directly from this Trace Viewer birthed our <strong>Regex Flaw Registry</strong>, a real-time monitoring system that penalizes flawed trajectories and injects mid-flight corrective nudges to steer solvers back on track.</p>\n<p>In the following sections, we detail the complete AMO architecture, documenting our dynamic resource scaling, multi-mode solver logic, and the empirical ablations that define our approach to inference-time mathematical orchestration.</p>\n<hr>\n<h2>SECTION 2 — Problem and Competition Analysis</h2>\n<h3>2.1 The Host's Pass@K Analysis and What It Reveals</h3>\n<p>Recent evaluations published by the competition hosts compared the results of open-weight models (OSS-120B vs. Nemotron-30B) across both public and private sets. While these evaluations were likely conducted without strict inference-time constraints and lacked access to Python execution tools, they provided a critical baseline for the raw reasoning capability of OSS-120B.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Fc3afa40a42ea107551dffdbc15c86c9c%2Fhostanalysis2.png?generation=1776744674727446&amp;alt=media\" alt=\"Host Analysis of OSS120B compared ot Nemetron-30B on Public and Private Questions\"></p>\n<p>The key finding: at pass@100, only 1–2 problems across both sets remained completely unsolvable. At pass@20, a strong open-weight model (class-equivalent to OSS-120B) averaged 43–48 on the private set, with the public and private difficulty distributions showing overlapping 95% confidence intervals. This analysis dictates our fundamental strategy:</p>\n<ol>\n<li><strong>The ceiling is orchestration, not knowledge:</strong> The model possesses the requisite mathematical priors to solve nearly the entire set.</li>\n<li><strong>The gap is consistency:</strong> The delta between a pass@20 ceiling of 45/50 and a baseline notebook ceiling score of 44/50 shows the capability of model, but consistency is what's missing.</li>\n<li><strong>The goal:</strong> Approximating pass@20 performance within a pass@1 or pass@2 budget constraint requires filtering out pathological reasoning traces before they consume the clock.</li>\n</ol>\n<p>The Host's analysis was done on OSS120B models without python tools. So the ceiling of OSS120B with python tool should be higher. </p>\n<ul>\n<li><strong>Easy (approx. 25–27 problems):</strong> Problems falling into the pass@1 to pass@3 range. OSS-120B solves these reliably even without Python tools. For these, standard parallel solvers converge rapidly on a majority answer without advanced orchestration.</li>\n<li><strong>Medium (approx. 13–15 problems):</strong> Problems in the pass@3 to pass@5 range. While the addition of Python tools improves performance, a clean majority breakout is not guaranteed. In this tier, a minority answer may actually be the mathematically correct one, necessitating an architecture that weights verified answers over raw frequencies.</li>\n<li><strong>Hard (approx. 8–10 problems):</strong> Problems in the pass@20 to pass@100 range. With a strict 5-hour, single-GPU limit, executing 20+ parallel solvers per problem is computationally impossible. We needed an architecture that artificially compresses the pass@20 search space down to a pass@5 compute footprint by upsampling the most promising trajectory paths. This requirement birthed our Agentic Beam Search model (detailed in Section 4.3).</li>\n</ul>\n<h3>2.2 A Taxonomy of Failure Modes</h3>\n<p>Through forensic trace analysis of our local benchmarks (detailed in Section 3.1), we categorized LLM failures not by mathematical subject (e.g., Geometry vs. Algebra), but by behavioral pathology:</p>\n<ul>\n<li><strong>True Unsolvability:</strong> The model fundamentally lacks the mathematical insight required, even at pass@100. No orchestration can fix this.</li>\n<li><strong>Memory-Anchored Fast Failure:</strong> The model recognizes a superficial pattern from its training data, bypasses genuine mathematical search, and fluently hallucinates a confidently wrong answer. The signature in our traces is a very short generation, 0–1 Python calls, and execution under 60 seconds. This is an unrecoverable failure type without retraining. We identified multiple such instances in our benchmark (e.g., <code>imo-bench-algebra-092</code>), where the model clearly overfitted to training data and converged on a known, but incorrect, schema.</li>\n<li><strong>Frame-Sensitive Divergence:</strong> The problem permits multiple plausible initial readings. Solvers committing to a flawed frame produce long, internally consistent, but totally incorrect solutions. In the \"Norwegian number\" reference problem, solvers that anchored on standard divisibility rules solved the wrong problem with absolute confidence. Our Master Vision–Resolver pipeline was built explicitly to break these flawed frames.</li>\n<li><strong>Extremum Bias Under Majority Voting:</strong> Problems asking for a \"maximum\" or \"minimum\" require proving a bound is achievable (constructive) <em>and</em> that no better bound exists (impossibility). Solvers frequently prove only the constructive direction, reporting a valid but non-tight bound. For example, on <code>imo-bench-algebra-055</code> (a maximum problem), we observed 4 solvers converging on 1055, while only 1 solver correctly found 2079. Under standard majority voting, the system would confidently select the wrong, sub-optimal bound.</li>\n</ul>\n<h3>2.3 Why OSS-120B and Inference-Time Optimization</h3>\n<p>The baseline notebook provided by the competition using OSS-120B with 8 parallel solvers and simple majority voting already produced scoresranging from 34-44. This proves the model demonstrably gets problems right when it gets the framing correct. Fine-tuning requires datasets, training time, and GPU resources. We had joined the competition fairly late with about 2 months left and the risk-to-reward for finetuning a model to have high scores was low. With limited weekly GPU time and number of days we had, building around OSS120B seemed to be the best option. We had an initial baseline method built with 6 solvers and summarizer-verifier-mastervision-resolver pipeline (not async but once per answer) score 45 in public leaderboard with oss120B-high reasoning model. This demonstrates that 45+ correct answers are achievable, the effort-to-return ratio strongly favors building the best possible amplifier (test-time compute scaling) for a model we trust, rather than training it to know marginally more.</p>\n<hr>\n<h2>SECTION 3 — Infrastructure Foundations</h2>\n<h3>3.1 Building a Stable Benchmark Dataset</h3>\n<p>To prevent public leaderboard overfitting, we constructed <code>benchmark_50_v2</code>, a 50-problem local dataset curated from AIMO reference problems and external IMO benchmarks across algebra, combinatorics, geometry, and number theory. All architectural decisions and ablations in this paper are measured against this reliable ground truth, ensuring our improvements generalize to the hidden private set. This dataset is attached along with the writeup. The final submission we made scored 39/50 on this benchmark dataset with 9 minutes to spare. This was the highest score we had among all our inference pipelines built. This was the major reason, we were confident to submit the pipeline which scored only 37 in public leaderboard instead of the 45 which was second on the public leaderboard. This benchmark local run dataset was influential in helping us understand what different failure modes are, how to mitigate them, how to orchestrate time etc. Without these local runs, it was very hard/impossible to build a stable process with the runtime obfuscated in the leaderboard submissions.</p>\n<h3>3.2 Inference Infrastructure: vLLM and Persistent Jupyter Sandboxes</h3>\n<p>Our base engine is GPT-OSS-120B served via <code>vLLM</code> with <code>fp8</code> weight quantization and <code>fp8_e4m3</code> KV caching, achieving 96% GPU memory utilization with a 65,536 token context. The model is invoked via the Harmony tool protocol. \nCrucially, to eliminate the multi-second latency of cold-starting Docker/Jupyter instances on every tool call, we pre-warm and maintain a pool of 20 persistent, state-isolated Jupyter kernels. </p>\n<h3>3.3 Extended Python Toolbox</h3>\n<p>Standard environments provide <code>math</code>, <code>numpy</code>, and <code>sympy</code>. Through trace analysis, we observed the LLM natively attempting to write formal constraint formulations, only to fail via <code>ImportError</code>. By pre-installing <code>z3-solver</code>, <code>ortools</code> (CP-SAT), <code>pulp</code>, <code>mip</code>, and <code>pyscipopt</code>, we converted silent failures into productive optimization queries. Traces confirmed <code>z3</code> dominated small-constraint satisfiability, while <code>ortools</code> excelled at large combinatorial enumeration.</p>\n<h3>3.4 Trace Viewer: Forensic Analysis Infrastructure</h3>\n<p>We developed a Streamlit application (<a href=\"https://aimo-trace-viewer.streamlit.app/\" target=\"_blank\">aimo-solver-trace-viewer</a>) to parse and read the trace logs. This trace viewer was instrumental in understanding how OSS120B solves a prooblem and was instrumental in many of the designs we built. These logs included the raw turns based reasoning at different roles and channels and per turn entropy calculated. Every local run was executed in debug mode, saving the full multi-turn reasoning traces of all solvers and resolvers, including per-turn entropy calculations. This visualizer was instrumental in designing our architecture:</p>\n<ul>\n<li><strong>Pathology Identification:</strong> By reading full traces, we understood exactly where and why wrong-answer solvers deviated from the correct path.</li>\n<li><strong>The Regex Flaw Registry:</strong> We discovered solvers outputting \"Hail Mary\" answers (e.g., arbitrarily guessing 0 or 99999 when stuck) or generating lists of answers despite explicit instructions prohibiting it. Because the baseline <code>_select_answer</code> function blindly extracted numbers from <code>\\boxed{}</code> formats, these hallucinations often bypassed validation. We implemented a real-time Regex Flaw Registry to catch these outputs, penalize the solver's score, and inject mid-flight corrective nudges.</li>\n<li><strong>Infinite Loop Termination:</strong> Traces revealed that solvers occasionally fixated on \"Infinity\" as an answer. Despite multiple corrective injections, these solvers refused to pivot. We implemented a hard-kill rule: if a solver attempts an infinite answer 3 times, its thread is terminated to conserve compute.</li>\n<li><strong>Debunking Entropy:</strong> We initially hypothesized that token-level entropy could weight answer selection. However, the Trace Viewer revealed that entropy had only a weak correlation to correctness. In a Python-tooled environment, entropy fluctuations largely reflected the model's confidence in Python syntax rather than mathematical truth. Consequently, we discarded entropy as a primary routing metric.</li>\n</ul>\n<p>We have published the streamlit app public. You can play around with the traces you have generated (by running the submission code attached below) or by using the sample traces attached below for specific questions (Norwegian Problem, imo-bench-combinatorics-014)  </p>\n<h3>3.5 Identifying the Extremum Problem</h3>\n<p>The Trace Viewer exposed a critical, systematic vulnerability in standard LLM orchestration: the <strong>Extremum Trap</strong>. </p>\n<p>When a problem asks for the <em>smallest</em>, <em>largest</em>, <em>minimum</em>, or <em>maximum</em> value, it inherently possesses a multi-modal solution space. A sub-optimal bound (e.g., a configuration that yields 1055 when the true maximum is 2079) is mathematically \"valid\" in the sense that it satisfies all the constraints of the problem. </p>\n<p>When observing our benchmark runs (e.g., <code>imo-bench-algebra-055</code>), we found that standard solvers would quickly find a sub-optimal bound, write a Python script to verify that it satisfies the constraints, receive a <code>True</code> output, and confidently halt. Because it is computationally much easier to find a sub-optimal configuration than the absolute mathematical limit, a majority of parallel solvers will converge on the weaker bound. </p>\n<p><strong>Why Verification Fails Here:</strong> Even our advanced asynchronous Verifier (Bug Report) agents struggle to falsify these sub-optimal answers. If a solver claims the maximum is 1055, the Verifier writes a script checking if 1055 is achievable. The script returns <code>True</code>, and the Verifier assigns a high Confidence Score to the wrong answer.</p>\n<p>This empirical discovery mandated a systemic architectural intervention. We realized that for extremum problems, <strong>raw frequency and verification scores are misleading signals</strong>. This necessitated the creation of our dedicated Extremum Protocol (detailed in Section 4), which forces the Orchestrator to bypass majority breakouts entirely, intentionally seeking out minority answers that offer tighter, mathematically verified bounds.</p>\n<hr>\n<h2>SECTION 4 — AMO: The Agentic Math Orchestrator</h2>\n<p>The AMO system abandons the standard paradigm of blind, unguided parallel sampling. Instead, it executes as a highly sophisticated, closed-loop pipeline of specialized LLM agents and deterministic Python guardrails. By treating reasoning as a continuous control problem, AMO maximizes test-time compute efficiency.</p>\n<h3>4.1 The Orchestrator and Deck-Aware Time Allocation</h3>\n<p>n a 5-hour, 50-problem constrained environment, a static time-per-problem budget creates severe latency spikes; a single hard problem consuming 800+ seconds early in the run will irreversibly starve subsequent problems. The AMO Orchestrator serves as the global brain of the system, replacing static budgets with a closed-loop Bayesian controller.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F699d2691ab16b8282e06a75d1b89cadc%2Forchestrator.jpg?generation=1776744853119000&amp;alt=media\" alt=\"Figure 2 - Orchestrator &amp; Dynamic Budgeting Flowchart\"></p>\n<p><strong>Initialization and Global Time Metrics:</strong>\nThe Orchestrator initializes a difficulty \"Deck\" modeled on the host's pass@K empirical distribution (27 Easy, 13 Medium, 10 Hard). It maintains a rolling 10-problem adaptive time history for each tier to \"learn\" the specific compute friction of the current test set. At the start of each problem, global time metrics are calculated continuously:</p>\n<ul>\n<li><code>Time_Left = 5H - Elapsed - Buffer (120s)</code></li>\n<li><code>Fair_Share = Time_Left / Problems_Left</code></li>\n<li><code>Expected_Cost = Σ (Deck_Remaining[L] × Rolling_Avg_Time[L])</code></li>\n<li><code>Surplus_Ratio = Time_Left / Expected_Cost</code></li>\n</ul>\n<p><strong>Bayesian Regime Shifting &amp; Resource Binding:</strong>\nRelying solely on an LLM's perceived difficulty is dangerous. The Orchestrator cross-references the Scout's difficulty rating (see Sec 4.2) with the <code>Surplus_Ratio</code> to execute Bayesian regime shifts:</p>\n<ul>\n<li><em>Time Abundance (<code>Surplus_Ratio &gt; 1.5</code> or <code>Fair_Share &gt; 360s</code>):</em> Upgrades the problem tier (e.g., Medium $\\rightarrow$ Hard), unlocking the computationally expensive Agentic Beam Search.</li>\n<li><em>Time Crunch (<code>Surplus_Ratio &lt; 0.7</code> or <code>Fair_Share &lt; 230s</code>):</em> Engages the Emergency Brake, forcibly downgrading Hard problems to Standard execution to protect the global clock.</li>\n</ul>\n<p>Based on the calculated <code>Fair_Share</code>, the Orchestrator dynamically binds all execution parameters to prevent clampdowns:</p>\n<table>\n<thead>\n<tr>\n<th>Fair Share Target</th>\n<th>Max Initial Solvers</th>\n<th>Early Stop Threshold</th>\n<th>Max Verifier Turns</th>\n<th>Rescue Resolvers</th>\n<th>Planners Used?</th>\n<th>Extremum Force</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>&lt; 240s</strong> (Extreme)</td>\n<td>5</td>\n<td>3</td>\n<td>5</td>\n<td>0</td>\n<td>No</td>\n<td>1</td>\n</tr>\n<tr>\n<td><strong>&lt; 280s</strong> (Tight)</td>\n<td>6</td>\n<td>4</td>\n<td>5</td>\n<td>2</td>\n<td>No</td>\n<td>1</td>\n</tr>\n<tr>\n<td><strong>&lt; 320s</strong> (Moderate)</td>\n<td>7</td>\n<td>4</td>\n<td>5</td>\n<td>2</td>\n<td>Yes (N=10)</td>\n<td>2</td>\n</tr>\n<tr>\n<td><strong>&lt; 352s</strong> (Healthy)</td>\n<td>8</td>\n<td>5</td>\n<td>7</td>\n<td>2</td>\n<td>Yes (N=12)</td>\n<td>3</td>\n</tr>\n<tr>\n<td><strong>≥ 352s</strong> (Abundant)</td>\n<td>8 (or Beam)</td>\n<td>5</td>\n<td>8</td>\n<td>2</td>\n<td>Yes (N=16)</td>\n<td>4</td>\n</tr>\n</tbody>\n</table>\n<p>The Absolute Budget is mechanically clamped: <code>Budget = min(max(fair_share * 2.6 + resolver_bonus, MIN_CAP), MAX_CAP)</code>, coupled with a strict global failsafe <code>min(Budget, Time_Left * 0.85)</code> ensuring the system never throws a Kaggle timeout exception.</p>\n<p><strong>Post-Solve Empirical Reclassification:</strong>\nAfter a problem is solved, the Orchestrator evaluates the <em>actual</em> difficulty to update the Deck. It computes the consensus ratio (e.g., 4/5 solvers agreeing = 80%). If consensus $\\ge 80\\%$, it classifies the problem as Easy regardless of initial predictions. Conversely, if wall-clock time exceeded 800s, it forces a Hard classification. This feedback loop ensures the rolling time averages accurately reflect empirical reality.</p>\n<h3>4.2 Scout Pool: Structural Problem Analysis</h3>\n<p>Before launching computationally expensive solvers, AMO must map the problem's mathematical topology to inject specific guardrails, identify expected problem level etc.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F94d9e95c3a2384e3b83346e62aa10091%2FScout.jpg?generation=1776744789688538&amp;alt=media\" alt=\"Figure 1: Scout Pool &amp; Consensus Engine Flowchart\"></p>\n<p>The <strong>Scout Dispatcher</strong> launches 4 parallel threads at a higher temperature (T=0.6) using unique random seeds. The LLM is explicitly instructed <em>not</em> to solve the problem, but to output a JSON schema mapping the domain, extraction operations, large number flags, and timeout risks.</p>\n<p><strong>Consensus Normalization (Anti-Poisoning):</strong>\nBecause LLMs hallucinate, a single flawed scout reading could poison the entire solver pool. We aggregate the 4 JSON blueprints using a Map-Reduce paradigm:</p>\n<ul>\n<li><strong>Domain Rules (Majority Vote):</strong> The system tallies domain tags. If a domain (e.g., Geometry) receives $\\ge 2$ votes, hardcoded domain-specific axioms (e.g., feasibility bounds, collinearity checks) are retrieved and additively injected into all downstream solver system prompts.</li>\n<li><strong>Extremum Protocol Trigger:</strong> If more than 3 scouts flag <code>is_extremum = True</code> AND the extraction operation is <code>direct</code>, the system activates a global <strong>Extremum Override</strong>. This disables early-verifier breakouts and forces tight-bound verification during Answer Selection. This makes sure we have checks enabled to make sure we are submitting the best extremum fit verified answer and not just the majority voted.</li>\n<li><strong>Objective Difficulty Scoring:</strong> LLMs systematically underestimate problems they will get wrong. Instead of trusting the LLM's stated difficulty, we compute an objective score avoiding LLM bias. A base score is calculated across the 4 scouts, appending structural penalties: $+1.0$ for <code>timeout_risk</code>, $+1.5$ for <code>adversarial_structure</code>, $+1.0$ for <code>find_all</code> operations. The average of these scores across valid scouts dictates the final initial routing tier (Easy/Medium/Hard).</li>\n</ul>\n<h3>4.3 The Agentic Beam Search Paradigm</h3>\n<p>A fundamental limitation of open-weight LLMs in competitive mathematics is trajectory drift. While a model might possess the mathematical priors to solve a problem (demonstrated by a high pass@100 rate), parallel sampling without intervention wastes vast amounts of compute on \"doomed\" reasoning paths. If a solver commits to a mathematically flawed frame in Turn 1, the subsequent twenty minutes of generation and Python execution become effectively dead compute. </p>\n<p>Furthermore, we operate under strict hardware limits: a single H100 GPU can practically sustain only 8 to 12 parallel solvers when pushing towards a 65,536 token context limit. For Hard (and some Medium) tier questions where the empirical success rate is pass@20 or even pass@100, simply running 8 parallel solvers at high temperature ($T=1.0$) is mathematically inefficient and relies heavily on luck. To reliably conquer these problems within our allocated 5-hour time budget, we must achieve a higher effective sample size, strictly enforce mathematical diversity, and drastically increase trajectory accuracy—all without exceeding the GPU's memory or the Orchestrator's time allocation.</p>\n<p>To solve this, we introduce <strong>Agentic Beam Search</strong>. Unlike traditional token-level beam search, which evaluates localized token probabilities, Agentic Beam Search operates at the <em>reasoning-trajectory level</em>. Its primary objective is to artificially compress the model's pass@20 capability into a pass@5 compute footprint. It achieves this by spawning a large initial pool of solvers (e.g., N=20), aggressively pruning mathematically unviable trajectories mid-flight, and reallocating the GPU's memory and compute only to diverse, high-potential paths.</p>\n<p>Because we operate in a zero-internet inference environment without a pre-trained Process Reward Model (PRM) like GenSelect, we construct our beam evaluation heuristic using a combination of self eval of solvers, empirical execution signals, and text-based clustering.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F9f42bad3d2d2bad5807d06da4e24f3bc%2Fagentic_beam_search.jpg?generation=1776744933303486&amp;alt=media\" alt=\"Figure 3.a - Agentic Beam Search Flowchart\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F1bd97520ea24f9002c3fc1977d3db70d%2Fagentic_beam_self_eval.jpg?generation=1776745869037702&amp;alt=media\" alt=\"Figure 3.b - Agentic Beam Self Eval\"></p>\n<h4>4.3.1 The Heuristic Evaluation (BEAM_EVAL)</h4>\n<p>At designated checkpoints, the solver's execution is paused. Without dropping the existing KV-cache, an adversarial <code>BEAM_EVAL</code> prompt is injected into the <code>Role.ASSISTANT</code> channel. The model is forced to objectively audit its own reasoning trace and output a JSON schema scoring itself out of 5 across five strict criteria:</p>\n<ol>\n<li><strong>Decomposition Clarity:</strong> Are all constraints formulated into strict algebraic equations?</li>\n<li><strong>Structural Insight Depth:</strong> Has a highly specific, non-trivial theorem been identified and justified?</li>\n<li><strong>Assumption Transparency:</strong> Are edge cases actively hunted and explicitly listed for verification?</li>\n<li><strong>Solution Path Concreteness:</strong> Is there precise algorithmic pseudocode, or is the solver \"hand-waving\" intermediate steps?</li>\n<li><strong>Viability &amp; Progress:</strong> Are the Python executions returning mathematically useful data, or is the solver stuck in a timeout/syntax loop?</li>\n</ol>\n<p>The model is also instructed to extract a 100-word <code>approach_summary</code> of the current trajectory.</p>\n<h4>4.3.2 Grounding in Execution Reality</h4>\n<p>LLM-as-a-Judge mechanisms are notoriously prone to self-confirmation bias; a model will frequently award high scores to fluent but mathematically hallucinated reasoning. To ground the beam score in objective reality, we blend the subjective LLM evaluation with an empirical Python execution score (<code>python_score = successful_calls / total_calls</code>). We also subtract the <code>trace_penalty</code> accumulated by the Regex Flaw Registry (e.g., penalties for outputting infinity or using lazy phrasing). \nThe base node score is calculated as:\n$$Beam_Score = 0.8 \\times \\left(\\frac{self_eval_sum}{25}\\right) + 0.2 \\times python_score - trace_penalty$$</p>\n<h4>4.3.3 Enforcing Mathematical Diversity via Embedding-Based MMR</h4>\n<p>Selecting the top-$K$ nodes based purely on the $Beam_Score$ risks severe mode collapse. If three solvers adopt the same fundamentally flawed (but highly confident) combinatorial approach, keeping all three wastes precious beam width. To combat this, we explicitly require <em>mathematical diversity</em>.</p>\n<p>During the <code>BEAM_EVAL</code> phase, the LLM extracts a 100-word <code>approach_summary</code> of its current trajectory. To measure semantic similarity accurately, we project these summaries into a dense vector space using a lightweight, pre-trained sentence embedding model (e.g., <code>all-MiniLM-L6-v2</code>). We then calculate the cosine distance between the embeddings of all surviving nodes. </p>\n<p>Finally, we apply a greedy Maximum Marginal Relevance (MMR) selection algorithm. A candidate's final evaluation score heavily rewards its semantic distance from the approaches of already-selected nodes:\n$$Final_Eval_Score = 0.9 \\times Beam_Score + 0.1 \\times \\min_{selected}(Cosine_Distance)$$\nBy using dense embeddings rather than fragile keyword matching, this guarantees that the surviving beams explore fundamentally distinct mathematical frameworks, dramatically increasing the probability that the true solution path survives the prune.</p>\n<p>We deploy this Agentic Beam Search framework in two distinct areas of the AMO architecture, scaling its depth based on the Orchestrator's time budget.</p>\n<h4>Instantiation 1: The MiniPlanner Pool (Single-Turn Seeding) Used In Standard Mode</h4>\n<p>On problems where the Orchestrator detects a \"Moderate\" or \"Healthy\" time budget, framing failures are our primary threat. Before any full solvers are launched, we instantiate a single-turn version of the beam search to generate starting hypotheses.</p>\n<ul>\n<li><strong>Mechanism:</strong> We spawn 10 to 12 lightweight, 2-turn planners. They evaluate the problem and propose a mathematical approach.</li>\n<li><strong>Evaluation &amp; Pruning:</strong> The <code>BEAM_EVAL</code> rubric is applied to these 10-12 solvers. Using the MMR text-cosine algorithm, we prune the pool down to 6 to 8 highly diverse, high-quality starting plans.</li>\n<li><strong>Seeding:</strong> These surviving plans are prepended to the traces of the Standard Mode solvers. By investing compute in single-turn diversity upfront, we guarantee that our parallel solvers do not blindly race down identical dead ends.</li>\n</ul>\n<h4>Instantiation 2: Full Beam Mode Execution (Multi-Turn Funnel) Used in Beam Mode</h4>\n<p>When the Orchestrator calculates a <code>Surplus_Ratio &gt; 1.5</code> (Time Abundance) or on a Hard problem, it bypasses Standard Mode entirely and deploys the full, multi-turn Agentic Beam Search to find the most diverse best solver traces.</p>\n<h3>4.4 Execution Routing: Agentic Beam vs. Standard Mode</h3>\n<p>We deploy the Agentic Beam Search framework scaled to the Orchestrator's time budget.</p>\n<h4>4.4.1 Standard Mode &amp; The MiniPlanner Pool</h4>\n<p>When routed to Standard Mode (Tight/Moderate budgets), framing failures are our primary threat. Before full solvers are launched, we instantiate a 2-turn version of the beam search to generate starting hypotheses.</p>\n<ul>\n<li><strong>The MiniPlanner Pool:</strong> We spawn 10-12 lightweight planners. They evaluate the problem, propose an approach, and are immediately scored by the <code>BEAM_EVAL</code> rubric. This is a mini version of full agentic beam search</li>\n<li><strong>MMR Diversity Seeding:</strong> Using the text-cosine MMR algorithm, we prune the pool down to 6-8 highly diverse, high-quality starting plans. These surviving plans are prepended to the traces of the Standard Mode solvers. Investing compute in single-turn diversity upfront guarantees our parallel solvers do not blindly race down identical dead ends.</li>\n</ul>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F785cdb70a8b23033e181df8fa5364050%2Fstandard_mode_solver.jpg?generation=1776745033197404&amp;alt=media\" alt=\"Figure 5 - Standard Mode Solver Architecture Flowchart\"></p>\n<p>Standard Mode executes 6-8 Tool-Integrated Reasoning (TIR) solvers concurrently. They operate under deterministic real-time guardrails (Section 4.5) and are designed to race toward a verified majority breakout to conserve time for later problems.</p>\n<p>Execution is governed by deterministic, real-time guardrails:</p>\n<ul>\n<li><strong>Flaw Registry:</strong> A regex engine parses real-time generation. <ul>\n<li><em>Tier 1 (Fatal):</em> Outputting infinity/lists injects hard overrides; 3 strikes terminate the solver.</li>\n<li><em>Tier 2.5 (Timeouts):</em> Detecting naïve loops (e.g., <code>itertools.permutations</code>) instantly injects a <code>Role.ASSISTANT</code> nudge demanding <code>z3</code> or a soft-timeout loop (<code>if time.time() - t0 &gt; 15: break</code>).</li></ul></li>\n<li><strong>Live Guide Checkpoint:</strong> At T=380s$, a deep LLM audit is triggered. If the trajectory is flawed (e.g., dropped constraints), corrective guidance is seamlessly injected into the <code>ASSISTANT</code> channel, preserving internal monologue continuity.</li>\n</ul>\n<h4>4.4.2 Beam Mode</h4>\n<p>For Hard problems with abundant time, we deploy an Agentic Beam Search to explore full multi-turn reasoning trajectories.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F808b5c456e32aa6b849f7cbd00adf11d%2FBeam_Mode_Solver.jpg?generation=1776745802921454&amp;alt=media\" alt=\"Figure 4 - Beam Mode Solver Flowchart\"></p>\n<ol>\n<li><strong>Phase 1:</strong> 20 parallel Python-tooled solvers are spawned for 2 turns (or 120 seconds).</li>\n<li><strong>Beam Self-Eval:</strong> Without losing the existing KV-Cache, a strict auditing prompt is injected into the <code>ASSISTANT</code> role. The model scores its own trajectory out of 25. </li>\n<li><strong>MMR Pruning:</strong> We apply the formula: \n<code>Beam Score = 0.8 * self_eval + 0.2 * py_score - trace_penalty</code>\n<code>Final Eval Score = 0.9 * Beam Score + 0.1 * distance_score</code>\nThe top 16 solvers survive.</li>\n<li><strong>Phase 2 &amp; Deep Run:</strong> Survivors run for 4 more turns, are evaluated, pruned down to 8, and enter a \"Deep Run\" until completion.</li>\n</ol>\n<h3>4.5 Live Interventions &amp; Context-Preserving Guardrails</h3>\n<p>A major contribution of AMO is the realization that LLMs must be actively \"steered\" during generation. However, standard conversational injection (using <code>Role.USER</code>) breaks the model's internal monologue and induces conversational mode collapse. </p>\n<p>Instead, we utilize <strong>Context-Preserving Assistant Injections</strong>. When a flaw is detected, we format the correction as an internal thought (e.g., <em>\"Wait, I am attempting naïve brute force. I must add a soft-timeout…\"</em>) and append it to the vLLM <code>Conversation</code> object as <code>Role.ASSISTANT</code>. Because the existing prompt token IDs are reused, <code>vLLM</code>'s prefix caching handles this seamlessly without re-computing attention for the prefix, saving massive compute while forcing the model to adopt the correction as its own logic.</p>\n<p><strong>4.5.1 The Regex Flaw Registry</strong>\nWe actively parse the real-time text stream against a global registry of behavioral pathologies:</p>\n<ul>\n<li><em>Tier 1 (Fatal):</em> Outputting infinity, decimals, or lists. Injects a severe constraint reminder. 3 strikes result in thread termination.</li>\n<li><em>Tier 2.5 (Timeouts):</em> Detecting <code>itertools</code>, <code>collections.deque</code>, or naïve <code>while</code> loops triggers an instant injection demanding the use of <code>z3</code> or the insertion of a strict soft-timeout block (<code>if time.time() - t0 &gt; 15: break</code>), directly preventing hard Kaggle kernel timeouts.</li>\n<li><em>Tier 3 (Silent):</em> Detecting \"guess\", \"assume by symmetry\", or memory-search language applies silent trace weight reductions to the final answer scoring.</li>\n</ul>\n<p><strong>4.5.2 The Live Guide Checkpoint Algorithm</strong>\nTo catch complex mathematical drift, we trigger an LLM-based audit mid-flight.</p>\n<ol>\n<li><strong>Trigger:</strong> At $T=380s$, if the solver has $\\ge 1$ Python calls but no answer.</li>\n<li><strong>Audit Prompt:</strong> A deepcopy of the current trace (ensuring 100% prefix cache hit) is appended with an Early/Late Audit Prompt asking: <em>Is the computation consistent with printed outputs? Have constraints been dropped?</em></li>\n<li><strong>Parse &amp; Inject:</strong> The Live Guide outputs an <code>URGENCY</code> score (0.0 to 1.0) and <code>CORRECTION_TEXT</code>. If <code>URGENCY &gt;= 0.90</code>, the correction is injected into the main solver's <code>ASSISTANT</code> channel, demanding a specific, verifiable computational action. </li>\n</ol>\n<h3>4.6 Asynchronous Verification Pipeline (S-V-MV)</h3>\n<p>AMO does not trust simple majority voting. As solvers find answers, their traces are immediately passed to an asynchronous pipeline. This architecture was inspired by two works: <em>Long-horizon Reasoning Agent for Olympiad-Level Mathematical Problem Solving (Intern-S1-MO)</em> [2] and <em>Gemini 2.5 Pro Capable of Winning Gold at IMO 2025</em> [1].</p>\n<p>The core idea of agentic solution to solving IMO level math problems in [2] was to iteratively reason-verify-summarize it into lemmas, by adding the lemmas created in each steps into a lemma library memory, added in as input into next iteration along with the question. The architecture idea they have used is added below. </p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Fd5619890df7ef3f7b559037e3097d71e%2Fintern-s1-MO-agentic-framework.jpg?generation=1776817495224311&amp;alt=media\" alt=\" The agentic framwork of Intern-S1-MO\"></p>\n<p>While Intern-S1-MO iteratively reasons-verifies-summarizes by adding lemmas into a library memory (shown above), this multi-step sequential solving is not custom-fit for OSS-120B under severe time starvation. Furthermore, the <em>Gemini 2.5 Pro</em> approach of iteratively verifying until a confident answer is reached is feasible for 6 IMO questions in 5 hours, but not for 50 AIMO questions. Consequently, our Async Summarizer-Verifier-Master Vision pipeline adapts these inspirations into a highly parallelized, AIMO-specific architecture:</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Ff7d21b6059b91c5cca94acd3f551814a%2Fsummarizer-verifier-mastervision.jpg?generation=1776745065882961&amp;alt=media\" alt=\"Figure 6 - Async Summarizer, Verifier, and Master Vision Flowchart\"></p>\n<ol>\n<li><strong>Summarizer Agent:</strong> Condenses the full trace of upto 65K tokens into a summarized structured ledger: Winning Approach, Edge Cases, Hail Marys (Explicit Guesses), and the Tool Ledger. Acts as a strict data extraction API with single turn</li>\n<li><strong>Verifier Agent (Bug Report):</strong> An adversarial auditor that attempts to computationally falsify the claim over 6-8 turns. <ul>\n<li><em>Step 0:</em> Write a 10s direct falsification script. If it fails, reject immediately.</li>\n<li><em>Step 1-3:</em> Check unverified claims, build scaled enumerators, and output a Confidence Score (0.0 - 1.0) and <code>TRUST|VERIFY|REJECT</code>.</li></ul></li>\n<li><strong>Master Vision Agent:</strong> If time remains but no consensus is reached, the Master Vision is invoked  to resolve multi-modal ties as a prior infomration gatherer for the resolvers.<ul>\n<li><em>Synthesis Mode (Max Verifier Score &gt; 0.50):</em> Isolates the exact point of mathematical divergence between competing solvers, tags <code>[VERIFIED]</code> lemmas, and sets a Rescue Entry Point.</li>\n<li><em>Clearinghouse Mode (Max Verifier Score &lt; 0.50):</em> Declares the archive as unreliable noise. Maps an explicit \"Poison Map\" of framing traps to avoid.</li></ul></li>\n<li><strong>Resolvers:</strong> Rescue solvers (2 new solvers) are launched, enriched with the Master Vision bulletin.They do not have to waste time re-deriving verified info and lemmas from ground but instead can start from all the findings from previous solvers, properly verified and audited by master vision agent . These resolver answers carry up to 5x voting weight on extremum problems and 2X voting weight on normal problems, there by making sure the resolvers if invoked have the higher say in what answer to submit.</li>\n</ol>\n<h3>4.7 Breakout Vetoes &amp; Final Answer Selection</h3>\n<p>To save time, AMO attempts an <strong>Early Breakout</strong> if an answer reaches the Majority Vote (5/8 solvers get same answer) OR Majority Threshold total (Total verifier score &gt; 2.4 for an answer across all solvers completed so far). This early breakout saves time. Baseline notebook in AIMO3 had majority vote based breeakout alone, but with our verifier pipeline running async, we can have the verifier score available soon after an answer is generated for a solver too. So in cases where we didn't reach majority and a solver is still running, we wouldn't have to waste time waiting for it complete, if we have 3 verifiers all passing high for the same answer. However, because false majorities exist, this breakout is rigorously gated. We make sure we don't breakout in these 2 specific situations even if we hit majority vote breakouts:</p>\n<ul>\n<li><strong>The Verifier Veto:</strong> If the Max Verifier Score for the candidate answer is &lt; 0.50 across all the N solves (aka none of the solvers that gave majority answer had a passing verifier score in async), the breakout is aggressively blocked (unless in severe time crunch), forcing the system to wait for better validation and/or move to resolver.</li>\n<li><strong>The Extremum Veto:</strong> If the problem was flagged as an Extremum, and a <em>better</em> verified bound exists among the other running solvers (e.g., candidate answer is 1055, but another solver verified 2079 on a 'max' problem), the breakout is vetoed to force Master Vision resolution and then resolver, making sure that we have a third eye selecting the final answer to submit by quality rather than quantity. If in time crunch and no time is left for master vision - resolver pipeline, we select the extremum direction verified answer (We will still only conisder answers that got a verifier score TRUST) instead of majority votes. </li>\n</ul>\n<p><strong>The Evidence Hierarchy Selection:</strong>\nIf no breakout occurs, final selection abandons frequency counting for a strict evidence hierarchy:</p>\n<ol>\n<li><strong>Weighted Votes:</strong> Resolvers, armed with the Master Vision, carry massive weight (5x if extremum).</li>\n<li><strong>Max Verifier Score:</strong> Highest Bug Report confidence. Comes in play if weighted votes is tied</li>\n<li><strong>Code Supremacy:</strong> Solvers receive a +0.5 multiplier for formal proofs via <code>z3</code>/optimizers, and +0.3 for standard empirical Python validation.We have this checked with regex search on the entire python tool outputs in the trace once an answer is found</li>\n<li><strong>Average Beam Score:</strong> (For Beam Mode runs).</li>\n<li><strong>Raw Vote Count:</strong> Treated strictly as a tie-breaker.</li>\n</ol>\n<p><strong>Extremum Fallback:</strong> If an Extremum problem times out before Resolvers finish, AMO overrides raw vote counts entirely. It explicitly scans the pool to select the <em>tightest verified bound</em> (Verifier Score &gt; 0.78) or the bound possessing the highest Code Supremacy, directly neutralizing the LLM Extremum Bias.</p>\n<hr>\n<h2>SECTION 5 — Dynamic Time Management</h2>\n<p>In a strictly constrained 5-hour, 50-problem inference environment, mathematical capability is irrelevant if the system runs out of time. One of the most critical vulnerabilities of the baseline architecture was its naive approach to budget allocation, which directly resulted in late-stage problem starvation. </p>\n<p>To resolve this, AMO implements a closed-loop, predictive time management system that treats inference time as a dynamically traded commodity, smoothing the allocation curve across the entire problem set.</p>\n<h3>5.1 The Pathology of Baseline Time Allocation</h3>\n<p>The standard baseline approach utilizes a naive <code>time_left / questions_left</code> heuristic, often clamped to a fixed maximum (e.g., 900 seconds) for early questions. Because LLMs operating at T&gt;0 can easily get trapped in long, unyielding reasoning paths, difficult problems presented early in the sequence will ruthlessly consume their maximum allowed budget. </p>\n<p>As early questions bleed the global clock, the <code>time_left</code> plummets. By the time the system reaches question 20 or 30, the <code>fair_share</code> drops precipitously, triggering a \"cascading starvation\" effect. </p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Fe6236f43cb51d2064bdd1bd6d2638470%2Ftiming_comparison.jpg?generation=1776823605316092&amp;alt=media\" alt=\"Allocated Time Budget Comparison: AMO Orchestrator vs Baseline\">\n<em>Figure 7: A direct comparison of the Allocated Time Budget across 50 questions during a local benchmark run. Top (Green): AMO Orchestrator. Bottom (Red): Baseline timing method.</em></p>\n<p>The bottom chart (red) in Figure 7 perfectly illustrates this catastrophic failure mode. The baseline system statically allocates 900 seconds for the first few questions. Because actual computation exhausts this budget, the available time crashes. From question 15 onward, the allocation becomes violently erratic, frequently plummeting to 300 seconds. By the final decile (questions 40-50), the system is effectively crippled, lacking the compute time necessary to execute deep reasoning or parallel sampling, regardless of the actual mathematical complexity of those final questions.</p>\n<h3>5.2 The AMO Orchestrator's Predictive Budgeting</h3>\n<p>To prevent cascading starvation, AMO's Orchestrator abandons static maximums in favor of a forward-looking, deck-aware predictive model. </p>\n<p>Before any problem begins, the system relies on an expected difficulty \"Deck\" (initialized to 27 Easy, 13 Medium, 10 Hard based on pass@K priors as explained before) and maintains a 10-problem rolling time history for each tier. Rather than just looking at how much time is left, AMO predicts how much time the <em>entire remaining test set</em> will cost:\n$$Expected_Cost = \\sum_{L \\in {E,M,H}} \\left( Deck_Remaining[L] \\times Rolling_Avg_Time[L] \\right)$$</p>\n<p>This allows the Orchestrator to calculate a <code>Surplus_Ratio</code> ($Time_Left / Expected_Cost$). If the <code>Surplus_Ratio &lt; 1.0</code>, the system knows it is running behind schedule <em>relative to the expected difficulty of the remaining questions</em>, even if absolute time appears plentiful. </p>\n<h3>5.3 Bayesian Regime Shifting and Soft Clamping</h3>\n<p>The <code>Surplus_Ratio</code> enables continuous Bayesian regime shifting, allowing the system to scale its computational footprint up or down dynamically:</p>\n<ul>\n<li><strong>Time Abundance (Surplus &gt; 1.5):</strong> The system aggressively invests surplus time. If the Scout flags a problem as \"Medium,\" the Orchestrator upgrades it to \"Hard,\" forcibly routing it into the more expensive, higher-yield Agentic Beam Search mode.</li>\n<li><strong>Time Crunch (Surplus &lt; 0.7):</strong> The system protects the global clock. Hard problems are downgraded to Standard Mode, and the maximum number of initial parallel solvers is constrained.</li>\n</ul>\n<p>Instead of fixed ceilings, the actual Allocated Budget is a dynamic function of the <code>Fair_Share</code>, modulated by the problem tier and scaled via a predefined multiplier (empirically tuned to 2.6) plus a bonus for Resolver agents:\n$$Budget = \\min(\\max(Fair_Share \\times 2.6 + Resolver_Bonus, MIN_CAP), MAX_CAP)$$\nA global failsafe (<code>Time_Left * 0.85</code>) sits above this logic to guarantee the Kaggle kernel will never hit a hard timeout.</p>\n<h3>5.4 Empirical Reclassification and the Feedback Loop</h3>\n<p>A predictive system is only as good as its priors. Because the initial difficulty Deck is an assumption, AMO continuously corrects its own internal models. </p>\n<p>Post-solve, the Orchestrator executes an <strong>Empirical Reclassification</strong>. It ignores the Scout's initial difficulty estimate and looks purely at execution reality. If 7 out of 8 solvers independently arrived at the same answer in under 400 seconds, the problem is reclassified as \"Easy,\" regardless of its mathematical domain. If the system had to invoke the Master Vision Agent and consumed 850 seconds, it is reclassified as \"Hard.\"</p>\n<p>The system then decrements the corresponding tier in the Deck and updates the <code>Rolling_Avg_Time</code> array. This closed feedback loop allows AMO to \"learn\" the true pace of the unseen test set in real time. </p>\n<h3>5.5 Visualizing the Impact: The Smooth Allocation Curve</h3>\n<p>The success of this architecture is visually confirmed in the top chart (green) of Figure 7. </p>\n<p>Unlike the baseline's erratic crashes, the AMO Orchestrator produces a smooth, undulating allocation curve. By intelligently clamping early-stage over-expenditure and utilizing the difficulty deck to forecast future costs, the system maintains a highly stable budget between 600 and 960 seconds per question. </p>\n<p>Most importantly, <strong>AMO successfully protects the end of the test set</strong>.  When questions 40 through 50 arrive, the system still possesses ample budget (frequently &gt;800 seconds) to deploy Master Vision, Resolvers, and full Beam Search iterations. By treating compute as a dynamically managed asset rather than a static allowance, AMO ensures that every problem receives the exact level of orchestration it requires, maximizing the probability of single-submission correctness.</p>\n<hr>\n<h2>SECTION 6 — Empirical Validation: Local Benchmarks vs. Leaderboard Variance</h2>\n<p>A persistent challenge in the AIMO competition environment is the extreme volatility of the public leaderboard. Because the test set is small (50 questions) and LLM sampling at T&gt;0 is inherently stochastic, a fragile architecture can occasionally \"get lucky\" and achieve an artificially high score, only to collapse on subsequent runs. </p>\n<p>Realizing that optimizing purely for the public leaderboard was leading to overfitting and architecture fragility, we halted leaderboard-driven development approximately one month before the deadline. We constructed <code>benchmark_50_v2</code>, a localized dataset of 50 olympiad problems carefully curated from AIMO reference sets and the MATH corpus prize submissions. All subsequent architectural decisions were rigorously evaluated against this stable ground truth. <em>(Note: Because this local benchmark was instituted late in the development cycle, local run data is sparse or unavailable for our earliest architectural iterations).</em></p>\n<h3>6.1 Performance and Variance Tracking</h3>\n<p>The table below documents our submission history (only including non-experimental LB submissions to avoid any bias) , tracking both local benchmark accuracy and public leaderboard scores across various architectural iterations. </p>\n<table>\n<thead>\n<tr>\n<th>Method / Architecture</th>\n<th>Run ID</th>\n<th>Local Score (Out of 50)</th>\n<th>Public Leaderboard Score</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>AMO-Final-Submission</strong></td>\n<td>1</td>\n<td>38</td>\n<td>37</td>\n</tr>\n<tr>\n<td><strong>AMO-Final-Submission</strong></td>\n<td>2</td>\n<td>39</td>\n<td>38</td>\n</tr>\n<tr>\n<td><strong>AMO-Final-Submission</strong></td>\n<td>3</td>\n<td>39</td>\n<td>41</td>\n</tr>\n<tr>\n<td><strong>AMO-Final-Submission</strong></td>\n<td>4</td>\n<td>39</td>\n<td>37</td>\n</tr>\n<tr>\n<td>SwarmRAG-Async-SVM</td>\n<td>1</td>\n<td>31</td>\n<td>39</td>\n</tr>\n<tr>\n<td>SwarmRAG-Async-SVM</td>\n<td>2</td>\n<td>30</td>\n<td>35</td>\n</tr>\n<tr>\n<td>SwarmRAG-Async-SVM</td>\n<td>3</td>\n<td>37</td>\n<td>41</td>\n</tr>\n<tr>\n<td>SwarmRAG-Async-SVM</td>\n<td>4</td>\n<td>28</td>\n<td>38</td>\n</tr>\n<tr>\n<td>SwarmRAG-Async-SVM</td>\n<td>5</td>\n<td>28</td>\n<td>33</td>\n</tr>\n<tr>\n<td>Standard - SVM</td>\n<td>1</td>\n<td>32</td>\n<td>35</td>\n</tr>\n<tr>\n<td>Standard - SVM</td>\n<td>2</td>\n<td>-</td>\n<td><strong>45</strong></td>\n</tr>\n<tr>\n<td>Standard - SVM</td>\n<td>3</td>\n<td>-</td>\n<td>38</td>\n</tr>\n<tr>\n<td>Standard - SVM</td>\n<td>4</td>\n<td>-</td>\n<td>35</td>\n</tr>\n<tr>\n<td>baseline-with-multiinjection</td>\n<td>1</td>\n<td>-</td>\n<td>33</td>\n</tr>\n<tr>\n<td>baseline-with-multiinjection</td>\n<td>2</td>\n<td>-</td>\n<td>41</td>\n</tr>\n<tr>\n<td>baseline-with-multiinjection</td>\n<td>3</td>\n<td>-</td>\n<td>41</td>\n</tr>\n<tr>\n<td>baseline-with-multiinjection</td>\n<td>4</td>\n<td>-</td>\n<td>35</td>\n</tr>\n<tr>\n<td>blackboard-collaborative-bul</td>\n<td>1</td>\n<td>-</td>\n<td>33</td>\n</tr>\n<tr>\n<td>blackboard-collaborative-bul</td>\n<td>2</td>\n<td>-</td>\n<td>35</td>\n</tr>\n<tr>\n<td>blackboard-collaborative-bul</td>\n<td>3</td>\n<td>-</td>\n<td>27</td>\n</tr>\n<tr>\n<td>Scout-CRAG-Arbiter</td>\n<td>1</td>\n<td>-</td>\n<td>30</td>\n</tr>\n<tr>\n<td>Scout-CRAG-Arbiter</td>\n<td>2</td>\n<td>-</td>\n<td>38</td>\n</tr>\n<tr>\n<td>Scout-CRAG-Arbiter</td>\n<td>3</td>\n<td>-</td>\n<td>35</td>\n</tr>\n<tr>\n<td>Scout-CRAG-Arbiter</td>\n<td>4</td>\n<td>-</td>\n<td>36</td>\n</tr>\n<tr>\n<td>baseline-notebook</td>\n<td>1</td>\n<td>-</td>\n<td>39</td>\n</tr>\n</tbody>\n</table>\n<h3>6.2 Analyzing the 45-to-41 Gap: The Variance Trap</h3>\n<p>At first glance, the public leaderboard data presents a paradox: our simpler <code>Standard - SVM</code> architecture achieved the highest peak score of the competition (45), yet our final, fully orchestrated <code>AMO</code> architecture peaked at 41. </p>\n<p>However, a closer analysis of the variance reveals why relying on the <code>Standard - SVM</code> architecture is computationally dangerous. While it achieved a 45 on Run 2, it also scored a 35 on Runs 1 and 4, representing a massive <strong>10-point variance swing</strong>. In a competition where the final private score is determined by running the notebook twice and penalizing inconsistency (awarding a half-point if only one run is correct), a highly variant architecture is an unacceptable liability. The 45 was a statistical outlier—a \"lucky\" run where the unstructured solvers happened to avoid timeout traps and frame-divergences. When tested on our stable local benchmark, this same architecture scored 32. Moreover, we were confident with our AMO-Final-Submission as it was more sound in logic as well as stable in local tests. We ran out of time to have few more test runs and experiments on the public leaderboard with this method. One of the lesson we learnt is to start early on AIMO4 to avoid this issue. </p>\n<h3>6.3 The Stabilization of AMO and why we selected this for final submission</h3>\n<p>The transition to the final <code>AMO</code> architecture was a deliberate engineering decision to trade peak variance for a heavily raised, stable floor. By introducing the Agentic Beam Search, the Async Verifier Pipeline, and the Regex Flaw Registry, we actively constrained the model's stochasticity. The results on our local benchmark demonstrate unprecedented stability: <strong>38, 39, 39, 39</strong>. The system became highly predictable, proving that our infrastructure successfully shielded the model from unrecoverable reasoning drifts.</p>\n<p>This stability translated directly to the public leaderboard, where the AMO-Final submission consistently grouped in a tight band of <strong>37 to 41</strong>, drastically suppressing the 10 point swings seen in earlier iterations. While architectural complexity—such as the overhead of Scouts and Evaluators—consumes inference time and slightly caps the maximum number of problems that can be fully explored, the resulting consistency guarantees the best odds for robust performance on the private evaluation. While it was tempting to go with leaderboard 45 submission, we decided to trust the data. The AMO architecture is superior to standard-SVM pipline and covers a lot of gaps. While the evaluation is done on 50 questions alone and there is a certain luck involved which might favor simpler systems (simplicity is perfection in small samples) we believe the AMO solution is more robust and is the best hedge to any problem and ordering. </p>\n<h3>6.4 Architectural Ablations &amp; Failures</h3>\n<p>The data table also highlights the empirical failure of several collaborative agent patterns, providing the foundation for our ablations (detailed in Section 7):</p>\n<ul>\n<li><strong>SwarmRAG &amp; Blackboard:</strong> Methodologies that allowed solvers to share intermediate insights (<code>SwarmRAG-Async-SVM</code> and <code>blackboard-collaborative-bul</code>) exhibited extreme volatility. Local scores plummeted as low as 28, and leaderboard scores crashed to 27. Our traces confirmed that these setups actively facilitated \"echo chambers\" of correlated errors.</li>\n<li><strong>CRAG (Corrective RAG):</strong> The <code>Scout-CRAG-Arbiter</code> runs hovered in the mid-30s. Injecting external problem corpus data during inference caused the model to overfit to the retrieved examples rather than focusing on the actual problem constraints.</li>\n</ul>\n<p>Ultimately, the empirical data proved that in a compute-constrained environment, isolation, adversarial verification, and structured search (AMO) heavily outperform both blind parallel sampling (<code>baseline</code>) and unverified agentic collaboration (<code>SwarmRAG</code>).</p>\n<hr>\n<h2>SECTION 7 — Experimental Components and Ablation</h2>\n<p>There were many different types of attempts we made on trying to build the best agentic structure for AIMO3. Some of them were novel and forward-looking but ultimately didn't make it into the final AMO to avoid noise, complexity, and lack of time. </p>\n<h3>7.1 Entropy-Based Answer Selection</h3>\n<p>Motivated by EDIS (arXiv:2602.01288), which suggests that entropy dynamics in token generation reveal reasoning quality, we computed mean, max-window, and tail entropy from raw vLLM <code>top_logprobs</code>.  </p>\n<ul>\n<li><em>Result:</em> Ablated. Without a trained calibration model, entropy metrics added noise. The OSS-120B model's entropy profile during fluent-but-wrong reasoning was practically indistinguishable from genuine mathematical computation. We tried to build interventions looking at entropy spikes, but it was evident that entropy is not a good signal for long OSS-120B traces, especially with Python tooling.</li>\n</ul>\n<h3>7.2 SwarmRAG: Collaborative Answer Sharing</h3>\n<p><em><a href=\"https://www.kaggle.com/code/davidacad10/41-50-aimo-swarmrag-with-entropy-based-signals\" target=\"_blank\">Notebook with SwarmRAG</a></em></p>\n<ul>\n<li><em>Hypothesis:</em> Concurrent solvers writing to a shared, in-memory ledger would accelerate convergence.</li>\n<li><em>Approach:</em> We created an agentic system where each solver's reasoning traces and Python codes were saved into a local VectorDB by creating embeddings using <code>all-MiniLM-L6-v2</code>. We had 2 RAG systems (one for traces, one for code). The RAG calls were infused as Python modules in the sandbox tools.</li>\n<li><em>Result:</em> Ablated. While the idea genuinely converged faster to correct answers in some problems, we noticed wrong solver responses poisoned other solvers. This created an \"echo chamber\" of correlated errors. Coordination among agents actively amplifies errors when the shared signal is not externally verified. This could be fixed by adding a Corrective RAG, but that adds an LLM call which loses time.</li>\n</ul>\n<h3>7.3 Collaborative Bulletin-Based Solvers</h3>\n<ul>\n<li><em>Hypothesis:</em> Broadcasting structured \"VERIFIED THEORY\" text from completed solvers would guide stuck solvers.</li>\n<li><em>Result:</em> Ablated. Orchestrating a bulletin system needed another LLM agent, losing time. Furthermore, the authoritative label caused solvers to blindly anchor on flawed premises, suffering the same poisoning issue as SwarmRAG. We pivoted entirely to the Master Vision - Resolver pipeline instead.</li>\n</ul>\n<hr>\n<h2>SECTION 8 — Bibliography</h2>\n<ol>\n<li>Gemini 2.5 Pro Capable of Winning Gold at IMO 2025     arXiv:2507.15855 [cs.AI]</li>\n<li>Long-horizon Reasoning Agent for Olympiad-Level Mathematical Problem Solving . arXiv:2512.10739 [cs.CL]</li>\n<li>Tree of Thoughts: Deliberate Problem Solving with Large Language Models     arXiv:2305.10601 [cs.CL]</li>\n<li>(2024) <em>MACM: Utilizing a Multi-Agent System for Condition Mining in Solving Complex Mathematical Problems</em>. arXiv:2404.04735.</li>\n<li>(2026) <em>EDIS: Diagnosing LLM Reasoning via Entropy Dynamics</em>. arXiv:2602.01288.</li>\n<li>(2025) <em>AIMO2 Winner NemoSkills GenSelect</em>. arXiv:2504.16891.</li>\n<li>Deep Think with Confidence     arXiv:2508.15260 [cs.LG]</li>\n<li>BREAKING MENTAL SET TO IMPROVE REASONING THROUGH DIVERSE MULTI-AGENT DEBATE (<a href=\"https://openreview.net/pdf?id=t6QHYUOQL7\" target=\"_blank\">https://openreview.net/pdf?id=t6QHYUOQL7</a>)</li>\n</ol>",
      "rawMarkdown": "## Abstract\nWe present **AMO**(Agentic Math Orchestrator), a multi-layer orchestration architecture designed to maximize the inference-time capabilities of frozen open-weight Large Language Models (LLMs) on olympiad-level mathematics. Operating under a strict 5-hour, single-GPU competition environment without internet access, AMO wraps GPT-OSS-120B with parallel reasoning, an asynchronous verification pipeline, real-time trajectory auditing, evidence-weighted answer selection, and topology-aware routing. Rather than fine-tuning the model, we treat mathematical robustness as a systems-engineering challenge. We introduce novel mechanisms including a pre-generation Scout Pool for structural classification, an Adaptive Orchestrator for continuous time-budgeting, dynamic switching between Standard and Agentic Beam Search modes, and a Master Vision conflict-resolution pipeline. We achieved a top public score of 45 using our baseline architecture and 41 using the fully orchestrated AMO version. Through extensive ablations, trace analysis, and local benchmark testing, we document specific LLM failure modes in competitive mathematics—such as extremum bias, execution timeouts, and frame-sensitive divergence—and present our architectural mitigations.\n\n---\n\n## SECTION 1 — Introduction\n\nThe AI Mathematical Olympiad (AIMO) Progress Prize 3 presents a unique test-time compute challenge: solve 50 original, olympiad-level mathematical problems spanning algebra, combinatorics, geometry, and number theory within a 5-hour wall-clock budget on a single H100 GPU. The environment is strictly constrained—no internet access, no external APIs, and no opportunity for between-submission fine-tuning. Furthermore, the competition scoring heavily penalizes inconsistency; each submission is evaluated twice on the private set, awarding a half-point only if one run is correct. Consequently, mathematical robustness under inference constraints matters as much as the raw capability of the underlying model.\n\nThis paper addresses a central challenge: given a powerful, frozen open-weight model (GPT-OSS-120B), how do we build an agentic system that converts high theoretical *pass@K* capability into reliable, single-submission correctness? The baseline notebooks on OSS120B had shown the high ceiling of it. With the limited time and resources in the competition period, we decided to focus on improving the efficiency and stability of oss120B solvers by creating an agentic dynamic time aware system to maximize the ceiling and floor. Through careful analysis we found many failure points, which could be solved/improved by optimized agentic solutions rather than focusing on a fine tuning to hope for a blackbox solution.\n\nThe standard baseline approach to this problem—simply running $N$ parallel Tool-Integrated Reasoning (TIR) solvers and applying majority voting—is highly inefficient. Blind parallel generation wastes massive amounts of compute on \"doomed\" reasoning paths. If a solver misinterprets the problem in Turn 1, the subsequent twenty minutes of generation and Python execution are effectively dead compute. Furthermore, blind majority voting is vulnerable to \"false majorities,\" where multiple solvers anchor onto the same flawed assumption and confidently confirm one another's incorrect answers. \n\nTo revolutionize this baseline, we introduce the **Agentic Math Orchestrator (AMO)**. AMO steps away from blind parallel generation, transforming the LLM into a highly structured, asynchronous multi-agent research team. The entire lifecycle of a problem is meticulously managed from end to end:\n1. **Pre-Computation Scouting:** Before any heavy solving begins, a pool of \"Scout\" agents maps the structural topology of the problem (e.g., mathematical domain, extremum traps, large-number bounds).\n2. **Dynamic Routing & Budgeting:** An adaptive orchestrator evaluates the remaining wall-clock time and routes the problem to either **Standard Mode** (using parallel solvers seeded by a MiniPlanner pool) or **Beam Mode** (a deep, self-evaluating search tree), continuously adjusting resource allocation to ensure no problem is starved of compute.\n3. **Async Summarization Verification & Master Vision:** As soon as any solver proposes an answer, an asynchronous Summarizer and Bug Report (Verifier) pipeline is launched in the background. If competing answers without a majority emerge, a Master Vision agent synthesizes the findings to launch targeted \"Resolver\" agents, preventing the system from guessing blindly.\n\nA cornerstone of our architecture is the **Agentic Beam Search**. Designed to artificially compress the model’s $pass@20$ capability into a smaller compute footprint, this mode pauses parallel solvers mid-flight to conduct adversarial self-evaluations. By pruning mathematically unviable trajectories and applying Maximum Marginal Relevance (MMR) text-clustering to the surviving paths, we force mathematical diversity. This ensures the model searches fundamentally distinct frameworks rather than racing down identical dead ends, drastically increasing the odds of finding the correct solution.\n\nTo reliably extract the correct answer from this agentic swarm, we replaced simple majority voting with a **Multi-Tiered Evidence Hierarchy**. Answers are selected based on rigorous criteria: Resolver agent voting weight, Verifier confidence scores (where adversarial Python scripts attempt to falsify the claim), and \"Code Supremacy\" (awarding bonuses to answers explicitly proven by constraint solvers like `z3`,`ortools`, `pulp` etc. and python tool output verified answer). While we initially explored using token-level entropy dynamics as a primary selection parameter, extensive testing revealed that without a trained calibration model, entropy added noise (especially in python tool based agents)—fluent hallucinations were often indistinguishable from genuine computation. Similarly, early attempts at inter-agent collaboration (such as SwarmRAG or sharing intermediate reasoning bulletins) didn't get into the final submission, after we observed they created echo chambers of correlated errors.\n\nFinally, treating robust inference as a systems-engineering challenge required deep forensic visibility. To build this system, we logged every solver trace including reasoning step, tool call, and token metric as well as the scout/summarizer/verifier/master vision reports from extensive local benchmark runs. We developed a custom Streamlit-based **Trace Viewer** to replay these multi-turn conversations. This visualizer was instrumental in identifying specific model pathologies—such as infinite loop traps, premature guessing, and format hacking. Insights derived directly from this Trace Viewer birthed our **Regex Flaw Registry**, a real-time monitoring system that penalizes flawed trajectories and injects mid-flight corrective nudges to steer solvers back on track.\n\nIn the following sections, we detail the complete AMO architecture, documenting our dynamic resource scaling, multi-mode solver logic, and the empirical ablations that define our approach to inference-time mathematical orchestration.\n\n---\n\n## SECTION 2 — Problem and Competition Analysis\n\n### 2.1 The Host's Pass@K Analysis and What It Reveals\nRecent evaluations published by the competition hosts compared the results of open-weight models (OSS-120B vs. Nemotron-30B) across both public and private sets. While these evaluations were likely conducted without strict inference-time constraints and lacked access to Python execution tools, they provided a critical baseline for the raw reasoning capability of OSS-120B.\n\n![Host Analysis of OSS120B compared ot Nemetron-30B on Public and Private Questions](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Fc3afa40a42ea107551dffdbc15c86c9c%2Fhostanalysis2.png?generation=1776744674727446&alt=media)\n\nThe key finding: at pass@100, only 1–2 problems across both sets remained completely unsolvable. At pass@20, a strong open-weight model (class-equivalent to OSS-120B) averaged 43–48 on the private set, with the public and private difficulty distributions showing overlapping 95% confidence intervals. This analysis dictates our fundamental strategy:\n1. **The ceiling is orchestration, not knowledge:** The model possesses the requisite mathematical priors to solve nearly the entire set.\n2. **The gap is consistency:** The delta between a pass@20 ceiling of 45/50 and a baseline notebook ceiling score of 44/50 shows the capability of model, but consistency is what's missing.\n3. **The goal:** Approximating pass@20 performance within a pass@1 or pass@2 budget constraint requires filtering out pathological reasoning traces before they consume the clock.\n\nThe Host's analysis was done on OSS120B models without python tools. So the ceiling of OSS120B with python tool should be higher. \n\n*   **Easy (approx. 25–27 problems):** Problems falling into the pass@1 to pass@3 range. OSS-120B solves these reliably even without Python tools. For these, standard parallel solvers converge rapidly on a majority answer without advanced orchestration.\n*   **Medium (approx. 13–15 problems):** Problems in the pass@3 to pass@5 range. While the addition of Python tools improves performance, a clean majority breakout is not guaranteed. In this tier, a minority answer may actually be the mathematically correct one, necessitating an architecture that weights verified answers over raw frequencies.\n*   **Hard (approx. 8–10 problems):** Problems in the pass@20 to pass@100 range. With a strict 5-hour, single-GPU limit, executing 20+ parallel solvers per problem is computationally impossible. We needed an architecture that artificially compresses the pass@20 search space down to a pass@5 compute footprint by upsampling the most promising trajectory paths. This requirement birthed our Agentic Beam Search model (detailed in Section 4.3).\n\n\n### 2.2 A Taxonomy of Failure Modes\nThrough forensic trace analysis of our local benchmarks (detailed in Section 3.1), we categorized LLM failures not by mathematical subject (e.g., Geometry vs. Algebra), but by behavioral pathology:\n\n*   **True Unsolvability:** The model fundamentally lacks the mathematical insight required, even at pass@100. No orchestration can fix this.\n*   **Memory-Anchored Fast Failure:** The model recognizes a superficial pattern from its training data, bypasses genuine mathematical search, and fluently hallucinates a confidently wrong answer. The signature in our traces is a very short generation, 0–1 Python calls, and execution under 60 seconds. This is an unrecoverable failure type without retraining. We identified multiple such instances in our benchmark (e.g., `imo-bench-algebra-092`), where the model clearly overfitted to training data and converged on a known, but incorrect, schema.\n*   **Frame-Sensitive Divergence:** The problem permits multiple plausible initial readings. Solvers committing to a flawed frame produce long, internally consistent, but totally incorrect solutions. In the \"Norwegian number\" reference problem, solvers that anchored on standard divisibility rules solved the wrong problem with absolute confidence. Our Master Vision–Resolver pipeline was built explicitly to break these flawed frames.\n*   **Extremum Bias Under Majority Voting:** Problems asking for a \"maximum\" or \"minimum\" require proving a bound is achievable (constructive) *and* that no better bound exists (impossibility). Solvers frequently prove only the constructive direction, reporting a valid but non-tight bound. For example, on `imo-bench-algebra-055` (a maximum problem), we observed 4 solvers converging on 1055, while only 1 solver correctly found 2079. Under standard majority voting, the system would confidently select the wrong, sub-optimal bound.\n\n\n\n### 2.3 Why OSS-120B and Inference-Time Optimization\n\nThe baseline notebook provided by the competition using OSS-120B with 8 parallel solvers and simple majority voting already produced scoresranging from 34-44. This proves the model demonstrably gets problems right when it gets the framing correct. Fine-tuning requires datasets, training time, and GPU resources. We had joined the competition fairly late with about 2 months left and the risk-to-reward for finetuning a model to have high scores was low. With limited weekly GPU time and number of days we had, building around OSS120B seemed to be the best option. We had an initial baseline method built with 6 solvers and summarizer-verifier-mastervision-resolver pipeline (not async but once per answer) score 45 in public leaderboard with oss120B-high reasoning model. This demonstrates that 45+ correct answers are achievable, the effort-to-return ratio strongly favors building the best possible amplifier (test-time compute scaling) for a model we trust, rather than training it to know marginally more.\n\n---\n\n## SECTION 3 — Infrastructure Foundations\n\n### 3.1 Building a Stable Benchmark Dataset\nTo prevent public leaderboard overfitting, we constructed `benchmark_50_v2`, a 50-problem local dataset curated from AIMO reference problems and external IMO benchmarks across algebra, combinatorics, geometry, and number theory. All architectural decisions and ablations in this paper are measured against this reliable ground truth, ensuring our improvements generalize to the hidden private set. This dataset is attached along with the writeup. The final submission we made scored 39/50 on this benchmark dataset with 9 minutes to spare. This was the highest score we had among all our inference pipelines built. This was the major reason, we were confident to submit the pipeline which scored only 37 in public leaderboard instead of the 45 which was second on the public leaderboard. This benchmark local run dataset was influential in helping us understand what different failure modes are, how to mitigate them, how to orchestrate time etc. Without these local runs, it was very hard/impossible to build a stable process with the runtime obfuscated in the leaderboard submissions.\n\n### 3.2 Inference Infrastructure: vLLM and Persistent Jupyter Sandboxes\nOur base engine is GPT-OSS-120B served via `vLLM` with `fp8` weight quantization and `fp8_e4m3` KV caching, achieving 96% GPU memory utilization with a 65,536 token context. The model is invoked via the Harmony tool protocol. \nCrucially, to eliminate the multi-second latency of cold-starting Docker/Jupyter instances on every tool call, we pre-warm and maintain a pool of 20 persistent, state-isolated Jupyter kernels. \n\n### 3.3 Extended Python Toolbox\nStandard environments provide `math`, `numpy`, and `sympy`. Through trace analysis, we observed the LLM natively attempting to write formal constraint formulations, only to fail via `ImportError`. By pre-installing `z3-solver`, `ortools` (CP-SAT), `pulp`, `mip`, and `pyscipopt`, we converted silent failures into productive optimization queries. Traces confirmed `z3` dominated small-constraint satisfiability, while `ortools` excelled at large combinatorial enumeration.\n\n### 3.4 Trace Viewer: Forensic Analysis Infrastructure\nWe developed a Streamlit application ([aimo-solver-trace-viewer](https://aimo-trace-viewer.streamlit.app/)) to parse and read the trace logs. This trace viewer was instrumental in understanding how OSS120B solves a prooblem and was instrumental in many of the designs we built. These logs included the raw turns based reasoning at different roles and channels and per turn entropy calculated. Every local run was executed in debug mode, saving the full multi-turn reasoning traces of all solvers and resolvers, including per-turn entropy calculations. This visualizer was instrumental in designing our architecture:\n\n*   **Pathology Identification:** By reading full traces, we understood exactly where and why wrong-answer solvers deviated from the correct path.\n*   **The Regex Flaw Registry:** We discovered solvers outputting \"Hail Mary\" answers (e.g., arbitrarily guessing 0 or 99999 when stuck) or generating lists of answers despite explicit instructions prohibiting it. Because the baseline `_select_answer` function blindly extracted numbers from `\\boxed{}` formats, these hallucinations often bypassed validation. We implemented a real-time Regex Flaw Registry to catch these outputs, penalize the solver's score, and inject mid-flight corrective nudges.\n*   **Infinite Loop Termination:** Traces revealed that solvers occasionally fixated on \"Infinity\" as an answer. Despite multiple corrective injections, these solvers refused to pivot. We implemented a hard-kill rule: if a solver attempts an infinite answer 3 times, its thread is terminated to conserve compute.\n*   **Debunking Entropy:** We initially hypothesized that token-level entropy could weight answer selection. However, the Trace Viewer revealed that entropy had only a weak correlation to correctness. In a Python-tooled environment, entropy fluctuations largely reflected the model's confidence in Python syntax rather than mathematical truth. Consequently, we discarded entropy as a primary routing metric.\n\nWe have published the streamlit app public. You can play around with the traces you have generated (by running the submission code attached below) or by using the sample traces attached below for specific questions (Norwegian Problem, imo-bench-combinatorics-014)  \n\n### 3.5 Identifying the Extremum Problem\nThe Trace Viewer exposed a critical, systematic vulnerability in standard LLM orchestration: the **Extremum Trap**. \n\nWhen a problem asks for the *smallest*, *largest*, *minimum*, or *maximum* value, it inherently possesses a multi-modal solution space. A sub-optimal bound (e.g., a configuration that yields 1055 when the true maximum is 2079) is mathematically \"valid\" in the sense that it satisfies all the constraints of the problem. \n\nWhen observing our benchmark runs (e.g., `imo-bench-algebra-055`), we found that standard solvers would quickly find a sub-optimal bound, write a Python script to verify that it satisfies the constraints, receive a `True` output, and confidently halt. Because it is computationally much easier to find a sub-optimal configuration than the absolute mathematical limit, a majority of parallel solvers will converge on the weaker bound. \n\n**Why Verification Fails Here:** Even our advanced asynchronous Verifier (Bug Report) agents struggle to falsify these sub-optimal answers. If a solver claims the maximum is 1055, the Verifier writes a script checking if 1055 is achievable. The script returns `True`, and the Verifier assigns a high Confidence Score to the wrong answer.\n\nThis empirical discovery mandated a systemic architectural intervention. We realized that for extremum problems, **raw frequency and verification scores are misleading signals**. This necessitated the creation of our dedicated Extremum Protocol (detailed in Section 4), which forces the Orchestrator to bypass majority breakouts entirely, intentionally seeking out minority answers that offer tighter, mathematically verified bounds.\n\n---\n\n## SECTION 4 — AMO: The Agentic Math Orchestrator\n\nThe AMO system abandons the standard paradigm of blind, unguided parallel sampling. Instead, it executes as a highly sophisticated, closed-loop pipeline of specialized LLM agents and deterministic Python guardrails. By treating reasoning as a continuous control problem, AMO maximizes test-time compute efficiency.\n\n\n### 4.1 The Orchestrator and Deck-Aware Time Allocation\nn a 5-hour, 50-problem constrained environment, a static time-per-problem budget creates severe latency spikes; a single hard problem consuming 800+ seconds early in the run will irreversibly starve subsequent problems. The AMO Orchestrator serves as the global brain of the system, replacing static budgets with a closed-loop Bayesian controller.\n\n![Figure 2 - Orchestrator & Dynamic Budgeting Flowchart](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F699d2691ab16b8282e06a75d1b89cadc%2Forchestrator.jpg?generation=1776744853119000&alt=media)\n\n**Initialization and Global Time Metrics:**\nThe Orchestrator initializes a difficulty \"Deck\" modeled on the host's pass@K empirical distribution (27 Easy, 13 Medium, 10 Hard). It maintains a rolling 10-problem adaptive time history for each tier to \"learn\" the specific compute friction of the current test set. At the start of each problem, global time metrics are calculated continuously:\n*   `Time_Left = 5H - Elapsed - Buffer (120s)`\n*   `Fair_Share = Time_Left / Problems_Left`\n*   `Expected_Cost = Σ (Deck_Remaining[L] × Rolling_Avg_Time[L])`\n*   `Surplus_Ratio = Time_Left / Expected_Cost`\n\n**Bayesian Regime Shifting & Resource Binding:**\nRelying solely on an LLM's perceived difficulty is dangerous. The Orchestrator cross-references the Scout's difficulty rating (see Sec 4.2) with the `Surplus_Ratio` to execute Bayesian regime shifts:\n*   *Time Abundance (`Surplus_Ratio > 1.5` or `Fair_Share > 360s`):* Upgrades the problem tier (e.g., Medium $\\rightarrow$ Hard), unlocking the computationally expensive Agentic Beam Search.\n*   *Time Crunch (`Surplus_Ratio < 0.7` or `Fair_Share < 230s`):* Engages the Emergency Brake, forcibly downgrading Hard problems to Standard execution to protect the global clock.\n\nBased on the calculated `Fair_Share`, the Orchestrator dynamically binds all execution parameters to prevent clampdowns:\n\n| Fair Share Target | Max Initial Solvers | Early Stop Threshold | Max Verifier Turns | Rescue Resolvers | Planners Used? | Extremum Force |\n| :--- | :--- | :--- | :--- | :--- | :--- | :--- |\n| **< 240s** (Extreme) | 5 | 3 | 5 | 0 | No | 1 |\n| **< 280s** (Tight) | 6 | 4 | 5 | 2 | No | 1 |\n| **< 320s** (Moderate) | 7 | 4 | 5 | 2 | Yes (N=10) | 2 |\n| **< 352s** (Healthy) | 8 | 5 | 7 | 2 | Yes (N=12) | 3 |\n| **≥ 352s** (Abundant) | 8 (or Beam) | 5 | 8 | 2 | Yes (N=16) | 4 |\n\nThe Absolute Budget is mechanically clamped: `Budget = min(max(fair_share * 2.6 + resolver_bonus, MIN_CAP), MAX_CAP)`, coupled with a strict global failsafe `min(Budget, Time_Left * 0.85)` ensuring the system never throws a Kaggle timeout exception.\n\n**Post-Solve Empirical Reclassification:**\nAfter a problem is solved, the Orchestrator evaluates the *actual* difficulty to update the Deck. It computes the consensus ratio (e.g., 4/5 solvers agreeing = 80%). If consensus $\\ge 80\\%$, it classifies the problem as Easy regardless of initial predictions. Conversely, if wall-clock time exceeded 800s, it forces a Hard classification. This feedback loop ensures the rolling time averages accurately reflect empirical reality.\n\n### 4.2 Scout Pool: Structural Problem Analysis\nBefore launching computationally expensive solvers, AMO must map the problem's mathematical topology to inject specific guardrails, identify expected problem level etc.\n\n![Figure 1: Scout Pool & Consensus Engine Flowchart](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F94d9e95c3a2384e3b83346e62aa10091%2FScout.jpg?generation=1776744789688538&alt=media)\n\nThe **Scout Dispatcher** launches 4 parallel threads at a higher temperature (T=0.6) using unique random seeds. The LLM is explicitly instructed *not* to solve the problem, but to output a JSON schema mapping the domain, extraction operations, large number flags, and timeout risks.\n\n**Consensus Normalization (Anti-Poisoning):**\nBecause LLMs hallucinate, a single flawed scout reading could poison the entire solver pool. We aggregate the 4 JSON blueprints using a Map-Reduce paradigm:\n*   **Domain Rules (Majority Vote):** The system tallies domain tags. If a domain (e.g., Geometry) receives $\\ge 2$ votes, hardcoded domain-specific axioms (e.g., feasibility bounds, collinearity checks) are retrieved and additively injected into all downstream solver system prompts.\n*   **Extremum Protocol Trigger:** If more than 3 scouts flag `is_extremum = True` AND the extraction operation is `direct`, the system activates a global **Extremum Override**. This disables early-verifier breakouts and forces tight-bound verification during Answer Selection. This makes sure we have checks enabled to make sure we are submitting the best extremum fit verified answer and not just the majority voted.\n*   **Objective Difficulty Scoring:** LLMs systematically underestimate problems they will get wrong. Instead of trusting the LLM's stated difficulty, we compute an objective score avoiding LLM bias. A base score is calculated across the 4 scouts, appending structural penalties: $+1.0$ for `timeout_risk`, $+1.5$ for `adversarial_structure`, $+1.0$ for `find_all` operations. The average of these scores across valid scouts dictates the final initial routing tier (Easy/Medium/Hard).\n\n\n\n### 4.3 The Agentic Beam Search Paradigm\n\nA fundamental limitation of open-weight LLMs in competitive mathematics is trajectory drift. While a model might possess the mathematical priors to solve a problem (demonstrated by a high pass@100 rate), parallel sampling without intervention wastes vast amounts of compute on \"doomed\" reasoning paths. If a solver commits to a mathematically flawed frame in Turn 1, the subsequent twenty minutes of generation and Python execution become effectively dead compute. \n\nFurthermore, we operate under strict hardware limits: a single H100 GPU can practically sustain only 8 to 12 parallel solvers when pushing towards a 65,536 token context limit. For Hard (and some Medium) tier questions where the empirical success rate is pass@20 or even pass@100, simply running 8 parallel solvers at high temperature ($T=1.0$) is mathematically inefficient and relies heavily on luck. To reliably conquer these problems within our allocated 5-hour time budget, we must achieve a higher effective sample size, strictly enforce mathematical diversity, and drastically increase trajectory accuracy—all without exceeding the GPU's memory or the Orchestrator's time allocation.\n\nTo solve this, we introduce **Agentic Beam Search**. Unlike traditional token-level beam search, which evaluates localized token probabilities, Agentic Beam Search operates at the *reasoning-trajectory level*. Its primary objective is to artificially compress the model's pass@20 capability into a pass@5 compute footprint. It achieves this by spawning a large initial pool of solvers (e.g., N=20), aggressively pruning mathematically unviable trajectories mid-flight, and reallocating the GPU's memory and compute only to diverse, high-potential paths.\n\nBecause we operate in a zero-internet inference environment without a pre-trained Process Reward Model (PRM) like GenSelect, we construct our beam evaluation heuristic using a combination of self eval of solvers, empirical execution signals, and text-based clustering.\n\n![Figure 3.a - Agentic Beam Search Flowchart](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F9f42bad3d2d2bad5807d06da4e24f3bc%2Fagentic_beam_search.jpg?generation=1776744933303486&alt=media)\n\n![Figure 3.b - Agentic Beam Self Eval](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F1bd97520ea24f9002c3fc1977d3db70d%2Fagentic_beam_self_eval.jpg?generation=1776745869037702&alt=media)\n\n\n#### 4.3.1 The Heuristic Evaluation (BEAM_EVAL)\nAt designated checkpoints, the solver's execution is paused. Without dropping the existing KV-cache, an adversarial `BEAM_EVAL` prompt is injected into the `Role.ASSISTANT` channel. The model is forced to objectively audit its own reasoning trace and output a JSON schema scoring itself out of 5 across five strict criteria:\n1. **Decomposition Clarity:** Are all constraints formulated into strict algebraic equations?\n2. **Structural Insight Depth:** Has a highly specific, non-trivial theorem been identified and justified?\n3. **Assumption Transparency:** Are edge cases actively hunted and explicitly listed for verification?\n4. **Solution Path Concreteness:** Is there precise algorithmic pseudocode, or is the solver \"hand-waving\" intermediate steps?\n5. **Viability & Progress:** Are the Python executions returning mathematically useful data, or is the solver stuck in a timeout/syntax loop?\n\nThe model is also instructed to extract a 100-word `approach_summary` of the current trajectory.\n\n#### 4.3.2 Grounding in Execution Reality\nLLM-as-a-Judge mechanisms are notoriously prone to self-confirmation bias; a model will frequently award high scores to fluent but mathematically hallucinated reasoning. To ground the beam score in objective reality, we blend the subjective LLM evaluation with an empirical Python execution score (`python_score = successful_calls / total_calls`). We also subtract the `trace_penalty` accumulated by the Regex Flaw Registry (e.g., penalties for outputting infinity or using lazy phrasing). \nThe base node score is calculated as:\n$$Beam\\_Score = 0.8 \\times \\left(\\frac{self\\_eval\\_sum}{25}\\right) + 0.2 \\times python\\_score - trace\\_penalty$$\n\n#### 4.3.3 Enforcing Mathematical Diversity via Embedding-Based MMR\nSelecting the top-$K$ nodes based purely on the $Beam\\_Score$ risks severe mode collapse. If three solvers adopt the same fundamentally flawed (but highly confident) combinatorial approach, keeping all three wastes precious beam width. To combat this, we explicitly require *mathematical diversity*.\n\nDuring the `BEAM_EVAL` phase, the LLM extracts a 100-word `approach_summary` of its current trajectory. To measure semantic similarity accurately, we project these summaries into a dense vector space using a lightweight, pre-trained sentence embedding model (e.g., `all-MiniLM-L6-v2`). We then calculate the cosine distance between the embeddings of all surviving nodes. \n\nFinally, we apply a greedy Maximum Marginal Relevance (MMR) selection algorithm. A candidate's final evaluation score heavily rewards its semantic distance from the approaches of already-selected nodes:\n$$Final\\_Eval\\_Score = 0.9 \\times Beam\\_Score + 0.1 \\times \\min_{selected}(Cosine\\_Distance)$$\nBy using dense embeddings rather than fragile keyword matching, this guarantees that the surviving beams explore fundamentally distinct mathematical frameworks, dramatically increasing the probability that the true solution path survives the prune.\n\nWe deploy this Agentic Beam Search framework in two distinct areas of the AMO architecture, scaling its depth based on the Orchestrator's time budget.\n\n#### Instantiation 1: The MiniPlanner Pool (Single-Turn Seeding) Used In Standard Mode\nOn problems where the Orchestrator detects a \"Moderate\" or \"Healthy\" time budget, framing failures are our primary threat. Before any full solvers are launched, we instantiate a single-turn version of the beam search to generate starting hypotheses.\n*   **Mechanism:** We spawn 10 to 12 lightweight, 2-turn planners. They evaluate the problem and propose a mathematical approach.\n*   **Evaluation & Pruning:** The `BEAM_EVAL` rubric is applied to these 10-12 solvers. Using the MMR text-cosine algorithm, we prune the pool down to 6 to 8 highly diverse, high-quality starting plans.\n*   **Seeding:** These surviving plans are prepended to the traces of the Standard Mode solvers. By investing compute in single-turn diversity upfront, we guarantee that our parallel solvers do not blindly race down identical dead ends.\n\n#### Instantiation 2: Full Beam Mode Execution (Multi-Turn Funnel) Used in Beam Mode\nWhen the Orchestrator calculates a `Surplus_Ratio > 1.5` (Time Abundance) or on a Hard problem, it bypasses Standard Mode entirely and deploys the full, multi-turn Agentic Beam Search to find the most diverse best solver traces.\n\n\n### 4.4 Execution Routing: Agentic Beam vs. Standard Mode\n\nWe deploy the Agentic Beam Search framework scaled to the Orchestrator's time budget.\n\n#### 4.4.1 Standard Mode & The MiniPlanner Pool\n\nWhen routed to Standard Mode (Tight/Moderate budgets), framing failures are our primary threat. Before full solvers are launched, we instantiate a 2-turn version of the beam search to generate starting hypotheses.\n*   **The MiniPlanner Pool:** We spawn 10-12 lightweight planners. They evaluate the problem, propose an approach, and are immediately scored by the `BEAM_EVAL` rubric. This is a mini version of full agentic beam search\n*   **MMR Diversity Seeding:** Using the text-cosine MMR algorithm, we prune the pool down to 6-8 highly diverse, high-quality starting plans. These surviving plans are prepended to the traces of the Standard Mode solvers. Investing compute in single-turn diversity upfront guarantees our parallel solvers do not blindly race down identical dead ends.\n\n![Figure 5 - Standard Mode Solver Architecture Flowchart](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F785cdb70a8b23033e181df8fa5364050%2Fstandard_mode_solver.jpg?generation=1776745033197404&alt=media)\n\n\nStandard Mode executes 6-8 Tool-Integrated Reasoning (TIR) solvers concurrently. They operate under deterministic real-time guardrails (Section 4.5) and are designed to race toward a verified majority breakout to conserve time for later problems.\n\nExecution is governed by deterministic, real-time guardrails:\n*   **Flaw Registry:** A regex engine parses real-time generation. \n    *   *Tier 1 (Fatal):* Outputting infinity/lists injects hard overrides; 3 strikes terminate the solver.\n    *   *Tier 2.5 (Timeouts):* Detecting naïve loops (e.g., `itertools.permutations`) instantly injects a `Role.ASSISTANT` nudge demanding `z3` or a soft-timeout loop (`if time.time() - t0 > 15: break`).\n*   **Live Guide Checkpoint:** At T=380s$, a deep LLM audit is triggered. If the trajectory is flawed (e.g., dropped constraints), corrective guidance is seamlessly injected into the `ASSISTANT` channel, preserving internal monologue continuity.\n\n#### 4.4.2 Beam Mode\nFor Hard problems with abundant time, we deploy an Agentic Beam Search to explore full multi-turn reasoning trajectories.\n\n![Figure 4 - Beam Mode Solver Flowchart](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2F808b5c456e32aa6b849f7cbd00adf11d%2FBeam_Mode_Solver.jpg?generation=1776745802921454&alt=media)\n\n\n1.  **Phase 1:** 20 parallel Python-tooled solvers are spawned for 2 turns (or 120 seconds).\n2.  **Beam Self-Eval:** Without losing the existing KV-Cache, a strict auditing prompt is injected into the `ASSISTANT` role. The model scores its own trajectory out of 25. \n3.  **MMR Pruning:** We apply the formula: \n    `Beam Score = 0.8 * self_eval + 0.2 * py_score - trace_penalty`\n    `Final Eval Score = 0.9 * Beam Score + 0.1 * distance_score`\n    The top 16 solvers survive.\n4.  **Phase 2 & Deep Run:** Survivors run for 4 more turns, are evaluated, pruned down to 8, and enter a \"Deep Run\" until completion.\n\n\n### 4.5 Live Interventions & Context-Preserving Guardrails\nA major contribution of AMO is the realization that LLMs must be actively \"steered\" during generation. However, standard conversational injection (using `Role.USER`) breaks the model's internal monologue and induces conversational mode collapse. \n\nInstead, we utilize **Context-Preserving Assistant Injections**. When a flaw is detected, we format the correction as an internal thought (e.g., *\"Wait, I am attempting naïve brute force. I must add a soft-timeout...\"*) and append it to the vLLM `Conversation` object as `Role.ASSISTANT`. Because the existing prompt token IDs are reused, `vLLM`'s prefix caching handles this seamlessly without re-computing attention for the prefix, saving massive compute while forcing the model to adopt the correction as its own logic.\n\n**4.5.1 The Regex Flaw Registry**\nWe actively parse the real-time text stream against a global registry of behavioral pathologies:\n*   *Tier 1 (Fatal):* Outputting infinity, decimals, or lists. Injects a severe constraint reminder. 3 strikes result in thread termination.\n*   *Tier 2.5 (Timeouts):* Detecting `itertools`, `collections.deque`, or naïve `while` loops triggers an instant injection demanding the use of `z3` or the insertion of a strict soft-timeout block (`if time.time() - t0 > 15: break`), directly preventing hard Kaggle kernel timeouts.\n*   *Tier 3 (Silent):* Detecting \"guess\", \"assume by symmetry\", or memory-search language applies silent trace weight reductions to the final answer scoring.\n\n**4.5.2 The Live Guide Checkpoint Algorithm**\nTo catch complex mathematical drift, we trigger an LLM-based audit mid-flight.\n1.  **Trigger:** At $T=380s$, if the solver has $\\ge 1$ Python calls but no answer.\n2.  **Audit Prompt:** A deepcopy of the current trace (ensuring 100% prefix cache hit) is appended with an Early/Late Audit Prompt asking: *Is the computation consistent with printed outputs? Have constraints been dropped?*\n3.  **Parse & Inject:** The Live Guide outputs an `URGENCY` score (0.0 to 1.0) and `CORRECTION_TEXT`. If `URGENCY >= 0.90`, the correction is injected into the main solver's `ASSISTANT` channel, demanding a specific, verifiable computational action. \n\n### 4.6 Asynchronous Verification Pipeline (S-V-MV)\nAMO does not trust simple majority voting. As solvers find answers, their traces are immediately passed to an asynchronous pipeline. This architecture was inspired by two works: *Long-horizon Reasoning Agent for Olympiad-Level Mathematical Problem Solving (Intern-S1-MO)* [2] and *Gemini 2.5 Pro Capable of Winning Gold at IMO 2025* [1].\n\nThe core idea of agentic solution to solving IMO level math problems in [2] was to iteratively reason-verify-summarize it into lemmas, by adding the lemmas created in each steps into a lemma library memory, added in as input into next iteration along with the question. The architecture idea they have used is added below. \n\n![ The agentic framwork of Intern-S1-MO](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Fd5619890df7ef3f7b559037e3097d71e%2Fintern-s1-MO-agentic-framework.jpg?generation=1776817495224311&alt=media)\n   \n\nWhile Intern-S1-MO iteratively reasons-verifies-summarizes by adding lemmas into a library memory (shown above), this multi-step sequential solving is not custom-fit for OSS-120B under severe time starvation. Furthermore, the *Gemini 2.5 Pro* approach of iteratively verifying until a confident answer is reached is feasible for 6 IMO questions in 5 hours, but not for 50 AIMO questions. Consequently, our Async Summarizer-Verifier-Master Vision pipeline adapts these inspirations into a highly parallelized, AIMO-specific architecture:\n\n\n![Figure 6 - Async Summarizer, Verifier, and Master Vision Flowchart](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Ff7d21b6059b91c5cca94acd3f551814a%2Fsummarizer-verifier-mastervision.jpg?generation=1776745065882961&alt=media)\n\n1.  **Summarizer Agent:** Condenses the full trace of upto 65K tokens into a summarized structured ledger: Winning Approach, Edge Cases, Hail Marys (Explicit Guesses), and the Tool Ledger. Acts as a strict data extraction API with single turn\n2.  **Verifier Agent (Bug Report):** An adversarial auditor that attempts to computationally falsify the claim over 6-8 turns. \n    *   *Step 0:* Write a 10s direct falsification script. If it fails, reject immediately.\n    *   *Step 1-3:* Check unverified claims, build scaled enumerators, and output a Confidence Score (0.0 - 1.0) and `TRUST|VERIFY|REJECT`.\n3.  **Master Vision Agent:** If time remains but no consensus is reached, the Master Vision is invoked  to resolve multi-modal ties as a prior infomration gatherer for the resolvers.\n    *   *Synthesis Mode (Max Verifier Score > 0.50):* Isolates the exact point of mathematical divergence between competing solvers, tags `[VERIFIED]` lemmas, and sets a Rescue Entry Point.\n    *   *Clearinghouse Mode (Max Verifier Score < 0.50):* Declares the archive as unreliable noise. Maps an explicit \"Poison Map\" of framing traps to avoid.\n4.  **Resolvers:** Rescue solvers (2 new solvers) are launched, enriched with the Master Vision bulletin.They do not have to waste time re-deriving verified info and lemmas from ground but instead can start from all the findings from previous solvers, properly verified and audited by master vision agent . These resolver answers carry up to 5x voting weight on extremum problems and 2X voting weight on normal problems, there by making sure the resolvers if invoked have the higher say in what answer to submit.\n\n### 4.7 Breakout Vetoes & Final Answer Selection\nTo save time, AMO attempts an **Early Breakout** if an answer reaches the Majority Vote (5/8 solvers get same answer) OR Majority Threshold total (Total verifier score > 2.4 for an answer across all solvers completed so far). This early breakout saves time. Baseline notebook in AIMO3 had majority vote based breeakout alone, but with our verifier pipeline running async, we can have the verifier score available soon after an answer is generated for a solver too. So in cases where we didn't reach majority and a solver is still running, we wouldn't have to waste time waiting for it complete, if we have 3 verifiers all passing high for the same answer. However, because false majorities exist, this breakout is rigorously gated. We make sure we don't breakout in these 2 specific situations even if we hit majority vote breakouts:\n\n*   **The Verifier Veto:** If the Max Verifier Score for the candidate answer is < 0.50 across all the N solves (aka none of the solvers that gave majority answer had a passing verifier score in async), the breakout is aggressively blocked (unless in severe time crunch), forcing the system to wait for better validation and/or move to resolver.\n*   **The Extremum Veto:** If the problem was flagged as an Extremum, and a *better* verified bound exists among the other running solvers (e.g., candidate answer is 1055, but another solver verified 2079 on a 'max' problem), the breakout is vetoed to force Master Vision resolution and then resolver, making sure that we have a third eye selecting the final answer to submit by quality rather than quantity. If in time crunch and no time is left for master vision - resolver pipeline, we select the extremum direction verified answer (We will still only conisder answers that got a verifier score TRUST) instead of majority votes. \n\n**The Evidence Hierarchy Selection:**\nIf no breakout occurs, final selection abandons frequency counting for a strict evidence hierarchy:\n1.  **Weighted Votes:** Resolvers, armed with the Master Vision, carry massive weight (5x if extremum).\n2.  **Max Verifier Score:** Highest Bug Report confidence. Comes in play if weighted votes is tied\n3.  **Code Supremacy:** Solvers receive a +0.5 multiplier for formal proofs via `z3`/optimizers, and +0.3 for standard empirical Python validation.We have this checked with regex search on the entire python tool outputs in the trace once an answer is found\n4.  **Average Beam Score:** (For Beam Mode runs).\n5.  **Raw Vote Count:** Treated strictly as a tie-breaker.\n\n**Extremum Fallback:** If an Extremum problem times out before Resolvers finish, AMO overrides raw vote counts entirely. It explicitly scans the pool to select the *tightest verified bound* (Verifier Score > 0.78) or the bound possessing the highest Code Supremacy, directly neutralizing the LLM Extremum Bias.\n\n---\n\n## SECTION 5 — Dynamic Time Management\n\nIn a strictly constrained 5-hour, 50-problem inference environment, mathematical capability is irrelevant if the system runs out of time. One of the most critical vulnerabilities of the baseline architecture was its naive approach to budget allocation, which directly resulted in late-stage problem starvation. \n\nTo resolve this, AMO implements a closed-loop, predictive time management system that treats inference time as a dynamically traded commodity, smoothing the allocation curve across the entire problem set.\n\n### 5.1 The Pathology of Baseline Time Allocation\nThe standard baseline approach utilizes a naive `time_left / questions_left` heuristic, often clamped to a fixed maximum (e.g., 900 seconds) for early questions. Because LLMs operating at T>0 can easily get trapped in long, unyielding reasoning paths, difficult problems presented early in the sequence will ruthlessly consume their maximum allowed budget. \n\nAs early questions bleed the global clock, the `time_left` plummets. By the time the system reaches question 20 or 30, the `fair_share` drops precipitously, triggering a \"cascading starvation\" effect. \n\n![Allocated Time Budget Comparison: AMO Orchestrator vs Baseline](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F645831%2Fe6236f43cb51d2064bdd1bd6d2638470%2Ftiming_comparison.jpg?generation=1776823605316092&alt=media)\n*Figure 7: A direct comparison of the Allocated Time Budget across 50 questions during a local benchmark run. Top (Green): AMO Orchestrator. Bottom (Red): Baseline timing method.*\n\nThe bottom chart (red) in Figure 7 perfectly illustrates this catastrophic failure mode. The baseline system statically allocates 900 seconds for the first few questions. Because actual computation exhausts this budget, the available time crashes. From question 15 onward, the allocation becomes violently erratic, frequently plummeting to 300 seconds. By the final decile (questions 40-50), the system is effectively crippled, lacking the compute time necessary to execute deep reasoning or parallel sampling, regardless of the actual mathematical complexity of those final questions.\n\n### 5.2 The AMO Orchestrator's Predictive Budgeting\nTo prevent cascading starvation, AMO's Orchestrator abandons static maximums in favor of a forward-looking, deck-aware predictive model. \n\nBefore any problem begins, the system relies on an expected difficulty \"Deck\" (initialized to 27 Easy, 13 Medium, 10 Hard based on pass@K priors as explained before) and maintains a 10-problem rolling time history for each tier. Rather than just looking at how much time is left, AMO predicts how much time the *entire remaining test set* will cost:\n$$Expected\\_Cost = \\sum_{L \\in \\{E,M,H\\}} \\left( Deck\\_Remaining[L] \\times Rolling\\_Avg\\_Time[L] \\right)$$\n\nThis allows the Orchestrator to calculate a `Surplus_Ratio` ($Time\\_Left / Expected\\_Cost$). If the `Surplus_Ratio < 1.0`, the system knows it is running behind schedule *relative to the expected difficulty of the remaining questions*, even if absolute time appears plentiful. \n\n### 5.3 Bayesian Regime Shifting and Soft Clamping\nThe `Surplus_Ratio` enables continuous Bayesian regime shifting, allowing the system to scale its computational footprint up or down dynamically:\n*   **Time Abundance (Surplus > 1.5):** The system aggressively invests surplus time. If the Scout flags a problem as \"Medium,\" the Orchestrator upgrades it to \"Hard,\" forcibly routing it into the more expensive, higher-yield Agentic Beam Search mode.\n*   **Time Crunch (Surplus < 0.7):** The system protects the global clock. Hard problems are downgraded to Standard Mode, and the maximum number of initial parallel solvers is constrained.\n\nInstead of fixed ceilings, the actual Allocated Budget is a dynamic function of the `Fair_Share`, modulated by the problem tier and scaled via a predefined multiplier (empirically tuned to 2.6) plus a bonus for Resolver agents:\n$$Budget = \\min(\\max(Fair\\_Share \\times 2.6 + Resolver\\_Bonus, MIN\\_CAP), MAX\\_CAP)$$\nA global failsafe (`Time_Left * 0.85`) sits above this logic to guarantee the Kaggle kernel will never hit a hard timeout.\n\n### 5.4 Empirical Reclassification and the Feedback Loop\nA predictive system is only as good as its priors. Because the initial difficulty Deck is an assumption, AMO continuously corrects its own internal models. \n\nPost-solve, the Orchestrator executes an **Empirical Reclassification**. It ignores the Scout's initial difficulty estimate and looks purely at execution reality. If 7 out of 8 solvers independently arrived at the same answer in under 400 seconds, the problem is reclassified as \"Easy,\" regardless of its mathematical domain. If the system had to invoke the Master Vision Agent and consumed 850 seconds, it is reclassified as \"Hard.\"\n\nThe system then decrements the corresponding tier in the Deck and updates the `Rolling_Avg_Time` array. This closed feedback loop allows AMO to \"learn\" the true pace of the unseen test set in real time. \n\n### 5.5 Visualizing the Impact: The Smooth Allocation Curve\nThe success of this architecture is visually confirmed in the top chart (green) of Figure 7. \n\nUnlike the baseline's erratic crashes, the AMO Orchestrator produces a smooth, undulating allocation curve. By intelligently clamping early-stage over-expenditure and utilizing the difficulty deck to forecast future costs, the system maintains a highly stable budget between 600 and 960 seconds per question. \n\nMost importantly, **AMO successfully protects the end of the test set**.  When questions 40 through 50 arrive, the system still possesses ample budget (frequently >800 seconds) to deploy Master Vision, Resolvers, and full Beam Search iterations. By treating compute as a dynamically managed asset rather than a static allowance, AMO ensures that every problem receives the exact level of orchestration it requires, maximizing the probability of single-submission correctness.\n\n---\n\n## SECTION 6 — Empirical Validation: Local Benchmarks vs. Leaderboard Variance\n\nA persistent challenge in the AIMO competition environment is the extreme volatility of the public leaderboard. Because the test set is small (50 questions) and LLM sampling at T>0 is inherently stochastic, a fragile architecture can occasionally \"get lucky\" and achieve an artificially high score, only to collapse on subsequent runs. \n\nRealizing that optimizing purely for the public leaderboard was leading to overfitting and architecture fragility, we halted leaderboard-driven development approximately one month before the deadline. We constructed `benchmark_50_v2`, a localized dataset of 50 olympiad problems carefully curated from AIMO reference sets and the MATH corpus prize submissions. All subsequent architectural decisions were rigorously evaluated against this stable ground truth. *(Note: Because this local benchmark was instituted late in the development cycle, local run data is sparse or unavailable for our earliest architectural iterations).*\n\n### 6.1 Performance and Variance Tracking\nThe table below documents our submission history (only including non-experimental LB submissions to avoid any bias) , tracking both local benchmark accuracy and public leaderboard scores across various architectural iterations. \n\n| Method / Architecture | Run ID | Local Score (Out of 50) | Public Leaderboard Score |\n| :--- | :--- | :--- | :--- |\n| **AMO-Final-Submission** | 1 | 38 | 37 |\n| **AMO-Final-Submission** | 2 | 39 | 38 |\n| **AMO-Final-Submission** | 3 | 39 | 41 |\n| **AMO-Final-Submission** | 4 | 39 | 37 |\n| SwarmRAG-Async-SVM | 1 | 31 | 39 |\n| SwarmRAG-Async-SVM | 2 | 30 | 35 |\n| SwarmRAG-Async-SVM | 3 | 37 | 41 |\n| SwarmRAG-Async-SVM | 4 | 28 | 38 |\n| SwarmRAG-Async-SVM | 5 | 28 | 33 |\n| Standard - SVM | 1 | 32 | 35 |\n| Standard - SVM | 2 | - | **45** |\n| Standard - SVM | 3 | - | 38 |\n| Standard - SVM | 4 | - | 35 |\n| baseline-with-multiinjection| 1 | - | 33 |\n| baseline-with-multiinjection| 2 | - | 41 |\n| baseline-with-multiinjection| 3 | - | 41 |\n| baseline-with-multiinjection| 4 | - | 35 |\n| blackboard-collaborative-bul| 1 | - | 33 |\n| blackboard-collaborative-bul| 2 | - | 35 |\n| blackboard-collaborative-bul| 3 | - | 27 |\n| Scout-CRAG-Arbiter | 1 | - | 30 |\n| Scout-CRAG-Arbiter | 2 | - | 38 |\n| Scout-CRAG-Arbiter | 3 | - | 35 |\n| Scout-CRAG-Arbiter | 4 | - | 36 |\n| baseline-notebook | 1 | - | 39 |\n\n### 6.2 Analyzing the 45-to-41 Gap: The Variance Trap\nAt first glance, the public leaderboard data presents a paradox: our simpler `Standard - SVM` architecture achieved the highest peak score of the competition (45), yet our final, fully orchestrated `AMO` architecture peaked at 41. \n\nHowever, a closer analysis of the variance reveals why relying on the `Standard - SVM` architecture is computationally dangerous. While it achieved a 45 on Run 2, it also scored a 35 on Runs 1 and 4, representing a massive **10-point variance swing**. In a competition where the final private score is determined by running the notebook twice and penalizing inconsistency (awarding a half-point if only one run is correct), a highly variant architecture is an unacceptable liability. The 45 was a statistical outlier—a \"lucky\" run where the unstructured solvers happened to avoid timeout traps and frame-divergences. When tested on our stable local benchmark, this same architecture scored 32. Moreover, we were confident with our AMO-Final-Submission as it was more sound in logic as well as stable in local tests. We ran out of time to have few more test runs and experiments on the public leaderboard with this method. One of the lesson we learnt is to start early on AIMO4 to avoid this issue. \n\n### 6.3 The Stabilization of AMO and why we selected this for final submission\n\nThe transition to the final `AMO` architecture was a deliberate engineering decision to trade peak variance for a heavily raised, stable floor. By introducing the Agentic Beam Search, the Async Verifier Pipeline, and the Regex Flaw Registry, we actively constrained the model's stochasticity. The results on our local benchmark demonstrate unprecedented stability: **38, 39, 39, 39**. The system became highly predictable, proving that our infrastructure successfully shielded the model from unrecoverable reasoning drifts.\n\nThis stability translated directly to the public leaderboard, where the AMO-Final submission consistently grouped in a tight band of **37 to 41**, drastically suppressing the 10 point swings seen in earlier iterations. While architectural complexity—such as the overhead of Scouts and Evaluators—consumes inference time and slightly caps the maximum number of problems that can be fully explored, the resulting consistency guarantees the best odds for robust performance on the private evaluation. While it was tempting to go with leaderboard 45 submission, we decided to trust the data. The AMO architecture is superior to standard-SVM pipline and covers a lot of gaps. While the evaluation is done on 50 questions alone and there is a certain luck involved which might favor simpler systems (simplicity is perfection in small samples) we believe the AMO solution is more robust and is the best hedge to any problem and ordering. \n\n### 6.4 Architectural Ablations & Failures\nThe data table also highlights the empirical failure of several collaborative agent patterns, providing the foundation for our ablations (detailed in Section 7):\n*   **SwarmRAG & Blackboard:** Methodologies that allowed solvers to share intermediate insights (`SwarmRAG-Async-SVM` and `blackboard-collaborative-bul`) exhibited extreme volatility. Local scores plummeted as low as 28, and leaderboard scores crashed to 27. Our traces confirmed that these setups actively facilitated \"echo chambers\" of correlated errors.\n*   **CRAG (Corrective RAG):** The `Scout-CRAG-Arbiter` runs hovered in the mid-30s. Injecting external problem corpus data during inference caused the model to overfit to the retrieved examples rather than focusing on the actual problem constraints.\n\nUltimately, the empirical data proved that in a compute-constrained environment, isolation, adversarial verification, and structured search (AMO) heavily outperform both blind parallel sampling (`baseline`) and unverified agentic collaboration (`SwarmRAG`).\n\n\n---\n\n## SECTION 7 — Experimental Components and Ablation\n\nThere were many different types of attempts we made on trying to build the best agentic structure for AIMO3. Some of them were novel and forward-looking but ultimately didn't make it into the final AMO to avoid noise, complexity, and lack of time. \n\n### 7.1 Entropy-Based Answer Selection\nMotivated by EDIS (arXiv:2602.01288), which suggests that entropy dynamics in token generation reveal reasoning quality, we computed mean, max-window, and tail entropy from raw vLLM `top_logprobs`.  \n*   *Result:* Ablated. Without a trained calibration model, entropy metrics added noise. The OSS-120B model's entropy profile during fluent-but-wrong reasoning was practically indistinguishable from genuine mathematical computation. We tried to build interventions looking at entropy spikes, but it was evident that entropy is not a good signal for long OSS-120B traces, especially with Python tooling.\n\n### 7.2 SwarmRAG: Collaborative Answer Sharing \n*[Notebook with SwarmRAG](https://www.kaggle.com/code/davidacad10/41-50-aimo-swarmrag-with-entropy-based-signals)*\n*   *Hypothesis:* Concurrent solvers writing to a shared, in-memory ledger would accelerate convergence.\n*   *Approach:* We created an agentic system where each solver's reasoning traces and Python codes were saved into a local VectorDB by creating embeddings using `all-MiniLM-L6-v2`. We had 2 RAG systems (one for traces, one for code). The RAG calls were infused as Python modules in the sandbox tools.\n*   *Result:* Ablated. While the idea genuinely converged faster to correct answers in some problems, we noticed wrong solver responses poisoned other solvers. This created an \"echo chamber\" of correlated errors. Coordination among agents actively amplifies errors when the shared signal is not externally verified. This could be fixed by adding a Corrective RAG, but that adds an LLM call which loses time.\n\n### 7.3 Collaborative Bulletin-Based Solvers\n*   *Hypothesis:* Broadcasting structured \"VERIFIED THEORY\" text from completed solvers would guide stuck solvers.\n*   *Result:* Ablated. Orchestrating a bulletin system needed another LLM agent, losing time. Furthermore, the authoritative label caused solvers to blindly anchor on flawed premises, suffering the same poisoning issue as SwarmRAG. We pivoted entirely to the Master Vision - Resolver pipeline instead.\n\n---\n\n\n\n## SECTION 8 — Bibliography\n\n\n1. Gemini 2.5 Pro Capable of Winning Gold at IMO 2025 \tarXiv:2507.15855 [cs.AI]\n2. Long-horizon Reasoning Agent for Olympiad-Level Mathematical Problem Solving . arXiv:2512.10739 [cs.CL]\n3. Tree of Thoughts: Deliberate Problem Solving with Large Language Models \tarXiv:2305.10601 [cs.CL]\n4. (2024) *MACM: Utilizing a Multi-Agent System for Condition Mining in Solving Complex Mathematical Problems*. arXiv:2404.04735.\n5. (2026) *EDIS: Diagnosing LLM Reasoning via Entropy Dynamics*. arXiv:2602.01288.\n6. (2025) *AIMO2 Winner NemoSkills GenSelect*. arXiv:2504.16891.\n7.  Deep Think with Confidence \tarXiv:2508.15260 [cs.LG]\n8. BREAKING MENTAL SET TO IMPROVE REASONING THROUGH DIVERSE MULTI-AGENT DEBATE (https://openreview.net/pdf?id=t6QHYUOQL7)\n",
      "votes": 8
    },
    {
      "id": 3457762,
      "postDate": "2026-05-14T09:52:03.320Z",
      "content": "<p>Following up on the questions from <a href=\"https://www.kaggle.com/philipvonderlind\" target=\"_blank\">@philipvonderlind</a>, here are some additional questions to help us assess your submission:</p>\n<ol>\n<li><strong>Entropy debunking:</strong> Your Trace Viewer analysis concluded that token-level entropy has only weak correlation to correctness in a Python-tooled environment (\"entropy fluctuations largely reflected the model's confidence in Python syntax rather than mathematical truth\"). Several top public notebooks, including the popular <a href=\"https://www.kaggle.com/code/nihilisticneuralnet/44-50-let-me-over-cook\" target=\"_blank\">44/50 notebook</a>, use entropy weighting in their voting. How do you reconcile your finding with their reliance on it? Is the gain there also within noise, or are they using entropy in a way that is different from what you found not to work?</li>\n<li><strong>Verifier Agent error rates:</strong> Your Verifier Agent is described as \"an adversarial auditor that attempts to computationally falsify the claim over 6-8 turns\". Adversarial verification could either catch wrong answers the solver missed (good) or reject correct answers that look unusual (bad). Do you have data on the Verifier's true-positive rate (correctly rejecting wrong claims) vs false-positive rate (rejecting correct claims)?</li>\n<li><strong>Extremum Protocol invocation:</strong> You introduce the Extremum Protocol to address Extremum Bias as a systematic failure mode. On the 50-problem local benchmark, how often does the protocol actually fire, and on what fraction of those firings does it flip the answer from a wrong majority vote to the correct one?</li>\n</ol>\n<p>Look forward to reading your responses on these.</p>",
      "rawMarkdown": "Following up on the questions from @philipvonderlind, here are some additional questions to help us assess your submission:\n\n1. **Entropy debunking:** Your Trace Viewer analysis concluded that token-level entropy has only weak correlation to correctness in a Python-tooled environment (\"entropy fluctuations largely reflected the model's confidence in Python syntax rather than mathematical truth\"). Several top public notebooks, including the popular [44/50 notebook](https://www.kaggle.com/code/nihilisticneuralnet/44-50-let-me-over-cook), use entropy weighting in their voting. How do you reconcile your finding with their reliance on it? Is the gain there also within noise, or are they using entropy in a way that is different from what you found not to work?\n2. **Verifier Agent error rates:** Your Verifier Agent is described as \"an adversarial auditor that attempts to computationally falsify the claim over 6-8 turns\". Adversarial verification could either catch wrong answers the solver missed (good) or reject correct answers that look unusual (bad). Do you have data on the Verifier's true-positive rate (correctly rejecting wrong claims) vs false-positive rate (rejecting correct claims)?\n3. **Extremum Protocol invocation:** You introduce the Extremum Protocol to address Extremum Bias as a systematic failure mode. On the 50-problem local benchmark, how often does the protocol actually fire, and on what fraction of those firings does it flip the answer from a wrong majority vote to the correct one?\n\nLook forward to reading your responses on these.\n"
    },
    {
      "id": 3457751,
      "postDate": "2026-05-14T09:19:50.313Z",
      "content": "<p>Hi, thank you for your submission to the Writeup Prize. <a href=\"https://www.kaggle.com/sambealing\" target=\"_blank\">@sambealing</a> and I will post some questions below that help us in assessing your submission more closely, as described in the <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/discussion/689703\" target=\"_blank\">updated discussion post.\n</a></p>\n<p>I like your use of plots to communicate the proposed architecture. I have a few questions about some of the stages:</p>\n<ol>\n<li><p><strong>Benchmark</strong>: You mention constructing a local benchmark to test your approach. Could you describe why you chose to create your own benchmark and explain the methodology behind it? There were many Math Corpus Prize submissions that have been widely used by the community, so I would be curious to understand the motivation. In addition, the scores on your local benchmark appear more stable than the public leaderboard results, which seem to have much higher variance. How do you explain this difference? For example, could it be related to always evaluating problems in the same order, differences in difficulty, or other benchmark-specific factors?</p></li>\n<li><p><strong>Time Management</strong>: You mention using the more extensive “Beam Search” generation strategy when there is abundant time remaining. Could this become problematic if many hard problems appear toward the end of the evaluation, after a significant amount of time has already been spent on expensive Beam Search runs earlier? Did you encounter or document such cases during development?</p></li>\n<li><p><strong>Temperature</strong>: Why does your SCOUT stage use a temperature of <code>0.6</code>? It would be helpful to motivate this choice with ablations showing that a non-default temperature improves performance. For example, the <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/model-capability-dominates\" target=\"_blank\">submission</a> by <a href=\"https://www.kaggle.com/natnitarach\" target=\"_blank\">@natnitarach</a> argues that <code>t=1</code> is already the most diverse and highest-performing setting for <code>gpt-oss-120b</code>.</p></li>\n<li><p><strong>Scouts</strong>: In practice, is the SCOUT phase worth the GPU time it consumes? I would expect it to use a non-negligible portion of the overall budget, which might otherwise be spent on generating additional solution completions. Did you run any experiments confirming that the SCOUT phase improves final performance enough to justify its cost?</p></li>\n<li><p><strong>Citations and Reproducibility</strong>: Please cite the publicly shared notebook, as it appears to serve as the basis for at least parts of your final submission. In addition, please share the code for all ablations and experiments, and document the steps required to reproduce them.</p></li>\n</ol>\n<p>Looking forward to your response :)</p>",
      "rawMarkdown": "Hi, thank you for your submission to the Writeup Prize. @sambealing and I will post some questions below that help us in assessing your submission more closely, as described in the [updated discussion post.\n](https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/discussion/689703)\n\nI like your use of plots to communicate the proposed architecture. I have a few questions about some of the stages:\n\n1. **Benchmark**: You mention constructing a local benchmark to test your approach. Could you describe why you chose to create your own benchmark and explain the methodology behind it? There were many Math Corpus Prize submissions that have been widely used by the community, so I would be curious to understand the motivation. In addition, the scores on your local benchmark appear more stable than the public leaderboard results, which seem to have much higher variance. How do you explain this difference? For example, could it be related to always evaluating problems in the same order, differences in difficulty, or other benchmark-specific factors?\n\n2. **Time Management**: You mention using the more extensive “Beam Search” generation strategy when there is abundant time remaining. Could this become problematic if many hard problems appear toward the end of the evaluation, after a significant amount of time has already been spent on expensive Beam Search runs earlier? Did you encounter or document such cases during development?\n\n3. **Temperature**: Why does your SCOUT stage use a temperature of `0.6`? It would be helpful to motivate this choice with ablations showing that a non-default temperature improves performance. For example, the [submission](https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/model-capability-dominates) by @natnitarach argues that `t=1` is already the most diverse and highest-performing setting for `gpt-oss-120b`.\n\n4. **Scouts**: In practice, is the SCOUT phase worth the GPU time it consumes? I would expect it to use a non-negligible portion of the overall budget, which might otherwise be spent on generating additional solution completions. Did you run any experiments confirming that the SCOUT phase improves final performance enough to justify its cost?\n\n5. **Citations and Reproducibility**: Please cite the publicly shared notebook, as it appears to serve as the basis for at least parts of your final submission. In addition, please share the code for all ablations and experiments, and document the steps required to reproduce them.\n\nLooking forward to your response :)"
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-20T04:23:48Z",
  "competition_id": 118448,
  "competition_slug": "ai-mathematical-olympiad-progress-prize-3",
  "team_id": 14799861,
  "solution_url": "/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/amo-agentic-math-orchestrator-for-olympiad-mathem"
}