Trial scripts: a reason is the Task's one code, every check message is hidden, and the after-Task version's exit is read

Merged
DO
3d ago
+49-8

Why

"Trial scripts: what Muse's later rounds asked of trial_p13_cli.sh" (issue 247) holds what the later reviews of "Trial scripts: P-13's script hardened before it runs again" (pull request 242) asked beyond a regression or a real hole in the script's refusals, recorded for a change of its own by the Maintainer's ruling of 2026-10-20. This change does three of its four items; the fourth waits on the next real run, as the issue says.

What changed

  • A reason is the Task's one code. The Result schema the Task carries accepted any lowercase word as a disposition's reason, so a structured output that validated could carry a word of the model's into OUT as a reason. It accepts fix_incomplete, the one code the Task names, and nothing else. trials/P-13.json keeps the schema as it ran; the next run records the narrower one.
  • Every message of the trial check is hidden. The messages of tools/check_trials.py about who asked named a repo or a kind as the data held them, and for an example they are read before the schema. Every message for a fixture or an example now passes through hidden(), as the schema's errors and the "cannot be read" message already did.
  • The version after the Task is read with its exit. The --version asked after the Task kept only its text, so a CLI that printed the pin and exited otherwise still held. Its exit is recorded as after_exit in checked.json, and the version holds only when it is 0.
  • A case and a mutant each, and an older mutant retargeted to the version line it follows.

Left open

The fourth item, whether STRING_KEYS keeps fewer words, and whether usage and modelUsage are held to numbers with their few known words, is decided once the next real run of the CLI shows what it returns. So this change is part of the issue, which stays open for it.

Measured

make verify passed on a git archive export of the head. The four mutants were killed by hand as the shards run them: a whole copy of the tree, MUTATING=1, each named test by unittest. The script was not run against the real CLI; the stand-in answers from files.

Who read it

Muse: not run (Maintainer, 2026-10-20: Kernel/hook only). The Claude review and the security pass found no defect: each change narrows what reaches OUT or a message, and none widens what the CLI is given.

Part of #247.

šŸ¤– Generated with Claude Code