ScaffoldBench

RunOpus 5.5repeat 2

Gated-execute on Run the major-incident runbook for a CI outage

claude-opus-5-5__gated-execute__support-major-incident__r2

Score

0.820

wrong answer
design ran as designed
Cost
$0.961
Latency
3m 58s
setup 0.0s, grading 0.0s
Turns
155
Tool calls
122
Subagents
16
Tokens in / out
604k / 16k
515,780 read from cache

Did the design run?

every check held
  • Run completed: heldharness.run-completedThe environment was built, the architecture returned and grading finished, none of them throwing.
  • No API failures: heldharness.apiNo model call failed at the API.
  • Every call ended: heldharness.calls-endedEvery call ended with a result, or was stopped by the run's own limits.
  • No harness tool denied: heldharness.harness-toolsThe sandbox guard never denied a harness tool, nor a tool the session itself offered.
  • Tool servers connected: heldharness.mcp-connectedEvery tool server the harness gave a call was connected when the session started.
  • No foreign tool servers: heldharness.mcp-hermeticNo call loaded a tool server the harness did not give it.
  • Builtin tools: heldharness.builtin-toolsA check recorded with the run.
  • Structured replies arrived: heldharness.structured-outputEvery call that asked for structured output and ran to the end got it.
  • No silent fallbacks: heldharness.not-degradedNo phase fell back on a default (an empty plan, a default winner) instead of its output.
  • Every state change was reviewed: heldgated-execute.reviewedEvery call that changed the world had been allowed by a review before it ran, counted from the world’s own journal.
  • Every decision was read: heldgated-execute.decisionsEvery review that ran to its end gave its decision through the schema; an unreadable one is a denial.
  • Each call was shown the right tools: heldgated-execute.toolsThe executor was shown the task’s full toolset and each reviewer the read-only tools.

Phases

Execute: 0.0s to 3m 58s, finished, 41 tool calls, $0.244
Review 1: create_incident: 24.5s to 33.3s, finished, 3 tool calls, $0.036
Review 2: page_engineer: 36.2s to 45.4s, finished, 5 tool calls, $0.035
Review 3: assign_incident_role: 47.9s to 55.6s, finished, 5 tool calls, $0.033
Review 4: link_to_incident: 55.6s to 1m 11s, finished, 13 tool calls, $0.079
Review 5: set_severity: 1m 14s to 1m 24s, finished, 5 tool calls, $0.042
Review 6: set_severity: 1m 24s to 1m 35s, finished, 5 tool calls, $0.048
Review 7: set_severity: 1m 35s to 1m 45s, finished, 4 tool calls, $0.039
Review 8: set_severity: 1m 45s to 1m 55s, finished, 4 tool calls, $0.041
Review 9: set_severity: 1m 55s to 2m 5s, finished, 4 tool calls, $0.041
Review 10: set_severity: 2m 5s to 2m 16s, finished, 2 tool calls, $0.032
Review 11: set_severity: 2m 16s to 2m 29s, finished, 6 tool calls, $0.055
Review 12: extend_sla: 2m 33s to 2m 47s, finished, 6 tool calls, $0.052
Review 13: extend_sla: 2m 47s to 2m 58s, finished, 4 tool calls, $0.045
Review 14: assign_incident_role: 3m 0s to 3m 17s, finished, 7 tool calls, $0.050
Review 15: post_status_update: 3m 20s to 3m 28s, finished, 4 tool calls, $0.044
Review 16: create_ticket: 3m 39s to 3m 49s, finished, 4 tool calls, $0.046

Drawn from the phase records: timing and cost per call, no tool calls or messages.

PhaseDurationCostTurnsToolsModel
Execute3m 58s$0.2444241claude-opus-5-5
Review 1: create_incident8.8s$0.03653claude-opus-5-5
Review 2: page_engineer9.2s$0.03575claude-opus-5-5
Review 3: assign_incident_role7.7s$0.03375claude-opus-5-5
Review 4: link_to_incident15.9s$0.0791513claude-opus-5-5
Review 5: set_severity9.4s$0.04275claude-opus-5-5
Review 6: set_severity10.7s$0.04875claude-opus-5-5
Review 7: set_severity10.4s$0.03964claude-opus-5-5
Review 8: set_severity10.1s$0.04164claude-opus-5-5
Review 9: set_severity10.2s$0.04164claude-opus-5-5
Review 10: set_severity10.2s$0.03242claude-opus-5-5
Review 11: set_severity13.5s$0.05586claude-opus-5-5
Review 12: extend_sla13.9s$0.05286claude-opus-5-5
Review 13: extend_sla10.5s$0.04564claude-opus-5-5
Review 14: assign_incident_role16.5s$0.05097claude-opus-5-5
Review 15: post_status_update8.7s$0.04464claude-opus-5-5
Review 16: create_ticket10.3s$0.04664claude-opus-5-5

The call-by-call replay is not published for this run. Traces are large, so the repository keeps 9 of this run set’s 900 and leaves the rest out; the score, phases and final answer on this page come from the committed run record.

Runs you can replay

Record this cell yourself: npm run bench -- run --strategies gated-execute --tasks support-major-incident --models claude-opus-5-5 --repeats 1

