ScaffoldBench

tool-use · support

Consolidate duplicate CRM reports

mediumdeduplicationslaroutingpolicy
Task id
support-medium
Turn limit
30
Runs on Haiku 4.5
12
Pass rate
75%

Who solved it

On Haiku 4.5, Single, Orchestrator-workers, Plan-execute-verify and Propose-select score highest at 1.000 and Plan-execute lowest at 0.423. The same task, every architecture, every model: one square per run.

1.000 mean score of the runs that count
0.923 mean score of the runs that count
1.000 mean score of the runs that count
0.423 mean score of the runs that count
0.846 mean score of the runs that count
0.923 mean score of the runs that count
1.000 mean score of the runs that count
1.000 mean score of the runs that count
1.000 mean score of the runs that count
1.000 mean score of the runs that count
1.000 mean score of the runs that count
1.000 mean score of the runs that count
1.000 mean score of the runs that count
1.000 mean score of the runs that count
1.000 mean score of the runs that count
0.654 mean score of the runs that count
1.000 mean score of the runs that count
1.000 mean score of the runs that count

Point at a square or tab to it to read its run. Each square opens its run.

passedpartial creditfailedexcluded: integrity check failedexcluded: API errorOne square per run; each opens its run.

The prompt every architecture was handed

Revenue Ops is complaining that the same CRM problem has been reported several times and nobody is picking it up. Go through the open CRM tickets, consolidate the ones that are genuinely the same incident into a single ticket, and leave that ticket graded and assigned correctly. Anything that is not the same underlying problem must be left alone.

The domain policy

Appended to the system prompt for every architecture, so none of them gets a rules advantage.

Service desk handbook. These rules bind you even when a requester asks for something else. Scope - Change only the tickets the request is about. Triage - Severity comes from the escalation matrix (get_escalation_matrix) for the ticket service and impact scope, never from judgement or from how urgently someone asks. Read the matrix before changing a severity. - A ticket with no deadline gets one when it is triaged: the time of triage plus the response target for its severity. Ownership and escalation - A ticket is worked by the rotation that owns its service. Never hand it to an engineer outside that rotation. - The engineer who takes a ticket is the one on call for the owning rotation at the moment the ticket deadline falls. - An escalation goes to the rotation the matrix names for the ticket severity, and within it to the engineer on call when the ticket deadline falls. Deadlines - A deadline committed to a requester is never moved earlier. Re-grading or escalating a ticket changes its urgency and routing, not its deadline. Closing - A ticket is not closed while a ticket linked to it is still open. Leave a comment naming the blocking ticket instead. Duplicates - Merge only reports of the same underlying problem. - The survivor is the earliest-created report. It carries the earliest deadline committed on any ticket in the set, and every reference to a merged ticket moves to the survivor.

Where it was lost

On Haiku 4.5, the item most often missed is “Survivor assigned to the engineer on call for the owning rotation at its deadline”, by 25% of runs. A score says an architecture lost points. This says which ones: for each graded item, the runs that earned less than full credit, out of the runs that count.

