5.4 KiB
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):
# #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— функции без#regionbackend.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.
Необходимо:
- Починить
use_duckdb=truerebuild (сейчас виснет на 600с) - Или заставить audit читать схему из YAML, а не из DuckDB
- Или синхронизировать YAML → DuckDB без полного rebuild
3. schema_invalid_enum_value: 62 — DuckDB Schema Cache (Infrastructure Bug)
Та же причина, что и #2. В YAML добавлены:
Infra→ LAYER enumUI (Tests)→ LAYER enumFrontend→ 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: |