# Proposal: DSH port v2 — доставка superpowers вариантом C и чистка трекера Issue: #69. Источники: ревью обвязки 24.10.2026 (находки RV-1, RV-6, RV-11), [LayneChai/superpowers-dsh](https://github.com/LayneChai/superpowers-dsh) (MIT), решение владельца 24.10.2026 «вариант C». Статус: **черновик** — ждёт ответов владельца (раздел «Открытые вопросы»). ## Why Доставка superpowers-скиллов в DSH изобретена заново: `dsh/install.sh --skills` копирует клонированный апстрим **без пина и без адаптации текста** (RV-1). Следствия: - установка невоспроизводима: семантика скиллов меняется между релизами obra/superpowers, у нас нет ни пина, ни сверки; - текст скиллов не адаптирован под DSH: внутри остаются `superpowers:`-префиксы и ссылки на чужие harness-ы, которые закрывает только наш runtime-append `dsh-tools.md`; - нет compat-чека против установленного DSH SDK (RV-11): после апгрейда DSH перепроверка ручная; - apстрим уже выпустил v7.0.1, а существующий готовый порт LayneChai/superpowers-dsh пинится на v7.0.0 — зависеть от его каденса значит застрять (замерено 24.10.2026: теги upstream — v7.0.1 свежий); - трекер зарос: 23 открытых issue, 2 открытых PR, 4 worktree, из них 2 парковки без PR; roadmap #48 и хвосты #5/#13/#21/#28/#31 дублируют друг друга. ## What Changes **Вариант C** — взять машинерию готового порта как форк/вендор, но sync гонять самим по своему каденсу: - В `dsh/sync/` вендорятся `scripts/sync-from-upstream.mjs`, `scripts/verify-skills.mjs`, `scripts/check-dsh-compat.mjs` из LayneChai/superpowers-dsh (MIT) с адаптацией путей и transform-ов под наш `dsh-tools.md`. - Пин на тег obra/superpowers (v7.0.1 на момент плана) живёт в репозитории, а не в голове: `DSH_SUPERPOWERS_REF`, переменная в `dsh/install.sh` и в sync-скрипте. #67 (авто-pull unpinned HEAD) отменяется — rejected. - `dsh/install.sh --skills` перестаёт копировать сырой апстрим: fetch пина → прогон sync с ассертами → копирование адаптированного дерева. `--superpowers-from` остаётся для офлайна и разработки. Legacy-фолбэки `~/.claude/*` остаются до #66 и удаляются по нему. - Bootstrap-инъекция `using-superpowers` остаётся в нашем бандле; источник текста — synced-копия `$DSH_HOME/skills` (единая точка, как сейчас). - Compat-чек (решение владельца): **самопроверка бандла внутри DSH** (активация + команда; контракт guard/pre-step/commands/surface) + терминальный verify synced-скиллов в `--check`. Вендорный check-dsh-compat не берём (SDK в asar, терминал всегда SKIPPED). - Ритм: issue на каждый релиз upstream (sync → тесты → PR), самопроверка после каждого апгрейда DSH. **Чистка трекера** (схема на подтверждение, issue #69): - закрыть #48 (заменён #69), #67 (rejected), #47 (решение зафиксировано в design.md); - свести follow-ups #5/#13/#21/#28/#31 в одну сводную issue «Сводка отложенных находок обвязки» (это же закрывает B16); - #43–#46, #59, #62, #63, #66 становятся задачами плана; #63 — кандидат в bounded-задачу до старта плана; - судьба PR #18/#8 и парковок `.wt/guard`, `.wt/aura-design`, `.wt/feature-pane`, `dsh-superpowers-git` — за владельцем. ## Impact - Affected: `dsh/install.sh`, `dsh/sync/` (новое), `dsh/README.md`, `dsh/PORT.md`, `openspec/specs/dsh-install` (дельта), трекер Gitea, бандл (аддитивно: активационный assert + команда самопроверки, существующее поведение не меняется). - CC-сторона хуков — вне скоупа, кроме #63 (bounded-задача до плана, решение владельца 24.10.2026). - Breaking: `--skills` начинает требовать сеть для fetch пина (кроме `--superpowers-from`); #67 отменён. - Риски: см. design.md. ## Открытые вопросы (к владельцу) — решены 24.10.2026 1. ~~Что в DSH-сессии спотыкало сильнее всего~~ — ответ «пока трудно сказать, идёт разработка только самого харнеса» → design.md D-8. 2. ~~Подтверждение схемы чистки трекера~~ — подтверждено («чисти»), выполнено 24.10.2026: #70, закрыты #5/#13/#21/#28/#31/#48/#47/#67, парковки удалены. 3. ~~#63 bounded-задачей до плана~~ — да → design.md D-10.