Files
ss-tools/axiom-resolver-bugs-remaining.md
2026-05-26 09:30:41 +03:00

5.4 KiB
Raw Blame History

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 — функции без #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: