ATM

АРХИТЕКТУРНЫЕ СХЕМЫ

Потоки, шлюзы и переходы

Связанные схемы архитектуры библиотеки. Следуйте стрелкам: от карты и состояния к срезу агента, детерминированной проверке и результату.

Карта модулей

Каждый файл зависит только от тех, что стоят перед ним в цепочке, — без циклических зависимостей, без скрытых связей.

primitives.py

12 примитивов, 5 этажей

state.py

связывание + активное состояние + срез

guards.py + logic.py

9 защитных правил, 6 операторов

traversal.py

движок шагов, 10 объявленных исходов

Поверх всего этого стоят examples.py (5 поставляемых сценариев) и verify.py (22 автоматические проверки) — не утверждения, а код, который вы запускаете сами:

python -m fpf_thinking_map.verify
python -m fpf_thinking_map.examples
Поток полной архитектурыATM · ARCHITECTURE
SemanticMapконечный доменRuntimeBindingсостояние + данныеThinkingMapTraversalдетерминированный движокЛокальный срезmove · gate · rolesLLM / Agentпредлагает ходЗащита + логикапроверяет допустимостьКонтракт ответаструктурированный выходТипизированный итогCONTINUE / ABSTAINОтдельный переходизменяет состояниецикл под контролем состояния
Решение одного шагаATM · ARCHITECTURE
step()увеличить TTLКонтекст активен?CHANGE_FRAMEЛогика согласована?ABSTAIN9 защитных правилжёсткие ограниченияДанных достаточно?COLLECT_EVIDENCEХод разрешёнCONTINUE / BRIDGE / IDLECHANGE_FRAMEнет контекстаABSTAINпротиворечиеCOLLECT_EVIDENCEшлюз не заполненNONONOсбор → следующий вызов step()
Композиция 6 операторовATM · ARCHITECTURE
EvidenceFreshGatePassesRoleActiveRiskAboveTransitionAvailableIsStateANDNOTIMPLIESIFFXORORИнформационные фактыHINT / WARNПредложенные действияROUTE / BLOCKНесовместимостьнайдено противоречиеconsistency_check()взаимоисключение, без противоречийABSTAINК защитным правилам
Жизненный цикл TTL данныхATM · ARCHITECTURE
CURRENTвозраст < TTLSTALEage ≥ TTLEXPIREDage ≥ 2×TTLstep_counter ↑step_counter ↑новые данные / повторная проверка

Семантические этажи и их устаревание

Ничто, кроме структуры на этаже 0, не является «памятью» неограниченного срока. У остального — свои часы, и их ход не одинаков везде.

Floor 0 — STRUCTURAL

ContextPrimitive, ContextBridge, RolePrimitive, TransitionPrimitive, определение шлюза

TTL: ∞ — никогда не устаревает
Floor 1 — BINDING

Назначение роли, обязательство, план работы

TTL: 10 шагов
Floor 2 — EVIDENTIARY

Доказательство, кортеж доверия (точность × релевантность)

TTL: максимум 1, F×R×8 шагов
Floor 3 — OPERATIONAL

Речевой акт, работа, оценка шлюза

TTL: 2 шага
Floor 4 — PUBLICATION

Публикация

TTL: наследуется от источника

Десять объявленных исходов, семь живых

Движок объявляет 10 типов исходов. 6 доступны из step() — обычного рабочего пути. ESCALATE приходит только из attempt_bridge(), когда у моста нет нужной лицензии под заявленный риск. BRIDGE «жив», но только как объявление — реальное исполнение — отдельный, отдельно лицензируемый вызов.

CONTINUEживойABSTAINживойCOLLECT_EVIDENCEживойCHANGE_FRAMEживойIDLEживойESCALATEживойBRIDGEтолько рекомендательныйASKобъявлен, недостижимPUBLISHобъявлен, недостижимREVISE_PLANобъявлен, недостижим

ASK, PUBLISH и REVISE_PLAN объявлены в OutcomeKind и названы в докстринге модуля — но ни один код пока их не возвращает. Это не скрытый баг: это проверено прямо в коде, а не просто предположено по документации, и написано здесь как есть.

ARCHITECTURE.md — технический источник ↗