65 KiB
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
⚪ [#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:
-
What NOT to do — новый буллет: «Не пулять в YouTube пачкой запросов. Несколько URL подряд (или metadata+transcript залпом) →
HTTP 429, IP-block на минуты, бьёт оба пути (transcript-api и yt-dlp). Обрабатывай по одному, с паузой ≥25–35с между; при пакете из N URL — последовательно, не параллельно. Если уже словил 429 — cooldown ~3–5 мин перед повтором, проверяй первый запрос и не продолжай залп если он упал.» -
Failure modes — новая строка: симптом
HTTP 429 Too Many Requests/"blocking requests from your IP"→ причина: слишком много запросов подряд (rate-limit, не приватность/регион) → действие: cooldown + по одному с паузами; НЕ retry в цикле без задержки. Отличать отyt-dlp source download failed(это реальная недоступность видео). -
(опц.) 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/<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
⚪ [#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
$1arg, 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/@Ignoreannotations - 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.ps1that delegates if needed. - Tested on a real repo before commit (
booksis a good candidate — it has Jest tests +*.test.jsconvention). - Documented in
claude-skills/.wiki/concepts/tdd-criteria-design.md«See also» section (already linked).
Activation pattern (per-repo):
# 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 с шапкой:
# Archived — Done batch 2026-05
Перемещено из `.tasks/STATUS.md` 2026-05-07 в рамках board-cleanup. Полный список 🟢 done-тасок, шипанутых в апреле-мае 2026.
Полный source — git history `.tasks/STATUS.md` до commit X.
---
И подряд все 🟢-блоки в исходном виде.
- Edit
.tasks/STATUS.md: убрать все 🟢-блоки + соседние---разделители. Header + status legend + 🔴/🟡/⚪/🔵 блоки оставить. 6) Verify:grep '^## ' .tasks/STATUS.md | wc -l— было ~28+, должно остаться число активных (🔴+🟡+⚪+🔵, ожидание ~10-12). 7) Commitmeta(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; «заведи таски в <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
⚪ [#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=<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-таски (но minneeds-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 <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)
Обязательные скилы — вызвать до начала работы
- 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)
-
winsw serviceaccount: v3-схема при v2.12.0 пине. Шаблоны:
<username>.\{{USER}}</username>+<allowservicelogonright>(схема winsw v3). Пин — v2.12.0, молча игнорит незнакомые элементы → служба падает на LocalSystem без ошибки. Эталон изsample-allOptions.xmlv2.12.0:<domain>+<user>+<allowservicelogon>. Фикс: коммит 681fcda. → привести serviceaccount-блок шаблонов к v2-схеме + заметка «схема обязана совпадать с major пина winsw». -
projects-meta-mcp не разворачивается в install-layout. appeals импортит
projects-meta-mcp/dist/...(bare,file:../projects-meta-mcpjunction); 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. -
PORT 3000 — коллизия с дев-портом. Перенесён на 4316 во всех хост-юнитах (winsw/systemd/launchd) + watchdog TASK_RUNNER_URL. Docker-внутренний 3000 не трогали. Коммит 211d662. → дефолт хост-порта 4316.
-
Home-резолюция. Под LocalSystem
os.homedir()→ systemprofile → auth.toml не найден. После фикса run-as-user снимается само. На машине добавлен USERPROFILE/HOME env в рендеренные XML (не в dev-шаблоны). → решить: полагаться на run-as-user ИЛИ добавить env в шаблоны (тест на fresh-машине). -
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
Дефекты (с проверенными фиксами)
-
winsw serviceaccount: v3-схема при v2.12.0 пине. Шаблоны использовали
<username>.\{{USER}}</username>+<allowservicelogonright>— это схема winsw v3. Пин — v2.12.0, который молча игнорит незнакомые элементы → служба падает на LocalSystem (без ошибки!). Эталон изsample-allOptions.xmlv2.12.0:<domain>+<user>+<allowservicelogon>. Фикс в common: коммит 681fcda. → Skill: serviceaccount-блок шаблонов привести к v2-схеме; добавить заметку «схема обязана совпадать с major пина winsw». -
projects-meta-mcp не разворачивается в install-layout. appeals импортит
projects-meta-mcp/dist/...(bare, черезfile:../projects-meta-mcpjunction); 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-дерево). -
PORT 3000 — коллизия с дев-портом. Раннер сидел на 3000 (Next/CRA/Express default) — фоновая autostart-служба не должна его занимать. Перенесён на 4316 (рядом с appeals :4317) во всех хост-юнитах (winsw/systemd/launchd) + watchdog TASK_RUNNER_URL. Docker-внутренний 3000 не трогали. Коммит 211d662. → Skill/README: дефолт хост-порта 4316.
-
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-машине без загруженного профиля). -
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: ready Created: 2026-08-24 Where I stopped: (not started) Next action: В skills-репо (OpeItcLoc03/skills): writing-skills TDD (RED-GREEN-REFACTOR на SKILL.md), semver-bump, build.sh → dist/*.skill, install.sh. Description с триггер-контрактом: «напиши письмо <проекту>», «отправь сообщение», «свяжись с <проектом>», «передай <проекту>», «уведомь <проект>», получение входящего. Ревью не-имплементером (behavioral smoke, umbrella mappa-skill-suite-review). 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.
Кто делает: не имплементер. Другая сессия / другой день / другой агент (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