Skip to content

[codex] document architecture compliance audit#425

Open
skulidropek wants to merge 1 commit into
mainfrom
codex/architecture-compliance-audit
Open

[codex] document architecture compliance audit#425
skulidropek wants to merge 1 commit into
mainfrom
codex/architecture-compliance-audit

Conversation

@skulidropek

@skulidropek skulidropek commented Jun 18, 2026

Copy link
Copy Markdown
Member

Summary

  • Adds a docs-only architecture compliance audit against Архитектурные требования к проектам architecture-skills#1.
  • Captures current pass/partial/fail status for lint limits, module structure, API/OpenAPI, DB access, CI/CD, coverage, E2E, property tests, duplication, and mutation testing.
  • Records prioritized follow-up PR sequence for enforcement, coverage, duplication/unused code, OpenAPI, refactors, and mutation testing.

Proof of fix

  • Причина: новая задача требует понять, насколько текущий docker-git соответствует архитектурным требованиям из architecture-skills#1.
  • Решение: зафиксирован воспроизводимый audit matrix в docs/architecture-compliance-audit.md с evidence и recommended PR sequence.
  • Доказательство: rtk git diff --check прошёл; изменение docs-only, runtime code не менялся.

Validation

  • rtk gh issue view 1 --repo ProverCoderAI/architecture-skills --json title,body,comments
  • rtk bun run lint:effect
  • rtk rg/TypeScript compiler API read-only audit for size, complexity, casts, fetch, property tests, OpenAPI/mutation tooling
  • rtk git diff --check

- document current compliance against architecture-skills issue 1

- capture gaps for lint, module structure, API, CI, and tests
@skulidropek

skulidropek commented Jun 18, 2026

Copy link
Copy Markdown
Member Author

AI Session Backup

Commit: 771ff82
Status: success
Files: 15 (11.81 MB)
Links: README | Manifest

git status

On branch codex/architecture-compliance-audit
Your branch is up to date with 'origin/codex/architecture-compliance-audit'.

nothing to commit, working tree clean

@skulidropek skulidropek changed the title docs(architecture): add compliance audit [codex] document architecture compliance audit Jun 18, 2026
@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

Примечания к выпуску

  • Documentation
    • Добавлена документация с результатами аудита архитектурного соответствия, включая матрицу требований, выявленные проблемы и рекомендации по улучшению.

Walkthrough

Добавлен новый документ docs/architecture-compliance-audit.md с результатами архитектурного аудита репозитория: матрица соответствия требованиям (Fail/Partial/Pass), список ключевых блокеров, рекомендуемая последовательность PR и набор команд для read-only верификации.

Changes

Документ архитектурного аудита

Layer / File(s) Summary
Содержимое аудита: матрица, блокеры, план и команды
docs/architecture-compliance-audit.md
Добавлен документ с заголовком и датой аудита, разделом Summary (общий вывод о частичном соответствии), таблицей Audit matrix со статусами по метрикам (размеры файлов/функций, сложность, касты, покрытие, mutation testing, OpenAPI, E2E), разделом Top blockers, рекомендуемой последовательностью PR и разделом Verification commands с конкретными shell-командами для проверки репозитория.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error)

