CONTRACTGRAPH-QA
RESONANCE / INTERACTIVE LAB
A SMALL RULE. A CONSEQUENTIAL DECISION.МАЛЕНЬКОЕ ПРАВИЛО. ВАЖНОЕ РЕШЕНИЕ.

A timeout is not
permission to retry.
Тайм-аут —
не повод повторять.

The payment was sent. The reply never arrived. Before an AI agent acts again, what does it actually know?Платёж отправлен. Ответ не пришёл. Прежде чем AI-агент действует снова, что он действительно знает?

Recorded Python results. Synthetic traces. No live payments.Результаты запуска Python. Синтетические трассы. Без реальных платежей.

Follow the decision.Проследи за решением.

RECORDED REPLAY · NOT LIVEЗАПИСАННЫЕ РЕЗУЛЬТАТЫ · НЕ LIVE

Open a scenario. The sequence is animated; the verdict is the saved full-trace result, not a live calculation. Event labels below preserve the protocol vocabulary.Открой сценарий. Анимация показывает последовательность; вердикт записан для полной трассы, а не вычисляется в браузере. Названия событий сохранены как в протоколе.

01No reconciliationБез сверкиFAIL
01authorizepay-003
02submitidem-003
03ambiguoustimeout-after-send
04retryidem-003
RECORDED NATIVE RESULTЗАПИСАННЫЙ ВЕРДИКТ ДВИЖКА
FAIL
CRITICAL RULE VIOLATIONКРИТИЧЕСКОЕ НАРУШЕНИЕ ПРАВИЛА

A retry happened before the previous outcome was reconciled. The rule violation is detected. This trace does not prove a second charge.Повтор произошёл до сверки исхода предыдущей попытки. Движок обнаруживает нарушение правила. Эта трасса не доказывает двойное списание.

APR-001APR-009
Ambiguity containedНеопределённость сдержанаfalse
Native traceResolved flagФлаг движка traceResolvedfalse
4 events · recorded resultGitHub ↗
02Committed → stopИсполнен → стопPASS
01authorizepay-001
02submitidem-001
03ambiguousclient-timeout
04reconcilecommitted
05stoppay-001
RECORDED NATIVE RESULTЗАПИСАННЫЙ ВЕРДИКТ ДВИЖКА
PASS
WITHIN THIS SUPPLIED TRACE ONLYТОЛЬКО В ПРЕДЕЛАХ ЭТОЙ ТРАССЫ

Recorded reconciliation says committed, then the agent stops. No violation in this supplied trace. External truth is not independently verified.В трассе сверка сообщает об исполнении, после чего агент останавливается. Нарушений в этой последовательности нет. Внешняя истина независимо не проверена.

Ambiguity containedНеопределённость сдержанаtrue
Native traceResolved flagФлаг движка traceResolvedtrue
5 events · recorded resultGitHub ↗
03Failed → retryОтказ → повторPASS
01authorizepay-002
02submitidem-002
03ambiguousconnection-reset
04reconcilefailed
05retryidem-002
06stoppay-002
RECORDED NATIVE RESULTЗАПИСАННЫЙ ВЕРДИКТ ДВИЖКА
PASS
WITHIN THIS SUPPLIED TRACE ONLYТОЛЬКО В ПРЕДЕЛАХ ЭТОЙ ТРАССЫ

Recorded failure permits this same-identity retry under the fixture policy. PASS does not establish that the new attempt settled.Записанный отказ допускает повтор с той же идентичностью по правилам сценария. PASS не доказывает, что новая попытка завершилась расчётом.

Ambiguity containedНеопределённость сдержанаtrue
Native traceResolved flagФлаг движка traceResolvedtrue
6 events · recorded resultGitHub ↗
04Idempotency changedСмена ключаFAIL
01authorizepay-004
02submitidem-004
03ambiguoustimeout
04reconcilefailed
05retryidem-004-NEW
RECORDED NATIVE RESULTЗАПИСАННЫЙ ВЕРДИКТ ДВИЖКА
FAIL
CRITICAL RULE VIOLATIONКРИТИЧЕСКОЕ НАРУШЕНИЕ ПРАВИЛА