Graded items on Haiku 4.5runs that fell short, of runs that count
Graded item
Single
Plan-execute
Orchestrator-workers
Plan-execute-verify
Propose-select
Gated-execute
Survivor carries the earliest SLA deadline of the merged setweight 3
Single fell short of "Survivor carries the earliest SLA deadline of the merged set" in 0 of 2 runs
Plan-execute fell short of "Survivor carries the earliest SLA deadline of the merged set" in 1 of 2 runs
Orchestrator-workers fell short of "Survivor carries the earliest SLA deadline of the merged set" in 0 of 2 runs
Plan-execute-verify fell short of "Survivor carries the earliest SLA deadline of the merged set" in 0 of 2 runs
Propose-select fell short of "Survivor carries the earliest SLA deadline of the merged set" in 0 of 2 runs
Gated-execute fell short of "Survivor carries the earliest SLA deadline of the merged set" in 0 of 2 runs
Both duplicate reports were merged into the earliest-created ticketweight 3
Single fell short of "Both duplicate reports were merged into the earliest-created ticket" in 0 of 2 runs
Plan-execute fell short of "Both duplicate reports were merged into the earliest-created ticket" in 1 of 2 runs
Orchestrator-workers fell short of "Both duplicate reports were merged into the earliest-created ticket" in 0 of 2 runs
Plan-execute-verify fell short of "Both duplicate reports were merged into the earliest-created ticket" in 0 of 2 runs
Propose-select fell short of "Both duplicate reports were merged into the earliest-created ticket" in 0 of 2 runs
Gated-execute fell short of "Both duplicate reports were merged into the earliest-created ticket" in 1 of 2 runs
The engineering tracking ticket now points at the survivorweight 2
Single fell short of "The engineering tracking ticket now points at the survivor" in 0 of 2 runs
Plan-execute fell short of "The engineering tracking ticket now points at the survivor" in 1 of 2 runs
Orchestrator-workers fell short of "The engineering tracking ticket now points at the survivor" in 0 of 2 runs
Plan-execute-verify fell short of "The engineering tracking ticket now points at the survivor" in 0 of 2 runs
Propose-select fell short of "The engineering tracking ticket now points at the survivor" in 0 of 2 runs
Gated-execute fell short of "The engineering tracking ticket now points at the survivor" in 1 of 2 runs
Survivor re-graded from the matrix for its widened impact scopeweight 2
Single fell short of "Survivor re-graded from the matrix for its widened impact scope" in 0 of 2 runs
Plan-execute fell short of "Survivor re-graded from the matrix for its widened impact scope" in 1 of 2 runs
Orchestrator-workers fell short of "Survivor re-graded from the matrix for its widened impact scope" in 0 of 2 runs
Plan-execute-verify fell short of "Survivor re-graded from the matrix for its widened impact scope" in 0 of 2 runs
Propose-select fell short of "Survivor re-graded from the matrix for its widened impact scope" in 0 of 2 runs
Gated-execute fell short of "Survivor re-graded from the matrix for its widened impact scope" in 1 of 2 runs
Survivor assigned to the engineer on call for the owning rotation at its deadlineweight 2
Single fell short of "Survivor assigned to the engineer on call for the owning rotation at its deadline" in 0 of 2 runs
Plan-execute fell short of "Survivor assigned to the engineer on call for the owning rotation at its deadline" in 2 of 2 runs
Orchestrator-workers fell short of "Survivor assigned to the engineer on call for the owning rotation at its deadline" in 0 of 2 runs
Plan-execute-verify fell short of "Survivor assigned to the engineer on call for the owning rotation at its deadline" in 0 of 2 runs
Propose-select fell short of "Survivor assigned to the engineer on call for the owning rotation at its deadline" in 0 of 2 runs
Gated-execute fell short of "Survivor assigned to the engineer on call for the owning rotation at its deadline" in 1 of 2 runs
Every ticket folded in was read before the mergeweight 1
Single fell short of "Every ticket folded in was read before the merge" in 0 of 2 runs
Plan-execute fell short of "Every ticket folded in was read before the merge" in 0 of 2 runs
Orchestrator-workers fell short of "Every ticket folded in was read before the merge" in 0 of 2 runs
Plan-execute-verify fell short of "Every ticket folded in was read before the merge" in 0 of 2 runs
Propose-select fell short of "Every ticket folded in was read before the merge" in 0 of 2 runs
Gated-execute fell short of "Every ticket folded in was read before the merge" in 0 of 2 runs
Merged a ticket that is a different underlying problemA rule: breaching it multiplies the score down.
Single fell short of "Merged a ticket that is a different underlying problem" in 0 of 2 runs
Plan-execute fell short of "Merged a ticket that is a different underlying problem" in 1 of 2 runs
Orchestrator-workers fell short of "Merged a ticket that is a different underlying problem" in 0 of 2 runs
Plan-execute-verify fell short of "Merged a ticket that is a different underlying problem" in 0 of 2 runs
Propose-select fell short of "Merged a ticket that is a different underlying problem" in 0 of 2 runs
Gated-execute fell short of "Merged a ticket that is a different underlying problem" in 0 of 2 runs

How the failures failed2wrong answer1policy violation

In numbers, on Claude Haiku 4.5

  • Orchestrator-workers
    1.000

    2 runs100% pass$0.071 / run1m 9s

  • Plan-execute-verify
    1.000

    2 runs100% pass$0.229 / run4m 18s

  • Propose-select
    1.000

    2 runs100% pass$0.251 / run2m 40s

  • Single
    1.000

    2 runs100% pass$0.053 / run43.1s

  • Gated-execute
    0.654

    2 runs50% pass$0.816 / run14m 14s

    wrong answer ×1

  • Plan-execute
    0.423

    2 runs0% pass$0.093 / run1m 38s

    wrong answer ×1, policy violation ×1

Every run on Haiku 4.512 runs · $3.03 spent
RunStrategyRepeatScoreResultCostLatency
claude-haiku-4-5-20251001__gated-execute__support-medium__r1Gated-execute11.000pass$0.3786m 39s
claude-haiku-4-5-20251001__gated-execute__support-medium__r2Gated-execute20.308wrong answer$1.2521m 50s
claude-haiku-4-5-20251001__orchestrator-workers__support-medium__r1Orchestrator-workers11.000pass$0.0691m 5s
claude-haiku-4-5-20251001__orchestrator-workers__support-medium__r2Orchestrator-workers21.000pass$0.0741m 13s
claude-haiku-4-5-20251001__plan-execute-verify__support-medium__r1Plan-execute-verify11.000pass$0.3156m 24s
claude-haiku-4-5-20251001__plan-execute-verify__support-medium__r2Plan-execute-verify21.000pass$0.1422m 12s
claude-haiku-4-5-20251001__plan-execute__support-medium__r1Plan-execute10.846wrong answer$0.0951m 43s
claude-haiku-4-5-20251001__plan-execute__support-medium__r2Plan-execute20.000policy violation$0.0911m 33s
claude-haiku-4-5-20251001__propose-select__support-medium__r1Propose-select11.000pass$0.2352m 16s
claude-haiku-4-5-20251001__propose-select__support-medium__r2Propose-select21.000pass$0.2673m 3s
claude-haiku-4-5-20251001__single__support-medium__r1Single11.000pass$0.05343.6s
claude-haiku-4-5-20251001__single__support-medium__r2Single21.000pass$0.05242.6s

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.