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

Merged
AN
5h ago
+389-188

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.