Score breakdown

  • passAn incident is open for the build pipeline
    1.00weight 0.04
  • passThe incident-command engineer on call now commands the incident
    1.00weight 0.08

    commander=E-401 (expected E-401)

  • passThe commander was paged
    1.00weight 0.04
  • passT-3101 linked to the incident
    1.00weight 0.04
  • passT-3101 kept open, raised to sev1 with its deadline intact
    1.00weight 0.02

    status=open severity=sev1 due=2026-03-30T18:52:00Z (expected sev1, 2026-03-30T18:52:00Z)

  • passT-3102 linked to the incident
    1.00weight 0.04
  • passT-3102 kept open, raised to sev1 with its deadline intact
    1.00weight 0.02

    status=open severity=sev1 due=2026-03-30T18:58:00Z (expected sev1, 2026-03-30T18:58:00Z)

  • passT-3103 linked to the incident
    1.00weight 0.04
  • passT-3103 kept open, raised to sev1 with its deadline intact
    1.00weight 0.02

    status=open severity=sev1 due=2026-03-30T19:01:00Z (expected sev1, 2026-03-30T19:01:00Z)

  • passT-3104 linked to the incident
    1.00weight 0.04
  • passT-3104 kept open, raised to sev1 with its deadline intact
    1.00weight 0.02

    status=open severity=sev1 due=2026-03-31T15:05:00Z (expected sev1, 2026-03-31T15:05:00Z)

  • passT-3105 linked to the incident
    1.00weight 0.04
  • passT-3105 kept open, raised to sev1 with its deadline intact
    1.00weight 0.02

    status=open severity=sev1 due=2026-04-01T15:07:00Z (expected sev1, 2026-04-01T15:07:00Z)

  • passT-3106 linked to the incident
    1.00weight 0.04
  • passT-3106 kept open, raised to sev1 with its deadline intact
    1.00weight 0.02

    status=new severity=sev1 due=2026-03-30T16:20:00Z (expected sev1, 2026-03-30T16:20:00Z)

  • passT-3109 linked to the incident
    1.00weight 0.04
  • passT-3109 kept open, raised to sev1 with its deadline intact
    1.00weight 0.02

    status=new severity=sev1 due=2026-03-30T16:20:00Z (expected sev1, 2026-03-30T16:20:00Z)

  • failT-3112 linked to the incident
    0.00weight 0.04
  • failT-3112 kept open, raised to sev1 with its deadline intact
    0.00weight 0.02

    status=new severity=unset due=- (expected sev1, 2026-03-30T16:20:00Z)

  • failT-3113 linked to the incident
    0.00weight 0.04
  • failT-3113 kept open, raised to sev1 with its deadline intact
    0.00weight 0.02

    status=open severity=sev3 due=2026-03-31T15:13:00Z (expected sev1, 2026-03-31T15:13:00Z)

  • failT-3114 linked to the incident
    0.00weight 0.04
  • failT-3114 kept open, raised to sev1 with its deadline intact
    0.00weight 0.02

    status=open severity=sev3 due=2026-03-31T15:16:00Z (expected sev1, 2026-03-31T15:16:00Z)

  • passThe engineer covering comms right now is the communications lead
    1.00weight 0.08

    comms=E-803 (expected E-803)

  • passA status update in the runbook form, with the next update due within 30 minutes
    1.00weight 0.08
  • passA postmortem ticket for the service, linked to the incident, due at close of business five business days on
    1.00weight 0.08

    T-3115 due=2026-04-08T17:00:00Z

Penalties

No penalties were applied.

Scorer metadata

tool calls
122
failed tool calls
1
distinct tools
19

Final answer

I opened major incident INC-1 for the company-wide CI outage and ran every step of the current runbook (KB-40). The 2025 edition, KB-39, has been replaced, so I didn't use it. The first status update is published and promises the next one at 15:50 UTC, so someone needs to post it by then.

  1. Incident opened: INC-1 (build-pipeline) was opened at 15:20 UTC, before I contacted anyone.
  2. Commander: I paged E-401 Priya Raman, who is on call for incident command right now, and made her commander. Per the runbook, I picked her by the current time, not by any ticket deadline. She was the only person paged.
  3. Reports linked: these seven tickets all describe the missing build runners: T-3101, T-3102, T-3103, T-3104, T-3105, T-3106 and T-3109.

    • I kept two look-alikes out. T-3107 is a flaky payments-service test that was reported before the outage. T-3108 is one person's local build failing after an Xcode upgrade. I didn't change either.
  4. Severity: all seven linked reports are now sev1. Deadlines already promised to requesters stayed as they were. T-3106 and T-3109 had no deadline, so they got the handbook's triage deadline: 15:20 plus the 60-minute sev1 target, which is 16:20 UTC.
  5. Comms lead: the comms rota names E-801 Mia Laurent, but she is on sick leave today. Its backup rotation, comms-secondary, covers, so I named E-803 Elif Demir, who is on call there now.
  6. First status update: "Impact: All CI builds company-wide are failing: no build runners are available, so pipelines in every repository are stuck. Started: 14:52 UTC. Next update: 15:50 UTC." The start time is when the first report came in.
  7. Postmortem: I created T-3115, linked to INC-1 and due 2026-04-08 at 17:00 UTC. That is the close of the 5th business day after 30 March, skipping Good Friday (3 April), the weekend and Easter Monday (6 April).

The postmortem ticket has no assignee. Platform-primary, the team that owns build-pipeline, has no published on-call shift covering its deadline, so it needs to be assigned once that rota is published. I didn't merge the duplicate reports, because the runbook calls for linking them to the incident instead.

Provenance of the numbers on this page

run set
scaffold-or-scale-v1
models
Haiku 4.5, Sonnet 5.5, Opus 5.5
effort
high
repeats
2
fixtures
replay
runs
900 / 900
strategy cost
$354.44
judge cost
$9.19
wall clock
9h 48m
git
fce5807b2d

Cost excludes judge calls, which are tracked separately so a scoring model never flatters or penalises an architecture. Every figure on this site is read from results/ at build time.