SIGN IN SIGN UP

feat(manifests): ingest CC 2.1.112 candidate manifest

Diff vs 2.1.111:
- 1 critical: headers.userAgent.value "claude-cli/2.1.111" -> "claude-cli/2.1.112"
- 0 sensitive changes
- 5 low-risk: version/ccVersion strings, tarball hash + URL metadata
- 0 beta set changes (29 optional betas unchanged)

Pipeline (zero inference tokens):
  bun scripts/analysis/extract-cc-bundle.ts 2.1.112
  bun scripts/analysis/extract-fingerprint.ts --version 2.1.112 --json
  bun scripts/analysis/build-candidate-manifest.ts --tarball-hash <sha256>

CCH drift check:
- check:cch-drift:npm PASS (bundle mode \u2014 matches our plugin's actual behavior)
- check:cch-drift FAIL (standalone-binary mode \u2014 same known limitation that fails on 2.1.111 too)

No plugin-side source changes required. Plugin resolves the CC version
dynamically from npm at startup (src/headers/user-agent.ts) and the live
fingerprint snapshot (OPENCODE_ANTHROPIC_DEBUG=1) shows the correct
"claude-cli/2.1.112 (external, sdk-cli)" UA on 2026-04-17.

This unblocks Phase 1 live captures against v2.1.112 per
.sisyphus/plans/griffin-parity-and-cc-optimizations.md Task 1.0b.
V
Vacbo committed
ae8f72ffecb314bea16a04934ca3d58d15505801
Parent: 7716672