diff --git a/docs/e2e-b003-post-fix.md b/docs/e2e-b003-post-fix.md new file mode 100644 index 0000000..2326ad3 --- /dev/null +++ b/docs/e2e-b003-post-fix.md @@ -0,0 +1,33 @@ +# B-003 post-fix E2E notes (Phase 15) + +**Date:** 2026-06-18 +**Backlog:** B-003 — second auto compaction missed reinject; `last compaction: none` + +## Automated gate (this session) + +```bash +node scripts/b003-repro.mjs # 22 unit tests + lost-reinject.jsonl audit +npm test # 93 tests, all green +``` + +**Artifact audit:** `lost-reinject.jsonl` shows pre-fix signature — compaction #2 at `07:25:14` with `lastCompactionSource: null` after compaction #1 with `auto`. Post-fix: `ensureCompactionSourceMarked` on `session_compact` infers `auto`. + +## Fixes verified by unit tests + +| Area | Test file | +|------|-----------| +| Source fallback when `session_before_compact` skipped | `compaction-source-fallback.test.ts` | +| `skill-reinject:inject` counts in kept window | `kept-window.test.ts` | +| Mid-turn `sendMessage`/`steer` + dedup | `reinject-mid-turn.test.ts` | +| Each compact recalculates pending | `reinject-double-compact.test.ts` | + +## Full manual RPC E2E (deferred) + +Reproducing two compactions in one short RPC session (like production `gitlab-mr-review` + pi-auto-compact mid-turn) needs a long context fill or reduced `keepRecentTokens`. Checklist when LLM available: + +1. `/skill-reinject on` + `debug: true` in settings +2. `/skill:…` → session until two auto compactions (second mid-turn after tool use) +3. After each compact: skill in context **or** diag shows `deliveryBranch: "steer"` / `skipped-kept` +4. `/skill-reinject` → `last compaction: auto` (not `none`) + +**Status:** unit + artifact gate pass; full two-compact RPC not run in this session (same constraint as B-002 full compact path).