5.8 KiB
Raw Blame History

Proposal: DSH port v2 — доставка superpowers вариантом C и чистка трекера

Issue: #69. Источники: ревью обвязки 24.10.2026 (находки RV-1, RV-6, RV-11), 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.