Files
ss-tools/final-audit-report.md
busya ec6421de35 rename ss-tools to superset-tools across the entire project
- Replace all occurrences of 'ss-tools' with 'superset-tools' in 104 files
- Rename git bundle file ss-tools.bundle → superset-tools.bundle
- Update .gitignore pattern accordingly
- Preserve variable names (hasSsTools etc.) and code identifiers
2026-06-16 11:15:19 +03:00

229 lines
9.7 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.

# Финальный аудит — 469 warnings (инструкция агенту)
## Сводка всей оптимизации
| Метрика | Значение |
|---------|----------|
| Индекс | 3185 контрактов, 2149 связей, 690 файлов |
| Было предупреждений | ~3200 |
| Стало | **469** |
| Снижение | **↓85%** |
## Динамика по этапам
| Этап | Действие | Итого |
|:----:|----------|:-----:|
| Исходно | — | ~3200 |
| 1 | Config: complexity_rules + contract_types + contract_type_overrides | 1419 |
| 2 | Добавлены теги PARAM, RETURN, YIELDS, THROWS; LAYER Infra | 1190 |
| 3 | Фикс @LAYER Infra→Infrastructure, предикаты USES/EXPORTS, AuthService | 1190 |
| 4 | Нормализация @TAG: (2216 colon → space) | 1190 |
| 5 | DEF→Region (518 блоков, 37 файлов), bracket-predicates, BELONGS_TO→BINDS_TO | 820 |
| 6 | Переиндексация | 610 |
| 7 | Config: TEST, DEBT, NOTE, PROPERTY, TYPEDEF, RETURNS, UI_STATE, Frontend | 532 |
| 8 | Фикс :Module/:Function суффиксов (31 файл) | 532 |
| 9 | **Обновление Axiom (DuckDB sync)** | **469** |
## Текущие 469 предупреждений — инструкция агенту по исправлению
### Ошибка A: `unresolved_relation: 390` — parent-child BINDS_TO (баг Axiom ресолвера)
**❗ Это баг Rust-кода `axiom-mcp-server-rs`, не чинится правкой кода.**
#### Пример (не починить — дождаться фикса Axiom)
Файл: `backend/src/api/routes/__tests__/test_datasets.py`
```
#region DatasetsApiTests [TYPE Module] [C:3] [SEMANTICS test, dataset, api]
...
#region test_get_datasets_success [TYPE Function]
@RELATION BINDS_TO -> [DatasetsApiTests] ← unresolved (но родитель В ТОМ ЖЕ ФАЙЛЕ!)
#endregion
#region test_get_datasets_env_not_found [TYPE Function]
@RELATION BINDS_TO -> [DatasetsApiTests] ← unresolved
#endregion
...
#endregion DatasetsApiTests
```
Родитель `DatasetsApiTests` существует (строка 1), `read_outline` видит его, `search_contracts`НЕТ. Resolver не регистрирует parent до резолва детей.
**Затронутые файлы** (одинаковый паттерн):
```
backend/src/api/routes/__tests__/test_datasets.py
backend/src/api/routes/__tests__/test_dashboards.py
backend/src/api/routes/__tests__/test_assistant_api.py
backend/src/api/routes/__tests__/test_assistant_authz.py
backend/src/api/routes/__tests__/test_clean_release_api.py
backend/src/api/routes/__tests__/test_clean_release_legacy_compat.py
backend/src/api/routes/__tests__/test_clean_release_source_policy.py
backend/src/api/routes/__tests__/test_clean_release_v2_api.py
backend/src/api/routes/__tests__/test_clean_release_v2_release_api.py
backend/src/api/routes/__tests__/test_tasks_logs.py
backend/tests/core/test_defensive_guards.py
backend/tests/test_migration_engine.py
backend/tests/services/clean_release/test_approval_service.py
backend/tests/services/clean_release/test_candidate_manifest_services.py
```
**Что делать агенту с этими 350 предупреждениями:** НИЧЕГО. Ждать фикса `axiom-mcp-server-rs`.
---
### Ошибка B: `unresolved_relation: ~40` — реальные битые ссылки (починить кодом)
#### Пример B1: ссылка на переменную, не на контракт
Файл: `backend/src/api/routes/assistant/_admin_routes.py`
```python
# ❌ Сейчас:
# @RELATION DEPENDS_ON -> [CONVERSATIONS]
# ✅ Должно быть:
# Удалить строку — CONVERSATIONS это словарь в памяти, не контракт
```
**Как найти:** `grep -rn '@RELATION.*-> \[CONVERSATIONS\]' --include='*.py' .`
#### Пример B2: ссылка на функцию без #region
Файл: `backend/src/api/auth.py`
```python
# ❌ Сейчас:
# @RELATION DEPENDS_ON -> [log_security_event]
# ✅ Должно быть:
# @RELATION DEPENDS_ON -> [EXT:superset-tools:log_security_event]
# (функция есть в коде, но нет контракта)
```
**Как найти:** `axiom_semantic_discovery search_contracts query="log_security_event"` — если не найдено, это не контракт.
#### Пример B3: полный путь вместо ID
```python
# ❌ Сейчас:
# @RELATION DEPENDS_ON -> [backend.src.models.report]
# ✅ Должно быть:
# @RELATION DEPENDS_ON -> [ReportModels]
# (найти настоящее ID контракта через search_contracts)
```
---
### Ошибка C: `schema_unknown_tag: 19` — теги не в TagSchema (починить конфигом)
**Что это:** В коде используются `@ТЕГ`, которого нет в `axiom_config.yaml → tags:`.
#### Список неизвестных тегов
| Тег | Где встречается | Фикс |
|-----|----------------|------|
| `@TEST_DATA` | test файлы | Добавить в `axiom_config.yaml`: тестовая фикстура |
| `@CONSTRAINT` | model файлы | Добавить или заменить на `@INVARIANT` |
| `@CONTRACT` | model файлы | `@RELATION DEPENDS_ON` |
| `@CRITICAL_TRACE` | core/logging | Добавить |
| `@FRAGILE` | код | Добавить (хрупкий тест/код) |
| `@INVARIANT_VIOLATION` | тесты | Добавить |
| `@THROW` | код | Уже есть `@ERROR`, можно алиас |
| `@UX_REATIVITY` | svelte | Опечатка! Должно быть `@UX_REACTIVITY` |
| `@VALIDATION` | код | Заменить на `@INVARIANT` |
| `@DEBT` | код | ✅ уже добавлен (возможно DuckDB не догнал) |
#### Как добавить тег в конфиг
В `.axiom/axiom_config.yaml`, в раздел `tags:` (перед `# #endregion TagSchema`):
```yaml
TEST_DATA:
type: string
multiline: false
description: 'Тестовая фикстура или данные. Универсально опциональный.'
contract_types: []
protected: false
orthogonal: true
decision_memory: false
CONSTRAINT:
type: string
multiline: true
alias_for: INVARIANT
description: 'Алиас для INVARIANT. Универсально опциональный.'
contract_types: []
protected: false
orthogonal: true
decision_memory: false
```
#### Как проверить после добавления
```bash
axiom_semantic_index rebuild rebuild_mode="full"
axiom_semantic_validation audit_contracts
```
---
### Ошибка D: `schema_invalid_enum_value: 60` — невалидное значение enum
**Что это:** Тег имеет ограничение `enum:` в конфиге, но в коде написано другое значение.
#### Пример D1: @LAYER с нестандартным значением
Файл: `frontend/src/lib/components/...`
```javascript
// ❌ Сейчас:
// @LAYER: Atom
// @LAYER: Feature
// @LAYER: Page
// ✅ Должно быть:
// @LAYER UI
// Эти компоненты — часть UI слоя
```
LAYER enum сейчас: `[Core, Domain, API, UI, Service, Infrastructure, Plugin, Tests, Infra, UI (Tests), Frontend]`
Не в enum: `Atom`, `Feature`, `Page`, `Component`, `Application`, `App`, `Widget`, `Panel`
**Фикс:** Или расширить enum, или исправить значение в коде.
#### Пример D2: @TYPE с произвольным значением
```javascript
// ❌ Сейчас:
// @TYPE: {{ healthItems: Array<...> }}
// Значение — TypeScript тип, не enum
// ✅ Должно быть:
// Удалить @TYPE — это не тег, а TS тип
```
#### Как найти все проблемные значения
```bash
axiom_semantic_validation audit_contracts | grep invalid_enum_value | head -20
```
---
## План агенту по уменьшению 469 → ~0
| Шаг | Что делать | Инструмент | Ожидаемый результат |
|:---:|-----------|-----------|:-------------------:|
| 1 | Добавить 19 неизвестных тегов в `axiom_config.yaml` | `edit``rebuild` | unknown_tag: 19 → 0 |
| 2 | Исправить `@UX_REATIVITY``@UX_REACTIVITY` в svelte-файлах | `sed` | 1 unknown_tag |
| 3 | Исправить 60 invalid_enum: расширить LAYER enum или исправить в коде | `edit` конфига + `sed` по коду | invalid_enum: 60 → 0 |
| 4 | Удалить ~40 битых @RELATION (CONVERSATIONS, CONFIRMATIONS и др.) | `edit` кода | unresolved: 390 → 350 |
| 5 | Ждать фикса Axiom ресолвера (parent-child BINDS_TO) | — | unresolved: 350 → 0 |
## Что было сделано за сессию
| Область | Изменения |
|---------|-----------|
| Промпты агентов | 15 файлов: SSOT-архитектура, устранено дублирование tier/синтаксиса/anti-corruption |
| Конфиг Axiom | 26 тегов в complexity_rules, 12 тегов universal (contract_types: []), удалён contract_type_overrides |
| Код | Нормализовано 2216 @TAG:@TAG, 518 DEF→Region, 31 файл :Module/:Function суффиксы |
| Теги Axiom | Добавлены: PARAM, RETURN, YIELDS, THROWS, TEST, DEBT, NOTE, PROPERTY, TYPEDEF, RESTRICTION, RETURNS, UI_STATE, UX_TEST, TYPE |
| Enum LAYER | Добавлены: Infra, UI (Tests), Frontend |
| Предикаты RELATION | Добавлены: USES, CONTAINS, BELONGS_TO, ASSOCIATED_WITH |