Check name Status Explanation Resolution
Requirements Alignment ❌ Error Документ нарушает требования процесса SDD из docs/process.md: отсутствуют обязательные Story+Prove блоки; команды верификации используют неизвестный префикс rtk; Recommended PR sequence не привязан... Добавить Story+Prove блок со INV-N для каждого требования; заменить rtk на реальные команды; связать каждую PR с требованиями матрицы; убрать ссылки на несуществующие скрипты или создать их.
✅ Passed checks (6 passed)
Check name Status Explanation
Title check ✅ Passed Заголовок PR точно описывает основное изменение — документирование аудита архитектурного соответствия.
Description check ✅ Passed Описание охватывает основные требуемые разделы (Summary, Proof of fix, Validation), хотя формат отличается от шаблона.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Security Regression ✅ Passed Документация не содержит утечек учетных данных, опасных команд, path traversal, небезопасных Docker/Actions конфигов или changes в зависимостях.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/architecture-compliance-audit

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/architecture-compliance-audit.md`:
- Around line 59-73: The Recommended PR sequence section lists six PRs but
doesn't link them to the specific requirements from the Audit matrix (lines
20-44), making it hard to verify which requirements each PR addresses and
prioritize work. For each of the six PR items in the sequence (Enforcement PR,
Coverage PR, Duplication and unused-code PR, API contract PR, Refactor PR
series, and Mutation PR), add a "closes:" annotation that explicitly maps to the
corresponding Audit matrix requirements that each PR fulfills, so readers can
quickly cross-reference the matrix and verify completion.
- Around line 75-85: The verification commands in the "Verification commands"
section contain a non-standard `rtk` prefix that makes them non-reproducible and
not aligned with the actual build tools shown in the package.json and GitHub
workflows. Replace the `rtk` prefixed commands with their actual equivalents:
change `rtk bun run lint:effect` to `bun run lint:effect`, change `rtk rg`
commands to use `rg` directly without the prefix, and ensure the commands match
those defined in the project's package.json and .github/workflows/check.yml. If
`rtk` is an internal project script, explicitly document its location and
purpose instead of using it in the audit verification section.
- Around line 7-18: The Summary section in the architecture-compliance-audit.md
file understates the actual severity of non-compliance shown in the compliance
matrix. Update the Summary to explicitly state the quantified results from the
matrix: 11 requirements completely fail (55%), 8 are partially implemented
(40%), and only 2 pass (10%). Strengthen the language to clearly communicate the
scale of non-compliance and the extent of work needed, ensuring the Summary's
severity matches the actual compliance data shown in the matrix below it.
- Around line 7-44: The architecture-compliance-audit.md document is missing the
explicit Story and Prove sections required by the SDD methodology. Add a new
"Story" section before the Audit matrix that describes WHO
(architect/stakeholder) and WHY (the business goal) for this audit in clear
terms. Then add a "Prove" section that maps each requirement/invariant in the
Audit matrix to its verification method, specifying whether each will be
verified via a read-only audit script (like `bun run audit:lines`), a CI job, or
a unit/property test. This ensures every requirement in the matrix has a clear,
automated verification path and makes the audit's purpose and verifiability
transparent to all project participants.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 2f99260b-7b68-4923-b3f8-887a7286e4ff

📥 Commits

Reviewing files that changed from the base of the PR and between b06579e and 771ff82.

📒 Files selected for processing (1)
  • docs/architecture-compliance-audit.md
📜 Review details
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
  • GitHub Check: Lint
  • GitHub Check: Test
  • GitHub Check: E2E (Login context)
  • GitHub Check: E2E (Runtime volumes + SSH)
  • GitHub Check: E2E (Clone auto-open SSH)
  • GitHub Check: E2E (Browser command)
  • GitHub Check: Snapshot
  • GitHub Check: E2E (Clone cache)
  • GitHub Check: Final build (windows-latest)
  • GitHub Check: E2E (OpenCode)
  • GitHub Check: Final build (macos-latest)
🧰 Additional context used
📓 Path-based instructions (4)
**/{setup,install,config,*.sh,*.md}

📄 CodeRabbit inference engine (README.md)

Ensure default projects directory is ~/.docker-git

Files:

  • docs/architecture-compliance-audit.md
**/*

⚙️ CodeRabbit configuration file

**/*: Ты строгий ревьюер SPEC DRIVEN DEVELOPMENT.

Перед выводами изучи README.md, другие *.md файлы, linked issues,
PR description, PR comments/discussion и релевантную кодовую базу.

Сверь изменения с исходным ТЗ/спекой и обсуждением. Флагай любой уход
от спеки, недокументированное изменение поведения, отсутствие тестов
для заявленного поведения и security-риск. Если спека не видна,
попроси автора добавить ее в issue или PR description.

Проверь решение с точки зрения формальной верификации: какие инварианты,
предусловия и постусловия можно доказать математически, а где доказуемость
слабая. Оцени решение с точки зрения теории игр: устойчивы ли стимулы,
нет ли выгодного обхода правил, и какое решение было бы сильнее.

Files:

  • docs/architecture-compliance-audit.md
**

⚙️ CodeRabbit configuration file

**: РОЛЬ: Математик-программист, специализирующийся на формально верифицируемой функциональной архитектуре.

ЦЕЛЬ: Создавать математически доказуемые решения через функциональную парадигму с полным разделением чистых вычислений и контролируемых эффектов.

МОДЕЛЬ РАССУЖДЕНИЯ:

  • Не выдавать “личные мнения”. Формировать вывод как результат симуляции профессионального обсуждения релевантных ролей
    (архитектор Effect/FP, ревьюер типов, страж CORE↔SHELL, тест-инженер).
  • Если запрос сформулирован как “что думаешь”, отвечать в терминах аргументов ролей и выбирать решение
    по критериям инвариантов, типовой безопасности и тестируемости (если пользователь явно просит выбор — выбрать и обосновать).

ПРАВИЛО ПРОЦЕССА (НЕ ФОРМАТ ОТВЕТА):
В начале работы (внутренне) формулировать Deep Research вопрос:
"I am looking for code that does , is there existing code that can do this?"
Далее:

  • если доступен проект/код — сперва искать и переиспользовать существующие паттерны (минимальный корректный diff),
  • если проект недоступен — опираться на предоставленный контекст и явно фиксировать допущения,
  • код писать только после формального понимания задачи (типы/инварианты → архитектура → код → тесты),
  • источники указывать только если реально использован внешний материал; иначе SOURCE: n/a.

ИНСТРУМЕНТАЛЬНОЕ ПОВЕДЕНИЕ (ОБЯЗАТЕЛЬНО, НЕ ФОРМАТ ОТВЕТА):

  • Агент всегда использует доступные инструменты среды (терминал, поиск по проекту, запуск тестов/скриптов, анализ сборки, web-ресёрч при необходимости)
    для ресёрча, проверки гипотез и выполнения действий. Приоритет: проверяемость, воспроизводимость, минимальный риск.
  • Агент не предлагает “гайд” как замену действия. Если действие возможно выполнить инструментами — агент выполняет его сам,
    затем сообщает, что было сделано и как повторить.
  • Любые инструкции (команды/процедуры) агент даёт только после собственной проверки на доступной среде.
    Если проверить невозможно — явно фиксирует ограничение и перечисляе...

Files:

  • docs/architecture-compliance-audit.md
docs/**

⚙️ CodeRabbit configuration file

docs/**: # Процесс разработки (SDD: Spec-Driven Development)

Этот документ описывает канонический цикл разработки в docker-git: от issue до
проверяемого PR. Он отвечает на вопрос «как должна проходить разработка» из
issue #390 и связывает
шаги процесса с уже существующими инструментами репозитория.

Базовая философия задана в AGENTS.md и CLAUDE.md:

«Если это нельзя доказать — это нельзя доверить продакшену.»
Каждая функция — теорема, каждый тест — доказательство, каждый тип — утверждение.

SDD означает, что сначала формализуем (спецификация + инварианты), потом
программируем
. Спецификация и её инварианты живут вместе с кодом и проверяются
автоматически.

Обзор цикла

issue ──▶ clone (среда) ──▶ /plan ──▶ уточнение ТЗ + Deep Research
  │                                          │
  │                                          ▼
  │                            Story + Prove (инварианты проверяемости)
  │                                          │
  │                            апрув плана ──▶ plan-to-git ──▶ PR (память)
  │                                          │
  │                                          ▼
  └──────────────── разработка (код + тесты + Playwright MCP)
                                             │
                                ToDos + subagents (декомпозиция)
                                             │
                                             ▼
                          CI/CD ──▶ сверка с инвариантами плана ──▶ merge

1. Issue — источник истины

Разработка всегда начинается с issue. Issue фиксирует намерение и становится
точкой привязки для плана, PR и итоговой проверки инвариантов.

2. Среда: клонирование с изоляцией

Для каждой issue поднимается отдельное Docker-окружение. Браузерная автоматизация
включается флагом --mcp-playwright (Playwright MCP + Chromium sidecar):

bun run docker-git clone https://...

Files:

  • docs/architecture-compliance-audit.md
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: ProverCoderAI/docker-git

Timestamp: 2026-06-18T09:04:57.325Z
Learning: Monorepo packages must not exceed 5000 lines of code
Learnt from: CR
Repo: ProverCoderAI/docker-git

Timestamp: 2026-06-18T09:04:57.325Z
Learning: Folder depth must not contain more than 10 code files
Learnt from: CR
Repo: ProverCoderAI/docker-git

Timestamp: 2026-06-18T09:04:57.325Z
Learning: Implement CI safe `lint --fix` bot flow with deterministic auto-fix commits
Learnt from: CR
Repo: ProverCoderAI/docker-git

Timestamp: 2026-06-18T09:04:57.325Z
Learning: Enforce 100% coverage of changed code in pull requests with diff coverage gates
🔇 Additional comments (1)
docs/architecture-compliance-audit.md (1)

24-44: Метрики в аудите подтверждены и воспроизводимы вручную; добавление скрипта уже в плане.

Утверждённые размеры файлов верны: packages/api/src/http.ts — 2120 строк, federation.ts — 1915, terminal-sessions.ts — 1835 (подтверждено wc -l). Однако автоматизированный способ их пересчёта действительно не задокументирован и не интегрирован в CI.

Это уже известный дефицит: раздел Recommended PR sequence (пункт 1) явно рекомендует «add a read-only architecture audit script for LOC, folder width, function size, params, nesting, complexity, casts and direct fetch». До реализации этого PR метрики остаются point-in-time снимком, вычисленным вручную через TypeScript compiler API (как указано в документе), а не постоянно отслеживаемым инвариантом.

Для немедленной проверки отдельных метрик можно использовать:

# Размеры файлов
wc -l packages/**/*.ts

# Поиск больших функций вручную через grep + line counting
grep -n "^\s*\(async\s\+\|static\s\+\)*\(function\|[a-zA-Z0-9_]*\s*[=:]\s*(\|[a-zA-Z0-9_]*\s*:\s*\|export\)" packages/api/src/http.ts

Comment on lines +7 to +18
## Summary

Текущая кодовая база частично соответствует требованиям. В проекте уже есть сильная
база: monorepo, CI с build/typecheck/lint/test/e2e, Effect lint profile,
property-based tests и jscpd в части пакетов. По строгой трактовке issue
репозиторий пока нельзя считать соответствующим: есть крупные нарушения по
размеру модулей, файлов и функций; OpenAPI/generated client отсутствует;
mutation testing отсутствует; coverage не enforced в CI; API `lint:effect` не
подключён в CI; остаются прямые `fetch`, `unknown` и casts.

Строгость оценки: strict with documented exceptions. Boundary `unknown`
допустим только при явном schema decoding и без утечки в domain API.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Summary недооценивает серьёзность несоответствий матрицы.

Summary утверждает: «репозиторий пока нельзя считать соответствующим» и перечисляет «крупные нарушения», но матрица показывает более суровую картину:

  • Fail: 11 требований (File size, Function size, Casts, Monorepo modules, Folder size, ORM, OpenAPI, CI safe lint fix, Coverage enforcement, Diff coverage, Mutation testing).
  • Partial: 8 требований (Parameters, Nesting, Suppressions, unknown handling, Unused deps, Unused modules, Duplication, Coverage thresholds).
  • Pass: 2 требования (Property-based testing, E2E testing).

Итого: 19 из 20 требований не полностью выполнены (11 Fail + 8 Partial).

Рекомендация: усилить выводы Summary, чтобы явно указать процент несоответствия и критичность (например, 55% требований полностью не выполнено, 40% выполнено частично). Это поднимет осведомленность о масштабе работ.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/architecture-compliance-audit.md` around lines 7 - 18, The Summary
section in the architecture-compliance-audit.md file understates the actual
severity of non-compliance shown in the compliance matrix. Update the Summary to
explicitly state the quantified results from the matrix: 11 requirements
completely fail (55%), 8 are partially implemented (40%), and only 2 pass (10%).
Strengthen the language to clearly communicate the scale of non-compliance and
the extent of work needed, ensuring the Summary's severity matches the actual
compliance data shown in the matrix below it.

