P-13 at 2.1.306 (pass): the CLI's pin moves from the pruned 2.1.302, with decision 0033's row
The CLI's pin moves from 2.1.302 to 2.1.306, by a run of P-13 at 2.1.306 that passed.
Why. The installer pruned build 2.1.302, which tools/trial_p13_cli.sh and tools/context_eval.sh pinned. So #8's runs of the context eval, and trial P-26, would stop at their first step. The Maintainer chose to re-pin rather than reinstall the old build. This is on slice 0's exit path.
The run
The Maintainer ran tools/trial_p13_cli.sh at 2.1.306 at his own terminal on 2026-10-21, on the login of decision 0033. It is the script as #242 hardened it, so the model had no tool.
| Part | Result |
|---|---|
| Version before and after the Task | 2.1.306, 2.1.306, --version exit 0 |
| Login | loggedIn true, claude.ai, exit 0 |
| The Task | exit 0, is_error false |
| Structured output | validates against the Task's schema |
| Usage | integer counts |
| Every part holds | yes |
| Redaction | nothing removed |
Its fixture is trials/P-13.v2-1-306.json, beside trials/P-13.json, the 2.1.302 run, which stays as history. The pass condition is trials/P-13.json's, fixed before that first run, with the pin changed. It was not drafted afresh before this run.
What the same run answers
- #194:
--tools ""leaves--json-schemaworking.- The structured output validated, no permission was denied, and
stop_reasonistool_use. - So the CLI hands the structured output back through a tool of its own, which
--tools ""does not take away.
- The structured output validated, no permission was denied, and
- #247, its fourth item: whether STRING_KEYS should name fewer keys.
- Nothing was dropped but the model's
resultand 14 top-level fields the script does not name. - Nine of the eleven keys held a string: type, subtype, stop_reason, service_tier, inference_geo, speed, canonicalModel, provider and costBasis.
modelappeared nowhere: the model's name is a key of modelUsage and the value of canonicalModel.tool_nameis reached only when a tool is refused, which this run had none of.- So
modelcould go. That change is left to #247, to keep this pull request to the pin.
- Nothing was dropped but the model's
What changes
- The pin. It is 2.1.306 in
tools/trial_p13_cli.shandtools/context_eval.sh. P-26's script, on its own branch, already pins it. - The runbook says how a pin moves.
- Decision 0033 gains a row: the CLI is pinned at one version in every script that runs it, and the pin moves only by a run of P-13 at the new version.
test_every_script_pins_the_cli_at_one_versionholds everytools/*.shPINto one version: the version the newest P-13 fixture ran at, before its Task, in a run that passed.- Left as they are:
- the examples'
engine_versionandcli_versionof "2.1.302", since they are examples and no check ties them to the pin; - the design's P-13 row and §3.5's sample usage, which are history.
- the examples'
Verification and review
make verifypassed in the worktree, with history, atSIM_SEEDS=40: 926 tests at b1dfde4.- A fresh Claude review with a security pass on 238839f found no blocker, two majors and six minors. All are fixed in b1dfde4:
- 0033's row names no version, since the next move would make a dated row false in a record never edited;
- the test also holds that the newest run's version held after its Task, and that an older run at another version is kept;
- the fixture's last exchange says which of its words the session added.
- The pass condition was not drafted afresh before this run: its criteria are
trials/P-13.json's, fixed before the first run, with the version moved.
- Muse: not run (the Maintainer, 2026-10-20: Kernel/hook only).
Part of #8's path. It answers #194's question and #247's fourth item. The change to STRING_KEYS that follows from it, dropping model, is a pull request of its own after this one, closing #247.
🤖 Generated with Claude Code