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
89 lines
8.8 KiB
Markdown
89 lines
8.8 KiB
Markdown
# 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 не менялись.
|