# 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: |