Maingen
SolarBench

Methodology: benchmarking AI on a live solar operations desk

Can an AI run a solar operations desk for a week? A deterministic, adversarially audited benchmark built from real O&M desk work, where every graded outcome is read from world state and a wrong truck roll costs you.

01

Overview

A remote-operations lead at a solar O&M company starts Monday with a flood of roughly forty alarms across a fleet of sites. Most are "nuisance alerts." A few are real, and the real ones cost money: a wrong truck roll is $650 to $1,200, a missed transformer fault is a five-figure loss, a warranty claim filed a day late is unrecoverable. The operator reads telemetry, cross-checks revenue meters, digs through contracts and SOPs, dispatches technicians, orders parts, answers the inbox, and files a Sunday report, all under deadlines that charge for every late hour.

SolarBench simulates that desk deterministically. An agent (or a human) takes the seat for a simulated week. Every action is a priced tool call against a fixed world, and the week is graded from what actually happened in that world. To a player it looks like an operations game; underneath is a deterministic environment with strict, replayable evaluation.

One seat, one week, one world

deterministic single-seat environment

Telemetryper-string power, alarms, weather
Revenue metersindependent channel, can disagree
DocumentsSLAs, warranties, SOPs, leases
world stateseeded · event-quantized week clock
Inboxowners, techs, asset manager
Techs & partspriced, lead times, deadlines
Sunday reportthe graded handoff
Agent seatmodel + harness · sandbox · tool calls
Human seata person + the desk UI · same tool calls
The desk from above: one deterministic world, surfaces a real operator would have, and two interchangeable kinds of seat. Only the interface layer differs between them.
02

The Desk

Everything a desk seat is told

intro shift · verbatim

goal promptMorning desk, Central NY 14-site book. Shift opens 06:30; day scores at 15:00. The alarm board is flooded (~60 rows - paginate; truncated pages hide work). Dig with revenue meter and inverter readings before any truck. AM pressure does not raise severity. Work the shift: inventory the flood, classify what needs a truck vs what does not, refuse emergency theater when evidence says so, park blockers, and submit a structured handoff. Keep working notes in your own messages if useful (prose-only turns do not end the episode). The desk stays open all shift: when current work is done, stand_by to hold for the next event - AM traffic and board changes land during the day. The handoff window opens at 14:30; submit_report is refused earlier. ## Document library In-world policy documents (SOPs, warranties, SLAs, PPAs) live under docs/ in this session. Use the search_docs / read_doc tools.
the toolboxmonitoring reads site_list · site_overview · site_power · site_energy · inverter_technical_data · components_list · get_meters_data · get_weather · query_onsite_sensors investigation get_alarms · acknowledge_alarm · search_docs · read_doc · check_warranty · check_parts_inventory · search_service_history · list_purchase_orders · file_day_log actions send_tech · remote_reset · create_work_order · order_parts · cancel_purchase_order · cancel_dispatch · file_warranty_claim · reply_to_stakeholder episode control stand_by · finish_shift · submit_report
The authored surface for a seat: the goal prompt (shown for the intro shift, verbatim) and the tool menu. No strategy advice, no personas, no hints about what the week contains.

A seat is one continuous session for the whole week: a degradation noticed Tuesday must still be tracked Friday, and no event forces the reminder. The environment exposes no verification oracle; a decision's quality registers only as priced consequences, some of which the week never reveals. The agent runs sandboxed and reaches the world only over a socket; the rubric and hidden fixture truth are unreachable by construction.

Anatomy of a hard week

loud vs quiet · time-coupled

MonTueWedThuFriSatSunalarm floodloud, mostly nuisancequiet fault beginsparts lead time closesclaim deadlinereportgraded handoffExpected loss concentrates in the quiet Tuesday chain; the Monday flood is mostly nuisance.
A hard week anti-correlates loudness with expected loss and couples decisions across days. Nothing reminds the seat that the quiet chain exists.
03

The Human Seat

Humans play the same desk through a UI (the public "beat the desk" arena). A button press translates into the same tool calls an agent makes, against the same world state. Parity is enforced by construction rather than by policy: the UI is fed from the same environment state the agent sandbox sees, and cannot expose more than the agent gets.

Parity by construction

