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