diff --git a/.tasks/NEXT_SESSION.md b/.tasks/NEXT_SESSION.md index 2e7b87b..476d21a 100644 --- a/.tasks/NEXT_SESSION.md +++ b/.tasks/NEXT_SESSION.md @@ -1,40 +1,41 @@ --- -_last_updated_: 2026-06-17 -session_id: 2026-06-17-session-inbox-monitor-impl +_last_updated_: 2026-06-17T08:31:04Z +session_id: 2026-06-17-session-inbox-monitor-test-trigger --- # Next session handoff -Лента `session-inbox-monitor` доведена **5 из 6**: ядро (`-sessionstart-hook`), -оба stop-hook трека (`-stophook-blockfix-proof` PASS + найденный/пофикшенный -`-stophook-utf8-fix`), `-install`, `-hermes-mapping`. Остался **только -`-test-trigger`** — и он строго в **СВЕЖЕЙ сессии** (эта была имплементер-прайм: -ставила скил, писала хук, гоняла пруфы → тест активации недостоверен). За ним -разблокируется `-review`. +Лента `session-inbox-monitor` доведена **6 из 6 импл/baseline-тасок**: +`-test-trigger` закрыт сегодня (**VERDICT PASS**) в чистой сессии. Остался зонтичный +**`-review`** — и он строго в **НЕ-имплементер сессии** (эта прогоняла test-trigger → +для ревью недостоверна). Плюс открыт один informational follow-up по false-positive. ## Recent commits -- `857a9d3` feat(hermes): map session-inbox-monitor pending + close install/hermes-mapping -- `29d5e9f` fix(session-inbox-monitor): force UTF-8 on Stop-hook delivery + writer guide v0.2.1 -- `d91809b` meta(tasks): close stophook-blockfix-proof (PASS) + file utf8-fix finding -- `c3e1ce7` feat(session-inbox-monitor): SessionStart hook + fill SKILL body v0.2.0 -- (всё запушено в origin/master; автопуш был выдан на эту сессию — на следующую сбрасывается, спросить заново) +- `951bc62` docs(wiki): capture session-inbox-monitor received-msg FP as concept +- `2cd52cf` feat(session-inbox-monitor): close -test-trigger (PASS) + add CLAUDE.md trigger-line +- `80a013b` meta(handoff): wrap session — session-inbox-monitor 5/6, -test-trigger next +- `857a9d3` feat(hermes): map session-inbox-monitor as pending + close install/hermes-mapping +- (всё запушено в origin/master; автопуш был выдан на ЭТУ сессию — на следующую сбрасывается, спросить заново) ## Open треки | Трек | Готовность | Entry-point | |---|---|---| -| `session-inbox-monitor-test-trigger` (⚪) | **следующий шаг, ТОЛЬКО чистая сессия** | pos: CLAUDE.md line `inbox monitor: raise on start`, «подними монитор почты», «raise inbox monitor», «auto-arm inbox watcher» → session-inbox-monitor. neg: обработка полученного письма → inter-session-peer-discipline; мультимашинный backend → cross-machine-inbox. False-positive check. | -| `session-inbox-monitor-review` (🔵) | разблокируется после `-test-trigger` | не-имплементер; поведенческий smoke: hook sweep+inject, headless-skip, stop-hook block-фикс чист, тело SKILL.md соответствует. Findings → tasks_create. | +| `session-inbox-monitor-review` (⚪) | **следующий шаг, ТОЛЬКО НЕ-имплементер сессия** | Зонтичное ревью. Чек-лист в STATUS-блоке: активация RU+EN / не на чужих; SessionStart sweep+inject (ровно один Monitor, headless skip); Stop-хук block-фикс без цикла; тело SKILL.md ↔ реальность. Учесть открытый FP-finding ниже. Findings → tasks_create. | +| `session-inbox-monitor-received-msg-fp` (⚪) | informational, решить опцию | RU «обработай полученное письмо» (N1) FP→session-inbox-monitor; корень = carve-out маршрутит на `inter-session-peer-discipline`, который НЕ установлен. Опции: (a) усилить description / (b) установить sibling / (c) принять informational. Деталь: `.wiki/concepts/session-inbox-monitor-received-msg-fp.md`. NB: фикс (a) = повторный `-test-trigger` + влияет на `-review`. | +| `session-inbox-monitor-test-trigger` (🟢) | закрыт PASS | pos 4/4 (вкл. CLAUDE.md-line P4), neg 2/3 (N1 FP). Метод: 7 непрайменных clean-context субагентов. | ## Спроси user'а -- Автопуш на новую сессию (грант не переносится — Rule 4 reset). -- Опц.: добавить ли строку `inbox monitor: raise on start` в claude-skills CLAUDE.md. Сейчас хук и так фаерит (гейт по `.claude-inbox/`, она есть), но явная строка = discoverable opt-in + ровно то, что проверяет `-test-trigger`. +- Автопуш на новую сессию (грант не переносится — project-discipline Rule 4 reset). +- Решение по FP-фиксу `session-inbox-monitor-received-msg-fp` (a/b/c) — за владельцем. +- Кто/когда гонит `-review` (нужна свежая не-имплементер сессия). ## Не делать (preemptive guards) -- НЕ гнать `-test-trigger` / `-review` в сессии, которая трогала скил/хук — нужен чистый контекст. -- НЕ промоутить `session-inbox-monitor` pending→auto в `hermes/mapping.yaml` до `-test-trigger` + аудита tool-side (settings.json write, Get-CimInstance|Stop-Process kill, Monitor raise). Держать pending. +- НЕ гнать `-review` в сессии, которая трогала скил/хук/прогоняла test-trigger — нужен чистый не-имплементер контекст. +- НЕ промоутить `session-inbox-monitor` pending→auto в `hermes/mapping.yaml` до `-review` + аудита tool-side (settings.json write, Get-CimInstance|Stop-Process kill, Monitor raise). Держать pending. - НЕ бампать hermes schema `version: 1` (schema, не контент). -- **NB machine-local:** UTF-8 фикс `stop-dispatcher.ps1` ([Console]::OutputEncoding) — вне git, применён ТОЛЬКО на этой машине. На других машинах кириллица в inbox-доставке снова поедет, пока workshop не внесёт OutputEncoding=UTF8 в свой сетап-шиппер хука (нотифай ушёл). Бэкапы: `~/.claude/hooks/stop-dispatcher.ps1.bak-utf8fix`, `settings.json.bak-inbox-monitor`. +- **NB machine-local:** UTF-8 фикс `stop-dispatcher.ps1` ([Console]::OutputEncoding) — вне git, только на этой машине. На других кириллица в inbox-доставке поедет, пока workshop не внесёт OutputEncoding=UTF8 в свой сетап-шиппер. Бэкапы: `~/.claude/hooks/stop-dispatcher.ps1.bak-utf8fix`, `settings.json.bak-inbox-monitor`. - Живой Monitor этой сессии гаснет сам на session end (teardown не нужен). +- Уже отправлено: нотифай в `~/projects/.workshop/.claude-inbox/` про test-trigger PASS — повторно не слать. ## Memory updates за сессию -- `feedback_ps_hook_ascii_encoding` обновлён: WinPS 5.1 mojibake-баг двусторонний — не только source ASCII/BOM, но и **stdout output** (`[Console]::OutputEncoding=UTF8`) + **no-BOM file writes** (`WriteAllText`, не `Set-Content -Encoding utf8`). ASCII-clean — обход, не корень. +- (нет на этом раунде) — по указанию владельца находка по FP ушла в **вики проекта** (`.wiki/concepts/session-inbox-monitor-received-msg-fp.md` + сиблинг-линк в `delegate-task-negative-trigger-fp.md`), НЕ в приватный memory. Новый переиспользуемый принцип зафиксирован там: *a routed negative competes only if its route target is installed*.