Frontend verify / commits (push) Skipped
Frontend verify / security (push) Successful in 9s
Frontend verify / verify (push) Successful in 6m21s
Frontend verify / commits (pull_request) Failing after 34s
Frontend verify / security (pull_request) Skipped
Frontend verify / verify (pull_request) Skipped
93 lines
8.5 KiB
Markdown
93 lines
8.5 KiB
Markdown
# Работа в репозитории
|
||
|
||
## Граница и порядок работы
|
||
|
||
Репозиторий сам содержит инструкции, исходники, конфигурацию и входы своих
|
||
проверок. Сборка, CI и обязательный маршрут чтения работают без соседних
|
||
checkout. Внешний API задаётся предоставленным публичным контрактом;
|
||
исходники или инструкции его реализации не являются зависимостью разработки.
|
||
При нехватке требования сообщи, какое решение не определено, до его реализации.
|
||
При конфликте с общим шаблоном следуй местным правилам и явному запросу
|
||
пользователя. Выбирай реализацию самостоятельно, но изменение финансовой
|
||
логики, публичного контракта или утверждённой семантики возвращай владельцу
|
||
на согласование до зависимой работы.
|
||
|
||
Начни с результата и affected areas. До edits проследи flow/invariants, найди
|
||
owner и 1–3 примера. Код показывает механизм; случайный аналог не меняет контракт.
|
||
Выбери 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`; затем
|
||
выполни `nvm use --silent` из frontend. Если `nvm.sh` недоступен, остановись,
|
||
не используй системный Node.
|
||
Сохраняй чужие staged/unstaged/untracked изменения и read-only архивы.
|
||
|
||
## Change scope
|
||
|
||
Сначала расширь существующего владельца. Иначе используй standard library,
|
||
платформу или установленную dependency; небольшая новая реализация допустима
|
||
при собственной ответственности. Не создавай helper/interface/wrapper ради
|
||
возможного reuse. Общее имя не означает общую бизнес-ответственность.
|
||
Сохраняй validation, authorization, atomicity, accessibility и migration safety.
|
||
|
||
После diff выполни Boy Scout review: проверь новое дублирование, owner, callers,
|
||
небольшие связанные legacy issues и соответствие local conventions. Исправляй
|
||
непосредственно связанные low-risk проблемы; широкий cleanup — отдельная задача.
|
||
|
||
## Domain values
|
||
|
||
Finite business vocabulary принадлежит одному domain/module/entity owner.
|
||
Переиспользуй его symbols; для machine codes и protocol values используй
|
||
строковые `enum`, для структуры с разными payload — discriminated union.
|
||
Сохраняй wire values; generated/external enums не переписывай вручную.
|
||
Numeric policy называй по смыслу и единицам. Индексы, `Math.max(value, 0)` и
|
||
обычные labels не выноси в constants без semantic benefit.
|
||
Локальный TypeScript/lint профиль определяет дополнительные ограничения.
|
||
|
||
## Dependencies
|
||
|
||
Проверь аналоги и direct dependencies в местном manifest до добавления пакета.
|
||
Новая dependency оправдана текущей потребностью и меньшей общей сложностью;
|
||
оцени compatibility, runtime/bundle и maintenance/security. Импортируемый пакет
|
||
объявляется напрямую; транзитивная установка не является контрактом.
|
||
Сохраняй exact versions и lockfile; воспроизводимая установка — `npm ci`.
|
||
Peer-конфликт решай совместимыми версиями без `--force`/`--legacy-peer-deps`.
|
||
Используй существующий analyzer; не добавляй второй для той же проверки.
|
||
|
||
## Test Intent
|
||
|
||
Перед нетривиальным тестом кратко определи наблюдаемый исход, regression risk,
|
||
значимые edge/error/concurrency cases и самую дешёвую надёжную boundary.
|
||
Отдельный artifact не нужен. Проверяй результат, а не private call order,
|
||
декларации, тривиальные wrappers или поведение framework.
|
||
При bug сначала воспроизведи исход. Mock race не доказывает DB atomicity.
|
||
Уровни и runnable commands выбирай по местной testing convention.
|
||
|
||
## Проверки и завершение
|
||
|
||
| Когда | Что проверить |
|
||
| --- | --- |
|
||
| Окружение новое, изменились manifest/lockfile или Node, установка сомнительна | `npm ci` до Node-проверок; одна правка кода переустановки не требует. |
|
||
| Итерация | Адресные тесты, typecheck и lint по затронутому поведению и риску. При изменении поведения добавь/обнови содержательную регрессию, если существующая проверка не ловит её; для косметики не создавай искусственный тест. |
|
||
| Итоговый code/dependency diff | Перед объявлением готовности и передачей к интеграции выполни один полный `npm run verify` на итоговых входах. Дополнительные risk checks из testing convention и явно утверждённые task checks обязательны; CI проверяет независимо. |
|
||
| Только Markdown | Проверь тексты, ссылки/якоря, маршруты чтения и `git diff --check`; application build не нужен. При изменении verification-контура проверь его работу. |
|
||
| Pre-commit | Hook не скачивает tools: вызывай установленные бинарники из `node_modules/.bin` (не `npx`). Full graph не входит в hook; он выполняется в `npm run verify` и CI. |
|
||
|
||
Повтори routing по staged/unstaged/new files. В отчёте по задаче/PR запиши
|
||
проверенные входы, команду, exit code, результат и ограничения. Повторяй
|
||
проверку при изменении значимых входов (включая config, dependencies и
|
||
generated artifacts), сомнении в evidence или явном запросе пользователя.
|
||
`lint:fix`/format — edits, не proof; lint не заменяет semantic/security review.
|
||
|
||
## Git и релизы
|
||
|
||
Работа — в ветке `<type>/<issue-number>-<slug>` от актуального `develop`,
|
||
затем PR в `develop`; для cross-repo ссылки укажи owner/repo#number.
|
||
Сохраняй чужие изменения; перед commit просмотри staged paths и diff.
|
||
Commits и PR titles — Conventional Commits с parser-recognized Issue reference (`fix: … (#12)`
|
||
или `chore: … (WealthLedger/main#27)`); допустим `spec:`. Каждый commit
|
||
содержит одну связанную задачу. Исключения release и правила ссылки — в
|
||
Engineering Workflow из AGENTS. Root другого checkout не управляет этим repo.
|
||
Прямой push в `main`, force-push и перенос опубликованных тегов не входят в
|
||
обычную работу. Перед release/hotfix прочитай местный README, раздел «Релизы».
|