Codex review on PR #75960 flagged that prepareClaudeCliSkillsPlugin and
the claude-live-session fingerprint read skillsSnapshot.resolvedSkills
directly without a disk fallback. After the persistence-layer strip,
those consumers would see an empty Skill[] on cold session resume,
breaking the documented Claude Code skills integration.
Add a hydration helper in ensureSkillSnapshot that rebuilds
resolvedSkills from a fresh workspace scan when the loaded snapshot
lacks it, while keeping the persisted prompt/skills/skillFilter/version
fields untouched so the model's prompt-cache key stays stable across
resume. The embedded runner's existing consumer-level fallback in
src/agents/pi-embedded-runner/skills-runtime.ts is now a redundant
safety net rather than the only fallback path.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Each SessionEntry carried the fully parsed Skill[] (including each
SKILL.md body) inside skillsSnapshot.resolvedSkills, multiplied across
every active session. Strip the field at the persistence chokepoint —
normalizeSessionStore in store-load.ts — so every load and every save
naturally drops it. The runtime already falls back to a workspace skill
scan when resolvedSkills is absent (see
src/agents/pi-embedded-runner/skills-runtime.ts:14), so prompts and
session resume behavior are unchanged.
Legacy sessions.json files self-heal on first load: normalize strips
the in-memory store, the next write rewrites the file in stripped form.
Test fixture (100 sessions × 50 skills × ~3KB body) goes from ~32MB to
under 2MB on disk.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: raise Gemini 2.5 minimal thinking budget from 128 to 512
Google raised the minimum thinkingBudget for Gemini 2.5 Pro and Flash
models to 512. The hardcoded minimal: 128 now causes a 400 INVALID_ARGUMENT
("The thinking budget 128 is invalid. Please choose a value between 512
and 24576.") on every heartbeat using gemini-2.5-flash-lite with minimal
thinking.
* test(google): assert thinkingBudget minimum of 512 for Gemini 2.5 models
Add parametrized tests covering minimal/low/medium budget tiers for
gemini-2.5-flash-lite, gemini-2.5-flash, and gemini-2.5-pro — ensures
the 128→512 floor change is regression-tested.
Pre-existing typecheck failure in src/agents/model-auth.ts (TS2322) is
unrelated; confirmed present on upstream main without our changes.
Tests validated: pnpm test extensions/google/transport-stream.test.ts (21 pass).
* test(google): fix it.each format string placeholder order
* fix(google): narrow Gemini 2.5 minimal budget floor to flash-lite only
Adds a generic docs page for parallel specialist lanes and links it from the Multi-agent docs navigation.
Verification:
- PR CI green for docs path, including `check-docs`
- ClawSweeper reviewed as docs-only and cleared security surface
Co-authored-by: Jarvis <jarvisisago@gmail.com>