655 lines
75 KiB
Markdown
655 lines
75 KiB
Markdown
# 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 `<ctx.cwd>/.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
|
||
|
||
|
||
|
||
<!--
|
||
Canonical layout. One block per task. Per-task deep context lives in
|
||
.tasks/<task-slug>.md (created by using-tasks when a task becomes active
|
||
or paused). Historical Done entries dropped — git log is the history.
|
||
|
||
Status legend:
|
||
🔴 Active — only one at a time
|
||
🟡 Paused — in progress, resumable
|
||
⚪ Ready — defined, not started
|
||
🟢 Done — kept until merged
|
||
🔵 Blocked — waiting on external input
|
||
-->
|
||
|
||
## ⚪ [#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
|
||
<!-- created-by: vitya@DESKTOP / from: modulair-wiki ingest session / 2026-05-31 -->
|
||
<!-- re-scoped: vitya@.admin-exec / 2026-06-08 / target moved claude-skills stub → OpeItcLoc03/yt-tools plugin (agent finding during always-on dry-run) -->
|
||
|
||
---
|
||
|
||
## 🟡 [#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/<name>.skill`, unzips into a temp dir, and `diff -r` against `skills/<name>/`. 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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .meeting-room / 2026-05-06T20:21:57.210Z -->
|
||
|
||
---
|
||
|
||
## ⚪ [#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: <category>]` 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: <visual|spike|oneshot|wrapper>] 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: <name>: was <literal>; is <literal>; reason: <Z>]
|
||
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 <impl-files> && git commit (test-only) && git add <impl-files> && 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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .meeting-room / 2026-05-07T05:10:28.610Z -->
|
||
|
||
---
|
||
|
||
## ⚪ [#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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: meeting-room / 2026-05-07T09:43:23.919Z -->
|
||
|
||
---
|
||
|
||
## ⚪ [#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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-05-27T06:51:20.306Z -->
|
||
|
||
---
|
||
|
||
## ⚪ [#255 meta-host-routing-test-trigger] — Прогнать триггер-фразы `meta-host-routing` из description на тестовом сценарии.
|
||
|
||
**Должен активироваться:** «project not in cache» от projects-meta; промоушен/таски для проекта с github-remote; «заведи таски в <github-проект>», «промоутни <github-проект>».
|
||
**НЕ должен (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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-05-27T06:51:35.089Z -->
|
||
|
||
---
|
||
|
||
## ⚪ [#336 skill-using-system-snapshot] — ## Goal
|
||
Создать скил `using-system-snapshot` в `claude-skills`.
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-06-09T13:44:08.725Z / note: Shipped skills/using-system-snapshot/SKILL.md v0.1.0 (commit 069b041, NOT pushed per runner). Thin read-only wrapper over meta_system_snapshot: 3 trigger groups (what's running / system status / poller alive — RU+EN), explicit no-claim-without-call rule, 3-line output format (poller / docker / tasks), liveness split (poller+docker live, tasks cached), scope-defers to using-vds-ops + using-projects-meta. Dependency documented (Prerequisites → setup-projects-meta). Output shape verified live. 3/3 acceptance met. Wiki concept page + index + log. TDD N/A (markdown); behavioral smoke-test = paired -review task. -->
|
||
|
||
## Назначение
|
||
Заменить разрозненные 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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-06-09T11:01:41.414Z -->
|
||
|
||
---
|
||
|
||
## ⚪ [#335 delegate-task-review-weight-inherit] — Исправить `delegate-task` скил: при создании парной review-таски (Step 5) наследовать `weight` от impl-таски.
|
||
|
||
**Проблема:** review-таски создаются через `tasks_create(status=blocked, blocker=<impl-slug>)` без `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
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-06-09T16:55:13.755Z / note: переди `origin/master`. Дополнительного коммита не требуется.
|
||
|
||
**Допущение (low-stakes, фиксирую для аудита):** я не стал создавать новый коммит-дубликат поверх `fedb6fc` ради «нового SHA» и не закрывал таску на доске через `tasks_close` — закрытие/reconcile оставляю runner'у после доставки коммита. Альтернатива, которую отверг: сделать пустой/переоформляющий коммит — отверг как фабрикацию работы. -->
|
||
|
||
## Обязательные скилы — вызвать до начала работы
|
||
|
||
- 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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-06-09T14:11:55.964Z -->
|
||
|
||
---
|
||
|
||
## ⚪ [#337 using-markitdown-cli-rewrite] — Переписать `skills/using-markitdown/SKILL.md`: заменить все инструкции по вызову `mcp__markitdown__*` тулов на вызов CLI `markitdown <path|url>` (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)
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-06-09T17:48:42.039Z / note: n that loads the MCP. A full decommission would deregister it — flagged as a recommended follow-up in the concept page.
|
||
- **Rebuilt the `dist/` artifact** (not explicitly asked) to keep the committed repo internally consistent — low-stakes, reversible. Did **not** run `install.ps1` or touch `hermes/mapping.yaml` (separate baseline tasks per repo convention; PATCH update only needs reload-plugins). -->
|
||
|
||
## Обязательные скилы — вызвать до начала работы
|
||
|
||
- 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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-06-09T17:43:55.116Z -->
|
||
|
||
---
|
||
|
||
## 🔵 [#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 пине.** Шаблоны: `<username>.\{{USER}}</username>` + `<allowservicelogonright>` (схема winsw v3). Пин — v2.12.0, молча игнорит незнакомые элементы → служба падает на LocalSystem без ошибки. Эталон из `sample-allOptions.xml` v2.12.0: `<domain>`+`<user>`+`<allowservicelogon>`. Фикс: коммит 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 пине.** Шаблоны использовали `<username>.\{{USER}}</username>` + `<allowservicelogonright>` — это схема winsw **v3**. Пин — v2.12.0, который **молча игнорит** незнакомые элементы → служба падает на **LocalSystem** (без ошибки!). Эталон из `sample-allOptions.xml` v2.12.0: `<domain>` + `<user>` + `<allowservicelogon>`. Фикс в 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` не находился. На этой машине добавлен `<env USERPROFILE>`/`<env HOME>` в РЕНДЕРЕННЫЕ 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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-06-18T08:12:28.107Z -->
|
||
|
||
---
|
||
|
||
## 🟢 [#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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-08-12T09:58:08.312Z -->
|
||
<!-- closed-by: pi session 2026-08-12 / dual install target: ~/.claude/skills + ~/.agents/skills, pi settings hack убран, update-skills v0.2.1 -->
|
||
|
||
---
|
||
|
||
## 🟢 [#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
|
||
<!-- created-by: vitya@DESKTOP-NSEF0UK / from: command-index-review / 2026-08-12 -->
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-08-12T17:26:16.506Z / note: F1/F2 закрыты: README.md + README.ru.md — строка command-index в провенанс-таблице (author: ours, идея 3/18); стейл-заметка про install.ps1 («not yet implemented») исправлена — install.ps1 существует. Commit 32979fb. -->
|
||
|
||
---
|
||
|
||
## 🟢 [#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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-08-24T15:21:45.809Z -->
|
||
|
||
---
|
||
|
||
## 🟢 [#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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-08-24T18:48:44.691Z -->
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-08-24T19:40:19.664Z / note: mappa-messaging v1.0.0: rewrite inter-session-messaging (поглощён), цикл SEND/RECEIVE/POLICY, реф-конвенция, старые имена = триггер-синонимы; lint 0 violations, build+install (dual), GREEN micro-test пройден; полный behavioral smoke — #1065 -->
|
||
|
||
---
|
||
|
||
## 🟢 [#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:** done
|
||
**Created:** 2026-08-24
|
||
**Where I stopped:** mappa-knowledge v1.0.0: слияние using-wiki + using-wiki-graph (оба поглощены), цикл ingest/query/lint + граф-слой (graph_*, guarded failure-mode), старые имена = триггер-синонимы; lint 0 violations, build+install (dual), GREEN micro-test (реляционный вопрос → graph_path) пройден; полный behavioral smoke — #1065
|
||
**Next action:** (none — kept until merged)
|
||
**Branch:** n/a
|
||
**Notify:** OpeItcLoc03/workshop
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-08-24T18:48:54.785Z -->
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-08-24T19:42:49.402Z / note: mappa-knowledge v1.0.0: слияние using-wiki + using-wiki-graph (оба поглощены), цикл ingest/query/lint + граф-слой (graph_*, guarded failure-mode), старые имена = триггер-синонимы; lint 0 violations, build+install (dual), GREEN micro-test (реляционный вопрос → graph_path) пройден; полный behavioral smoke — #1065 -->
|
||
|
||
---
|
||
|
||
## 🟢 [#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:** done
|
||
**Created:** 2026-08-24
|
||
**Where I stopped:** mappa-brainstorm-promote v1.2.0 (UPDATE workshop-promote-brainstorm, старое имя = триггер-синоним): mappa-service channel (fold-in 1 — лиз, wiki_create, task_create последовательно, без pointers если спека в вики w:NNNN, сервисная review-umbrella, covering-письмо); NB последовательности тасок (гонка sha-CAS); file channel сохранён; lint 0 violations, build+install, GREEN micro-test (service channel) пройден; полный smoke — #1065
|
||
**Next action:** (none — kept until merged)
|
||
**Branch:** n/a
|
||
**Notify:** OpeItcLoc03/workshop
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-08-24T18:49:01.430Z -->
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-08-24T19:45:55.665Z / note: mappa-brainstorm-promote v1.2.0 (UPDATE workshop-promote-brainstorm, старое имя = триггер-синоним): mappa-service channel (fold-in 1 — лиз, wiki_create, task_create последовательно, без pointers если спека в вики w:NNNN, сервисная review-umbrella, covering-письмо); NB последовательности тасок (гонка sha-CAS); file channel сохранён; lint 0 violations, build+install, GREEN micro-test (service channel) пройден; полный smoke — #1065 -->
|
||
|
||
---
|
||
|
||
## 🟢 [#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:** done
|
||
**Created:** 2026-08-24
|
||
**Where I stopped:** mappa-delegation v1.0.0: rewrite delegate-task (поглощён, имя = триггер-синоним), цикл pre-flight→шаблон→preview→confirm→covering-письмо→review-umbrella→downstream; suite-ссылки (mappa-task-work/mappa-messaging/mappa-knowledge); нота #1054 (create-без-лиза опционально); lint 0 violations, build+install, GREEN micro-test (task+letter пара) пройден; полный smoke — #1065
|
||
**Next action:** (none — kept until merged)
|
||
**Branch:** n/a
|
||
**Notify:** OpeItcLoc03/workshop
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-08-24T18:49:07.098Z -->
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-08-24T19:47:21.365Z / note: mappa-delegation v1.0.0: rewrite delegate-task (поглощён, имя = триггер-синоним), цикл pre-flight→шаблон→preview→confirm→covering-письмо→review-umbrella→downstream; suite-ссылки (mappa-task-work/mappa-messaging/mappa-knowledge); нота #1054 (create-без-лиза опционально); lint 0 violations, build+install, GREEN micro-test (task+letter пара) пройден; полный smoke — #1065 -->
|
||
|
||
---
|
||
|
||
## 🟢 [#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:** done
|
||
**Created:** 2026-08-24
|
||
**Where I stopped:** mappa-task-work v1.0.0: слияние using-tasks + task-format + task-loop + priority-due (все поглощены, имена = триггер-синонимы); центральный цикл (ориентация→claim→исполнение→сдача+review-umbrella), loop-mode внутри (пустая очередь = стоп, session_break, consult gate), priority/due раздел (территория человека, дефолт P1, overdue notify без бампа); lint 0 violations, build+install, GREEN micro-test (loop-mode) пройден; полный smoke — #1065
|
||
**Next action:** (none — kept until merged)
|
||
**Branch:** n/a
|
||
**Notify:** OpeItcLoc03/workshop
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-08-24T18:49:12.916Z -->
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-08-24T19:49:03.642Z / note: mappa-task-work v1.0.0: слияние using-tasks + task-format + task-loop + priority-due (все поглощены, имена = триггер-синонимы); центральный цикл (ориентация→claim→исполнение→сдача+review-umbrella), loop-mode внутри (пустая очередь = стоп, session_break, consult gate), priority/due раздел (территория человека, дефолт P1, overdue notify без бампа); lint 0 violations, build+install, GREEN micro-test (loop-mode) пройден; полный smoke — #1065 -->
|
||
|
||
---
|
||
|
||
## 🟢 [#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:** done
|
||
**Created:** 2026-08-24
|
||
**Where I stopped:** mappa-closing-ritual v1.0.0 (НОВЫЙ): финиш-фаза — handoff write (h:N, versioned) + PROPOSE wiki-ingest + PROPOSE task closes, confirm-gated (мутации только после «да»); mode=light для ad-hoc (явный вопрос «Сделать handoff?», без авто-sweep); поглощает session-handoff write-часть (read — за #1064); lint 0 violations, build+install, GREEN micro-test (полный ритуал + mode=light) пройден; полный smoke — #1065
|
||
**Next action:** (none — kept until merged)
|
||
**Branch:** n/a
|
||
**Notify:** OpeItcLoc03/workshop
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-08-24T18:49:18.719Z -->
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-08-24T19:50:23.077Z / note: mappa-closing-ritual v1.0.0 (НОВЫЙ): финиш-фаза — handoff write (h:N, versioned) + PROPOSE wiki-ingest + PROPOSE task closes, confirm-gated (мутации только после «да»); mode=light для ad-hoc (явный вопрос «Сделать handoff?», без авто-sweep); поглощает session-handoff write-часть (read — за #1064); lint 0 violations, build+install, GREEN micro-test (полный ритуал + mode=light) пройден; полный smoke — #1065 -->
|
||
|
||
---
|
||
|
||
## 🟢 [#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:** done
|
||
**Created:** 2026-08-24
|
||
**Where I stopped:** mappa-session-orient v1.0.0 (НОВЫЙ, последний в suite): старт-ритуал контракт→pull(--ff-only)→handoff-read→inbox-raise→liveness(«живо/мертво»)→live-ingest query (stale-active, другая связка→предложение); граница orient/ops (эскалация, не углубление); поглощает pulling-before-work/session-handoff(read)/session-inbox-monitor/using-system-snapshot; 404-skip для неразвёрнутых /session (E2E шага 6 — за #1055 деплой + #1024 клиент); lint 0 violations, build+install, GREEN micro-test пройден; полный smoke — #1065
|
||
**Next action:** (none — kept until merged)
|
||
**Blocker:** #1024 session-sync-pi-extension (клиентская часть live-ingest, .common); server #1022 готово
|
||
**Branch:** n/a
|
||
**Notify:** OpeItcLoc03/workshop
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-08-24T18:49:25.226Z -->
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-08-24T19:52:24.928Z / note: mappa-session-orient v1.0.0 (НОВЫЙ, последний в suite): старт-ритуал контракт→pull(--ff-only)→handoff-read→inbox-raise→liveness(«живо/мертво»)→live-ingest query (stale-active, другая связка→предложение); граница orient/ops (эскалация, не углубление); поглощает pulling-before-work/session-handoff(read)/session-inbox-monitor/using-system-snapshot; 404-skip для неразвёрнутых /session (E2E шага 6 — за #1055 деплой + #1024 клиент); lint 0 violations, build+install, GREEN micro-test пройден; полный smoke — #1065 -->
|
||
|
||
---
|
||
|
||
## 🟢 [#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:** done
|
||
**Created:** 2026-08-24
|
||
**Where I stopped:** VERDICT: APPROVE-WITH-FINDINGS → все findings зафайлены и исправлены (3 фикса: 78542c0 promote cycle-framing + EN-triggers, 45baadc review-umbrella attribution; 9358a48 review record). Структурно 7/7 скилов против w:2605 (clean-context субагенты, не-имплементер identity). Behavioral smoke: позитив — все старые имена активируют mappa-* скилы; негатив — self-task/«отбой» без ложных срабатываний. Deferred (не findings): live-ingest E2E session-orient шаг 6 после деплоя #1055 + клиента #1024 (404-skip задокументирован); build-hermes unmapped — pre-existing. Suite #1058-1064 closed.
|
||
**Next action:** (none — kept until merged)
|
||
**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
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-08-24T18:49:35.068Z -->
|
||
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-08-24T20:01:11.918Z / note: VERDICT: APPROVE-WITH-FINDINGS → все findings зафайлены и исправлены (3 фикса: 78542c0 promote cycle-framing + EN-triggers, 45baadc review-umbrella attribution; 9358a48 review record). Структурно 7/7 скилов против w:2605 (clean-context субагенты, не-имплементер identity). Behavioral smoke: позитив — все старые имена активируют mappa-* скилы; негатив — self-task/«отбой» без ложных срабатываний. Deferred (не findings): live-ingest E2E session-orient шаг 6 после деплоя #1055 + клиента #1024 (404-skip задокументирован); build-hermes unmapped — pre-existing. Suite #1058-1064 closed. -->
|
||
|
||
---
|
||
|
||
## 🔴 [#1066 mappa-brainstorm-promote-storm-channel] — Апдейт скила mappa-brainstorm-promote (1.5.0 → 1.6.0): миграция с файлового канала на mappa storm-сущности.
|
||
|
||
Скоуп:
|
||
1. Буфер шторма = mappa storm-сущность (type=storm) в ЛЮБОМ проекте (не файл .workshop/.brainstorm/). Скил становится project-agnostic: шторм живёт там, где его ведут, не только в воркшопе.
|
||
2. Промоут mappa-service маршрута через storm_promote (атомарно buffer → wiki-страница + archive, решение 7), не через git mv в .workshop/.archive/.
|
||
3. Зафиксировать «штормы в любом проекте» в mappa-спеке (concepts/mappa) — сейчас скил воркшоп-центричный.
|
||
4. Workshop-meta маршрут: файловые .brainstorm/.archive остаются только для локальной методологии зоны — или мигрируют тоже (решить в таске).
|
||
5. Summary-дисциплина уже в 1.5.0 (9b606f7) — не дублировать.
|
||
|
||
Контекст: решение оператора 2026-08-25 («штормы могут вестись не только в воркшопе»). Связано: wiki:2661 (unified search — storm-карточки), task:1048 (review mappa-wiki-search). Исполнитель — workshop-сессия (оператор: «ты сам сделаешь в новой сессии»).
|
||
|
||
**Status:** active
|
||
**Created:** 2026-08-25
|
||
**Where I stopped:** Импл-часть #1066 завершена: SKILL.md 1.5.0→1.6.0 (буфер = mappa storm-сущность, промоут storm_promote, project-agnostic, выпил файловых каналов, пути ~/projects/skills/), build.sh→dist, install.sh→обе живые диры, коммит d109479; спека concepts/mappa обновлена (решение 26 + глоссарий); review-таска task:1052 (blocked), follow-up MCP-гэп task:1053. Ждёт ревью не-имплементера.
|
||
**Next action:** Ожидание review task:1052 (не имплементер). Импл-часть готова: скил 1.6.0 переписан (storm-канал), build+install сделаны, коммит d109479, спека wiki:4 решение 26, follow-up storm.create/update task:1053.
|
||
**Branch:** n/a
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-08-25T06:00:36.779Z -->
|
||
|
||
---
|