RPC E2E with debug shows registered present at session_compact but planned=[] because kept still contains the skill block; registered=[] still drops skills absent from kept. Sync file readSettings avoids RPC hook deadlock on SettingsManager/isProjectTrusted. Co-authored-by: Cursor <cursoragent@cursor.com>
1.5 KiB
B-002 pre-fix RPC repro (Phase 14)
Run: node scripts/b002-repro-pre-fix.mjs (requires LiteLLM model Eltex-Coder-Senior, skill at ~/.cursor/skills/fup-blame-commits).
Patches ~/.pi/agent/settings.json temporarily (skillReinject.debug: true) and restores on exit.
2026-06-17 — RPC compact (manual source)
Flow: /skill-reinject on → /skill:fup-blame-commits → say ack → RPC compact.
| Phase | tracked | kept | registered | planned | pending |
|---|---|---|---|---|---|
before_agent_start (1st turn) |
[] |
[] |
["fup-blame-commits"] |
[] |
[] |
session_compact |
["fup-blame-commits"] |
["fup-blame-commits"] |
["fup-blame-commits"] |
[] |
[] |
Compaction source: manual ({type:"compact"} RPC). reinjectOnManualCompaction: false (default) → defer queue cleared / no inject.
Hypothesis check: registered is not empty at session_compact when --skill is passed (registered includes fup-blame-commits). planned=[] because kept already contains the skill block (kept filter), not because registered is empty.
Extra: readSettings() via SettingsManager / ctx.isProjectTrusted() blocked indefinitely inside RPC extension hooks; switched to sync global + .pi/settings.json merge (see settings.ts).
Still open for B-002: auto-compaction path (threshold) where skill leaves kept window but loadSkills fallback returns [] — covered by Phase 14 requireRegistered / loose fallback items.