Repository navigation
Launcher: interactive terminal launches start at effort max (--effort max only when nothing chose an effort); receipt and decision record - #483
Merged
Conversation
… max only when nothing chose an effort) Claude Code cannot save max (the 2.1.284 settings schema takes low, medium, high, xhigh for effortLevel and modelSettings) and CLAUDE_CODE_EFFORT_LEVEL would override every --effort, /effort and child effort, so the documented --effort flag is added by the launcher that install_native writes, in both bootstrap scripts (identical copies). It adds --effort max only when stdin and stdout are a terminal, no -p/--print (also as a short-flag cluster such as -pc), no --effort, CLAUDE_CODE_EFFORT_LEVEL unset, nothing after a "--", and the client reports 2.1.284 or newer (2.1.284 keeps Ultracode on at any effort level; on 2.1.281 a max session turned orchestration off). Another command name gets the plain launcher. Tests (tests/test_adoption_bootstrap.py): InteractiveEffortLauncherTests runs the generated launcher on real pseudo-terminals against a stub client that reports a version and records its exact arguments as JSON: a 27-case table (terminal, -p, --print, -pc, -cp, --, empty and multi-line arguments, explicit --effort, the effort variable, no terminal, pipes, clients from 2.1.281 to 3.0.1, unreadable version) and nine broken launchers that the table must reject. The pty helper kills and reaps a timed-out child and closes both descriptors on every path. Cross-family review (one GPT-6 read-only round) found five issues, all handled in one repair round: clusters, "--" and operands, the version floor, the leaking helper and a lossy recorder. Decision record: docs/decisions/2026-09-29-max-default-effort.md. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…evidence, reviews and vendor sections The native receipt (kind native_cli_e2e, component claude-code) built by a script that asserts every row against the client's own transcripts before writing: seventeen headless probes (saved xhigh baselines, --effort max, children, the --settings env layer, ultracode false, Haiku), four interactive terminal cases through a login shell on the installed launcher (max; xhigh after /effort xhigh; explicit --effort xhigh; claude -p in a terminal), the 2.1.284 binary's settings-schema windows and Ultracode gate, the repository tests re-run, and the host launcher's before/after hashes. An independent verifier re-derived the headless rows from the raw transcripts (17 of 17). The decision record gains the verified vendor and third-party max-against-xhigh measurements (30 of 40 claims confirmed, 10 corrected, none unsupported), the settings audit (31 of 36 rows confirmed, 5 corrected; nothing else to change), the one prior-art wrapper found, the review round and the corrected description of which interactive runs the receipt holds. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…ion; relate the record to #479 and the effort guard A second read-only GPT-6 run with live search checked the vendor section against its sources and returned nine wording corrections (five low, four medium). The coordinator re-fetched Cognition's data.json, Anthropic's Sonnet 5.5 launch page (footnote 2) and Zapier's leaderboard (1.0.6) and applied all nine: the guidance sentence is scoped to the cited pages, the xhigh token saving carries its similar-performance context, the FrontierCode token, cost and time figures are labelled Main with the Extended figures beside them, Anthropic's two-case footnote is stated as two cases, Extended is an effective tie (63.58% against 63.53%), the Zapier figures carry their default-fallbacks label (42.47% against 35.77%), --bare skips automatic discovery, the two Claude Code results point in different directions without isolating skills or subagents, and the Opus 5.5 gain is stated as varying by benchmark. One suggestion (Cognition's tokens field as output tokens) could not be confirmed from the fetched sources and was not adopted. The header now names the rebase base (ba31dcd), quotes #479's addendum ("not adopted ... left to the user") as the trigger this record acts on, and describes how the effort guard treats a session that the launcher starts at max (SessionEnd returns at xhigh or above; the SessionStart warning is settings-derived and advisory). Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…minal is read (macOS discards unread output at the last slave close) On the macos-15 runner (run 36512404577, job validate-macos) the three InteractiveEffortLauncherTests cases failed with an empty capture: the helper closed its copy of the slave right after starting the launcher and read the master only after the child had exited. XNU's ptsclose calls ttyclose, whose ttyflush(tp, FREAD | FWRITE) empties both queues at the last close of the slave, so the stub's two lines were gone before the read; Linux keeps them, which is why the same tests passed there. The helper now holds the slave open, reads the master while the launcher runs (it stops when the stub's two lines are in, or when the child has exited and nothing more arrives), captures stderr, and puts it in the failure message. The Linux run of the class passes (3 tests); the macOS result is the next CI run. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…evidence.json (hot-file commit, last) Receipt entry claude-max-default-effort-20260929 (native_cli_e2e, claude-code) and the hashes of the six changed or new files, on top of main's manifest at ba31dcd (docs/lanes.md protocol: main's copy, register each file, component_matrix and new_host_grand_list --write; validate.py passes: 69 components, 7993 hashed files, 167 receipts). Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
seathatflowsinourveins
force-pushed
the
claude/max-default-effort-20260929
branch
from
September 29, 2026 02:47
1da14a5 to
3800f80
Compare
seathatflowsinourveins
deleted the
claude/max-default-effort-20260929
branch
September 29, 2026 03:40
5 tasks done
seathatflowsinourveins
added a commit
that referenced
this pull request
Sep 29, 2026
…llback; AGENTS.md line 35 and the instruction text state the 2.1.284 rule (#487) * Coordinator effort: max through the ecosystem launcher, saved xhigh as the fallback States the rule of the max-default record (session native-agent-stack-03, #483) where the coordinator's effort is described. A terminal session started through the ecosystem `claude` launcher runs at max (`claude --effort xhigh` opts out); a launch that skips it (IDE, desktop, web) uses the saved per-model xhigh, because a saved max is not accepted; headless -p runs pass --effort per call site; CLAUDE_CODE_EFFORT_LEVEL stays unset at every scope. Ultracode stays on at any effort on 2.1.284, so the 2.1.281 reason for keeping the coordinator at xhigh is history. The default rests on the user's requirement, not on a measured gain here (Sonnet 5.5 lost to xhigh on FrontierCode in the full client at about 12.6 times the tokens, and Opus 5.5 gained little). Updated: the portable CLAUDE.md, the workflows README and its coordinator row (with the two contract tests that pin that row), both recipes, the dispatch record's coordinator row, effort paragraph and a dated addendum, the 2026-09-23 addendum (its overturn condition is acted on) and the anti-pattern row that pointed at AGENTS.md. `--effort max` with ultracode false ran at max with the reminder absent (the other receipt's cases C3 and C4). Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Receipt: an explicit --effort max defeats a committed project effortLevel of xhigh Three headless probes on Claude Code 2.1.284 in a scratch directory whose only project file holds the shape of this repository's committed settings (effortLevel xhigh): --effort max ran Sonnet 5.5 and Opus 5.5 at max with the Ultracode reminder present, and the same file without the flag ran Sonnet 5.5 at xhigh. This is the case the ecosystem launcher relies on inside this repository (the launcher's own receipt ran in a scratch directory with no project file). Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Follow-up repair: an explicit session effort reaches a child that names none The cross-family check of this follow-up found the effort rule for a child that names no effort too narrow: the max-default receipt (cases F5 to F7) shows that a headless session given an explicit `--effort max` passes it to an unnamed subagent and to a Workflow stage that names no effort, while a project agent whose frontmatter says medium stays at medium. The rule is now one sentence in every copy: a child that names no effort runs at its frontmatter effort, else at the effort the session was given explicitly (`--effort`, `/effort` or the model picker), else at its model's saved level or default. The workflows README, the Ultracode recipe, two test comments and the AGENTS.md line state it; the dispatch record's addendum and the 2026-09-23 addendum record that the receipt answers the headless question their Measured sections left open. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * AGENTS.md: state the 2.1.284 coordinator-effort rule; hot files: evidence registration AGENTS.md line 35 (a shared hot file) drops the three clauses that Claude Code 2.1.284 made false (the coordinator "stays at xhigh under Ultracode", "because a max session turns its workflow orchestration off", and "a stage without its own effort inherits the coordinator's xhigh") and states the rule of the max-default record: terminal sessions started through the ecosystem launcher run at max with saved xhigh as the fallback, Ultracode stays on at any effort, headless runs pass --effort per call site, CLAUDE_CODE_EFFORT_LEVEL stays unset, a child that names no effort runs at its frontmatter effort, else the effort the session was given explicitly, else its model's saved level or default, and an unnamed model follows the definition, then CLAUDE_CODE_SUBAGENT_MODEL, then the lead. Registers the new receipt and the hashes of the files this branch changes in manifests/evidence.json, on main's current copy (last commit). Co-Authored-By: Claude Sonnet 5.5 <[email protected]> --------- Co-authored-by: Scout <scout@local> Co-authored-by: Claude Sonnet 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
claudelauncher thatinstall_nativewrites (both bootstrap scripts, byte-identical) now starts an interactive terminal launch at effortmaxby adding--effort maxonly when nothing else chose an effort (terminal on stdin and stdout, no-p/--printor--effort,CLAUDE_CODE_EFFORT_LEVELunset, client 2.1.284 or newer), with its tests, docs, the decision record and a native receipt. The same launcher was applied to this host by hand with a backup and a read-back.ba31dcd0(main when rebased on 2026-09-29; the manifest commit was redone on main's copy; Skills path parity: install_skills, skills_status and skill_usage join global paths as skills 1.7.0 does #482 landed afterwards and GitHub reports the merge as clean)lane:foundationadoption/bootstrap-linux.sh,adoption/bootstrap-macos.sh,adoption/bootstrap.md,adoption/platforms/macos-arm64.md,tests/test_adoption_bootstrap.py,docs/decisions/2026-09-29-max-default-effort.md,evidence/receipts/claude-max-default-effort-20260929.json, and the last commit'smanifests/evidence.json. Not touched:AGENTS.md, the portable and hostCLAUDE.md, the recipes, the settings files and the effort guard (the session that owns the Sonnet 5.5 / Opus 5.5 dispatch text, Sonnet 5.5 and Opus 5.5 dispatch: fan-out units on Sonnet 5.5, judgment on Opus 5.5, effort and default child model saved in settings (2.1.284 probes) #479, amends those in onelane:sharedfollow-up that cites this record; the record says how the guard treats a session the launcher starts atmax).SOTA sources
anthropics/claude-codev2.1.284, 2026-09-28;mainatdec92bc8when read on 2026-09-29): CHANGELOG 2.1.284 ("Changed Ultracode into its own toggle in/effort... it no longer forces xhigh effort and stays on at any effort level"); the docs pages settings reference,ultracode, model configuration, Adjust effort level (maxis not accepted as a saved level; applies to the current session only) and environment variables,CLAUDE_CODE_EFFORT_LEVEL(takes precedence over--effort,/effortand the saved levels), fetched 2026-09-29; the installed 2.1.284 binary's settings schema and Ultracode gate, read with bounded windows (receiptbinary_schema).89cfd6a6...and7311c9c6..., sections 8.4, 8.5, 6.5.1), Cognition's FrontierCode v1.1 data file, the Artificial Analysis Terminal-Bench 4.0 page and Cursor's CursorBench page, all read 2026-09-29 and re-checked by an independent verifier (30 of 40 claims confirmed, 10 corrected as written in the record), then fact-checked once more by a read-only GPT-6 run (nine wording corrections, each re-fetched from Cognition'sdata.json, Anthropic's launch page footnote 2 and Zapier's leaderboard 1.0.6, all applied).apple-oss-distributions/xnubsd/kern/tty_dev.c(ptsclose, last commitf6217f89) callsttycloseinbsd/kern/tty.c(last commit8d741a5d), whosettyflush(tp, FREAD | FWRITE)empties the terminal's queues at the last slave close; read 2026-09-29.Ramsbaby/jarvisinfra/bin/claude-xhigh.sh(blob66e75106, repository pushed 2026-09-28, not archived).install_native(adoption/bootstrap-linux.sh, identical to the macOS copy, enforced bytest_both_scripts_share_one_install_native).Evidence-class table
max; after/effort xhighthe next message ran atxhigh; an explicit--effort xhighlaunch and aclaude -prun inside a terminal ran atxhigh(each read from the client's own transcript)native_provenclaude-max-default-effort-20260929,interactive_after_host_replacement(also run first with the generated launcher onPATH)xhighbaselines,--effort max, children (stage with no effort, stagelow, unnamed subagent, definitionmedium),--settingsenv layer showing the variable route flattens child efforts,ultracode:false, Haikunative_proven(one host, one release)headless_probes; re-derived from the raw transcripts by an independent verifier: 17 of 17 matchlow,medium,high,xhighforeffortLevelandmodelSettings.<model>.effortLevel, and its Ultracode gate has no effort termsource_reviewbinary_schemalocal_integrationpython3 -m unittest tests.test_adoption_bootstrap.InteractiveEffortLauncherTests. The first CI run failedvalidate-macoson these tests (empty capture: the helper closed its slave descriptor before reading, and macOS discards unread terminal output at the last slave close); the helper now holds the slave open and reads while the launcher runs. Linux passes locally; the macOS result is this PR's nextvalidate-macosrunsource_reviewLocal commands run
Decision record
docs/decisions/2026-09-29-max-default-effort.md: the selection, six alternatives with why each was rejected, coverage limits, overturn conditions and limitations. It says, plainly, that the default rests on the user's requirement and not on a measured gain on this repository's work: for Sonnet 5.5 the direction of the effect differs between Terminal-Bench in--baremode (maxwins) and FrontierCode in the full client (maxloses at about 12.6 times the tokens on Main; these results do not isolate the effect of skills or subagents), and for Opus 5.5 the gains vary by benchmark and come at higher cost, with their value for this repository unmeasured.claude --effort xhighis the one-word opt-out.Cross-family reviews: (1) one read-only GPT-6 round on the launcher (
gpt-6-astra, effort max, live search), five findings, all handled in one repair round (short-flag clusters,--, a client-version floor, a leaking pty helper, a lossy argument recorder); the reviewer's suggestion to parse value-taking options was not adopted (the launcher cannot know the client's option table), and the limit is documented and tested in its safe direction. (2) A second read-only GPT-6 run fact-checked the record's vendor section: nine wording corrections, all applied after re-fetching the figures; one suggestion (naming Cognition'stokensfield as output tokens) could not be confirmed from the fetched sources and was not adopted.Host evidence
Not applicable: no file under
evidence/hosts/changes. The host launcher was replaced by hand (announced to the live sessions first): before 165 bytes, after1,810bytes, hashes in the receipt.Checklist
permissions: contents: read: no workflow changes.🤖 Generated with Claude Code