From 617edfd489a6a84bb33b57386eca4eb54661f4f0 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Mon, 12 Oct 2026 09:20:13 +0300 Subject: [PATCH 1/3] chore: align frontend engineering workflow (WealthLedger/main#27) --- .ai/conventions/engineering.md | 14 ++++++++------ .gitea/ISSUE_TEMPLATE/bug.md | 12 ++++++++++++ .gitea/ISSUE_TEMPLATE/engineering.md | 10 ++++++++++ .gitea/ISSUE_TEMPLATE/feature.md | 12 ++++++++++++ .gitea/ISSUE_TEMPLATE/refactor.md | 12 ++++++++++++ .gitea/PULL_REQUEST_TEMPLATE.md | 11 +++++++++++ AGENTS.md | 2 ++ README.md | 6 ++++-- commitlint.config.cjs | 2 ++ 9 files changed, 73 insertions(+), 8 deletions(-) create mode 100644 .gitea/ISSUE_TEMPLATE/bug.md create mode 100644 .gitea/ISSUE_TEMPLATE/engineering.md create mode 100644 .gitea/ISSUE_TEMPLATE/feature.md create mode 100644 .gitea/ISSUE_TEMPLATE/refactor.md create mode 100644 .gitea/PULL_REQUEST_TEMPLATE.md diff --git a/.ai/conventions/engineering.md b/.ai/conventions/engineering.md index 778256b..64c9ef7 100644 --- a/.ai/conventions/engineering.md +++ b/.ai/conventions/engineering.md @@ -14,7 +14,8 @@ checkout. Внешний API задаётся предоставленным п Начни с результата и affected areas. До edits проследи flow/invariants, найди owner и 1–3 примера. Код показывает механизм; случайный аналог не меняет контракт. -Работай напрямую; OpenSpec/SDD lifecycle — только по явному запросу. +Выбери lightweight или SDD по Engineering Workflow из AGENTS; OpenSpec lifecycle +начинай после явного решения Change Owner. Перед Node-командами активируй местную `.nvmrc`: если `nvm` не загружен в non-interactive shell, загрузи установленный `$HOME/.nvm/nvm.sh`; затем выполни `nvm use --silent` из frontend. Если `nvm.sh` недоступен, остановись, @@ -79,11 +80,12 @@ generated artifacts), сомнении в evidence или явном запро ## Git и релизы -Работа — в `codex/` от актуального `develop`, затем PR в `develop`. +Работа — в ветке `/-` от актуального `develop`, +затем PR в `develop`; для cross-repo ссылки укажи owner/repo#number. Сохраняй чужие изменения; перед commit просмотри staged paths и diff. -Commits и PR titles — Conventional Commits; допустим `spec:`. Каждый commit -содержит одну связанную задачу. При связанной issue добавь её номер в конец -заголовка (`fix: … #12`); без issue номер не нужен. Root другого checkout -не управляет этим repo. +Commits и PR titles — Conventional Commits со ссылкой на Issue (`fix: … (#12)` +или `chore: … (WealthLedger/main#27)`); допустим `spec:`. Каждый commit +содержит одну связанную задачу. Исключения release и правила ссылки — в +Engineering Workflow из AGENTS. Root другого checkout не управляет этим repo. Прямой push в `main`, force-push и перенос опубликованных тегов не входят в обычную работу. Перед release/hotfix прочитай местный README, раздел «Релизы». 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 91bf699..c5f4f4f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,6 +4,8 @@ только его файлы и предоставленные публичные контракты. Перед работой прочитай [порядок работы](.ai/conventions/engineering.md#граница-и-порядок-работы), затем объединяй triggers задачи и путей; читай активированные темы до решения. +До edits найди/создай подходящую Gitea Issue, проверь AC и ветку; чтение +допускается без Issue. Общий маршрут — [Engineering Workflow](https://git.personal.ksv741.ru/WealthLedger/main/src/branch/develop/.ai/conventions/engineering-workflow.md). | Решение / сигнал | Читать | | --- | --- | diff --git a/README.md b/README.md index 0ebf4da..6f34fa5 100644 --- a/README.md +++ b/README.md @@ -211,9 +211,11 @@ preset по имени из `.release-it.json`. Версия preset закреп ## Релизы Репозиторий выпускается независимо. `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 bdca20c..ff19ddb 100644 --- a/commitlint.config.cjs +++ b/commitlint.config.cjs @@ -1,5 +1,6 @@ module.exports = { extends: ["@commitlint/config-conventional"], + ignores: [(message) => /^chore\(release\): \d+\.\d+\.\d+/.test(message)], rules: { "type-enum": [ 2, @@ -19,5 +20,6 @@ module.exports = { "revert", ], ], + "references-empty": [2, "never"], }, }; -- 2.54.0 From c315f80b1b07ae0888366512ec157b8e29c81d62 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Mon, 12 Oct 2026 10:19:36 +0300 Subject: [PATCH 2/3] fix: align frontend workflow rules (WealthLedger/main#27) --- .ai/conventions/engineering.md | 6 +++--- AGENTS.md | 3 ++- README.md | 3 ++- commitlint.config.cjs | 8 ++++++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/.ai/conventions/engineering.md b/.ai/conventions/engineering.md index 64c9ef7..cebf732 100644 --- a/.ai/conventions/engineering.md +++ b/.ai/conventions/engineering.md @@ -14,8 +14,8 @@ checkout. Внешний API задаётся предоставленным п Начни с результата и affected areas. До edits проследи flow/invariants, найди owner и 1–3 примера. Код показывает механизм; случайный аналог не меняет контракт. -Выбери lightweight или SDD по Engineering Workflow из AGENTS; OpenSpec lifecycle -начинай после явного решения Change Owner. +Выбери lightweight или SDD по [Engineering Workflow](https://git.personal.ksv741.ru/WealthLedger/main/src/commit/59e0831ad28d6990416e651f55d783b8d2ac98c2/.ai/conventions/engineering-workflow.md); +OpenSpec lifecycle начинай после явного решения Change Owner. Перед Node-командами активируй местную `.nvmrc`: если `nvm` не загружен в non-interactive shell, загрузи установленный `$HOME/.nvm/nvm.sh`; затем выполни `nvm use --silent` из frontend. Если `nvm.sh` недоступен, остановись, @@ -83,7 +83,7 @@ generated artifacts), сомнении в evidence или явном запро Работа — в ветке `/-` от актуального `develop`, затем PR в `develop`; для cross-repo ссылки укажи owner/repo#number. Сохраняй чужие изменения; перед commit просмотри staged paths и diff. -Commits и PR titles — Conventional Commits со ссылкой на Issue (`fix: … (#12)` +Commits и PR titles — Conventional Commits с parser-recognized Issue reference (`fix: … (#12)` или `chore: … (WealthLedger/main#27)`); допустим `spec:`. Каждый commit содержит одну связанную задачу. Исключения release и правила ссылки — в Engineering Workflow из AGENTS. Root другого checkout не управляет этим repo. diff --git a/AGENTS.md b/AGENTS.md index c5f4f4f..079beb8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,7 +5,8 @@ [порядок работы](.ai/conventions/engineering.md#граница-и-порядок-работы), затем объединяй triggers задачи и путей; читай активированные темы до решения. До edits найди/создай подходящую Gitea Issue, проверь AC и ветку; чтение -допускается без Issue. Общий маршрут — [Engineering Workflow](https://git.personal.ksv741.ru/WealthLedger/main/src/branch/develop/.ai/conventions/engineering-workflow.md). +допускается без Issue. Общий маршрут — [Engineering Workflow](https://git.personal.ksv741.ru/WealthLedger/main/src/commit/59e0831ad28d6990416e651f55d783b8d2ac98c2/.ai/conventions/engineering-workflow.md) +(main#28; после merge — актуальная версия `develop`). | Решение / сигнал | Читать | | --- | --- | diff --git a/README.md b/README.md index 6f34fa5..d65a396 100644 --- a/README.md +++ b/README.md @@ -203,7 +203,8 @@ Checkout frontend содержит все входы сборки и прове локальную копию и не обращаются к исходникам или CI сервера. Доставка новой схемы — явное обновление snapshot с review и `npm run openapi:generate`. Runtime URL API задаётся окружением, а не расположением другого репозитория. -Разработка идёт напрямую по задаче пользователя; OpenSpec/SDD — по явному запросу. +Разработка начинается с Issue; lightweight или SDD выбирается по критериям +Engineering Workflow из AGENTS. OpenSpec — после явного решения Change Owner. Knip исключает `conventional-changelog-conventionalcommits`: release-it загружает preset по имени из `.release-it.json`. Версия preset закреплена напрямую. diff --git a/commitlint.config.cjs b/commitlint.config.cjs index ff19ddb..ae358bc 100644 --- a/commitlint.config.cjs +++ b/commitlint.config.cjs @@ -1,7 +1,12 @@ module.exports = { + defaultIgnores: false, extends: ["@commitlint/config-conventional"], - ignores: [(message) => /^chore\(release\): \d+\.\d+\.\d+/.test(message)], + ignores: [ + message => /^chore\(release\): \d+\.\d+\.\d+$/.test(message.trim()), + message => /^Merge pull request ['"].+['"] \(#\d+\) from .+ into .+$/.test(message.trim()), + ], rules: { + "references-empty": [2, "never"], "type-enum": [ 2, "always", @@ -20,6 +25,5 @@ module.exports = { "revert", ], ], - "references-empty": [2, "never"], }, }; -- 2.54.0 From 0d747cc93ee08c337cf300c0367612708f45dfb9 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Mon, 12 Oct 2026 10:22:13 +0300 Subject: [PATCH 3/3] docs: pin frontend workflow reference (WealthLedger/main#27) --- .ai/conventions/engineering.md | 2 +- AGENTS.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.ai/conventions/engineering.md b/.ai/conventions/engineering.md index cebf732..d9d197b 100644 --- a/.ai/conventions/engineering.md +++ b/.ai/conventions/engineering.md @@ -14,7 +14,7 @@ checkout. Внешний API задаётся предоставленным п Начни с результата и affected areas. До edits проследи flow/invariants, найди owner и 1–3 примера. Код показывает механизм; случайный аналог не меняет контракт. -Выбери lightweight или SDD по [Engineering Workflow](https://git.personal.ksv741.ru/WealthLedger/main/src/commit/59e0831ad28d6990416e651f55d783b8d2ac98c2/.ai/conventions/engineering-workflow.md); +Выбери lightweight или SDD по [Engineering Workflow](https://git.personal.ksv741.ru/WealthLedger/main/src/commit/03b3b59e6ff2ba391f9dfc42a039a96d0d84c1c9/.ai/conventions/engineering-workflow.md); OpenSpec lifecycle начинай после явного решения Change Owner. Перед Node-командами активируй местную `.nvmrc`: если `nvm` не загружен в non-interactive shell, загрузи установленный `$HOME/.nvm/nvm.sh`; затем diff --git a/AGENTS.md b/AGENTS.md index 079beb8..014dc54 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,7 +5,7 @@ [порядок работы](.ai/conventions/engineering.md#граница-и-порядок-работы), затем объединяй triggers задачи и путей; читай активированные темы до решения. До edits найди/создай подходящую Gitea Issue, проверь AC и ветку; чтение -допускается без Issue. Общий маршрут — [Engineering Workflow](https://git.personal.ksv741.ru/WealthLedger/main/src/commit/59e0831ad28d6990416e651f55d783b8d2ac98c2/.ai/conventions/engineering-workflow.md) +допускается без Issue. Общий маршрут — [Engineering Workflow](https://git.personal.ksv741.ru/WealthLedger/main/src/commit/03b3b59e6ff2ba391f9dfc42a039a96d0d84c1c9/.ai/conventions/engineering-workflow.md) (main#28; после merge — актуальная версия `develop`). | Решение / сигнал | Читать | -- 2.54.0