103 lines
5.4 KiB
Markdown
103 lines
5.4 KiB
Markdown
# Axiom Resolver — Remaining Issues (532 warnings)
|
||
|
||
После полного цикла оптимизации (15 файлов промптов, конфиг валидатора, код) осталось **532 предупреждения** в 3 категориях. Все три — баги/ограничения в Rust-коде Axiom MCP сервера.
|
||
|
||
---
|
||
|
||
## 1. `unresolved_relation: 390`
|
||
|
||
### 1.1. Parent-child BINDS_TO (Resolver Bug)
|
||
|
||
**Суть:** Дочерние `#region` внутри родительского не могут зарезолвить `@RELATION BINDS_TO -> [ParentId]`.
|
||
|
||
**Пример (`test_datasets.py`):**
|
||
```python
|
||
# #region DatasetsApiTests [TYPE Module] [C:3]
|
||
# @BRIEF Tests for datasets API endpoints.
|
||
...
|
||
|
||
# #region test_get_datasets_success [TYPE Function]
|
||
# @RELATION BINDS_TO -> [DatasetsApiTests] ← unresolved
|
||
# #endregion test_get_datasets_success
|
||
...
|
||
# #endregion DatasetsApiTests
|
||
```
|
||
|
||
**Симптомы:**
|
||
- `read_outline` показывает структуру корректно (родитель есть)
|
||
- `search_contracts query="DatasetsApiTests"` — родителя НЕ возвращает, только детей
|
||
- Ни brackets (`[ParentId]`), ни их отсутствие (`ParentId`) не влияют
|
||
- Фикс `:Module`/`:Function` суффиксов в таргетах (-87 предупреждений) помог, но не устранил корень
|
||
|
||
**Гипотеза:** Регистрация родительского контракта в графе происходит после резолвинга детей. Rust-парсер должен регистрировать parent node до того, как начинает резолвить relation edges у children.
|
||
|
||
**Приоритет:** ❗ Высокий — это ~350 из 390 unresolved_relation
|
||
|
||
### 1.2. Несуществующие таргеты (~40 из 390)
|
||
|
||
Реальные битые ссылки — контракты, которые были переименованы/удалены:
|
||
- `CONVERSATIONS`, `CONFIRMATIONS` — модульные переменные, не контракты
|
||
- `audit_security_event`, `log_security_event` — функции без `#region`
|
||
- `backend.src.models.report`, `backend.src.core.task_manager.models.Task` — полные пути вместо ID
|
||
|
||
Необходимо: исправить вручную: создать контракты или заменить на `[EXT:...]`.
|
||
|
||
---
|
||
|
||
## 2. `schema_unknown_tag: 80` — DuckDB Schema Cache (Infrastructure Bug)
|
||
|
||
**Суть:** Audit-инструмент читает схему тегов из DuckDB (.axiom/semantic_index/graph.duckdb), а не из axiom_config.yaml напрямую. Новые теги, добавленные в YAML, не распознаются до пересборки DuckDB.
|
||
|
||
**Затронутые теги:**
|
||
```
|
||
TEST, DEBT, NOTE, PROPERTY, TYPEDEF, RETURNS, UI_STATE, CONSTRAINT, CONTRACT, CRITICAL_TRACE, FRAGILE, INVARIANT_VIOLATION, TEST_DATA, THROW, UX_REATIVITY (sic), VALIDATION
|
||
```
|
||
|
||
**Проблема:** `rebuild rebuild_mode="full" use_duckdb=true` таймаутит (600s). Без DuckDB-пересборки эти теги навсегда останутся `unknown`.
|
||
|
||
**Необходимо:**
|
||
1. Починить `use_duckdb=true` rebuild (сейчас виснет на 600с)
|
||
2. Или заставить audit читать схему из YAML, а не из DuckDB
|
||
3. Или синхронизировать YAML → DuckDB без полного rebuild
|
||
|
||
---
|
||
|
||
## 3. `schema_invalid_enum_value: 62` — DuckDB Schema Cache (Infrastructure Bug)
|
||
|
||
**Та же причина**, что и #2. В YAML добавлены:
|
||
- `Infra` → LAYER enum
|
||
- `UI (Tests)` → LAYER enum
|
||
- `Frontend` → LAYER enum
|
||
|
||
DuckDB не обновлён, поэтому валидатор их не видит.
|
||
|
||
---
|
||
|
||
## Инфраструктурная проблема: DuckDB vs YAML
|
||
|
||
Текущая архитектура:
|
||
```
|
||
axiom_config.yaml (редактируется) → [rebuild use_duckdb=true] → DuckDB (.axiom/semantic_index/graph.duckdb)
|
||
↓
|
||
audit_contracts читает DuckDB
|
||
```
|
||
|
||
Проблема: если DuckDB rebuild не работает, правка YAML бесполезна для аудита.
|
||
|
||
**Рекомендация:** Упростить до:
|
||
```
|
||
axiom_config.yaml (редактируется) → audit_contracts читает YAML напрямую
|
||
```
|
||
|
||
Без промежуточного DuckDB-кэша для схемы. DuckDB оставить только для семантического графа (контракты, связи). Или: пересобирать DuckDB автоматически при каждом старте MCP-сервера.
|
||
|
||
---
|
||
|
||
## Сводка
|
||
|
||
| # | Проблема | Влияние | Тип | Фикс |
|
||
|---|----------|---------|-----|------|
|
||
| 1 | Parent-child BINDS_TO не резолвится | ~350 | Rust resolver | Изменить порядок регистрации parent→children |
|
||
| 2 | DuckDB schema cache не синхронизирован с YAML | 80+62=142 | Инфраструктура | Починить `use_duckdb=true` или читать YAML напрямую |
|
||
| 3 | Несуществующие таргеты | ~40 | Код | Создать контракты или заменить на EXT: |
|