ATM

ВЫПОЛНЕНИЕ

Проекция и прохождение

RuntimeBinding связывает SemanticMap с текущим состоянием; ThinkingMapTraversal проверяет локальные ходы и выдаёт проверяемый результат.

Рабочая последовательность

  1. 1.Загрузить структуру области.
  2. 2.Связать состояние, роль и текущие данные.
  3. 3.Спроецировать только локальные варианты.
  4. 4.Проверить шлюзы, TTL и границы циклов.
  5. 5.Вернуть типизированный результат.
semantic_map + runtime_binding
            ↓
     local decision slice
            ↓
 deterministic guard check
            ↓
 typed traversal outcome

Три двери, а не одна

«Выполнить шаг» — это не один вызов. Их три, с разной степенью свободы. step() — широкий, рабочий путь: может вернуть 6 из 10 объявленных исходов. attempt_transition(), который реально совершает уже объявленный ход, гораздо уже: только ABSTAIN, COLLECT_EVIDENCE или CONTINUE. attempt_bridge() — переход между контекстами — самый узкий из всех: сначала проверяется контракт добросовестности (лицензия на замену против уровня риска), и только если он выполнен, состояние меняется. Без лицензии при высоком риске результат — ESCALATE, а не тихая ошибка.

Что модель на самом деле читает

Модель получает не рассказ, а slice(): предложенный ход, решение шлюза, доступные и недостающие данные, роли, булево can_fire, точные причины, почему ход невозможен («blockers»), и контракт ответа, который модель должна заполнить сама — утверждение, границы, основание, что можно говорить, чего нельзя, для кого. Система считает структурную часть. Модель добавляет только языковую.

Деталь, важная если реально читать JSON: gate.decision — это не имя enum в Python, а его значение — GateDecision.ABSTAIN доходит до модели строкой "insufficient", DEGRADE"partial". Модель всегда читает сериализованную строку, никогда внутреннее имя.