85 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.