Test first. Escalate second.

A coding agent that runs every fix against a locked unit test on Nemotron Nano first, and only pays for live docs or a bigger model when the test says why it failed.

  • Nebius Token Factory
  • NVIDIA Nemotron 3 Nano, Super, Ultra
  • Tavily search, extract, map
SchemaGuard v3 migration Verified · exit 0
    Cost of the verified fix$0.002095

    Pick a failure type to see which rung of the ladder catches it.

    Ten tasks, locked tests

    Five routing strategies ran the same ten Python tasks. A patch only counts when the read-only test passes.

    100%

    of tasks verified by Mjolnir, 10 of 10

    $0.0017

    per verified fix, 52% below Ultra with Tavily always on

    0 of 6

    2026 API changes fixed by bare Nemotron Ultra

    Bugs fail in two ways

    A bigger model cannot guess a method that was renamed after it was trained. A web search cannot solve a graph algorithm. Mjolnir reads the error and sends each bug down the right road.

    A steel arch bridge spanning still grey water

    Missing knowledge

    ImportError, AttributeError or an unknown keyword. The code calls an API that changed in 2026.

    Fix: Nano with live Tavily docs
    Pale stone columns rising into pointed vaults

    Missing reasoning

    AssertionError on an edge case. The API is fine; the logic is wrong. Search would only add noise.

    Fix: escalate to Super, then Ultra

    Four steps

    Nano probeexit 1
    Nemotron-3-Nano-30B $0.000045 · 210 ms
    test_solution.py
    mode 0444 · sha fd6cb989

    First, the cheapest model tries the fix against a test it cannot edit.

    Error receiptKnowledge gap
    Missing symbol: dict solution.py, line 11
    AttributeError: 'UserPayload'
    has no attribute 'dict'

    Then the traceback is cut to three lines that name the cause.

    Tavily docsfound
    search, extract, map 342 ms
    SchemaGuard 3.0:
    use .model_dump_strict()

    Next, only API errors pull the current docs from the web.

    Verified diffexit 0
    Total $0.002095 2 rungs used
    - user.dict(exclude_none=True)
    + user.model_dump_strict(
    +     exclude_none=True)

    Finally, the test passes and you get the diff with its cost.

    The 5-arm ledger

    Six tasks use SDK changes from 2026; four are pure logic. Same tasks, same locked tests, five ways of choosing a model.

    Repeating modular facade of a white concrete building
    Strategy How it routes API changes Logic Solved Cost per fix
    Mjolnir 2D ladderNano first, Tavily on API errors, Super or Ultra on logic6 / 64 / 4100%$0.001671
    Ultra + Tavily alwaysBiggest model, web search on every task6 / 63 / 490%$0.003484
    Nano + TavilySmall model with docs, no escalation5 / 61 / 460%$0.003396
    Ultra aloneBiggest model, no docs0 / 64 / 440%$0.002613
    Nano aloneSmall model, one try0 / 61 / 410%$0.000330

    Ten tasks is a small sample, so read these as a method check, not a market benchmark. Cost per fix divides each strategy's total spend by the tasks it actually solved. Raw receipts: live_5arm_telemetry.json · deterministic_5arm_benchmark.json.

    Every fix has a receipt

    Choose a task to read the diff, the docs Tavily returned and the path up the ladder.

    Suspension bridge tower rising through coastal fog above dark cliffs
    api-01-schema-validator Verified · exit 0
    Nano → Nano + Tavily · $0.002095
    - return user.dict(exclude_none=True)
    + return user.model_dump_strict(exclude_none=True)
    Loading the Tavily receipt from the benchmark artifact.

    Race it
    yourself

    Pick a task and a baseline. The workbench runs both side by side against the same locked test and shows what each one cost.

    New split-screen raceNebius /v1