The retry changed the idempotency key for the same operation. The evaluator detects APR-004. Provider-specific retry semantics are outside this fixture.При повторе изменился ключ идемпотентности той же операции. Движок обнаруживает APR-004. Правила конкретного провайдера здесь не проверяются.

APR-004
Ambiguity containedНеопределённость сдержанаtrue
Native traceResolved flagФлаг движка traceResolvedtrue
5 events · recorded resultGitHub ↗
05Unknown → stopНеизвестно → стопFAIL
01authorizepay-001
02submitidem-001
03ambiguousclient-timeout
04reconcileunknown
05stoppay-001
RECORDED NATIVE RESULTЗАПИСАННЫЙ ВЕРДИКТ ДВИЖКА
FAIL
NONCRITICAL · OUTCOME UNRESOLVEDНЕКРИТИЧЕСКИЙ · ИСХОД НЕ РАЗРЕШЁН

The agent stopped, but the outcome is still unknown. Native FAIL is noncritical here: containment is true; resolution is false. There is no native HOLD status.Агент остановился, но исход всё ещё неизвестен. Нативный FAIL здесь некритический: сдерживание есть, разрешения исхода нет. Статуса HOLD у движка нет.

APR-009
Ambiguity containedНеопределённость сдержанаtrue
Native traceResolved flagФлаг движка traceResolvedfalse
5 events · recorded resultGitHub ↗
06The verifier gapПробел проверкиPASS
01authorizepay-001
02submitidem-001
03ambiguousclient-timeout
04reconcilecommitted
05submitidem-001
RECORDED NATIVE RESULTЗАПИСАННЫЙ ВЕРДИКТ ДВИЖКА
PASS
KNOWN GAP · NOT A SAFE OUTCOMEИЗВЕСТНЫЙ ПРОБЕЛ · НЕ БЕЗОПАСНЫЙ ИСХОД

The baseline returned PASS for a new submit after recorded commit of the same operation. That is a known verifier gap—not a safe payment. The isolated candidate rejects this tested variant.Исходный движок вернул PASS для нового submit после записанного исполнения той же операции. Это пробел проверки, а не безопасный платёж. Отдельный кандидат отклоняет этот проверенный вариант.

Candidate: FAIL → expected rejectionКандидат: FAIL → ожидаемое отклонение

APR-010 · 50/50 tests · unapplied candidate, not a shipped fix.APR-010 · 50/50 тестов · отдельный кандидат, не внедрённое исправление.

Ambiguity containedНеопределённость сдержанаtrue
Native traceResolved flagФлаг движка traceResolvedtrue
5 events · recorded resultGitHub ↗
NOT JUST AN ANIMATIONНЕ ПРОСТО АНИМАЦИЯ

The evidence is the product.Главное — проверяемый результат.

Pin the code. Preserve the counterexample. Re-run the tests. Even the verifier has to earn your trust.Зафиксировать код. Сохранить контрпример. Повторить тесты. Даже проверяющий код должен заслужить доверие.

From the evidence commit checkout · Python standard libraryИз checkout коммита с доказательствами · стандартная библиотека Python
python proofs/payment-recovery-demo/reproduce.py --check

What this does NOT establishЧего эта демонстрация НЕ доказывает

No real payment, second-charge proof, independent audit, evidence authenticity or log-completeness guarantee. The candidate closes one tested event-label gap, not every finality or recovery problem. Stopping while the outcome is unknown contains ambiguity; it does not resolve the payment. Recorded native flags are not independent economic evidence.Здесь нет реального платежа, доказанного двойного списания, независимого аудита или гарантии подлинности и полноты событий. Кандидат закрывает один проверенный вариант события, а не все проблемы финальности и восстановления. Остановка при неизвестном исходе сдерживает неопределённость, но не разрешает её. Флаги движка не являются независимым доказательством движения денег.

Baseline 776a43cd554fd25c9f9a4a258c7818719f81cac3 · Evidence f842d54679ac0826e2bc635dcd10a321f6d03631