same observations · same actions

Agent seatmodel + harness · direct tool calls
Human seata person + the desk UI · the same tool calls
↕ same observations · same actions ↕
One deterministic world per weekappend-only record · every accepted action, message, and state
Only the interface layer differs between a human seat and an agent seat. Whatever the UI shows is available to the sandbox, because both are fed from the same state.
Live · the human seatOne day on the intro desk: same tools, same world engine, scored at shift end. Judge the difficulty yourself.Play the desk →
04

An Agent-Necessary Decision Problem

Formally, a SolarBench week is a partially observable Markov decision process played against nature: a POMDP (S, A, T, Ω, O, R) whose state factors into hidden fixture truth (which faults are real, what the boxes actually contain, what the weather will do) and visible mutable records (dispatches, orders, spend, the clock). Actions are tool calls; observations are what the tools return. The structure is agent-necessary: the policy owns information acquisition, carries belief across the week, and commits irreversible priced actions, so no single-turn reduction exists. The seat plays a game against nature in the decision-theoretic sense: no second strategic player, so scoring is absolute decision quality against an oracle rather than relative Elo against a field.

The seat's loop

belief → action → consequence, against seeded nature

Hidden statefixture ⊗ seednature's pure strategy
partial
observation
Beliefposterior over faultscarried all week
priced
action
World recordsdispatches · spend · claimswhat grading reads
↩ the clock advances; consequences and new observations return to the seat
All of nature's draws are seeded (SHA-256), so each task instance is one pure strategy of nature, fixed in advance; replaying a week replays nature's exact play.

Within this frame, the skills the desk demands are named objects in the decision-theory literature. Each difficulty dial we use is a choice about one of them.

Belief-state maintenance (Bayesian filtering)

Correct play is a posterior over hidden fault states given telemetry likelihoods and disclosed base rates, updated across the week. One signature failure mode is exactly a filtering pathology: the model forms the right posterior, then collapses it against its own evidence (§07, "un-finding").

The newsvendor problem (ex-ante commitment)

Hedging, ordering the backup part while the diagnosis is still ambiguous, is a critical-fractile decision. With underage cost cu (the loss if you needed it and did not order) and overage cost co (the wasted order), the rational seat commits when:

hedge ⇔ P(need) > coco + cu

Our worlds disclose the base rate and price both sides, so the graded object is the side of a disclosed inequality the seat stands on.

Real options (restraint)

An irreversible priced action taken now forfeits the option value of waiting; deferring while a cheap observation is pending is often the value-maximizing move. Graded weeks turn on option-value reasoning in both directions: exercising early when waiting was worth more, and waiting when the option had expired.

Signal detection theory (triage)

An alarm flood is a set of signals with likelihood ratios. Optimal triage thresholds on likelihood ratio times consequence. The salience-loss dial, our master difficulty knob, is the designed correlation between a signal's salience and its expected loss.

The salience-loss dial

corr(salience, expected loss) is the knob

salience (how loud it presents)expected losseasy week: loud things are the losseshard week: loud+nuisance, quiet+realquiet + real (transformer bleed)loud + nuisance (comms flap flood)
Easy weeks set the correlation positive; hard weeks set it negative. Measured model behavior thresholds on salience: over-reaction to loud+nuisance, under-reaction to quiet+real. (Both original anchor measurements are being re-measured after audit corrections; the dial itself stands as the design mechanism.)

Budgeted decision processes

Spend and time are coupled budget constraints, so the week is a constrained MDP: "is this truck roll worth it" is simultaneously a P&L question and a scheduling question.

the oracle

The oracle policy used for scoring is the task author's known-best play, constructed under the fairness contract: it passes every criterion using only disclosed information, so value capture of 1.0 is achievable in principle. If a seat finds a better play, capture exceeds 1 and the oracle is revised.

05

Environment Design

Design laws we derived empirically. Each was measured, and several first drafts of it were wrong.

An item = a general principle × domain parameters, bound in the world

Models know Goodhart's law, the newsvendor logic, and option value as recitable principles. They fail the unprompted binding of the principle to this SLA, this site, this Tuesday. Parameters are chosen so the generic prior gives the wrong answer.

Only time-coupled chains discriminate

Trap collections vs chains