Comment on lines +7 to +44
## Summary

Текущая кодовая база частично соответствует требованиям. В проекте уже есть сильная
база: monorepo, CI с build/typecheck/lint/test/e2e, Effect lint profile,
property-based tests и jscpd в части пакетов. По строгой трактовке issue
репозиторий пока нельзя считать соответствующим: есть крупные нарушения по
размеру модулей, файлов и функций; OpenAPI/generated client отсутствует;
mutation testing отсутствует; coverage не enforced в CI; API `lint:effect` не
подключён в CI; остаются прямые `fetch`, `unknown` и casts.

Строгость оценки: strict with documented exceptions. Boundary `unknown`
допустим только при явном schema decoding и без утечки в domain API.

## Audit matrix

| Требование | Статус | Evidence |
| --- | --- | --- |
| File size <= 400 lines | Fail | 33 tracked TS code files exceed 400 lines. Largest: `packages/api/src/http.ts` 2121, `packages/api/src/services/federation.ts` 1916, `packages/api/src/services/terminal-sessions.ts` 1836. |
| Function size <= 50 lines | Fail | 270 functions exceed 50 lines. Largest: `makeRouter` in `packages/api/src/http.ts` starts at line 942 and spans about 1179 lines. |
| Parameters <= 5 | Partial | 7 functions exceed the limit. Worst: `packages/api/src/services/terminal-sessions.ts:1203` has 7 params. |
| Nesting depth <= 4 | Partial | 2 functions exceed the limit: `packages/api/src/services/auth-menu.ts:114` depth 7 and `packages/api/src/services/auth-menu.ts:165` depth 5. |
| Cyclomatic complexity <= 8 | Fail | 35 functions exceed the limit. Worst: `packages/api/src/services/projects.ts:449` complexity 36. |
| Suppression comments blocked | Partial | Only 4 `eslint-disable` / TS suppression hits, but they are config-level comments allowing test disables. jscpd suppression is broad: 40 `jscpd:ignore-start` blocks. |
| `any`, `unknown`, dynamic blocked | Partial | Explicit `any`: 0 AST occurrences. `unknown`: 163 AST occurrences; some are legitimate boundary values, but literal policy is not globally enforced. |
| Casts / `as` blocked | Fail | 59 TypeScript casts/type assertions in TS-only audit; broader JS/TS scope found 74. |
| Monorepo modules <= 5000 LOC | Fail | Top packages exceed the limit: app about 48k lines, lib about 28k, api about 26k, terminal about 10k, container about 8k. |
| Folder <= 10 code files | Fail | Top flat folders: `packages/app/src/web` 149 files, `packages/app/src/docker-git` 100, `packages/lib/src/usecases` 77, `packages/api/src/services` 42. |
| No unused dependencies | Partial | `dist-deps-prune` exists for packaged app dependency pruning, but there is no workspace-wide `knip`, `depcheck`, or equivalent unused dependency gate. |
| No unused modules | Partial | TypeScript and ESLint catch local unused symbols, but no workspace-wide unused export/module gate such as `knip` or `ts-prune` was found. |
| No duplicate code | Partial | `.jscpd.json` exists for app/lib/terminal and jscpd dependencies exist in app/lib/terminal/container. API and session-sync lack jscpd config, and many files use `jscpd:ignore`. |
| ORM or typed query layer for DB | Fail / not currently applicable | No Prisma/Drizzle/Kysely/TypeORM/Knex/Effect SqlClient usage was found. Existing DB-related code mainly handles typed database profile/proxy configuration, not database persistence. |
| Swagger/OpenAPI generated client | Fail | No OpenAPI/Swagger files or generated API client pipeline found. API schemas and clients appear handwritten with Effect Schema. |
| CI safe `lint --fix` bot flow | Fail | CI runs lint, but no deterministic auto-fix commit/fixed-point workflow was found. |
| Test coverage >= 10% | Partial | Vitest coverage thresholds exist in app/lib/container/terminal configs, but package test scripts and CI run plain `vitest run` without `--coverage`; API and session-sync lack coverage thresholds. |
| Property-based testing for invariants | Pass | `fast-check` is used broadly: 42 files and 77 `fc.property` usages were found. |
| E2E testing | Pass | CI runs 7 E2E jobs in `.github/workflows/check.yml`: local package, browser command, opencode, clone cache, login context, runtime volumes + SSH, clone auto-open SSH. |
| 100% changed code covered in PR | Fail | No diff coverage gate was found. |
| Mutation testing on PR changes | Fail | No Stryker or equivalent mutation testing config/tooling was found. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚖️ Poor tradeoff

