Files
pi-auto-reinject/docs/e2e-b002-pre-fix.md
grayhook ef9b7a8c30 Phase 14: B-002 pre-fix RPC repro — filter snapshots and readSettings fix
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>
2026-06-17 15:21:53 +07:00

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-commitssay 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.