2c876162d5
Pre-existing нарушение: ProjectRuleMessages (Service) — read-only текст правил сбора для UI-баннеров, тот же класс что уже принятый SupplierSnapshotGuard. По ADR-005 такие read-only UI-вычисления принимаются в baseline (перенос в контроллер усложнил бы коллекции без выигрыша). Не от текущих admin-правок. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
60 lines
2.9 KiB
YAML
60 lines
2.9 KiB
YAML
imports:
|
|
# Принятые текущие нарушения (см. комментарий ruleset ниже). Сейчас два,
|
|
# оба ProjectResource → Service, оба read-only UI-вычисления (ADR-005):
|
|
# - SupplierSnapshotGuard — расчёт состояния замка источника для UI;
|
|
# - ProjectRuleMessages — единый текст правил сбора (Эпик 6, баннеры);
|
|
# перенос в контроллер усложнил бы коллекции без выигрыша. Гейт ловит только
|
|
# НОВЫЙ дрейф. Регенерация: deptrac analyse --formatter=baseline
|
|
# --output=deptrac.baseline.yaml.
|
|
- deptrac.baseline.yaml
|
|
|
|
deptrac:
|
|
paths:
|
|
- ./app
|
|
layers:
|
|
- name: Controller
|
|
collectors: [{ type: directory, value: app/Http/Controllers/.* }]
|
|
- name: Request
|
|
collectors: [{ type: directory, value: app/Http/Requests/.* }]
|
|
- name: Resource
|
|
collectors: [{ type: directory, value: app/Http/Resources/.* }]
|
|
- name: Middleware
|
|
collectors: [{ type: directory, value: app/Http/Middleware/.* }]
|
|
- name: Service
|
|
collectors: [{ type: directory, value: app/Services/.* }]
|
|
- name: Job
|
|
collectors: [{ type: directory, value: app/Jobs/.* }]
|
|
- name: Console
|
|
collectors: [{ type: directory, value: app/Console/.* }]
|
|
- name: Repository
|
|
collectors: [{ type: directory, value: app/Repositories/.* }]
|
|
- name: Model
|
|
collectors: [{ type: directory, value: app/Models/.* }]
|
|
- name: Mail
|
|
collectors: [{ type: directory, value: app/Mail/.* }]
|
|
- name: Rule
|
|
collectors: [{ type: directory, value: app/Rules/.* }]
|
|
- name: Exception
|
|
collectors: [{ type: directory, value: app/Exceptions/.* }]
|
|
- name: Provider
|
|
collectors: [{ type: directory, value: app/Providers/.* }]
|
|
ruleset:
|
|
# Conservative ruleset — enforces only the architecturally-wrong directions
|
|
# (inward/upward deps). Whatever current code violates is captured by the
|
|
# baseline (deptrac.baseline.yaml); this gate then catches only NEW drift.
|
|
Controller: [Service, Request, Resource, Model, Job, Mail, Repository, Rule, Exception]
|
|
Middleware: [Service, Model, Exception]
|
|
Service: [Service, Model, Repository, Job, Mail, Rule, Exception]
|
|
Job: [Service, Model, Repository, Mail, Exception]
|
|
Console: [Service, Model, Repository, Job, Mail, Exception]
|
|
Repository: [Model, Exception]
|
|
Request: [Rule, Model]
|
|
Resource: [Model]
|
|
Rule: [Model]
|
|
# Mail может зависеть от Service value objects (PreflightResult и аналоги) —
|
|
# это legit dependency: template needs data DTO от Service для рендера.
|
|
# Decision: ADR-005 amend 2026-05-29 (incident-followup cleanup).
|
|
Mail: [Model, Service]
|
|
Model: []
|
|
Provider: [Controller, Service, Job, Console, Repository, Model, Mail, Middleware, Request, Resource, Rule, Exception]
|