# Task Board _Updated: 2026-08-12 — **sovereign-catalog-wave2-review closed**: VERDICT PASS для волны-2 (10/10) + CONCERN на HEAD (2 дефекта 42ed5ea → 4 follow-up таски), архив доски (51 🟢). Ранее: 2026-08-10 — **session-inbox-monitor-pi-extension shipped**: pi-native inbox delivery for ALL pi sessions. SESSION-SCOPED: watches only `/.claude-inbox/` (own project only — vitya's rule: an agent may only read its own directory's inbox; the first global-scan version was scrapped same day). PUSH 15s poll (interactive) + PULL `agent_settled` sweep; headless = no delivery (messages wait for interactive); dedup per-process + `.read/` move = cross-process first-wins vs CC hooks; source of truth `.common/lib/pi-extensions/inbox-monitor.ts`, deployed byte-identical to `~/.pi/agent/extensions/`, functional tests PASS (incl. decoy — other inbox untouched). SKILL.md v0.2.2→v0.3.0 with Pi section. Ранее: review-kit прогнан в чистой не-имплементер сессии: 3 трека закрыты VERDICT PASS — `inter-session-peer-discipline-test-trigger` (pos 4/4→peer high, 0 FP на 5 чужих RU+EN), `inter-session-peer-discipline-review` (тело v0.1.1 несёт все 3 принципа, не конфликтует с CLAUDE.md), `session-inbox-monitor-review` (зонтик: активация 3/3 monitor + neg clean [X2 low-conf observation]; структурный аудит хуков 5 PASS/1 CONCERN; received-msg-fp учтён RESOLVED via b; hermes держим pending до tool-side аудита). Метод — clean-context непрайменные субагенты + независимый структурный аудит. Единственный finding (UTF-8 guard) сразу пофикшен и закрыт: `session-inbox-monitor-encoding-guard-followup` 🟢 — `[Console]::OutputEncoding=UTF8` forward-guard в inbox-monitor.ps1, кириллический regression под WinPS 5.1 PASS, задеплоен byte-identical, SKILL.md v0.2.2. Ранее: session-inbox-monitor-test-trigger closed (VERDICT PASS; clean-session run, 7 непрайменных субагентов: pos 4/4→session-inbox-monitor [вкл. CLAUDE.md-line P4], neg 2/3 [N2 backend→none, N3 received-msg EN→none, N1 received-msg RU→FP]; FP borderline + body-load-self-correcting, корень=inter-session-peer-discipline не установлен; follow-up `session-inbox-monitor-received-msg-fp` заведён; `-review` разблокирован [нужна НЕ-имплементер сессия]; строка `inbox monitor: raise on start` добавлена в CLAUDE.md по согласию user). Ранее: task-loop-test-trigger closed (VERDICT PASS; live clean-session run: pos 6/6→task-loop, neg discrimination clean, task-loop FP 0/3, behavioral 4/4 [consult-gate, session_break BOUNDARY, empty-stop-no-poll, long-watch ScheduleWakeup≥1200 not CronCreate]; registry confirmed real via subagent probe; **ALL 3 task-loop baselines now done**; finding: session_break is the fragile gate — body-load-dependent, informational only, no fix). Ранее: task-loop-hermes-mapping closed (task-loop entry → hermes/mapping.yaml mode:pending, intended auto/mcp; reason claim/close/heartbeat + ScheduleWakeup; YAML validated; schema version untouched. 2 of 3 task-loop baselines now done; -test-trigger ⚪ remains, needs clean session). Ранее: task-loop-install closed (skill installed to ~/.claude/skills/, diff-identical to source, visible in available-skills with full description post-/reload-plugins; -test-trigger unblocked → ⚪ ready, needs clean session). Ранее: using-tasks-session-lock shipped (using-tasks 1.3.0→1.4.0; session lock guard: start step 1 + end step 1 + .gitignore + Structure docs). Ранее: meta-host-routing-review closed (VERDICT PASS; behavioral 8/8 via clean-context subagents — 5 pos→meta-host-routing, 3 neg routed away incl. known-Gitea Skip-clause; Steps verified vs live infra: yt-tools→OpeItcLoc03/meta-yt-tools dedicated host resolves, .common grep hits, excludesFile/auth.toml present; failure-modes→STOP+ask, What-NOT accurate; no blocking findings on skill v0.3.0. Observation: task acceptance «resolves .common» is stale — skill+reality route yt-tools to dedicated meta-yt-tools host. Caveat: -install + -hermes-mapping baselines remain ⚪ open — skill not in ~/.claude/skills nor hermes/mapping.yaml; review covers content+trigger-discrimination only, not live-harness activation). Ранее: task-format skill v0.1.0 created (TDD via writing-skills; RED 3-fail → GREEN 2-pass). Ранее: using-markitdown-cli-rewrite-review done (VERDICT PASS; SKILL.md без `mcp__markitdown__`, CLI-примеры совпадают с `markitdown 0.1.6 --help`, version 1.0.0→1.0.1 PATCH, dist консистентен; 1 informational finding — docker-контейнер респаунится из out-of-scope `~/.claude.json` MCP-регистрации → follow-up `using-markitdown-mcp-deregister` needs-human). Ранее: skill-using-system-snapshot-review done (VERDICT PASS 3/3; live tool-contract verify + 9-way fresh-context trigger test, 8 clean; 3 informational findings, none blocking — incl. missing deployment scaffold: skill not installed / not in hermes-mapping / no baseline tasks). Ранее: using-tasks-status-read-perf done (using-tasks 1.2.0→1.3.0; done-task archival rule fixes STATUS.md bloat; literal `tasks_get_status`-for-orientation swap NOT done — tool can't enumerate the board, documented). Ранее: session-break-using-tasks done (using-tasks 1.1.0→1.2.0; `session_break` marker — stop after close before claim-next). Ранее: delegate-task-review done (VERDICT PASS; smoke-test 6/6 fresh subagents, no blocking findings, 3 informational notes). Ранее: delegate-task-test-trigger done (pos 5/5, neg 2/3; FP на «создать задачу себе» → follow-up delegate-task-description-fp-fix, shipped v0.2.1). Ранее (2026-06-08): откат churn'а от агент-раннера (always-on dry-run): 5 тасок (using-yt-tools-rate-limit-guard, archive-roundtrip-test, skills-grouping-revisit, hermes-converter-ci, tdd-criteria-precommit-hook) спуриозно claimed/blocked из-за workspace-divergence бага раннера → возвращены в ⚪ ready. yt-tools re-scoped на plugin-репо `OpeItcLoc03/yt-tools` (исходный stub deprecated)._ **Poller:** eligible ## ⚪ [#315 using-yt-tools-rate-limit-guard] — Add explicit "don't batch requests at YouTube" rule to `skills/using-yt-tools/SKILL.md` (avoid HTTP 429 IP-block). **Эмпирика (2026-05-31, modulair-wiki ingest, DESKTOP).** Владелец кинул подборку из 10 YouTube URL. Агент выстрелил залпом ~21 запрос подряд: `yt-dlp --dump-json` ×10 (метаданные — прошли) + `yt-transcript` ×10 (transcript-api). Первый transcript-вызов достучался (вернул список языков), **со второго пошёл `HTTP 429 / "YouTube is blocking requests from your IP"`**. Блок IP-wide и держится минутами — упёрлись **оба** пути: `youtube-transcript-api` (yt-transcript) И `yt-dlp` timedtext-subtitle endpoint (метаданные при этом ещё проходили, а субтитры — нет). Что разблокировало: ~4-мин cooldown + запросы **по одному** с паузами 25–35с + ранний abort если первый не прошёл (чтобы не жечь cooldown впустую). Второй, смежный баг той же сессии: `yt-transcript` по умолчанию просит `--lang en` и **промахивается мимо ручных `en-US` субтитров** (видео с manually-created `en-US` и без `en` отдаёт "no transcript"). Лечится `--lang en-US,en` (или вообще автоопределением). **Что добавить в SKILL.md:** 1. **What NOT to do** — новый буллет: «**Не пулять в YouTube пачкой запросов.** Несколько URL подряд (или metadata+transcript залпом) → `HTTP 429`, IP-block на минуты, бьёт оба пути (transcript-api и yt-dlp). Обрабатывай по одному, с паузой ≥25–35с между; при пакете из N URL — последовательно, не параллельно. Если уже словил 429 — cooldown ~3–5 мин перед повтором, проверяй первый запрос и не продолжай залп если он упал.» 2. **Failure modes** — новая строка: симптом `HTTP 429 Too Many Requests` / `"blocking requests from your IP"` → причина: слишком много запросов подряд (rate-limit, не приватность/регион) → действие: cooldown + по одному с паузами; НЕ retry в цикле без задержки. Отличать от `yt-dlp source download failed` (это реальная недоступность видео). 3. (опц.) **Inputs / Flow A** — упомянуть `--lang en-US,en` как дефолт-страховку для ручных не-`en` субтитров (видео NE/прочие с `en-US`-only). **Bump:** PATCH (поверхностное расширение guidance, не breaking). **TDD:** не применим (markdown-документ). Behavioral-смок опционален: «дай 5 URL» → агент обрабатывает последовательно с паузами, не залпом. **Дисциплина:** после правки — bump version в frontmatter, commit `feat(using-yt-tools): rate-limit guard (no-batch) vX.Y.Z`; install/hermes-mapping/push — отдельно, как в прошлых yt-tools-тасках (для PATCH достаточно reload-plugins). **Weight:** needs-human **Status:** ready — **RE-SCOPED 2026-06-08:** исходный таргет `skills/using-yt-tools/SKILL.md` устарел — это deprecated inert stub (v0.4.1), канонический контент мигрировал в **plugin-репо `OpeItcLoc03/yt-tools`** (v0.6.0), там же живут секции, на которые ссылается задача (вкл. буллет «Не retry на yt-dlp failures» для расширения). Правило по-прежнему нужно — но вносить его в plugin-репо, не в stub. (Находка автономного агента 2026-06-08; consult по «какой репо править» → halt при `consult_policy=human-only`; decision-trail в per-task файле.) **Created:** 2026-06-08 **Where I stopped:** (not started в правильном репо) — баг и фикс зафиксированы по живой сессии 2026-05-31; правка отложена в задачу (владелец просил не лезть в глобальный скил из проекта modulair-wiki). **Next action:** В репо `OpeItcLoc03/yt-tools` (plugin) открыть его SKILL.md, внести пункты 1–3 (rate-limit guard), bump PATCH, commit. Свериться с существующим «Не retry на yt-dlp failures» — расширить его, а не плодить дубль. (НЕ править claude-skills stub.) **Branch:** master --- ## 🟡 [#24 skill-readmes] — write English README.md for every skill + translate root README **Status:** paused **Created:** 2026-04-28 **Where I stopped:** infra-skill cluster done — READMEs for `project-bootstrap`, `setup-wiki`, `setup-tasks`, `using-wiki`, `using-tasks`; root README translated; cross-links between all five skills wired up **Next action:** continue with the next batch — suggest the caveman cluster (`caveman`, `caveman-commit`, `caveman-review`, `caveman-help`, `caveman-compress`, `compress`) since they form a coherent group; or jump to `active-platform`, `find-skills`, `setup-context7`, `using-context7`, `using-markitdown` if the caveman cluster needs deduplication first (see `compress-dedup` task) **Branch:** master --- ## ⚪ [#23 archive-roundtrip-test] — smoke-test for .skill archive shape **Weight:** needs-human **Status:** ready **Created:** 2026-04-28 **Where I stopped:** (not started) — caught the PowerShell-Compress-Archive backslash bug manually; a smoke-test would catch the next regression automatically **Next action:** add a script that builds `dist/.skill`, unzips into a temp dir, and `diff -r` against `skills//`. Fail on any difference. Run from CI or pre-commit if we add one **Branch:** (not started) --- ## 🟡 [#49 active-platform-eval] — eval-driven tuning of active-platform (description + body), absorbs `[active-platform-tuning]` **Status:** paused **Created:** 2026-05-05 **Where I stopped:** design doc complete (`.wiki/concepts/active-platform-eval-design.md`, ~150 lines); per-task file complete (`.tasks/active-platform-eval.md`); STATUS.md collapsed the two original ⚪ tasks into this one block. Pre-flight verified: `claude` CLI on PATH at `C:\nvm4w\nodejs\claude.ps1` (Claude Code 2.1.128); `run_loop.py` present at `~/.claude/plugins/cache/claude-plugins-official/skill-creator/unknown/skills/skill-creator/scripts/run_loop.py`. Stopped right before eval-set authoring at user request — paused for asynchronous follow-up. No code touched, no tooling launched, no `.tasks/active-platform-eval/` workspace dir created yet. **Next action:** resume by answering Q2 from the chat ("eval set — write 20 queries solo from current SKILL.md + concept-page open questions, or run skill-creator's HTML review template first for user-driven edits before kickoff?"), then (a) build `.tasks/active-platform-eval/eval-set.json`, (b) snapshot skill to `.tasks/active-platform-eval/skill-snapshot/`, (c) launch run_loop.py in background, (d) parallel manual body sweep, (e) apply changes + bump to 1.1.0 + rebuild + reinstall + final report + commit. **Branch:** master --- ## ⚪ [#25 skills-grouping-revisit] — revisit flat vs grouped skills/ layout if count grows past ~30 **Weight:** needs-human **Status:** ready **Created:** 2026-04-28 **Where I stopped:** (not started) — current 14 skills fit fine in flat `skills/`; threshold for revisiting is ~30 **Next action:** when triggered (skill count crosses threshold), evaluate variant B (grouped by family) vs variant C (flat + manifest) from the original brainstorm in `.wiki/concepts/repo-layout.md` **Branch:** (not started) --- ## ⚪ [#53 hermes-converter-ci] — [deferred — после ручной валидации MVP] CI hook (Gitea-pipeline или GitHub-Action если зеркалим): на push to master запустить `scripts/build-hermes.py`, сравнить diff `dist-hermes/`, авто-коммит если изменения (или PR-шаблон). Цель — чтобы `dist-hermes/` всегда матчил `skills/`+`hermes/mapping.yaml`+`hermes/skills/` без ручного запуска build. Не блокирует MVP — первая итерация делается ручным запуском конвертера. Дизайн: `.wiki/concepts/hermes-skills-rollout-design.md`. **Weight:** needs-human **Status:** ready **Created:** 2026-05-06 **Where I stopped:** unblocked 2026-05-07 — `hermes-mvp-coverage` shipped в `a003b80`; MVP живой на фабрике. **Next action:** Выбрать платформу CI (Gitea Actions vs внешняя), написать workflow, прогнать тестовый push. **Branch:** master --- ## ⚪ [#64 tdd-criteria-precommit-hook] — Optional pre-commit hook script that automates the bright-line checks from `tdd-criteria` Anti-loophole rules 1 and 4. Project owner opts in per-repo by symlinking / copying to `.git/hooks/pre-commit` (or via `husky` / `lefthook` integration if the project uses them). **Two checks** (both bright-line, both fail-closed): **Check 1 — `[skip-tdd: ]` validation.** If `git diff --cached --name-only` includes a `*.ts` / `*.js` / `*.py` / similar code file (excluding tests and Permissive-zoned paths like `*.css` / `*.env*` / `*.md` / `*.yaml`), require either: - A `*.test.*` / `*.spec.*` / `test_*.py` / similar file present in the same diff, OR - The commit subject (read from `$1` arg, line 1 of `$1` = msg path) matches `\[skip-tdd: (visual|spike|oneshot|wrapper)\]`. If neither holds → block with message: ``` TDD policy violation: code change without test or skip marker. Add a test, or include [skip-tdd: ] in commit subject. See claude-skills/.wiki/concepts/tdd-criteria-design.md for which category applies. ``` **Check 2 — Test-modification audit (`[test-modify]` rule 4).** Detect test-modifying changes in `git diff --cached`: - Removed line matching `^-\s*(expect|assert|assertThat|chai\.)\(` (assertion deletion) - Added/removed lines that change argument values inside `expect(...)` / `assert(...)` calls - Added `.skip` / `\.xit\b` / `@pytest\.mark\.skip` / `@Disabled` / `@Ignore` annotations - Deleted `it(...)` / `test(...)` / `def test_*` definitions (matches `^-\s*(it|test|describe)\(` or `^-def test_`) If any matched → require commit subject matches `\[test-modify: [^:]+: was .+; is .+; reason: .+\]`. Block otherwise with message: ``` Test-modification without [test-modify: ...] marker. Required format: [test-modify: : was ; is ; reason: ] The was/is must be the LITERAL assertion expressions, not paraphrased. See tdd-criteria Anti-loophole rule 4. ``` ALSO: if `git diff --cached --name-only` includes both a test-pattern file AND an impl-pattern file → block: ``` Test changes must be in a separate commit from impl changes (tdd-criteria rule 4b). Run: git reset HEAD && git commit (test-only) && git add && git commit (impl-only). ``` **Implementation:** - Bash script (single file). Cross-platform: works on Linux/macOS and on Windows under git-bash (which Claude/Hermes both already run on). - Path: `~/projects/claude-skills/scripts/tdd-criteria-precommit-hook.sh`. Plus a Windows wrapper `.ps1` that delegates if needed. - Tested on a real repo before commit (`books` is a good candidate — it has Jest tests + `*.test.js` convention). - Documented in `claude-skills/.wiki/concepts/tdd-criteria-design.md` «See also» section (already linked). **Activation pattern (per-repo):** ```bash # Symlink or copy the hook ln -sf ~/projects/claude-skills/scripts/tdd-criteria-precommit-hook.sh \ .git/hooks/pre-commit chmod +x .git/hooks/pre-commit ``` Or via `lefthook.yml` / `.husky/pre-commit` if the project already uses one of those. **Out of scope:** - Mutation testing (Stryker, mutmut) — separate heavyweight infra, not this hook. - Coverage gates — different mechanism, different cost/benefit. - Visual regression infra (Percy, Chromatic) — Permissive-5 acknowledges this is heavyweight; not bundled. - Auto-fixing the violation — hook only blocks; fix is human's job. **Why this is optional, not required by the SKILL.md:** The skill is **policy** that lives in claude-skills and gets pulled into agent context per project. The hook is **enforcement** that needs per-project setup. Some projects opt out of pre-commit hooks entirely (e.g. `karu` if it's pure CSS — no code surface to enforce). Forcing the hook into the skill would couple policy to tooling. **Bypass:** Pre-commit hooks have `--no-verify`. Per `project-discipline` Rule 4 («never skip hooks unless user explicitly asks») agents must not use `--no-verify` — but humans can in emergencies. Each `--no-verify` use should be self-flagged in the commit body («bypassed pre-commit because: ...»). Not enforceable by the hook itself; this is a higher-level audit. **Weight:** needs-human **Status:** ready **Created:** 2026-05-07 **Where I stopped:** (not started) **Next action:** Решить, нужен ли hook (он опционален) — если да, написать `~/projects/claude-skills/scripts/tdd-criteria-precommit-hook.sh` по спеке в description, протестировать на `books` (Jest-конвенция `*.test.js`), задокументировать activation pattern. Если нет — закрыть как `wontfix` с пометкой что fence чисто социальная (commit subject visible в `git log`). **Branch:** master --- ## ⚪ [#63 tasks-board-cleanup-2026-05] — Архивная чистка `.tasks/STATUS.md`: переместить все 🟢 done-блоки в `.tasks/.archive/done-2026-05.md`, оставить в STATUS.md только header + status legend + 🔴/🟡/⚪/🔵 блоки. Цель — разгрузить файл от исторического шума без потери data (git history + явный архивный файл для текстового поиска). Предпосылка: на 2026-05-07 в `claude-skills/.tasks/STATUS.md` накопилось ~18+ 🟢 done-блоков (rolled out за 2026-04-25 — 2026-05-07: tdd-criteria-rollout, hermes-rollout, bootstrap-related, project-creation-lifecycle, recommend-dont-menu и т.д.). Convention в шапке файла говорит «🟢 Done — kept until merged», но проект работает на master-only (нет ветвления для merge), поэтому convention превратилась в «kept forever». Файл рос до ~600 строк / 26K токенов — Read-инструменты упираются в лимит. После чистки STATUS.md остаётся только активный board (🔴/🟡/⚪/🔵 + closed `[bootstrap-upgrade-canonical-triggers]` если уже отработал). Архивный файл `.tasks/.archive/done-2026-05.md` сохраняет полный текст всех перемещённых блоков для grep-поиска и historical context. **Weight:** needs-human **Status:** ready **Created:** 2026-05-07 **Where I stopped:** Создана 2026-05-07. После rollout v1.10.0/1.10.1 на STATUS.md накопилось много свежих 🟢 (bootstrap-add-tdd-trigger, refresh-project-bootstrap closed-as-superseded, bootstrap-fix-tdd-recommend-template, bootstrap-upgrade-canonical-triggers если уже отработал). Хороший момент для batch-archive. **Next action:** 1) Прочитать `.tasks/STATUS.md` целиком (Read in chunks if needed). 2) Идентифицировать все блоки `## 🟢 [...]` — разделители `---`. 3) Создать `.tasks/.archive/` директорию (если нет). 4) Записать `.tasks/.archive/done-2026-05.md` с шапкой: ```markdown # Archived — Done batch 2026-05 Перемещено из `.tasks/STATUS.md` 2026-05-07 в рамках board-cleanup. Полный список 🟢 done-тасок, шипанутых в апреле-мае 2026. Полный source — git history `.tasks/STATUS.md` до commit X. --- ``` И подряд все 🟢-блоки в исходном виде. 5) Edit `.tasks/STATUS.md`: убрать все 🟢-блоки + соседние `---` разделители. Header + status legend + 🔴/🟡/⚪/🔵 блоки оставить. 6) Verify: `grep '^## ' .tasks/STATUS.md | wc -l` — было ~28+, должно остаться число активных (🔴+🟡+⚪+🔵, ожидание ~10-12). 7) Commit `meta(tasks): archive done batch 2026-05 → .tasks/.archive/done-2026-05.md` с body, описывающим какие группы перемещены (tdd-criteria, hermes, bootstrap, etc.) и итоговый count. 8) `tasks_close`. NB: эта таска сама уйдёт в следующий cleanup batch (2026-06 или подобный), так что не пытаться её закрыть+архивировать в одном коммите. **Branch:** n/a --- ## ⚪ [#254 meta-host-routing-install] — Установить новый скил `meta-host-routing` v0.1.0 (закоммичен локально a7526d1, ещё не установлен — потому не триггерит). Запустить `install.sh` в `~/projects/claude-skills/`, проверить что скил активируется в новой сессии, `/reload-plugins`. **Weight:** needs-human **Status:** ready **Created:** 2026-05-27 **Where I stopped:** (not started) **Next action:** Запустить install.sh, открыть новую CC-сессию, убедиться что meta-host-routing в available-skills, /reload-plugins. **Branch:** n/a --- ## ⚪ [#255 meta-host-routing-test-trigger] — Прогнать триггер-фразы `meta-host-routing` из description на тестовом сценарии. **Должен активироваться:** «project not in cache» от projects-meta; промоушен/таски для проекта с github-remote; «заведи таски в », «промоутни ». **НЕ должен (false-positive check):** обычный Gitea-проект уже в projects-meta (прямой маршрут); 2-3 близкие фразы из соседних доменов (using-projects-meta query, обычный tasks_create в known-проект). **Weight:** needs-human **Status:** ready **Created:** 2026-05-27 **Where I stopped:** (not started) **Next action:** В чистой сессии прогнать активацию на своих фразах И убедиться что не фаерит на 2-3 чужих близких; зафиксировать результат. **Branch:** n/a --- ## ⚪ [#336 skill-using-system-snapshot] — ## Goal Создать скил `using-system-snapshot` в `claude-skills`. ## Назначение Заменить разрозненные ops-проверки (tasklist, docker ps, meta_status вручную) одним вызовом `mcp__projects-meta__meta_system_snapshot` в начале сессии. ## Содержание скила - **Когда вызывать**: старт сессии при ops-контексте; перед любым утверждением о состоянии процессов/поллера - **Что делать**: вызвать `mcp__projects-meta__meta_system_snapshot`, интерпретировать ответ - **Формат вывода**: одна строка на секцию — поллер (стоп/работает + проекты), docker (ОК / список проблем), задачи (сводка по проектам) - **Запрет**: не утверждать состояние процессов без предварительного вызова snapshot ## Acceptance criteria - [ ] `skills/using-system-snapshot/SKILL.md` создан - [ ] Trigger-фразы описаны: «что запущено», «состояние системы», «поллер работает?» - [ ] Dependency: инструмент `meta_system_snapshot` должен быть готов (`meta-system-snapshot` в .common) ## Permissions - interns: no - auto-push: yes ## Weight needs-claude **Weight:** needs-claude **Status:** ready **Created:** 2026-06-09 **Where I stopped:** Разблокировано 2026-06-09 — meta-system-snapshot в OpeItcLoc03/common закрыт (review прошёл, live call верифицирован). **Next action:** Написать skills/using-system-snapshot/SKILL.md **Branch:** n/a --- ## ⚪ [#335 delegate-task-review-weight-inherit] — Исправить `delegate-task` скил: при создании парной review-таски (Step 5) наследовать `weight` от impl-таски. **Проблема:** review-таски создаются через `tasks_create(status=blocked, blocker=)` без `weight` параметра. Reconciler обрабатывает авто-анблок только задач с `**Weight:** needs-claude` или `**Weight:** cheap-ok` в теле. Без поля — задача навечно остаётся 🔵, поллер её не видит. Воспроизводилось трижды за одну сессию (session-break-using-tasks-review, session-break-delegate-task-review, skill-using-system-snapshot-review, using-tasks-status-read-perf-review). **Фикс:** в Step 5 шаблона явно указывать weight при `tasks_create` review-таски. Правило: review-таска наследует weight impl-таски, но не выше `needs-claude` (review не бывает `cheap-ok` — риск игнора invoke-инструкций слабыми моделями). **Acceptance criteria:** - Step 5 в SKILL.md явно говорит: создавать review-таску с `weight` = weight impl-таски (но min `needs-claude`) - `tasks_create` вызов в Step 5 включает `weight` параметр в примере/описании - What-NOT-to-do: не создавать review-таску без weight ## Обязательные скилы — вызвать до начала работы - invoke `using-tasks` — для управления статусом задачи - invoke `project-discipline` — дисциплина коммитов/пушей - invoke `using-wiki` после закрытия — заингесть `.wiki/concepts/delegate-task-review-weight.md` **TDD:** нет — markdown policy artifact; behavioral smoke = парная review-таска **Разрешения:** интерны: да | автопуш: нет **weight:** needs-claude **notify:** OpeItcLoc03/workshop **Status:** ready **Created:** 2026-06-09 **Where I stopped:** (not started) **Next action:** Открыть `skills/delegate-task/SKILL.md`, найти Step 5, добавить явное наследование weight при tasks_create review-таски. Bump PATCH. **Branch:** n/a **Notify:** OpeItcLoc03/workshop --- ## ⚪ [#337 using-markitdown-cli-rewrite] — Переписать `skills/using-markitdown/SKILL.md`: заменить все инструкции по вызову `mcp__markitdown__*` тулов на вызов CLI `markitdown ` (v0.1.6, доступен в системном PATH). Убрать секцию про MCP setup/docker. После обновления SKILL.md — остановить и удалить локальный docker контейнер markitdown-mcp (`docker stop markitdown-mcp && docker rm markitdown-mcp`). Bump PATCH version в frontmatter скила. **Acceptance criteria:** - SKILL.md не содержит `mcp__markitdown__` — только CLI-вызовы - `docker ps` не показывает markitdown-mcp - version bumped (PATCH) ## Обязательные скилы — вызвать до начала работы - invoke `using-tasks` — для управления статусом задачи - invoke `project-discipline` — дисциплина коммитов/пушей - invoke `using-interns` — для file-read/grep операций - invoke `using-wiki` после закрытия — заингесть `.wiki/concepts/using-markitdown-design.md` если существует **TDD:** нет — markdown policy artifact; behavioral smoke: `markitdown --help` выводит usage **Разрешения:** интерны: да | автопуш: да **weight:** needs-claude **notify:** OpeItcLoc03/workshop **Status:** ready **Created:** 2026-06-09 **Where I stopped:** (not started) **Next action:** Открыть `skills/using-markitdown/SKILL.md`, заменить все mcp__markitdown__ вызовы на CLI-эквиваленты, bump PATCH, затем `docker stop markitdown-mcp && docker rm markitdown-mcp`. **Branch:** n/a **Notify:** OpeItcLoc03/workshop --- ## 🔵 [#443 setup-agents-task-runner-windows-fixes] — Починить `setup-agents-task-runner` по итогам первого реального Windows-прогона. Скил v0.1.0 устанавливал, но службы вставали сломанными — 5 дефектов, все диагностированы и воркэраунд-починены в `OpeItcLoc03/common` dev-шаблонах. Нужно перенести в SKILL.md, чтобы fresh-install на новой машине работал без ручной отладки. ## Дефекты (с проверенными фиксами в OpeItcLoc03/common) 1. **winsw serviceaccount: v3-схема при v2.12.0 пине.** Шаблоны: `.\{{USER}}` + `` (схема winsw v3). Пин — v2.12.0, молча игнорит незнакомые элементы → служба падает на LocalSystem без ошибки. Эталон из `sample-allOptions.xml` v2.12.0: ``+``+``. Фикс: коммит 681fcda. → привести serviceaccount-блок шаблонов к v2-схеме + заметка «схема обязана совпадать с major пина winsw». 2. **projects-meta-mcp не разворачивается в install-layout.** appeals импортит `projects-meta-mcp/dist/...` (bare, `file:../projects-meta-mcp` junction); watchdog — `../../../projects-meta-mcp/dist/...` (относит., ждёт соседа install-dir). Phase 4 копирует изолированно → junction виснет на `%LOCALAPPDATA%\projects-meta-mcp` → ERR_MODULE_NOT_FOUND краш-луп. → Phase 4: развернуть `projects-meta-mcp` соседом install-dir (junction на dev-дерево либо deploy-копия) + перенаправить appeals node_modules junction. 3. **PORT 3000 — коллизия с дев-портом.** Перенесён на 4316 во всех хост-юнитах (winsw/systemd/launchd) + watchdog TASK_RUNNER_URL. Docker-внутренний 3000 не трогали. Коммит 211d662. → дефолт хост-порта 4316. 4. **Home-резолюция.** Под LocalSystem `os.homedir()` → systemprofile → auth.toml не найден. После фикса run-as-user снимается само. На машине добавлен USERPROFILE/HOME env в рендеренные XML (не в dev-шаблоны). → решить: полагаться на run-as-user ИЛИ добавить env в шаблоны (тест на fresh-машине). 5. **Phase 8 не ловил LocalSystem** (службы Running как SYSTEM, прошли). → Phase 8 ассертить SERVICE_START_NAME/StartName == целевой юзер + порт-проверку. Мелочь: PIN.md стух (.NET461 заметка vs self-contained Core 18МБ). Фикс 31bd5a9. ## Acceptance - Fresh Windows-установка через обновлённый скил: 3 службы run-as-user (не LocalSystem), не-дев порты, отвечают по HTTP — без ручной правки junction/схемы/порта. - Phase 8 реально ассертит аккаунт + порты. - Linux/mac-ветки проверены на тот же класс (sibling-deploy, схема юнитов); winsw-специфична только деф.1. - ВЕРИФИКАЦИЯ install-результата требует Windows-машины — если раннер на не-Windows, правки портируются и коммитятся, full-install проверка деферится (отметить в close-ноте). ## Обязательные скилы — вызвать до начала работы - invoke `using-tasks` — статус задачи - invoke `project-discipline` — semver-bump SKILL.md + дисциплина коммитов/пушей - invoke `writing-skills` — правка скила по канону (Iron Law: тест-сценарий до правки) - invoke `using-projects-meta` — контекст в OpeItcLoc03/common **Контекст:** проверенные фиксы — `OpeItcLoc03/common` коммиты 681fcda / 211d662 / 31bd5a9, шаблоны `lib/agents-task-runner/service/`. Ops-runbook `concepts/agents-task-runner-ops.md` (who-does-what). **TDD:** нет (правка процедуры; верификация = реальная установка). **Разрешения:** интерны: нет | автопуш: нет **Weight:** needs-claude **Notify:** OpeItcLoc03/workshop ## Дефекты (с проверенными фиксами) 1. **winsw serviceaccount: v3-схема при v2.12.0 пине.** Шаблоны использовали `.\{{USER}}` + `` — это схема winsw **v3**. Пин — v2.12.0, который **молча игнорит** незнакомые элементы → служба падает на **LocalSystem** (без ошибки!). Эталон из `sample-allOptions.xml` v2.12.0: `` + `` + ``. Фикс в common: коммит 681fcda. → Skill: serviceaccount-блок шаблонов привести к v2-схеме; добавить заметку «схема обязана совпадать с major пина winsw». 2. **projects-meta-mcp не разворачивается в install-layout.** appeals импортит `projects-meta-mcp/dist/...` (bare, через `file:../projects-meta-mcp` junction); watchdog — `../../../projects-meta-mcp/dist/...` (относит. путь, ждёт соседа install-dir). Phase 4 копирует appeals/runner изолированно → npm-junction виснет на несуществующий `%LOCALAPPDATA%\projects-meta-mcp` → ERR_MODULE_NOT_FOUND краш-луп. → Skill Phase 4: добавить шаг — развернуть `projects-meta-mcp` соседом install-dir (junction на dev-дерево либо deploy-копия) + перенаправить appeals node_modules junction. На этой машине решено единым junction `%LOCALAPPDATA%\projects-meta-mcp` → dev-дерево (согласовано с тем, что TASKS_BIN уже ссылается на dev-дерево). 3. **PORT 3000 — коллизия с дев-портом.** Раннер сидел на 3000 (Next/CRA/Express default) — фоновая autostart-служба не должна его занимать. Перенесён на 4316 (рядом с appeals :4317) во всех хост-юнитах (winsw/systemd/launchd) + watchdog TASK_RUNNER_URL. Docker-внутренний 3000 не трогали. Коммит 211d662. → Skill/README: дефолт хост-порта 4316. 4. **Home-резолюция под службой.** Пока служба была LocalSystem, `os.homedir()` давал `C:\WINDOWS\system32\config\systemprofile` → `auth.toml` не находился. На этой машине добавлен ``/`` в РЕНДЕРЕННЫЕ XML (не в dev-шаблоны). После фикса run-as-user (деф.1) проблема снимается сама (USERPROFILE берётся из токена vitya). → Skill: решить — полагаться на run-as-user ИЛИ для надёжности добавить USERPROFILE env в шаблоны (протестировать на fresh-машине без загруженного профиля). 5. **Phase 8 не ловил LocalSystem.** Скил считал успехом «службы Running» — но они прекрасно бежали как LocalSystem (благодаря env-хаку). → Skill Phase 8: ассертить `SERVICE_START_NAME`/`StartName` == целевой юзер, а не только Running. Проверка порта (нет 3000-коллизии) тоже. Мелочь: PIN.md стух (`.NET Framework 4.6.1` — на деле self-contained .NET Core, 18 МБ; .NET461 — отдельный ассет). Фикс 31bd5a9. ## Acceptance - Fresh Windows-установка через обновлённый скил даёт 3 службы **run-as-user** (не LocalSystem), на не-дев портах, все отвечают по HTTP — БЕЗ ручной правки junction/схемы/порта. - Phase 8 скила реально ассертит аккаунт + порты. - Линукс/мак-ветки проверены на тот же класс (sibling-deploy, схема юнитов) — winsw-специфична только деф.1. ## Обязательные скилы — вызвать до начала работы - invoke `using-tasks` — управление статусом задачи - invoke `project-discipline` — semver-bump SKILL.md (это versioned-артефакт) + дисциплина коммитов/пушей - invoke `writing-skills` — правка скила по канону - invoke `using-projects-meta` — кросс-проектный контекст (фиксы живут в OpeItcLoc03/common) **Контекст:** проверенные фиксы и эталон-схема — в `OpeItcLoc03/common` (коммиты 681fcda / 211d662 / 31bd5a9, шаблоны `lib/agents-task-runner/service/`). Ops-runbook `concepts/agents-task-runner-ops.md` (секция who-does-what). **TDD:** нет — правка процедуры скила; верификация = реальная установка на Windows-машине. **Разрешения:** интерны: нет | автопуш: нет **Status:** blocked **Created:** 2026-06-18 **Where I stopped:** exit 1 **Next action:** Портировать проверенные фиксы в SKILL.md (Phases) + дотянуть dev-шаблоны. См. тело. **Branch:** n/a **Owner:** DESKTOP-NSEF0UK:claude-opus:22572 **Claim token:** ef76904a-43a0-4a30-adb9-d9ed43c126e4 --- ## 🟢 [#655 agent-neutral-skill-pipeline] — ДОЛГ (идея 19 п.5): инсталл/апдейт-пайплайн скилов — claude-only. update-claude-skills ставил только в ~/.claude/skills; pi получил каталог вручную (settings skills array, идея 6). Цель: update-skills обслуживает всех агентов (единый канон + честный per-agent срез). **Status:** done **Created:** 2026-08-12 **Where I stopped:** РЕШЕНИЕ ОПЕРАТОРА (2026-08-12, зафиксировано после вскрытия непротоколированного решения вчерашней сессии «канон = ~/.claude/skills»): **dual install target**. install.sh/ps1 + update.sh/ps1 ставят в ОБА каталога: ~/.claude/skills (Claude Code — читает только его нативно, кастомные диры не конфигурируются) + ~/.agents/skills (pi — нативный скан-путь, нейтральный неймспейс .agents/). Из ~/.pi/agent/settings.json убран skills-массив (вендор-лок устранён). update-skills SKILL.md v0.2.1 — секция «Install targets (dual, agent-neutral)», semver-bump, lint 46/0. Оба таргета синхронны (46/46, diff IDENTICAL). Источник истины — git-репо skills/, оба дира — инсталлы. **Next action:** (none — kept until merged) pi перезапустить чтобы убедиться, что скилы грузятся из ~/.agents/skills (нативный скан без settings-хака). **Branch:** master --- ## 🟢 [#656 readme-command-index-row] — README.md + README.ru.md: 0 строк про скил `command-index` (провенанс-таблица не обновлена); заодно стейл-заметка README.md про `install.ps1` («not yet implemented», а build.ps1/update.ps1 существуют). Найдено: command-index-review (F1/F2). **Status:** done **Created:** 2026-08-12 **Where I stopped:** F1/F2 закрыты: README.md + README.ru.md — строка command-index в провенанс-таблице (author: ours, идея 3/18); стейл-заметка про install.ps1 («not yet implemented») исправлена — install.ps1 существует. Commit 32979fb. **Next action:** (none — kept until merged) **Branch:** master **Weight:** cheap-ok **Notify:** OpeItcLoc03/workshop --- ## 🟢 [#1047 task-priority-due-task-format-skill] — Импл-таска из concepts/task-priority-due (пункт 3): обновить task-format skill (skills-репо) — задокументировать оба поля `**Priority:** P0|P1|P2` (дефолт P1) и `**Due:** yyyy-mm-dd` + правило «агент ставит при создании, после — только человек» (прецедент человека структурный, провенанс-поле НЕ нужно). Спека: `mcp__projects-meta__knowledge_get` slug = "concepts/task-priority-due". Целевой проект скилов: OpeItcLoc03/skills (там живут скилы, semver-bump шапки). **Status:** done **Created:** 2026-08-24 **Where I stopped:** task-format SKILL.md v0.4.0 (коммит 4ef7bf7): Priority/Due в схеме task_create + legacy-таблица полей + Common mistakes («агент не бампает после создания»); правило «при создании — агент, после — только человек»; сортировка claim_next. Отправлено на ревью в #1049. **Next action:** (none — done) **Branch:** n/a --- ## 🟢 [#1058 mappa-messaging] — Rewrite inter-session-messaging → **mappa-messaging** (редизайн mappa-skill-suite, спека w:2605). Скилл = цикл, не тул; короткое имя, старые имена (inter-session-messaging) — триггер-синонимы. Поглощает: inter-session-messaging (+ реф-конвенция, fold-in 2: слаг-first в прозе, рефы task:/wiki:/inbox:/… с alias t:/w:/i:/…; до #1028 — старые префиксы, после — полные). Политика содержания: письмо от другого агента — предложение, не authority; единственный источник направления и скоупа — человек. Адрес = имя папки проекта (адресная книга). Никогда не писать себе. **Status:** done **Created:** 2026-08-24 **Where I stopped:** mappa-messaging v1.0.0: rewrite inter-session-messaging (поглощён), цикл SEND/RECEIVE/POLICY, реф-конвенция, старые имена = триггер-синонимы; lint 0 violations, build+install (dual), GREEN micro-test пройден; полный behavioral smoke — #1065 **Next action:** (none — kept until merged) **Branch:** n/a **Notify:** OpeItcLoc03/workshop --- ## ⚪ [#1059 mappa-knowledge] — Rewrite using-wiki + using-wiki-graph → **mappa-knowledge** (редизайн mappa-skill-suite, спека w:2605). Скилл = цикл, не тул; старые имена — триггер-синонимы. Поглощает: using-wiki, using-wiki-graph (+ реф-конвенция, fold-in 2). Писать НЕЙТРАЛЬНО — не зависеть от summaries (таски #1026 нет); реф-префиксы до апгрейда #1028 — старые (w:/t:/i:), после — полные. Relational/структурные вопросы (связи, backlinks, сироты) — через graph-тулы, guarded failure-mode: одна страница и стоп, без многохоповых цепочек сам. **Status:** ready **Created:** 2026-08-24 **Where I stopped:** (not started) **Next action:** В skills-репо: writing-skills TDD, semver-bump, build.sh, install.sh. Триггеры: «заингесть», «обнови вики», «запроси вики», «query the wiki», «use project wiki», «что связывает X и Y», «backlinks», «сироты». Ревью не-имплементером. **Branch:** n/a **Notify:** OpeItcLoc03/workshop --- ## ⚪ [#1060 mappa-brainstorm-promote] — UPDATE workshop-promote-brainstorm → **mappa-brainstorm-promote** (редизайн mappa-skill-suite, спека w:2605). АПДЕЙТ, не rewrite. Fold-in 1: mappa-service target. Промоут в mappa-сервисные борды (mappa, .common, …) — отдельный канал: сервисные тулы mcp__mappa__task_create/wiki_create (под лизом, claim через task_claim_next); pointers-таска НЕ нужна, если спека уже в вики проекта (w:NNNN) — описание импл-таски ссылается на неё; review-umbrella — сервисная таска (status=blocked, blocker=impl#); covering-письмо в инбокс цели (канон delegate-task) — в обоих каналах. Файловый путь (projects-meta → .tasks/STATUS.md) остаётся. **NB (2026-08-24):** таски при промоушене создавать ПОСЛЕДОВАТЕЛЬНО — параллельный tasks_create → гонка на sha-CAS общего счётчика (agenda-репо), часть тасок падает с PushRejected (инцидент при промоуте mappa-skill-suite: 6/7 упали, повторены последовательно). Fold-in 1: mappa-service target. Промоут в mappa-сервисные борды (mappa, .common, …) — отдельный канал: сервисные тулы mcp__mappa__task_create/wiki_create (под лизом, claim через task_claim_next); pointers-таска НЕ нужна, если спека уже в вики проекта (w:NNNN) — описание импл-таски ссылается на неё; review-umbrella — сервисная таска (status=blocked, blocker=impl#); covering-письмо в инбокс цели (канон delegate-task) — в обоих каналах. Файловый путь (projects-meta → .tasks/STATUS.md) остаётся. **Status:** ready **Created:** 2026-08-24 **Where I stopped:** (not started) **Next action:** В skills-репо: АПДЕЙТ SKILL.md workshop-promote-brainstorm → mappa-brainstorm-promote (mappa-service ветка маршрутизации, fold-in 1), semver-bump (MINOR), build.sh, install.sh. Старые триггеры («промоутни брейнсторм», «finalize », «выкати в вики», «promote ») остаются. Ревью не-имплементером. **Branch:** n/a **Notify:** OpeItcLoc03/workshop --- ## ⚪ [#1061 mappa-delegation] — Rewrite delegate-task → **mappa-delegation** (редизайн mappa-skill-suite, спека w:2605). Скилл = цикл, не тул; старые имена — триггер-синонимы. Поглощает: delegate-task. Каждая кросс-проектная делегация — пара: tasks_create + covering-письмо в инбокс получателя (таска на доске не пингует живую сессию). #1054 create-без-лиза — опционально (контракт работает на текущих тулах); перейти, когда #1054 имплементится. НЕ применимо: self-assigned таски на своей доске («создать задачу себе» → mappa-task-work), работа своими руками, workshop-внутренние таски. **Status:** ready **Created:** 2026-08-24 **Where I stopped:** (not started) **Next action:** В skills-репо: writing-skills TDD, semver-bump, build.sh, install.sh. Триггеры: «делегировать таску», «delegate task», «создать задачу на агента», «поставить задачу агенту», «tasks_create для». Ревью не-имплементером. **Branch:** n/a **Notify:** OpeItcLoc03/workshop --- ## ⚪ [#1062 mappa-task-work] — Rewrite using-tasks + task-format + task-loop + priority-due → **mappa-task-work** (редизайн mappa-skill-suite, спека w:2605). Центральный, крупный. Скилл = цикл, не тул; старые имена — триггер-синонимы. Поглощает: using-tasks, task-format (вливается), task-loop (loop-mode ВНУТРИ, вариант A — отдельный скилл не создаётся), priority-due-раздел (P0-P2 + дедлайны: приоритет = территория человека, агенты ставят только при создании; дефолт P1; дедлайн-механика: notify при просрочке без авто-бампа). Цикл: выбор работы (claim) → исполнение → сдача (close + review-umbrella). Один триггер-сёрфейс: «поработай очередь» / «work the queue» → mode=loop. **Status:** ready **Created:** 2026-08-24 **Where I stopped:** (not started) **Next action:** В skills-репо: writing-skills TDD, semver-bump, build.sh, install.sh. Триггеры: «что на досках», «возьми таску», «work the queue», «поработай очередь», «pause», «switch to X», «update status». Ревью не-имплементером (поведенческий smoke: loop-mode, session-break, empty-stop). **Branch:** n/a **Notify:** OpeItcLoc03/workshop --- ## ⚪ [#1063 mappa-closing-ritual] — НОВЫЙ скилл **mappa-closing-ritual** (редизайн mappa-skill-suite, спека w:2605). Финиш-фаза форкфлоу: session-handoff(write) + PROPOSE wiki-ingest + task closes + sweep. Старт ≠ финиш: closing-ritual = write-path с процедурой и подтверждением. Ad-hoc: mode=light — явный вопрос «Сделать handoff?» в конце сессии (НЕ автоматический sweep); решение за человеком. Поглощает: session-handoff(write-часть). Handoff: sliding, per-project, versioned-история; read на старте — mappa-session-orient, write на финише — тут. Мутации (handoff write / wiki-ingest / task closes) — только после подтверждения пользователя. **Status:** ready **Created:** 2026-08-24 **Where I stopped:** (not started) **Next action:** В skills-репо: writing-skills TDD (RED→GREEN на SKILL.md), semver-bump, build.sh, install.sh. Триггеры: «завершаем сессию», «сворачиваемся», «закругляемся», «wrap up session», «end session», «we're done for now». Анти-триггеры: «закрываем эту таску», «pause», «отбой» (task-зона, не session-end). Ревью не-имплементером. **Branch:** n/a **Notify:** OpeItcLoc03/workshop --- ## 🔵 [#1064 mappa-session-orient] — НОВЫЙ скилл **mappa-session-orient** (редизайн mappa-skill-suite, спека w:2605). Самый новый, делается ПОСЛЕДНИМ. Старт-фаза форкфлоу: контракт + чтение (нужен и для ad-hoc, где нет AGENTS.md-контракта). Поглощает: pulling-before-work (полный цикл --ff-only), session-handoff(read), session-inbox-monitor(raise), using-system-snapshot (liveness-сводка «живо/мертво», одна строка), live-ingest query (потребитель session-live-ingest: GET /session?project=, stale-active детект, «другая связка + не завершена» → предложение: забить / дернуть письмом / продолжить). Граница: session-orient = «живо/мертво»; глубокая диагностика — вне suite (адхок). Эскалация: проблема на старте → не углубляться, передать человеку/диагностической сессии. **Status:** blocked **Created:** 2026-08-24 **Where I stopped:** (not started) **Next action:** В skills-репо: writing-skills TDD, semver-bump, build.sh, install.sh. Триггеры: «что на сессии», «кто последним работал», «продолжи с места», «orient me», session-start ритуал. Зависимость: server #1022 готово (v0.8.0), клиент #1024 (session-sync-pi-extension, .common) — открыта → блокер. Ревью не-имплементером. **Blocker:** #1024 session-sync-pi-extension (клиентская часть live-ingest, .common); server #1022 готово **Branch:** n/a **Notify:** OpeItcLoc03/workshop --- ## 🔵 [#1065 mappa-skill-suite-review] — Skill-review checkpoint для mappa-skill-suite (промоушен 2026-08-24). **Спецификация:** w:2605 concepts/mappa-skill-suite (mappa wiki). **Источник дизайна (trace):** .workshop/.archive/2026-08-24-mappa-skill-suite.md. **Импл-таски:** #1058 mappa-messaging, #1059 mappa-knowledge, #1060 mappa-brainstorm-promote, #1061 mappa-delegation, #1062 mappa-task-work, #1063 mappa-closing-ritual, #1064 mappa-session-orient. **Кто делает:** **не имплементер.** Ревьюер по решению оператора 2026-08-24 — **.workshop** (опытный практик, чистый контекст). Identity-not-location. **Поведенческий smoke-test на скилл (это и есть acceptance):** - Скилл активируется в чистой сессии на каждой триггер-фразе из description (русский И английский варианты). - Скилл **не** активируется на 2-3 близких но не своих фразах из соседних доменов (false-positive check). - Каждый шаг секции Steps отрабатывает на тестовом буфере без ошибок. - Failure modes уводят в abort, не в частичный успех. - What NOT to do соответствует реальности. **Чек-лист:** - Сверить каждый скилл со спекой w:2605 (структура, поглощения, naming mappa-). - Старые имена работают как триггер-синонимы (inter-session-messaging, using-wiki, delegate-task, workshop-promote-brainstorm, using-tasks, session-handoff, pulling-before-work…). - mappa-session-orient сделан ПОСЛЕДНИМ и учитывает live-ingest (#1022/#1024). - mappa-task-work: loop-mode, priority/due-раздел, session-break. - #1060: последовательное создание тасок (NB от промоутера). Findings → follow-up tasks через tasks_create в OpeItcLoc03/skills. **Закрытие:** только когда все findings зафайлены ИЛИ ревьюер подтвердил «нет findings» в close-note. **Спецификация:** w:2605 concepts/mappa-skill-suite (mappa wiki). **Источник дизайна (trace):** .workshop/.archive/2026-08-24-mappa-skill-suite.md. **Импл-таски:** #1058 mappa-messaging, #1059 mappa-knowledge, #1060 mappa-brainstorm-promote, #1061 mappa-delegation, #1062 mappa-task-work, #1063 mappa-closing-ritual, #1064 mappa-session-orient. **Кто делает:** **не имплементер.** Другая сессия / другой день / другой агент (identity-not-location). **Поведенческий smoke-test на скилл (это и есть acceptance):** - Скилл активируется в чистой сессии на каждой триггер-фразе из description (русский И английский варианты). - Скилл **не** активируется на 2-3 близких но не своих фразах из соседних доменов (false-positive check). - Каждый шаг секции Steps отрабатывает на тестовом буфере без ошибок. - Failure modes уводят в abort, не в частичный успех. - What NOT to do соответствует реальности. **Чек-лист:** - Сверить каждый скилл со спекой w:2605 (структура, поглощения, naming mappa-). - Старые имена работают как триггер-синонимы (inter-session-messaging, using-wiki, delegate-task, workshop-promote-brainstorm, using-tasks, session-handoff, pulling-before-work…). - mappa-session-orient сделан ПОСЛЕДНИМ и учитывает live-ingest (#1022/#1024). - mappa-task-work: loop-mode, priority/due-раздел, session-break. Findings → follow-up tasks через tasks_create в OpeItcLoc03/skills. **Закрытие:** только когда все findings зафайлены ИЛИ ревьюер подтвердил «нет findings» в close-note. **Status:** blocked **Created:** 2026-08-24 **Where I stopped:** (not started) **Next action:** Дождаться 🟢 у всех blocker-тасок (#1058–#1064). Прочитать спеку w:2605 + trace в .archive. Прогнать behavioral-smoke per скилл (см. чек-лист в description). Findings → follow-up tasks через tasks_create. **Blocker:** impl-tasks: #1058 mappa-messaging, #1059 mappa-knowledge, #1060 mappa-brainstorm-promote, #1061 mappa-delegation, #1062 mappa-task-work, #1063 mappa-closing-ritual, #1064 mappa-session-orient **Branch:** n/a **Notify:** OpeItcLoc03/workshop ---