Слово conformance легко превращается в слишком большой вывод. Мы видим зелёный результат, число вроде 8/8 — и мозг почти автоматически достраивает: «значит framework надёжный». Именно здесь и начинается ошибка. Один и тот же projection score может стоять над совершенно разными storage contracts, разной mutability и разным источником гарантии.
Signal 018 фиксирует более строгий способ говорить о runtime verification: не сжимать результат в один ярлык, а раскрывать его как набор независимых утверждений. Каждое утверждение должно отвечать на три вопроса: какая версия исходного кода?, какая именно граница измерялась? и что действительно было доказано на этой границе?
Один score скрывает происхождение гарантии.
Profile validity говорит, что submission структурно распознаётся и внутренне согласован. Projection conformance говорит, что bounded reducer воспроизводит нужную семантику. Persistence отвечает, переживает ли evidence save/load или checkpoint boundary. Append-only — можно ли считать историю неизменяемой на измеренной поверхности. А «framework безопасен» — уже гораздо более широкое утверждение, которое из предыдущих пунктов автоматически не следует.
Signal 018 · Five measured boundaries
CrewAI · native events
6/8: measured native tool-event vocabulary не выражает explicit absence и evidence-bound deadline.
LangGraph · hosted checkpoint/state
8/8 projection + persistence; append-only behaviour остаётся обязанностью adapter policy.
AutoGen · hosted saved state
8/8 projection + JSON save/load; гарантия witness discipline поставляется bounded adapter.
Microsoft Agent Framework · hosted checkpoint
8/8 на source-pinned checkpoint boundary; это не framework-wide certification.
OpenAI Agents SDK · SQLiteSession envelope
8/8 projection + persistence, но native Session mutable: append-only FAIL, destructive mutations PRESENT.
Семь независимых осей.
Agent Runtime Conformance Matrix v0.1 не строит рейтинг «кто лучше». Она разводит свойства, которые часто ошибочно смешивают:
| Runtime | Projection | Replay | Explicit absence | Deadline | Persistence | Append-only | Destructive mutations |
|---|---|---|---|---|---|---|---|
| CrewAI | 6/8 FAIL | PASS | FAIL | FAIL | N/M | N/M | N/M |
| LangGraph | 8/8 PASS | PASS | PASS | PASS | PASS | ADAPTER | N/M |
| AutoGen | 8/8 PASS | PASS | PASS | PASS | PASS | ADAPTER | N/M |
| Microsoft Agent Framework | 8/8 PASS | PASS | PASS | PASS | PASS | ADAPTER | N/M |
| OpenAI Agents SDK | 8/8 PASS | PASS | PASS | PASS | PASS | FAIL | PRESENT |
N/M означает not measured на этой source-pinned границе. Это не утверждение, что runtime не имеет такой возможности где-либо ещё. ADAPTER означает другое: substrate способен нести нужный witness contract, но append-only discipline обеспечивается bounded adapter/reducer policy, а не доказана как immutable native storage contract.
Почему три 8/8 — не одна и та же гарантия.
LangGraph, AutoGen и Microsoft Agent Framework позволяют разместить complete witness contract в persistent state/checkpoint substrate. Это важный результат: explicit absence и deadline evidence могут быть сохранены и replayed без обращения к ambient wall clock. Но архитектурно это hosted capability.
substrate can host the contract ≠ every application automatically preserves the contractИменно adapter задаёт, какие факты разрешено добавлять, можно ли переписать историю, как нормализуется state и что считается evidence. Поэтому 8/8 здесь означает: на этой границе можно реализовать conformance без скрытого времени и синтетических фактов. Он не означает, что любой agent на этом framework автоматически обладает такой гарантией.
Почему 8/8 + append-only FAIL — не противоречие.
OpenAI Agents SDK показывает полезный контрпример. Restricted SQLiteSession envelope может сохранить witness sequence и дать 8/8 projection result. Persistence тоже работает. Но native Session API экспонирует destructive history operations — в измеренной версии это pop_item и clear_session.
То есть replay semantics могут быть правильными, пока выбранный envelope дисциплинирован, но native storage surface при этом не является append-only. Такая разница теряется мгновенно, если оставить только один score.
Почему CrewAI 6/8 — не «framework failure».
У CrewAI проверялась другая поверхность: native tool-event vocabulary. На pinned boundary она описывает start, finish, error и failure, но не выражает отдельный наблюдаемый факт вида:
checked window [a, b)
observed no response
deadline = d
Поэтому два capability check закономерно падают: explicit absence и deadline binding. Корректная формулировка: «измеренная native event boundary не выражает complete witness contract». Некорректная: «CrewAI целиком небезопасен или недетерминирован».
Portable profile: одна подача, несколько независимых ответов.
ContractGraph-QA PR #91 превращает матричную лексику в portable profile. Вместо поля conformant: true evaluator возвращает отдельные claims:
profileValid
projectionConformant
replay
explicitAbsence
deadlineBinding
persistence
appendOnly
destructiveMutations
Это маленькое изменение формата решает большую коммуникационную проблему: structurally valid profile больше нельзя незаметно выдать за semantic PASS, а semantic 8/8 — за proof of immutable storage.
cgqa runtime-conformance-profile --input profile.jsonПеред фразой «Framework X проходит conformance».
Какой source pin?
Ревизия должна быть конкретной и воспроизводимой.
Какая boundary?
Native events, checkpoint, session storage и hosted adapter нельзя смешивать.
Кто поставляет guarantee?
Framework, storage API или bounded adapter policy?
Какие axes measured?
PASS, FAIL, ADAPTER и N/M должны оставаться раздельными.
Есть destructive mutations?
Persistence сама по себе не делает evidence immutable.
Где executable evidence?
Результат должен вести к тесту, profile или source-pinned benchmark.
Что осталось unmeasured?
Неизмеренное пространство должно быть видно, а не дорисовано маркетинговой формулировкой.
Executable evidence.
Веб-версия — редакционный слой. Исполняемый источник истины остаётся в ContractGraph-QA, а Signal 018 хранит компактную operational memory о том, как читать результаты.
Source-pinned comparison vocabulary and independent axes.
Executable profile evaluator that fails closed on contradictory claims.
Verified routing guidance and bounded claim language.
Source-pinned runtime boundaries.
CrewAI
crewAIInc/crewAI@f4731f5025f861c78e3af0487cc80bf5e7c64782
LangGraph
langchain-ai/langgraph@f09cfe8ffc1eeffd68f4b628ed69c30f7cad229f
AutoGen
microsoft/autogen@027ecf0a379bcc1d09956d46d12d44a3ad9cee14
Microsoft Agent Framework
microsoft/agent-framework@d9d3fb6252f7ae9e7f8104edce7266f0782a813c
OpenAI Agents SDK
openai/openai-agents-python@7f7a44f8dc0650296bd5ab6c745c9bcbaa6ac3b7
Что этот Signal не доказывает.
Матрица и profile format не являются vendor endorsement, production security certification или доказательством framework-wide safety. Они не доказывают authenticity каждого внешнего evidence reference, distributed consistency произвольного backend и application-level correctness любого агента. Их verified claim уже и полезнее: разные runtime guarantees теперь можно измерять и публиковать отдельно, не пряча различия за одним зелёным числом.
Для RESONANCE это важный сдвиг. Журнал может говорить не «кто победил», а какая архитектурная граница что действительно гарантирует — и вести читателя от публичного тезиса прямо к executable evidence.
Открыть AI Agents research map Issue 001 · The Age of Agents →