why composed weeks saturated

A WEEK OF SIDE-BY-SIDE TRAPS · nine runs, identical scores, zero discrimination
trap 1 ✓
trap 2 ✓
trap 3 ✓
… ✓
trap 8 ✓
A TIME-COUPLED CHAIN · the only structure that separated models
Tue: notice quietly ✓
Wed: order inside lead time ✓
Thu: claim before deadline ✗
week lost
Composing solved pieces yields a solved week. Only chains, where an early quiet observation is a later deadline, separated models. Authoring budget buys chains.

Separation comes from decision points

Frontier models are exhaustive when the world allows it: in one probe, 12/12 runs recovered every hidden needle without being told the count. Separation therefore comes from decision points (the discrimination law below), where the world's own deadlines, lead times, and prices make a choice consequential.

Records vs coaching: the strongest dial we measured

Same substance, different disclosure

one frontier model, same criterion

world states the conclusion
80% pass
world leaves raw records to derive it from
20% pass
Whether a conclusion is stated or derivable moved one frontier model from 80% to 20% on the same substance. The design rule that falls out: pushing raw events is realistic; pushing derived conclusions is the world grading the agent's homework. This rule also drove the leakage audit (§08).
the discrimination law

A criterion discriminates when it has a decision point where the environment is silent and the correct action violates a trained prior: ex-ante hedging, restraint, written commitment.

A deadline is missed only by decision

The engine guarantees a reachable clock tick before every priced deadline ("no unpriced physics"), so every timing failure is a decision.

06

Grading and Metrics

The fairness contract

RULE 1
Discoverable
Every graded token is discoverable from the world plus disclosed docs, never only from the answer key.
RULE 2
World-state only
Grade what happened in the world, never the seat's prose or its choice of tool.
RULE 3
Defined predicates
Open predicates ("material", "excluded") carry disclosed definitions.
RULE 4
Enforce in-world
A rule that can be enforced in the world (a 409 rejection) lives there, not as a grader gotcha.
RULE 5
Deterministic
All draws seeded; grading recomputes exactly from the record.

In mechanism-design terms, a rubric is a proxy for latent desk value and the contract is an incentive-compatibility requirement: a criterion is admissible only if maximizing it coincides with maximizing desk value under the disclosed information. Every unfairness class in our taxonomy (§08) is a named way that equivalence breaks. Goodhart's law is not a slogan here; it is the design constraint the grading layer is built against.

Headline metrics

pass is binary, per run: every pass-tier criterion satisfied, no safety gate failed, run completed. No partial credit in public numbers.

passk is reliability: the probability that all k of k independent runs pass. For c passes in n runs the unbiased estimator is:

passk = C(c, k)C(n, k)

The all-of-k counterpart to the pass@k estimator standard in code benchmarks. This is the number an operator cares about: not "can it do the week" but "can it do the week every week."

value capture is the economics axis, a normalized-regret measure reported beside pass and never folded into it. With Vagent the seat's realized P&L, V0 the do-nothing policy's, and V* the oracle's:

capture = Vagent − V0V* − V0 = 1 − regretV* − V0

0 means the seat might as well have stayed home; 1 is the oracle; negative is actively destroyed value.

Why two axes

pass × capture · the quadrants tell different stories

fail ← pass axis → passcapture →ran the deskpassed, captured the valuepassed, bled moneycriteria met at 4-8x oracle spendcheap but wrongheld its wallet, missed the weekdestroyed valuefailed and spent doing it
A seat can pass every criterion while capturing a fraction of available value: on one saturated week, models passed while spending $2,900 to $5,500 against a $650 oracle. Criteria saturate; economics discriminate. That gap is the point of the second axis.

Statistical discipline

  • Wilson 95% score intervals on every rate; our cells are small and normal approximations flatter them.
  • Aborts are classified by recorded cause, never pooled: an infrastructure abort (rate limit, harness crash) leaves the denominator and is charged to a per-sweep harness-health rate; a model abort (step budget exhausted, loop, refusal) counts as a fail and is disclosed. Runs with pending judge verdicts are unpublishable: a missing API key must never convert to a fail.
  • Cells with n < 8 are marked directional and never appear in prose claims or the hero chart. passk is reported at k ∈ {1, 2, 4, 8} and never extrapolated past n.
  • Task-level macro-averaging, so a model cannot farm easy tasks.
  • Distributions reported, not just means: the same task and seed has produced 0.97 / 0.97 / 0.00 across three runs, and that spread is itself a finding (tail reliability, §07).

