From 80a013bdd791ece980df2eac646644664c6a4068 Mon Sep 17 00:00:00 2001 From: vitya Date: Wed, 17 Jun 2026 11:16:37 +0300 Subject: [PATCH] =?UTF-8?q?meta(handoff):=20wrap=20session=20=E2=80=94=20s?= =?UTF-8?q?ession-inbox-monitor=205/6,=20-test-trigger=20next=20(clean=20s?= =?UTF-8?q?ession)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .tasks/NEXT_SESSION.md | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/.tasks/NEXT_SESSION.md b/.tasks/NEXT_SESSION.md index e00e37e..2e7b87b 100644 --- a/.tasks/NEXT_SESSION.md +++ b/.tasks/NEXT_SESSION.md @@ -1,33 +1,40 @@ --- -_last_updated_: 2026-06-11 -session_id: 2026-06-11-task-loop-install-hermes +_last_updated_: 2026-06-17 +session_id: 2026-06-17-session-inbox-monitor-impl --- # Next session handoff -Закрыты 2 из 3 deployment-baseline'ов `task-loop`: **install** (скил в `~/.claude/skills/`, виден в available-skills с полным description после `/reload-plugins`) и **hermes-mapping** (entry mode:pending, intended auto/mcp). Остался один — `task-loop-test-trigger`, и он **намеренно** отложен: ему нужна СВЕЖАЯ сессия (эта ставила скил = имплементер-прайм + грязный контекст, subagent-прогоны при разработке были прокси, не живой харнес). +Лента `session-inbox-monitor` доведена **5 из 6**: ядро (`-sessionstart-hook`), +оба stop-hook трека (`-stophook-blockfix-proof` PASS + найденный/пофикшенный +`-stophook-utf8-fix`), `-install`, `-hermes-mapping`. Остался **только +`-test-trigger`** — и он строго в **СВЕЖЕЙ сессии** (эта была имплементер-прайм: +ставила скил, писала хук, гоняла пруфы → тест активации недостоверен). За ним +разблокируется `-review`. ## Recent commits -- `74a94a6` feat(hermes): map task-loop as pending (intended auto/mcp) — closes [task-loop-hermes-mapping] -- `e07413f` meta(tasks): close [task-loop-install] — installed + verified visible in available-skills -- `036e0d5` meta(handoff): regen NEXT_SESSION (предыдущий разворот) -- **NB: оба свежих коммита НЕ запушены** (автопуш не был выдан на ту сессию — Rule 4). +- `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; автопуш был выдан на эту сессию — на следующую сбрасывается, спросить заново) ## Open треки | Трек | Готовность | Entry-point | |---|---|---| -| `task-loop-test-trigger` (⚪ ready, needs-claude) | **это и есть «следующий разумный шаг»** — **строго в чистой сессии** | positive/negative триггеры + поведенческий сценарий: consult-gate (human-only → STOP before close), session_break-halt, empty→stop (без polling), watch→ScheduleWakeup ≥1200s НЕ CronCreate | -| hermes build «red» (информ.) | не task-loop-задача | 3 ДРУГИХ unmapped-скила в mapping.yaml: `using-system-snapshot`, `meta-host-routing` (есть ⚪ `meta-host-routing-hermes-mapping`), `task-format` — каждый со своим baseline | +| `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. | ## Спроси user'а -- **Push** двух коммитов (`e07413f`, `74a94a6`) в `origin/master` — грант на прошлую сессию НЕ переносится (Rule 4 reset). Спросить заново. -- Слать ли closing-notify в `OpeItcLoc03/workshop` + дублировать close в projects-meta (`tasks_close`) для install/hermes-mapping — cross-project mutation, по умолчанию НЕ делал. +- Автопуш на новую сессию (грант не переносится — Rule 4 reset). +- Опц.: добавить ли строку `inbox monitor: raise on start` в claude-skills CLAUDE.md. Сейчас хук и так фаерит (гейт по `.claude-inbox/`, она есть), но явная строка = discoverable opt-in + ровно то, что проверяет `-test-trigger`. ## Не делать (preemptive guards) -- НЕ прогонять `task-loop-test-trigger` в сессии, которая ставила/трогала скил — нужен чистый контекст, иначе тест активации недостоверен. -- НЕ промоутить `task-loop` pending→auto в mapping.yaml до `-test-trigger` + аудита tool-side эффектов (claim/close/heartbeat + ScheduleWakeup). Держать pending. -- НЕ бампать schema-версию `hermes/mapping.yaml` (`version: 1`) — это schema, не контент. -- НЕ чинить 3 чужих unmapped-скила в рамках task-loop-ленты — у каждого свой baseline. +- НЕ гнать `-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. +- НЕ бампать 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`. +- Живой Monitor этой сессии гаснет сам на session end (teardown не нужен). ## Memory updates за сессию -- (нет на этом раунде — нового durable факта о user/проекте не возникло; всё state в STATUS.md) +- `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 — обход, не корень.