Files
main/.ai/migrations/conventions-v1/plan.md
T
ksv741 4a78dd640d
Workspace security / security (pull_request) Successful in 6s
Workspace verify / verify (pull_request) Successful in 20s
Conventional commits / commits (pull_request) Successful in 10s
Workspace security / security (push) Successful in 5s
Workspace verify / verify (push) Successful in 19s
docs: align inventory with simplified conventions
2026-09-15 05:58:30 +03:00

89 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Conventions v1: migration plan
Исходный [audit](audit.md): 7 открытых findings — P0: 0, P1: 4, P2: 3.
Это число reviewed findings, а не все violations репозитория. Production
refactoring в задаче conventions не выполнялся. Порядок ниже — рекомендуемые
отдельные работы, без обязательного запуска SDD или repository-wide cleanup.
## Vertical slices
| Slice / порядок | Findings и target ownership | Сохранить / Test Intent | Migration и verification |
| --- | --- | --- | --- |
| 1. Auth: invalid request | BE-001; configureApp validation + HTTP filter | 400/code, field pointers/details, safe unknown errors, whitelist semantics; invalid request не вызывает use case | Отдельный behavior fix и configured HTTP regression, без структурного рефакторинга. Auth e2e, filter tests, contract check, backend verify |
| 2. Cards: создание/редактирование | FE-001; feature workflows + entity presentation/queries | Submit blocking, ввод после failure, idempotency ID, version conflict/adoption, archived editing | Сначала одно действие, затем следующее. Только structural change. Existing banking/form RTL/MSW, relevant stories, deps/knip и frontend verify |
| 3. Cards/Operations: просмотр и запись | FE-002 + BE-002; page VM states; application policy; repository transaction | Cached snapshot/refetch failure, URL period/page, scroll anchor; user isolation, CAS, atomic transfer/refund, balances | Раздельные frontend/backend commits; не менять behavior вместе с переносом. RTL/MSW и browser pagination; banking unit + SQLite/HTTP, relevant durability, verify обоих repos |
| 4. Accounts/Portfolio: recovery | FE-004, первая группа consumers; общий classifier у допустимого owner | NOT_FOUND → accounts, connection → settings, transient error → retry; сохранить различия текста/actions и fallback unknown code | Structural convergence одного decision rule. Account/portfolio RTL/MSW и frontend verify; оставшиеся instrument consumers учитываются до полного закрытия FE-004 |
| 5. Instruments/Settings: connection | FE-004 оставшиеся consumers + BE-003; integration marker/translation | Invalid token и unavailable различаются; bounded retry, cache isolation/generation, metadata fallback | Сначала marker и все backend callers, отдельно frontend classifier reuse. T-Bank/token/metadata tests, relevant API e2e, frontend recovery tests, verify affected repos |
| 6. Navigation между областями | FE-003; app composition | Active links desktop/mobile, nested Outlet, breadcrumbs, auth fallback, keyboard и narrow viewport | Перенос existing AppShell с CSS/callers, без нового wrapper/UI redesign. Route tests, deps/knip, browser proof и frontend verify |
Каждый slice начинает с классификации responsibility и просмотра всех callers.
До edits зафиксируй target owner, сохраняемое behavior и применимый
[Test Intent](../../conventions/testing.md). Structural refactor и behavior
change идут отдельными шагами/commits; завершение требует semantic review,
relevant checks и обновления статуса finding с evidence.
## Ratchet
Все семь IDs пока **Open**. Следующая migration фиксирует здесь:
`ID → Open/Closed → repo commit/PR → команда и результат`.
Закрывай finding только после миграции всех перечисленных consumers; частичный
перенос не уменьшает count. Новую находку добавляй отдельным ID с severity,
confidence и scope; изменение охвата не выдавай за улучшение качества.
Цель — последовательно уменьшать open baseline и не добавлять новых нарушений
в diff. Existing exceptions остаются видимыми и не становятся образцами нового
кода. Исходный audit сохраняет facts своего snapshot.
## Deterministic follow-ups
Полный mapping — в [guardrails](../../conventions/guardrails.md).
Existing dependency-cruiser поддерживает `--ignore-known` (подтверждено local
CLI help). При отдельной работе над same-layer imports сначала проверить
candidate rule; если существующих violations нет, baseline не нужен.
При legacy использовать native exact baseline, без directory-wide exclusions.
Backend import boundaries и `no-console` при повторном regression можно
закрепить встроенными ESLint rules. Markdown `.ai` можно включить явными путями
в existing markdownlint workflow, когда согласована доступность соседних
checkout; сегодня проверка `.ai` выполнена локально тем же инструментом.
Новые analyzers, scripts, dependencies или custom baseline infrastructure
в этом изменении не создаются.
## Verification conventions v1
Проверено 2026-09-15 на согласованном workspace из трёх веток
`codex/engineering-conventions`; docs/specs остались без изменений.
| Проверка | Результат |
| --- | --- |
| Root `python3 test-workspace-tracking.py` | PASS: exact `.ai` allowlist, соседние repos и вымышленные local/private files сохранены |
| Из docs: `npm exec -- markdownlint-cli2 --config .markdownlint-cli2.jsonc '../AGENTS.md' '../README.md' '../.ai/**/*.md' '../frontend/AGENTS.md' '../frontend/.ai/**/*.md' '../backend/AGENTS.md' '../backend/.ai/**/*.md'` | PASS: 31 Markdown, включая новые файлы, 0 ошибок style/relative links/anchors |
| Docs `npm run verify` | PASS: 42 Markdown, 0 ошибок; проверены также входящие межрепозиторные ссылки |
| Frontend `npm run deps`, `npm run deps:storybook` | PASS: 297/298 modules, 0 нарушений настроенных dependency rules |
| Backend ValidationPipe → filter reproduction | Подтверждён BE-001: invalid CredentialsDto → 400/VALIDATION_ERROR, `errors: []` |
| `git diff --check` в root/frontend/backend/docs/specs | PASS |
Semantic review первого прохода: маршруты UI-only, API/contract, auth, tests-only, helper/package,
Prisma, logging и migration достигают нужных owners; ссылки compatibility
не дублируют таблицы routing. Общие policy имеют root owner, stack-specific
исключения остались локальными. Проверены новые файлы и отсутствие production,
manifest/lockfile, generated code, CI/release и docs/specs изменений.
Application build/coverage/e2e целиком не запускались: изменение Markdown и
root tracking не меняет production behavior. Existing dependency checks и
воспроизведение BE-001 подтверждают только указанные границы, не отсутствие
всех semantic/security проблем. Full gates выполняются при будущих code slices.
## Упрощение структуры после review
Conventions frontend/backend именуются без repo-префиксов. Устройство и правила
архитектуры объединены в единственный `.ai/architecture.md` каждого repo.
Routing и карта источников объединены в `AGENTS.md`; прежние CONVENTIONS/SOURCES
и отдельные architecture conventions удалены без compatibility-заглушек.
Активные ссылки обновлены; в audit изменены только ссылки, findings сохранены.
Исторические архивы specs остаются источниками своего времени.
Повторная проверка: existing markdownlint-cli2 с docs config по root/frontend/backend
AGENTS, README и `.ai/**/*.md` — 27 файлов, 0 ошибок, включая относительные ссылки
и якоря. `git diff --check` — PASS. Production-код и dependencies не менялись.