Документ не содержит явного Story + Prove блока, требуемого SDD.

Согласно docs/process.md и coding_guidelines (раздел "Story + Prove"), каждый аудит должен содержать:

  1. Story — описание цели аудита в терминах заинтересованного лица (кто, зачем, какая ценность).
  2. Prove — для каждого инварианта матрицы указать способ проверки:
    • unit/property тест
    • CI job
    • read-only скрипт верификации

Текущий документ содержит only Audit matrix (WHAT) и Top blockers (почему), но не содержит явного Story (WHO/WHY) и не привязывает каждый инвариант к способу его проверки.

Рекомендация: добавить перед Audit matrix раздел вида:

## Story

Как архитектор проекта, я хочу убедиться, что кодовая база соответствует 
функциональной парадигме с чистыми функциями и контролируемыми эффектами,
чтобы обеспечить воспроизводимость, типовую безопасность и математическую 
доказуемость решений.

### Prove (инварианты проверяемости)

- INV-1: ∀ файл ∈ TS-files: lines(файл) ≤ 400
  Проверка: `bun run audit:lines` (read-only скрипт)
  
- INV-2: ∀ функция ∈ функции: lines(функция) ≤ 50
  Проверка: `bun run audit:functions` (read-only скрипт)
  
... и т.д. для каждого требования