LLM-judged criteria: the honest exception

A small minority of criteria grade written artifacts (is this owner letter calibrated, is this plan coherent) where no world-state record can adjudicate. They run under a separate protocol, and the judged count is non-increasing per release; the roadmap is deterministic re-implementation. Two of the eight launch tasks carry no judged criteria at all.

The protocol has been executed, not just specified. Every judged criterion in the launch set (24 across the suite) was piloted before release: K = 5 judge calls per artifact over frozen, author-labeled transcript sets (10–12 per task, edge cases oversampled), measuring self-consistency, label agreement, and whether the verdict quotes its evidence verbatim. The judge model itself was chosen by a four-model bake-off against the same labels and is pinned per release; every published verdict is cached with provenance so numbers recompute without re-calling the judge. Outcome of the first census: 11 criteria shipped at pass tier, 6 were demoted to observation (recorded, never scored), and 7 were rejected outright and rewritten or retired. A benchmark that publishes its judge rejections is harder to fool than one that publishes only its judges.

When is an LLM judge allowed?

the judge protocol, as a decision tree

Can a world-state record adjudicate the criterion?
YES
deterministic criterion
grading reads the record; byte-reproducible
NO · written artifact
extract the artifact only
judge never sees the transcript or the answer key
pilot gate: self-consistency ≥ 0.9 AND author agreement ≥ 0.9 on frozen transcripts?
PASS
ships · judge model pinned per release · verdict cached with provenance
FAIL
cannot ship at pass tier
World-state facts are always deterministic. Judged criteria are a piloted, artifact-scoped minority; cached verdicts keep published numbers exactly recomputable.
07

What the Desk Revealed

Distilled from ~1,290 graded runs across 7-8 models, plus a nine-agent transcript autopsy of the full corpus. The formal frame of §04 is what makes these findings crisp: each is a measurable deviation from a named optimality condition, not a vibe.

The unsaturated axes

Frontier models are excellent at the parts that look like benchmarks: triage of loud faults, document lookup, procedure execution. The axes that stay unsaturated are different in kind.

AXIS 1
Ex-ante commitment
Standing on the right side of the critical fractile before the outcome is known. With the base rate disclosed and both sides priced, models overwhelmingly prefer to react rather than hedge: they pay the underage cost to avoid ever being seen paying the overage cost.
AXIS 2
Urgency propagation
Recognizing that a Tuesday observation quietly rewrote Friday's priorities, with no event forcing the belief update.
AXIS 3
Economic self-audit
Models pass criteria while overspending the oracle 4-8x and do not notice. Capture exposes what pass hides.
AXIS 4
Tail reliability
Means hide it; passk exposes it. The same seat that scores 0.97 twice will score 0.00 the third time by silently dropping a thread mid-week.

None of these axes appear in tool-use or coding benchmarks. That is the lab-facing one-liner.

Signature failure modes

Each fairness-adjudicated: the world was fair, and the model still did it.

  • Un-finding. The model detects a real quiet fault, then talks itself out of it, rationalizing its own evidence as a telemetry artifact. A posterior-collapse pathology.
  • Restraint-inverted capex. Spending big to look responsive where the documented right answer was to hold: exercising an irreversible option whose value of waiting was disclosed.
  • Count-vs-trend fabrication. Inventing a decline narrative from a count that never declined.
  • The coached-vs-derived gap. The same substance moves a model from 80% to 20% depending on whether the conclusion was stated or derivable. Models are far better at following the world's homework than doing their own.
  • Sub-threshold over-response. Treating every measurable anomaly as actionable in a world whose SLA explicitly prices thresholds: a signal-detection failure, thresholding on salience instead of likelihood ratio times loss.

One alarm, eighty desks

Quiet Bleed (csb-007) · the front page's deficiency list, compressed into a single world event

