Commit the OpenSpec scaffold #39

Open
opened 2026-08-10 13:10:09 +00:00 by claude · 0 comments
Collaborator

Summary

Завести openspec/ под контроль версий. Сейчас каталог untracked — git status
показывает ?? openspec/.

Spec

none

Motivation

Worktree создаётся от коммита. Всё, чего нет в git, в него не попадает.

Рабочий процесс, ради которого openspec и внедряется, начинается с создания
worktree под каждый change (gate-openspec-changes-onto-a-worktree). В свежем
worktree не окажется ни openspec/config.yaml, ни openspec/schemas/, ни
openspec/specs/ — то есть openspec status и openspec instructions не
найдут ни схемы, ни проектного контекста, и propose упадёт на первом же
артефакте.

Вторая причина независима от worktree: openspec/specs/ — это спецификация
проекта, а openspec/changes/archive/ — история принятых решений. Обоим место
в истории репозитория, а не в рабочем каталоге одной машины. Это ровно
противоположно tmp/issues/ и tmp/wiki/, которые gitignored осознанно: там
кэш, здесь источник.

Acceptance criteria

  • git ls-files openspec/ печатает непустой список
  • git status --porcelain openspec/ пуст после коммита
  • .gitignore не исключает openspec/ ни одним правилом
  • в worktree, созданном git worktree add, openspec status --json
    отрабатывает и видит схему проекта
  • openspec/changes/archive/ не исключён из коммита

Constraints

  • Не входит в объём: переносить tmp/issues/ или tmp/wiki/ в git. Они
    gitignored по решению, зафиксированному в AGENTS.md, и это решение не
    пересматривается.
  • Не входит в объём: содержимое openspec/config.yaml — его заполняет
    state-the-repo-layers-as-openspec-context.
<!-- tea:id commit-the-openspec-scaffold --> ## Summary Завести `openspec/` под контроль версий. Сейчас каталог untracked — `git status` показывает `?? openspec/`. ## Spec none ## Motivation Worktree создаётся от коммита. Всё, чего нет в git, в него не попадает. Рабочий процесс, ради которого openspec и внедряется, начинается с создания worktree под каждый change (`gate-openspec-changes-onto-a-worktree`). В свежем worktree не окажется ни `openspec/config.yaml`, ни `openspec/schemas/`, ни `openspec/specs/` — то есть `openspec status` и `openspec instructions` не найдут ни схемы, ни проектного контекста, и propose упадёт на первом же артефакте. Вторая причина независима от worktree: `openspec/specs/` — это спецификация проекта, а `openspec/changes/archive/` — история принятых решений. Обоим место в истории репозитория, а не в рабочем каталоге одной машины. Это ровно противоположно `tmp/issues/` и `tmp/wiki/`, которые gitignored осознанно: там кэш, здесь источник. ## Acceptance criteria - [ ] `git ls-files openspec/` печатает непустой список - [ ] `git status --porcelain openspec/` пуст после коммита - [ ] `.gitignore` не исключает `openspec/` ни одним правилом - [ ] в worktree, созданном `git worktree add`, `openspec status --json` отрабатывает и видит схему проекта - [ ] `openspec/changes/archive/` не исключён из коммита ## Constraints - Не входит в объём: переносить `tmp/issues/` или `tmp/wiki/` в git. Они gitignored по решению, зафиксированному в `AGENTS.md`, и это решение не пересматривается. - Не входит в объём: содержимое `openspec/config.yaml` — его заполняет `state-the-repo-layers-as-openspec-context`.
claude added this to the openspec integration milestone 2026-08-10 13:10:09 +00:00
claude added the
type
task
comp/openspec
labels 2026-08-10 13:10:09 +00:00
claude added a new dependency 2026-08-10 13:10:10 +00:00
claude added a new dependency 2026-08-10 13:10:11 +00:00
claude added a new dependency 2026-08-10 13:10:11 +00:00
claude added a new dependency 2026-08-10 13:10:12 +00:00
Sign in to join this conversation.