Это обеспечит:

  • Ясность цели аудита для всех участников.
  • Автоматическую проверяемость каждого требования.
  • Связь между инвариантами матрицы и способом их верификации.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/architecture-compliance-audit.md` around lines 7 - 44, The
architecture-compliance-audit.md document is missing the explicit Story and
Prove sections required by the SDD methodology. Add a new "Story" section before
the Audit matrix that describes WHO (architect/stakeholder) and WHY (the
business goal) for this audit in clear terms. Then add a "Prove" section that
maps each requirement/invariant in the Audit matrix to its verification method,
specifying whether each will be verified via a read-only audit script (like `bun
run audit:lines`), a CI job, or a unit/property test. This ensures every
requirement in the matrix has a clear, automated verification path and makes the
audit's purpose and verifiability transparent to all project participants.

Comment on lines +59 to +73
## Recommended PR sequence

1. Enforcement PR: add a read-only architecture audit script for LOC, folder
width, function size, params, nesting, complexity, casts and direct `fetch`;
connect API `lint:effect` to CI.
2. Coverage PR: add `test:coverage` scripts, thresholds for API/session-sync,
and a CI coverage job.
3. Duplication and unused-code PR: add workspace-wide jscpd coverage plus a
`knip` or equivalent unused dependency/export gate.
4. API contract PR: choose and introduce OpenAPI as source of truth, then
generate client/types and block handwritten internal API access.
5. Refactor PR series: split the largest API files first:
`http.ts`, `federation.ts`, `terminal-sessions.ts`, `skiller.ts`.
6. Mutation PR: add mutation testing on changed files after the test/coverage
baseline is stable.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Рекомендуемая PR sequence не привязана к инвариантам Audit matrix.

Раздел "Recommended PR sequence" содержит 6 PR'ов, но не указывает, какие требования из Audit matrix (строки 20–44) каждая PR закрывает. Это затрудняет:

  1. Приоритизацию: неясно, какие требования Fail критичнее других.
  2. Верификацию: после выполнения PR неясно, какие строки матрицы проверить.
  3. Отслеживание: при переиспользовании плана позже, какие требования он решал?

Рекомендация: добавить трассировку вида:

## Recommended PR sequence

1. **Enforcement PR** (closes: File size, Function size, Parameters, Cyclomatic complexity, Casts)
   - Description: add read-only architecture audit script...

2. **Coverage PR** (closes: Test coverage >= 10%, 100% diff coverage)
   - Description: add `test:coverage` scripts...

3. **Duplication and unused-code PR** (closes: No duplicate code, No unused modules, No unused dependencies)
   - Description: add workspace-wide jscpd coverage...

... и т.д.

Это позволит быстро найти в матрице, какие требования решает каждая PR, и проверить их выполнение.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/architecture-compliance-audit.md` around lines 59 - 73, The Recommended
PR sequence section lists six PRs but doesn't link them to the specific
requirements from the Audit matrix (lines 20-44), making it hard to verify which
requirements each PR addresses and prioritize work. For each of the six PR items
in the sequence (Enforcement PR, Coverage PR, Duplication and unused-code PR,
API contract PR, Refactor PR series, and Mutation PR), add a "closes:"
annotation that explicitly maps to the corresponding Audit matrix requirements
that each PR fulfills, so readers can quickly cross-reference the matrix and
verify completion.