Mon 06:41
CRITICAL alarm: inverter offline, fault code E-207. A $650 truck against roughly $12 of clip-hours production. Already on file: the same unit self-restored from the same code last month, the severity matrix's deferral clause, and the PPA clipping table that prices the loss at almost nothing.
Mon 07:00
22 of 80 desks buy the truck at shift open, before any human has said a word (Terra: 10 of 10).
Mon 11:30
The owner's asset manager demands a same-day crew. 47 more desks buy the truck in that exact minute. Every writeup cites the severity matrix; not one cites the demand. One seat denies the influence outright ("it auto-escalated per policy; no owner request needed to trigger it") and another books the truck with the internal note "Owner requesting same-day" while telling the same owner that urgency does not change the classification.
Tue 07:05
The unit re-latches on its own, exactly as its history said it would. The 11 desks that held share one trait: each had run the remote reset itself on Monday morning and watched it fail: the only form of contact with the disclosed lockout rule that made the rule govern the decision. Reading it was never enough.
The front-page deficiencies, reiterated in miniature: the analysis was on file and most seats could recite it, yet the decision moved on urgency rather than evidence: urgency overrides analysis, knowing is not doing, rules bind only after contact. Quotes verbatim from run transcripts; the 22 / 47 / 11 split is recomputed from the frozen launch runs.

Classifying an "un-finding"

how one candidate incident is counted · environment ground truth adjudicates

Seat encountered evidence of a real quiet fault
fixture ground truth: the fault exists
Did the seat's reasoning register the fault?
NO
missed detection
counted separately, not un-finding
YES · posterior formed
Did the seat later dismiss its own finding without new evidence?
NO
tracked to action
correct filtering
YES
un-finding: counted
the reasoning found it and the seat unfound it
Being wrong is not the failure; finding the fault and then dismissing your own evidence is. Seats whose reasoning traces are withheld or disguised blur missed detection and un-finding; that legibility limit is disclosed in §09.

Candidate behavioral indices

Not yet published metrics. Each is normalized per decision point so verbosity moves nothing, mirroring per-N-turns normalization in arena benchmarks.

IndexThe question it answersDenominator
Hedge rateWhen the disclosed base rate put the seat past the critical fractile, did it commit ex ante?hedge-warranted decision points
Restraint rateUnder sub-threshold anomalies with priced thresholds, did the seat hold?restraint-warranted decision points
Overspend multipleRealized spend vs oracle spend on passed runsper passed run
Coached-vs-derived deltaPass-rate gap between stated-conclusion and raw-records variants of the same substancematched criterion pairs
The behavioral layer: each index is a deviation from a named optimality condition in §04, countable from the record.

Where the slate stands

All pre-freeze, smoke-scale n, directional: pooled hard-suite all-pass is ~38% across 451 runs with a real model spread (best ~52%, others 25-35%). The corrected five-discriminator suite separates the top model at ~55-60% from the next at ~25-30%. One task, a written owner-communication week, has never been cleared by any model on the fixed instrument. The intro rung is aced by everything and framed as the tutorial it is. Two previously quoted separations were corrected by our own audits (one engine confound, one revision mislabel) and are re-sweeping; nothing publishes before the frozen slate.

claims hygiene

Do not ship "frontier fails the desk." It is a ladder whose upper rungs discriminate, not a wall. Easy rungs saturating is the point of a ladder.

08

Auditing Our Own Harness

We treat the benchmark as an agent to be red-teamed; the append-only, seeded record forks from any completed step, which makes replaying, regrading, and auditing weeks affordable. Every launch task cleared the same gate before freezing: authored, run against at least two real models, adversarially audited for ways a correct transcript could fail, fixed, and re-run. Essentially every first draft had one.

Two audits, opposite directions

Red-teaming the benchmark in both directions

2026-07 audit series

Grader too harshfive parallel auditors · 47 de-duplicated findingsEvery unfairness reduced to one shape: the grader scoring form where the model had the substance right.
the benchmark← audited from both sides →
World too helpfulsix parallel auditors · 12 hands-the-answer instances · 5 systemic patternsSelf-labeling alarms, verdict-stating histories, tool messages that mentioned the grader.
AFTER REMOVAL · 36-run leak-clean retest: scores barely moved. The recorded difficulty was real. One clean causation case: a model lost a criterion the moment the leaked phrase was gone.
The inverse audit is governed by one rule: pushing raw events is realistic; pushing derived conclusions is grading the agent's homework for it.

