TODO: mark phase 5 complete — kept-window helpers and tests.

Phase 5 delivers getKeptEntries, presence scan, filter, and kept-window.test.ts.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-17 11:21:55 +07:00
parent a8e07fdd6f
commit b54b8f98bf
2 changed files with 6 additions and 5 deletions
+2 -1
View File
@@ -10,7 +10,7 @@
|---|---|
| Продукт | Extension `skill-reinject` для [Pi Coding Agent](https://github.com/earendil-works/pi) |
| Цель | Отслеживать вызванные skills и повторно инжектить их после **auto** compaction |
| Статус | Спецификация готова; **фазы 03** завершены; реализация — фазы 4+ в `TODO.md` |
| Статус | Спецификация готова; **фазы 05** завершены; реализация — фазы 6+ в `TODO.md` |
| Целевой API | Публичный `ExtensionAPI` Pi (`extensions.md`), без приватных internal imports |
| Совместимость | [@capyup/pi-auto-compact](https://github.com/capyup/pi-auto-compact) — режим `defer` по умолчанию (см. SPEC §16) |
@@ -22,6 +22,7 @@ src/
├── state.ts
├── detect.ts
├── expand.ts
├── kept.ts
├── reinject.ts
├── auto-compact.ts
├── settings.ts
+4 -4
View File
@@ -161,10 +161,10 @@
### Фаза 5 — Kept window
- [ ] **kept.ts slice**`getKeptEntries(branch, firstKeptEntryId)` от compaction entry до хвоста; зачем: §6.4
- [ ] **kept.ts present**`skillsPresentInKeptWindow(keptEntries, skillNames)` по `<skill name="…"`; зачем: не дублировать блоки §6.4, критерий §13
- [ ] **kept.ts filter**`filterSkillsNeedingReinject(tracked, kept, registeredNames)`; зачем: вход для `pendingReinject` §5.2
- [ ] **test/kept-window.test.ts** — in / not in kept, пустой kept; зачем: §12.1
- [x] **kept.ts slice**`getKeptEntries(branch, firstKeptEntryId)` от `firstKeptEntryId` до хвоста; зачем: §6.4
- [x] **kept.ts present**`skillsPresentInKeptWindow(keptEntries, skillNames)` по `<skill name="…"`; зачем: не дублировать блоки §6.4, критерий §13
- [x] **kept.ts filter**`filterSkillsNeedingReinject(tracked, kept, registeredNames)`; зачем: вход для `pendingReinject` §5.2
- [x] **test/kept-window.test.ts** — in / not in kept, пустой kept; зачем: §12.1
---