P-13 at 2.1.306 (pass): the CLI's pin moves from the pruned 2.1.302, with decision 0033's row

Merged
DO
2d ago
+438-9

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.

PartResult
Version before and after the Task2.1.306, 2.1.306, --version exit 0
LoginloggedIn true, claude.ai, exit 0
The Taskexit 0, is_error false
Structured outputvalidates against the Task's schema
Usageinteger counts
Every part holdsyes
Redactionnothing 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-schema working.
    • The structured output validated, no permission was denied, and stop_reason is tool_use.
    • So the CLI hands the structured output back through a tool of its own, which --tools "" does not take away.
  • #247, its fourth item: whether STRING_KEYS should name fewer keys.
    • Nothing was dropped but the model's result and 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.
    • model appeared nowhere: the model's name is a key of modelUsage and the value of canonicalModel.
    • tool_name is reached only when a tool is refused, which this run had none of.
    • So model could go. That change is left to #247, to keep this pull request to the pin.

What changes

  • The pin. It is 2.1.306 in tools/trial_p13_cli.sh and tools/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_version holds every tools/*.sh PIN to 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_version and cli_version of "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.

Verification and review

  • make verify passed in the worktree, with history, at SIM_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