33 Commits

Author SHA1 Message Date
Andrey Epifancev
c309ae2d96 docs: D-1 — вендорено 2 скрипта, check-dsh-compat заменён самопроверкой (M-1, #69) 2026-10-25 01:04:18 +04:00
Andrey Epifancev
c0ba694c08 docs: BREAKING-преамбула без legacy-оговорки, Layout sync/ и новые файлы бандла (T5.1-T5.2, #69) 2026-10-25 00:58:30 +04:00
Andrey Epifancev
ce464beeb5 docs: статусы design/proposal, план — SKIP 7 файлов (T1.3, #69) 2026-10-25 00:53:24 +04:00
Andrey Epifancev
91e2b9e2b5 docs(openspec): дельта dsh-install под sync-по-пину и самопроверку + хвосты T1.3/T1.9/T2.7/T2.8/T4.3 (#69) 2026-10-25 00:51:42 +04:00
Andrey Epifancev
cc0c22f6e0 docs: план dsh-port-v2 — 5 задач, вариант C (#69) 2026-10-24 22:53:47 +04:00
Andrey Epifancev
ae2b55c497 docs(openspec): change dsh-port-v2 — дизайн варианта C, решения владельца (#69) 2026-10-24 22:49:38 +04:00
Andrey Epifancev
bd8024e7a0 docs(openspec): несимметричный вход в образце describe (#52) 2026-10-24 21:49:16 +04:00
Andrey Epifancev
044222d566 chore(openspec): архив change dsh-install-source (#49) 2026-10-24 21:24:39 +04:00
Andrey Epifancev
12f19b1de5 docs(openspec): приёмка установки без ~/.claude (#49) 2026-10-24 21:14:19 +04:00
Andrey Epifancev
60d68464a9 feat(dsh): DSH-owned role paths in installed instructions (#49) 2026-10-24 21:11:31 +04:00
Andrey Epifancev
05178869fb feat(dsh): install superpowers from an explicit source (#49) 2026-10-24 21:10:52 +04:00
Andrey Epifancev
15cc2e38d7 docs(openspec): change dsh-install-source и план (#49) 2026-10-24 21:09:11 +04:00
Andrey Epifancev
7db024ccf5 chore(openspec): archive dsh-openspec (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 20:00:24 +04:00
Andrey Epifancev
6876e4c6c8 docs(openspec): change dsh-openspec, план и видимость скиллов в приёмке (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:44:38 +04:00
Andrey Epifancev
ca3814f62a docs(openspec): результаты приёмки DSH-цикла (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:43:30 +04:00
Andrey Epifancev
3ad378c1dc chore(openspec): archive dsh-sdd (#41)
Change dsh-sdd перенесён в openspec/changes/archive/2026-10-24-dsh-sdd,
дельта dsh-sdd добавлена в openspec/specs/dsh-sdd/spec.md (7 требований).

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 17:57:35 +04:00
Andrey Epifancev
c8b92fae01 docs(dsh): пробный прогон SDD — режимы, дефект и fix-loop (#41)
Три задачи в temp-репозитории: implementer'ы deepseek-flash, все ревью
deepseek-v4-pro. Ревьюер Task 2 независимо нашёл T2.1 (медиана чётной длины
противоречит спеке) и T2.2 (нет теста), fix-раунд 1 → 186575c, скоуп-ре-ревью
APPROVED, финальное ревью ветки APPROVED. Режим 2 (фоновый контроллер, глубина
2) проверен отдельной пробой: вызов subagent из контроллера прошёл.

Артефакты прогона — openspec/changes/dsh-sdd/trial/ (план, спека, брифы,
отчёты, ledger), результаты — design.md. По урокам прогона skill sdd уточнён:
DONE_WITH_CONCERNS при замеченном расхождении, число тестов в плане — ориентир,
повтор при ошибке валидации provider/model.

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 17:49:38 +04:00
Andrey Epifancev
ee0d876f6b docs(dsh): дизайн SDD для DSH — режимы контроллера и маршруты моделей (#41)
Design note и spec delta для фазы #41: два режима контроллера (главная
сессия / фоновый сабагент), асинхронный протокол диспатча и отчётов,
fix-loop, ledger с ## Findings, карта из двух маршрутов моделей.

Основание — измеренные ограничения DSH 0.2.1-rc.3: subagent.maxDepth по
умолчанию 1, у subagent нет provider/model без modelSelectionSettings,
выбор модели работает сразу только в workflow.agent().

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 16:59:53 +04:00
76e2d9e884 chore(openspec): архив harness-retro, спека harness-retro в openspec/specs, hook-guards обновлена (#29)
openspec archive harness-retro: change → openspec/changes/archive/2026-10-24-harness-retro/; openspec/specs/harness-retro/spec.md (22 требования), hook-guards — MODIFIED «Регрессионный корпус хуков»; известные ошибки корпуса вынесены в отдельное требование, чтобы текст требования был ≤ 500 символов (validate --strict).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 10:11:55 +04:00
132504520b feat(retro): «сделай сам» — признак поправки владельца (H-1, PR #30)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 10:07:26 +04:00
3d2ce3f41d fix(retro): финальное ревью — сабагенты, период по записям, разбор Bash, redact до обрезки, --from (#29)
- C-1: транскрипты сабагентов (<сессия>/subagents/*.jsonl) вливаются в
  сессию-родителя — ходы, токены, инструменты, codegraph, блокировки,
  отказы; промпты, роль, стартовый контекст — только из основного.
  hook_blocks_export.py выгружает их блокировки с сессией-родителем.
- I-7: период режется по меткам времени записей; сессия на стыке
  делится между ретро, стартовый контекст — если первый ход в периоде.
- I-1: простые команды Bash — shlex с punctuation_chars, «|» в кавычках
  команду не делит. I-2: правило src/ ловит и сам каталог src.
- I-3: clip() — redact до обрезки (кандидаты, выгрузка), роль — redact.
- I-4: без --since период берётся из существующего --out; --from рисует
  «Цифры» из сохранённого среза. SKILL.md передаёт период явно.
- I-5: выгрузка ретро без разметки — сборка корпуса падает.
- I-6: сводка компакции — не промпт; «перечитай» — побуждение перечитать.
- 2026-10-11.metrics.json: несравнимое помечено (без сабагентов, широкий
  «перечитай»). Спека и design.md (Decisions) обновлены.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 01:59:41 +04:00
e5c00a5442 docs(spec): сценарий «SDD workspace активной задачи», требование хвостов ≤ 500 символов (#29)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 01:25:48 +04:00
4bbf6ebb3a feat(retro): retro_leftovers.py — хвосты чеклиста закрытия по состоянию репозиториев (#29)
SDD workspace в worktree активной задачи хвостом не считается (O-19, живой прогон).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 01:25:14 +04:00
dde575673d feat(retro): retro_metrics.py — срез метрик, кандидаты в поправки владельца, сравнение с прошлым ретро (#29)
Синтетические сообщения об ошибке API (model <synthetic>) не считаются ходом модели (O-18, живой прогон).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 01:21:53 +04:00
60d31c25db docs(plan): план /harness-retro — 4 задачи; design: подсчёт по message.id, отказы владельца, дедупликация сессий (#29)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 01:10:10 +04:00
b77776849e docs(spec): /harness-retro — срез метрик, поправки владельца, хвосты закрытия, корпус по сегментам (#29)
OpenSpec change harness-retro: proposal, specs (harness-retro — новая
capability; hook-guards — MODIFIED «Регрессионный корпус хуков»: сегменты
и known), design с Decisions made without discussion. По итогам
brainstorming 24.10.2026: черновик ретро, срез одного проекта, запуск из
репозитория обвязки, разметка блокировок агентом в корпус, хвосты по
текущему состоянию, поправки владельца по процессу, подход A.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:47:00 +04:00
00b496d6da feat: worktree в <repo>/.claude/worktrees/ через EnterWorktree, вход без подтверждения (#25, 0.5.1)
С Claude Code 2.1.206 вход в worktree вне .claude/worktrees/ спрашивает
подтверждение при любых allow-правилах. EnterWorktree с именем создаёт
worktree в <repo>/.claude/worktrees/<slug> на ветке worktree-<slug> от
origin/main и входит без вопроса; ветка переименовывается в
feat/<id>-<slug>.

- roles/dev.md: «Исполнение» — EnterWorktree с именем; п. 1 закрытия —
  archive-<id>; п. 4 — ExitWorktree (keep) снимает блокировку сессии,
  затем git worktree remove и branch -D.
- .claude/worktrees/ в .gitignore: adopt-project.sh, project-template,
  этот репозиторий; doctor.sh — WARN, если не игнорируется.
- Спека hook-guards: сценарии «worktree внутри репозитория» для
  guard-main и require-plan; тесты закрепляют уже верное поведение.
- HARNESS.md (шаг 4, п. 4, подтверждения), SKILL.md, CHANGELOG 0.5.1,
  CLAUDE.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:20:35 +04:00
6b7a073f6f chore(openspec): архив hooks-write-target, спека hook-guards в openspec/specs (#6)
openspec archive hooks-write-target: change перенесён в
openspec/changes/archive/2026-10-16-hooks-write-target/, дельта применена —
openspec/specs/hook-guards/spec.md (20 требований), validate --strict проходит.

Ссылки на путь спеки в harness_target.py, hook_cases_build.py и CHANGELOG
переведены на openspec/specs/hook-guards/spec.md; в CLAUDE.md «Текущая работа»
B1+B2 переведены в «Сделано» (PR #12, follow-ups — #13).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 10:16:06 +04:00
2f96a13861 fix(hooks): финальное ревью — checkout main, префиксы с опциями, ссылки, литеральные пути, push текущей ветки (#6)
I-1, I-2, M-3, M-4, M-5 (переоценены в Important), M-8; спека и design.md синхронизированы (M-7).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 02:24:07 +04:00
a2170232d9 docs(plan): план hooks-write-target — 5 задач, код из проверенного прототипа (#6)
Сценарий спеки: запись через симлинк, указывающий в main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 01:52:36 +04:00
7e4b5cfec9 docs(spec): hooks-write-target — смена ветки внутри команды, факты корпуса (O-1) (#6)
Требование «Смена ветки внутри команды» (c072, поток архива отдельным PR), сценарий BSD sed -i ''. design: 76 настоящих блокировок из 126, c083 — файл памяти, собственный лексер, один hook_corpus.py, фильтр retro_blocks.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 01:47:37 +04:00
079d0a44bc docs(spec): change hooks-write-target — хуки решают по цели записи (#6)
proposal, specs/hook-guards (16 требований), design с Decisions made without discussion. B1, B2, решение владельца 1; RT-1, RT-2, RT-6, RT-7.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 23:57:07 +04:00
Andrey Epifancev
d2496aab33 chore: claude harness bootstrap 2026-10-11 21:01:12 +04:00