diff --git a/.gitea/ISSUE_TEMPLATE/bug.md b/.gitea/ISSUE_TEMPLATE/bug.md new file mode 100644 index 0000000..c7edcc9 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/bug.md @@ -0,0 +1,12 @@ +--- +name: Bug Report +about: Неверное поведение +--- +## Проблема и шаги воспроизведения + +## Факт / ожидание + +## Acceptance Criteria +- [ ] + +## Окружение / ссылки (если применимо) diff --git a/.gitea/ISSUE_TEMPLATE/engineering.md b/.gitea/ISSUE_TEMPLATE/engineering.md new file mode 100644 index 0000000..96b826e --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/engineering.md @@ -0,0 +1,10 @@ +--- +name: Engineering Task +about: CI, тесты, документация, процесс и прочее +--- +## Контекст и результат + +## Scope / связанные Issues (если есть) + +## Acceptance Criteria +- [ ] diff --git a/.gitea/ISSUE_TEMPLATE/feature.md b/.gitea/ISSUE_TEMPLATE/feature.md new file mode 100644 index 0000000..b10e51f --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/feature.md @@ -0,0 +1,12 @@ +--- +name: Feature Request +about: Новое наблюдаемое поведение +--- +## Зачем и какой результат + +## Ожидаемое поведение + +## Acceptance Criteria +- [ ] + +## Зависимости / связанные Issues (если есть) diff --git a/.gitea/ISSUE_TEMPLATE/refactor.md b/.gitea/ISSUE_TEMPLATE/refactor.md new file mode 100644 index 0000000..f67cf63 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/refactor.md @@ -0,0 +1,12 @@ +--- +name: Refactoring / Technical Debt +about: Улучшение без нового поведения +--- +## Проблема и результат + +## Сохраняемые инварианты / границы + +## Acceptance Criteria +- [ ] + +## Зависимости / ссылки (если есть) diff --git a/.gitea/PULL_REQUEST_TEMPLATE.md b/.gitea/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..f31e344 --- /dev/null +++ b/.gitea/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,11 @@ +## Summary + +## Linked Issue +Refs + +## Changes + +## Verification +- Команда / результат / ограничения: + +## Breaking Changes (если есть) diff --git a/AGENTS.md b/AGENTS.md index 7dc1838..696ac7d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,8 +2,10 @@ Репозиторий содержит существующие behavioral specifications и SDD history. Для обычной разработки не создавай и не обновляй planning artifacts ради -процесса. Требование пользователя определяет работу; OpenSpec применяется -только по явному запросу. +процесса. До edits найди/создай подходящую Gitea Issue, проверь AC и ветку; +чтение допускается без Issue. Выбор lightweight/SDD — по +[Engineering Workflow](https://git.personal.ksv741.ru/WealthLedger/main/src/branch/develop/.ai/conventions/engineering-workflow.md); +OpenSpec lifecycle начинается только после явного решения Change Owner. Если нужна существующая behavioral spec, выбери точный target через [AI_INDEX](AI_INDEX.md). Specs не являются вторым editable HTTP OpenAPI: @@ -22,7 +24,8 @@ anchors и `git diff --check`; application gates принадлежат affected ## Ветки и релизы -Работа — в отдельной ветке от `develop`, затем PR в `develop`; в `main` напрямую +Работа — в issue-linked ветке от `develop`, затем PR в `develop`; в `main` напрямую не пушить. Release/hotfix и синхронизация веток — по [README](README.md#релизы). -Commits и заголовки PR — Conventional Commits; для спецификаций допустим `spec:`. +Commits и заголовки PR — Conventional Commits со ссылкой на Issue (кроме release); +для спецификаций допустим `spec:`. Перед подготовкой релиза прочитай местный README; версии вручную не повышать. diff --git a/README.md b/README.md index d0e7f2f..17e921c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## Начало работы -OpenSpec применяется по явному запросу согласно [AGENTS](AGENTS.md). Для команд, читающих или изменяющих change, явно передавайте `--store wealth-ledger-specs`. Структурная готовность CLI не означает approval: перед каждым downstream artifact нужно явное решение Change Owner. +OpenSpec применяется после явного решения Change Owner согласно [AGENTS](AGENTS.md). Для команд, читающих или изменяющих change, явно передавайте `--store wealth-ledger-specs`. Структурная готовность CLI не означает approval: перед каждым downstream artifact нужно явное решение Change Owner. | Change | Lifecycle | | --- | --- | @@ -37,9 +37,11 @@ Node задаётся собственной `.nvmrc`; после `nvm use --sil ## Релизы Репозиторий выпускается независимо. `develop` — интеграция, `main` — принятые -релизы. Работа: `codex/` от актуального `develop`, PR в `develop`. +релизы. Обычная работа: issue-linked ветка от актуального `develop`, PR в +`develop`; общие правила — в Engineering Workflow по ссылке из AGENTS. Обычные PR допускают squash; release и обратная синхронизация сохраняют историю. -Commits и PR titles — Conventional Commits, включая `spec:`. Версии вручную не повышай. +Commits и PR titles — Conventional Commits со ссылкой на Issue (кроме release), +включая `spec:`. Версии вручную не повышай. 1. Получи `main`, `develop` и теги: `git fetch origin --tags`. Убедись, что `develop` содержит последний релиз. Создай `release/` от проверенного diff --git a/commitlint.config.cjs b/commitlint.config.cjs index 4aa31e2..2a6c08b 100644 --- a/commitlint.config.cjs +++ b/commitlint.config.cjs @@ -1,4 +1,8 @@ module.exports = { extends: ["@commitlint/config-conventional"], - rules: { "type-enum": [2, "always", ["feat", "fix", "perf", "docs", "spec", "refactor", "build", "ci", "test", "style", "chore", "revert"]] }, + ignores: [(message) => /^chore\(release\): \d+\.\d+\.\d+/.test(message)], + rules: { + "type-enum": [2, "always", ["feat", "fix", "perf", "docs", "spec", "refactor", "build", "ci", "test", "style", "chore", "revert"]], + "references-empty": [2, "never"], + }, };