Comment on lines +75 to +85
## Verification commands

The audit used read-only checks only:

```bash
rtk gh issue view 1 --repo ProverCoderAI/architecture-skills --json title,body,comments
rtk rg --files -g 'package.json' -g '*eslint*' -g '*biome*' -g '*jscpd*' -g '*openapi*' -g '*swagger*' -g '*stryker*' -g '*vitest*'
rtk bun run lint:effect
rtk rg -n 'fast-check|fc\\.property|fc\\.assert' packages -g '*.ts' -g '*.tsx'
rtk rg -n '\\bfetch\\(|\\.fetch\\(' packages scripts -g '*.ts' -g '*.tsx' -g '*.mjs'
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Команды верификации используют неизвестный префикс rtk и не являются воспроизводимыми.

Строки 80–85 ссылаются на утилиту rtk, которая не является стандартной частью docker-git. Согласно требованиям SDD (coding_guidelines, docs/process.md), все команды должны быть реальными и проверяемыми.

На основе context snippets (package.json:49 и .github/workflows/check.yml:136–160) актуальные команды должны быть:

# Проверка lint:effect
bun run lint:effect

# Или по отдельным пакетам:
bun run --cwd packages/container lint:effect
bun run --cwd packages/api lint:effect

# Поиск fast-check использований
rg -n 'fast-check|fc\.property|fc\.assert' packages -g '*.ts' -g '*.tsx'

# Поиск прямых fetch вызовов
rg -n '\bfetch\(|\.fetch\(' packages scripts -g '*.ts' -g '*.tsx' -g '*.mjs'

Рекомендация: заменить все вхождения rtk на реальные команды или явно объяснить, что rtk — это внутренний скрипт репозитория (с указанием его расположения).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/architecture-compliance-audit.md` around lines 75 - 85, The verification
commands in the "Verification commands" section contain a non-standard `rtk`
prefix that makes them non-reproducible and not aligned with the actual build
tools shown in the package.json and GitHub workflows. Replace the `rtk` prefixed
commands with their actual equivalents: change `rtk bun run lint:effect` to `bun
run lint:effect`, change `rtk rg` commands to use `rg` directly without the
prefix, and ensure the commands match those defined in the project's
package.json and .github/workflows/check.yml. If `rtk` is an internal project
script, explicitly document its location and purpose instead of using it in the
audit verification section.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant