Skip to content

feat: match Claude Code 2.1.302 beta lists; gzip mutation rows - #388

Merged
ualtinok merged 3 commits into
mainfrom
feat/claude-code-2.1.302-betas
Oct 17, 2026
Merged

ualtinok merged 3 commits into
mainfrom
feat/claude-code-2.1.302-betas

Conversation

@antauth-alfonso

@antauth-alfonso antauth-alfonso Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Makes our anthropic-beta lists match Claude Code 2.1.302 exactly, for every model and request class in our interactive capture, and adds the missing gzip mutation rows.

  • Removed betas 2.1.302 doesn't send: mid-conversation-system-2026-04-07 (no longer registered in the binary), mid-conversation-output-config-2026-07-01 (absent from the binary; Fable 5.1 effort changes now go under per-turn-control, as Claude Code does), advisor-tool and fallback-credit (sent only with the advisor feature or a fallback credit code, which we never use).
  • Added to every main list, as captured: thinking-binding-controls-2026-08-01 and thinking-display-updates-2026-08-18. The body is unchanged: binding fields still need an explicit setting and replayed thinking, and thinking stays display: "summarized" (Claude Code sends "updates", which streams no thinking text; a live check showed the beta changes nothing with "summarized").
  • Selection by request class, not body shape: main requests get the captured main list for their model plus only the feature betas the body needs (structured outputs, fast mode, server-side fallback, context-1m); the one-token quota probe gets the quota list; other auxiliary requests get the title list. Tests that asserted the old shape-based selection are rewritten; this is a deliberate contract change.
  • Mutation rows for the gzip cch reset, the gzip rejection classification, the gzip process latch and the Fable 5.1 per-turn-control switch, each proved CAUGHT.

The shared wire vectors move to cortexkit-anthropic-policy 0.1.3 (commons 3ce6295d), regenerated for these lists.


Summary by cubic

Makes our anthropic-beta lists match Claude Code 2.1.302 by request class, replacing the previous body-shape heuristics, and adds gzip mutation coverage.

  • Main OAuth turns now use the captured main beta list even without tools or companion fields; auxiliary one-token quota probes and other auxiliary requests use their captured lists.
  • Removed the obsolete mid-conversation-system, mid-conversation-output-config, advisor-tool and fallback-credit betas. Fable 5.1 effort changes now run under per-turn-control-2026-07-01, matching Claude Code.
  • Main requests now advertise thinking-binding-controls-2026-08-01 and thinking-display-updates-2026-08-18 unconditionally, without changing binding fields or keeping summarized thinking.
  • Regenerated the seven OAuth wire vectors and pinned them to cortexkit-anthropic-policy 0.1.3.
  • This is a deliberate contract change: tests that asserted the old shape-based selection are rewritten.

Mutation Coverage

  • Added five catalogue controls for the gzip CCH reset, both gzip rejection classification branches, the process latch, and the Fable per-turn-control switch. All were proved CAUGHT.
  • Dropped the Pi CacheKeep prewarm body-beta control: request-class selection makes a prewarm's headers identical with or without its body, so the mutant is equivalent; the property is now covered by Core's own rows.

Written for commit f27445c. Summary will update on new commits.

View guided diff Turn on auto-fix

Select beta lists by request class instead of body shape: main turns now use the captured main lists even without tools/companion fields; auxiliary quota probes and title/summary requests use their captured lists. This deliberately changes the old shape-distinction and binding-beta expectations, so those tests are rewritten and the contract change is documented in CHANGELOG.

Remove obsolete effort/system, advisor and fallback-credit betas; retain request-dependent server fallback and other features. Advertise binding-controls and display-updates on main requests without changing binding fields, summarized thinking or effort-marker bodies. Regenerate the seven identity wire vectors with unchanged inputs, bodies and fixed values.

Add five catalogue controls for gzip CCH reset, both rejection branches, process latch and Fable per-turn control; all five were CAUGHT through the pinned wrapper runner. Build, typechecks, lint/format, Core (1872), Pi (305) and vectors (11) passed on Bun 1.3.14. OpenCode ran 2230 tests with 3 unrelated failures: offline packed-host refusal, sidebar tokenCalls expected 0/received 1, and quota-admission timeout; no retry-to-green or deadline changes.
… 0.1.3

commons 3ce6295d publishes the corrected 2.1.302 beta lists byte-identical to the regenerated fixtures.
With request-class beta selection, Core gives a prewarm the same main list with or without its body, so rebuilding the prewarm headers without the body no longer changes what is sent: the mutant is equivalent and survives. The property it guarded is now held by Core's selection, which its own rows guard.
@ualtinok
ualtinok merged commit f27445c into main Oct 17, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant