Prompt file imported from headwater-ai/headwater (
.claude/commands/next-experiment.md). Fill in{{arguments}}before use. Copyright stays with the author.
Run one paid try of the tuning round, then stop. {{arguments}} names the round root. The header of tools/probe/try.sh says what the round root holds, and what its two files env and base-pin say. This file does not copy that header.
This command runs in its own session and never inside /next-run. The build-order agents do not run a paid try, and hw-queue never queues an issue labeled paid-experiment (HW-PD-0025). The decision records why: the first paid try went through the build order, and its agents cost more turns than the try decided anything.
The value rule binds here too. .claude/commands/next-run.md states it once, under The value rule, and this file does not restate it.
The rulings this command obeys
- One layer at a time, plan first. The owner reads a layer's tuning plan and accepts it on the issue before any money is spent on that layer (OWNER #1777 and #1778, 2026-10-19). A pull request then writes the comment URL to
rounds.tuning.open.planin.headwater/probe.yml. - Stop after one try and show the owner the result, before a second try or any other layer (OWNER #1777, 2026-10-19).
- The keep rule is the owner's (OWNER #1777, 2026-10-20), and
sh tools/probe/try.sh resultapplies it. Do not apply it by hand. - The base invalidators are the owner's (OWNER #1819 and #1821, 2026-10-20), and
sh tools/probe/try.sh planholds them. Accept a stale base only on the owner's comment URL.
One try
-
Run
sh tools/probe/try.sh status <root>. Read the spend, the approval and the open layer. -
When no layer is open, write the tuning plan of the next layer for the owner, as a comment on its issue, and stop. The owner accepts it on the issue, and a pull request writes
open.try.sh planrefuses with 5 until then. -
Run
sh tools/probe/try.sh rank <root>andsh tools/probe/try.sh plan <root>to read where the round of the open layer stands. Choose the next stage as the header oftry.shdefines them:screen <k>for the next variant,bestwhere no best so far is measured at the confirmation's count, orconfirm <variant>for the top of the rank. Runsh tools/probe/try.sh plan <root> <stage>. On exit 5, report the refusal it prints and stop. On exit 6, report the rule of rounds, order or stages that it names, and stop. On exit 4, put each path it prints to the owner. On the owner's yes, runsh tools/probe/try.sh accept <root> <ruling-url>with the URL of that comment, and runplanagain. A confirmation after a change to the engine's source exits 4 whatever the owner accepted, so report it and stop. -
Run
sh tools/probe/try.sh launch <root> <stage>. Its try root<try>is the one thatplanprinted. Exit 6 names a state of the checkout or a try root that exists already. Repair the checkout, or stop and ask. -
Wait in the foreground with a Bash
timeoutof300000:sh tools/run/wait-for.sh 'sh tools/probe/try.sh wait <root> <try>'On
RE-ISSUE, run the same call again. Never wait in the background. -
Read the line that
waitprinted. Oncanary-needs-reader, read the records that<try>/canary-needs-readernames, and put them to the owner. Writecanary-passedonly on the owner's word, then runsh tools/probe/try.sh relaunch <root> <try>and wait again. Ondisk-floor,capped,canary-failed,stopordriver-exited, report it to the owner and stop. -
On
done, runsh tools/probe/try.sh result <root> <try>. It writes the transcript andresult.md, and it appends the event of the stage to<root>/ledger.jsonl. A screen and a best so far are never kept, and a confirmation is kept or not under the keep rule. Runsh tools/probe/try.sh ledger <root>to read the round so far. -
Open one pull request of your own. It commits the transcript, the figures of
result.mdand the narrative paragraphs the transcript leaves to a person. When the change was not kept, the same pull request reverts it. Name the issue withRefs, because the round is not finished. -
Report to the owner, and stop.
The report
Report in plain terms first: the scores, what they mean and what the try cost. No interval and no statistical term comes first. For example:
The confirmed version solved 82 of 145 tasks against 80 of 145 before. That is too close to call, so it is not kept. The try cost $72.50.
Then give the pooled: line of result.md with its interval, for a reader who wants it. Then name the pull request, the round's spend against its approval from sh tools/probe/try.sh spent <root>, and the question the owner owes: the next stage of the round, another layer, or neither.
What you never do
- You never start a second try or open another layer in the same session.
- You never spend money that the owner did not approve in
.headwater/probe.yml. - You never apply the keep rule by hand, and never edit a figure that
resultwrote. - You never merge. The owner or the merge queue merges your pull request.