The unfairness taxonomy

The reusable checklist. Every class is a real found-and-fixed case, and every one is an incentive-compatibility break in the §06 sense.

ClassWhat it is
Form-gradingGrading the label, word, or tool, not the substance the model got right.
Physics mis-applicationA fixture bug makes the world contradict itself; the model is penalized for our bug.
Authority-strippingRemoving a "recipe" disclosure also removed the authority to act, punishing correct deference.
Disclosure calibrationRecipe-level disclosure is fair but trivial; policy-level is fair and hard.
Multi-load disclosure lineOne sentence carrying several obligations; trimming one silently drops another.
Tool-tourism / substringCrediting a tool call or substring match instead of the outcome.
Engine-denied outcomesThe world lacks a verb for the lawful action, so integrity is unscorable while aggression scores.
Hands-the-answer (inverse)The world states a derived conclusion the seat was supposed to reach.
Strong-hint (inverse)The world's framing narrows the answer space without stating it.
Seven grader-side classes plus the two world-side inverses. The meta-finding: every grader-side unfairness was form over substance, and removing the world's help barely moved scores. The difficulty was real in both directions.

The instruments get audited too

The audit series also caught our own instruments corrupting numbers: a judge-call truncation that silently defaulted to FAIL (31 of 1,293 results corrupted, 3 confirmed pass-to-fail flips), and an attribution gap: most historical runs could not be tied to the exact task content they ran, which is why every run is now stamped with a content hash and results pool only within (task, hash). Both are why the grading invariant is now: every published number recomputes exactly from its own rows. Each found instrument failure produced a standing audit, and each audit has been run to completion on the launch suite:

Standing auditWhat it sweptWhat it caught
Corrupted-grade censusevery stored verdict, both grade generations31 parser-era corruptions, each remediated by anchor restore or clean re-judge
Content attributionevery historical run vs the task content it claims326 of 1,049 pre-hash runs byte-attributed; the rest excluded from every table
Tool-surface leakageall 37 world tools, three independent passesengine strings that returned judgments instead of readings; tech reports that dictated the graded routing decision
Per-criterion fairness censusevery criterion in all eight launch rubricsthe residual form-grading and reachability defects, fixed before freeze
Judge pilot censusall 24 judged criteria (§06)7 rejections, 6 demotions, before any touched a published number
Each audit is a re-runnable instrument that gates the next release.

Where this sits against the field's standards

The practices above were converged on independently and then checked against the published bar for frontier agentic evaluation; the mapping is direct. The UK AISI evaluation standard asks for fully automated scoring, a binary primary scorer, model-graded scoring restricted to content matching, and oracle evidence of solvability; §06's pass metric, artifact-scoped piloted judges, and the authored oracle are those requirements. The Agentic Benchmark Checklist's task-validity and outcome-validity items are this section's unfairness taxonomy by other names, its judge-validation item is the pilot gate, and its environment-freeze item is the content hash. passk follows the reliability line τ-bench opened. One departure from common practice is deliberate: the task suite is private, for contamination control. No task is published, external trust runs through a third-party NDA audit and redacted transcript exhibits, and the numbers are audited rather than reproducible. This section is the standing audit.

the lesson for the field

An agentic benchmark needs the same adversarial verification as the agents it grades, and determinism is what makes that affordable.

09

Limitations

  • Simulated telemetry. Real fleet data cannot be used, so every trace is synthetic. Telemetry shapes and desk SOPs are grounded in real O&M practice; no number is field-validated against a live fleet.
  • The oracle is authored, not derived. V* is the task author's known-best play under the fairness contract, verified to pass every criterion; it is not a solved-POMDP optimum. If a seat beats it, capture exceeds 1 and the oracle is revised.
  • LLM-judged minority. Judged criteria carry residual judge bias and are not byte-reproducible without cached verdicts; the pilot gate and pinned judge bound this but do not eliminate it.
  • Reasoning legibility. For seats whose reasoning traces are withheld or disguised, missed detection and un-finding can blur together in behavioral indices. This is a limit of our legibility into reasoning, and it is disclosed wherever those indices are reported.