8.8 KiB
Conventions v1: migration plan
Исходный audit: 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. 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.
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 не менялись.