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

103 lines
5.4 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.

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