Your workflow said it worked. Did the database actually change?
What: You just shipped an agent or automation run—LangGraph-style graphs, OpenAI tool loops, or CRM batch jobs—and the trace or success flag says everything worked. This product runs read-only SQL against your SQLite or Postgres to check whether persisted rows actually match what structured tool activity claimed.
Why: Traces and chat narratives describe intent and step outcomes; they do not prove the row you care about exists with the right values. That gap is how green CI and green traces still ship silent state failures.
When: Use it after a workflow or replay when you need ground truth before customer-facing actions, compliance evidence, or a CI gate—whenever "it looked fine in the trace" is no longer good enough.
Run verificationWhy traces are not database truthIntegrateView examplePricing
Pasteable terminal proof (bundled demo)
### Success (`wf_complete`)
workflow_id: wf_complete
workflow_status: complete
trust: TRUSTED: Every step matched the database under the configured verification rules.
steps:
- seq=0 tool=crm.upsert_contact result=Matched the database.
{
"schemaVersion": 15,
"workflowId": "wf_complete",
"status": "complete",
"steps": [{ "seq": 0, "toolId": "crm.upsert_contact", "status": "verified" }]
}
### Failure (`wf_missing`)
workflow_id: wf_missing
workflow_status: inconsistent
steps:
- seq=0 tool=crm.upsert_contact result=Expected row is missing from the database (the log implies a write that is not present).
reference_code: ROW_ABSENT
{
"schemaVersion": 15,
"workflowId": "wf_missing",
"status": "inconsistent",
"steps": [
{
"seq": 0,
"toolId": "crm.upsert_contact",
"status": "missing",
"reasons": [{ "code": "ROW_ABSENT" }]
}
]
}Concrete scenario
A support tool reports “ticket closed” and the trace step is green. In the CRM database, the ticket row should be `status = resolved`. Verification compares that expectation to a real `SELECT`—not to the narrative.
Before
You only see trace or tool success; you assume the row was written correctly.
After
You get a verdict from observed SQL: aligned with expectations, missing row, or wrong values—still at verification time, not proof of who wrote what.
Declared → Expected → Observed
- Declared — what captured tool activity encodes (`toolId`, parameters).
- Expected — what should hold in SQL under your registry rules.
- Observed — what read-only queries returned at verification time.
This is not generic observability or log search. It is a deterministic comparison of expected state to live database reads—not proof that a specific API call caused a row.
Who this is for
For you
- You emit structured tool activity (e.g. NDJSON) your pipeline can produce.
- You have SQL-accessible ground truth (SQLite, Postgres, or a mirror).
- You care when traces look fine but rows are wrong or missing.
Not for you
- You only have unstructured logs and no SQL ground truth.
- You need causal proof that a particular call wrote a row.
- You want a generic APM or log analytics replacement.
What is guaranteed (and what is not)
Guaranteed
- Verdicts are based on read-only SQL against your DB at verification time, under your registry rules.
- Same inputs and DB snapshot yield the same deterministic result shape (schema-versioned JSON).
Not guaranteed
- Not proof that a tool executed, committed, or caused a row—only that state did or did not match expectations when checked.
Example: same engine as the CLI
Bundled workflows wf_complete, wf_missing, and wf_inconsistent use examples/events.ndjson, examples/tools.json, and examples/demo.db—the same inputs as the CLI.
wf_complete
Truth report (excerpt)
workflow_id: wf_complete
workflow_status: complete
trust: TRUSTED: Every step matched the database under the configured verification rules.
execution_path: Full upstream execution-path visibility requires schemaVersion 2 run events (retrieval, model_turn, control, tool_skipped) with run graph fields.
run_level: (none)
event_sequence: normal
steps:
- seq=0 tool=crm.upsert_contact
declared: tool=crm.upsert_contact; intent=Upsert contact "c_ok" with fields {"name":"Alice","status":"active"}; parameters_digest={"fields":{"name":"Alice","status":"active"},"recordId":"c_ok"}
expected: table=contacts identity=[id=c_ok] required_fields=[name, status]
observed_database: rowCount=1
verification_verdict: outcome=VERIFIED; Matched the database.
observations: evaluated=1 of 1 in_capture_orderworkflow-result (JSON)
{
"schemaVersion": 15,
"workflowId": "wf_complete",
"status": "complete",
"runLevelReasons": [],
"verificationPolicy": {
"consistencyMode": "strong",
"verificationWindowMs": 0,
"pollIntervalMs": 0
},
"eventSequenceIntegrity": {
"kind": "normal"
},
"steps": [
{
"seq": 0,
"toolId": "crm.upsert_contact",
"intendedEffect": {
"narrative": "Upsert contact \"c_ok\" with fields {\"name\":\"Alice\",\"status\":\"active\"}"
},
"observedExecution": {
"paramsCanonical": "{\"fields\":{\"name\":\"Alice\",\"status\":\"active\"},\"recordId\":\"c_ok\"}"
},
"verificationRequest": {
"kind": "sql_row",
"table": "contacts",
"identityEq": [
{
"column": "id",
"value": "c_ok"
}
],
"requiredFields": {
"name": "Alice",
"status": "active"
}
},
"status": "verified",
"reasons": [],
"evidenceSummary": {
"rowCount": 1
},
"repeatObservationCount": 1,
"evaluatedObservationOrdinal": 1
}
],
"verificationRunContext": {
"maxWireSchemaVersion": 1,
"retrievalEvents": [],
"controlEvents": [],
"modelTurnEvents": [],
"toolSkippedEvents": [],
"toolObservedIngestIndexBySeq": {
"0": 0
},
"firstToolObservedIngestIndex": 0,
"hasRunCompletedControl": false,
"lastRunEvent": {
"ingestIndex": 0,
"type": "tool_observed"
}
},
"workflowTruthReport": {
"schemaVersion": 9,
"workflowId": "wf_complete",
"workflowStatus": "complete",
"trustSummary": "TRUSTED: Every step matched the database under the configured verification rules.",
"runLevelIssues": [],
"eventSequence": {
"kind": "normal"
},
"steps": [
{
"seq": 0,
"toolId": "crm.upsert_contact",
"outcomeLabel": "VERIFIED",
"observations": {
"evaluatedOrdinal": 1,
"repeatCount": 1
},
"reasons": [],
"intendedEffect": {
"narrative": "Upsert contact \"c_ok\" with fields {\"name\":\"Alice\",\"status\":\"active\"}"
},
"observedExecution": {
"paramsCanonical": "{\"fields\":{\"name\":\"Alice\",\"status\":\"active\"},\"recordId\":\"c_ok\"}"
},
"verifyTarget": "table=contacts identity=[id=c_ok] required_fields=[name, status]",
"observedStateSummary": "rowCount=1"
}
],
"failureAnalysis": null,
"executionPathFindings": [],
"executionPathSummary": "Full upstream execution-path visibility requires schemaVersion 2 run events (retrieval, model_turn, control, tool_skipped) with run graph fields.",
"failureExplanation": null,
"correctnessDefinition": null
}
}wf_missing
Truth report (excerpt)
workflow_id: wf_missing
workflow_status: inconsistent
trust: NOT TRUSTED: At least one step failed verification against the database (determinate failure).
execution_path: Full upstream execution-path visibility requires schemaVersion 2 run events (retrieval, model_turn, control, tool_skipped) with run graph fields.
diagnosis:
summary: Primary failure at seq 0 tool crm.upsert_contact (code ROW_ABSENT); origin: downstream_system_state.
primary_origin: downstream_system_state
confidence: medium
actionable_failure: category=ambiguous severity=high recommended_action=manual_review automation_safe=false
- evidence: scope=step codes=ROW_ABSENT seq=0 tool=crm.upsert_contact
alternative_origin: downstream_system_state
rationale: The database has no row at the verified key; the tool log may not have committed a write, or replication lag prevented observation.
alternative_origin: tool_use
rationale: The database has no row at the verified key; the registry key/value or pointer resolution from tool params may not match the row that was written.
failure_explanation:
expected: Verification expected post-execution database state to satisfy verify_target "table=contacts identity=[id=missing_id] required_fields=[name, status]" and intended_effect "Upsert contact "missing_id" with fields {"name":"X","status":"Y"}" for seq=0 toolId=crm.upsert_contact under policy [consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0].
observed: Step verification outcome: code=ROW_ABSENT detail=No row matched key (table=contacts id=missing_id); rowCount=0
divergence: Divergence at step seq=0 toolId=crm.upsert_contact: primary_code=ROW_ABSENT meaning=Success was implied, but no matching row was found in the database.
known_facts:
- id=trust_summary value=NOT TRUSTED: At least one step failed verification against the database (determinate failure).
- id=workflow_status value=inconsistent
- id=verification_policy value=consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0
- id=primary_origin value=downstream_system_state
- id=classification_confidence value=medium
- id=failure_analysis_summary value=Primary failure at seq 0 tool crm.upsert_contact (code ROW_ABSENT); origin: downstream_system_state.
- id=primary_scope value=step
- id=primary_codes value=ROW_ABSENT
- id=primary_tool_id value=crm.upsert_contact
- id=primary_seq value=0
- id=verify_target value=table=contacts identity=[id=missing_id] required_fields=[name, status]
- id=intended_effect_narrative value=Upsert contact "missing_id" with fields {"name":"X","status":"Y"}
- id=evidence_summary_row_count value=0
unknowns:
- id=classification_confidence_band value=medium
- id=competing_hypothesis value=origin=downstream_system_state|rationale=The database has no row at the verified key; the tool log may not have committed a write, or replication lag prevented observation.
- id=competing_hypothesis value=origin=tool_use|rationale=The database has no row at the verified key; the registry key/value or pointer resolution from tool params may not match the row that was written.
correctness_definition:
enforcement_kind: step_sql_expectation
must_always_hold: Must: after tool_observed seq=0 toolId=crm.upsert_contact, database state SHALL satisfy the verification contract in verificationRequest under policy [consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0] for workflowId=wf_missing.
enforce_as:
- Registry (or synthetic events plus registry) SHALL keep verificationRequest aligned with declared tool parameters for seq=0.
- Authoritative SQL state SHALL match identity, required fields, and relational checks encoded in verificationRequest.
enforceable_projection: {"projectionKind":"step_sql_expectation","workflowId":"wf_missing","verificationPolicyFragment":"consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0","seq":0,"toolId":"crm.upsert_contact","verificationRequest":{"kind":"sql_row","table":"contacts","identityEq":[{"column":"id","value":"missing_id"}],"requiredFields":{"name":"X","status":"Y"}}}
remediation_alignment: recommended_action=manual_review automation_safe=false
run_level: (none)
event_sequence: normal
steps:
- seq=0 tool=crm.upsert_contact
declared: tool=crm.upsert_contact; intent=Upsert contact "missing_id" with fields {"name":"X","status":"Y"}; parameters_digest={"fields":{"name":"X","status":"Y"},"recordId":"missing_id"}
expected: table=contacts identity=[id=missing_id] required_fields=[name, status]
observed_database: rowCount=0
verification_verdict: outcome=FAILED_ROW_MISSING; Expected row is missing from the database (the log implies a write that is not present).; failure_category=workflow_execution
observations: evaluated=1 of 1 in_capture_order
detail: No row matched key (table=contacts id=missing_id)
reference_code: ROW_ABSENT
user_meaning: Success was implied, but no matching row was found in the database.workflow-result (JSON)
{
"schemaVersion": 15,
"workflowId": "wf_missing",
"status": "inconsistent",
"runLevelReasons": [],
"verificationPolicy": {
"consistencyMode": "strong",
"verificationWindowMs": 0,
"pollIntervalMs": 0
},
"eventSequenceIntegrity": {
"kind": "normal"
},
"steps": [
{
"seq": 0,
"toolId": "crm.upsert_contact",
"intendedEffect": {
"narrative": "Upsert contact \"missing_id\" with fields {\"name\":\"X\",\"status\":\"Y\"}"
},
"observedExecution": {
"paramsCanonical": "{\"fields\":{\"name\":\"X\",\"status\":\"Y\"},\"recordId\":\"missing_id\"}"
},
"verificationRequest": {
"kind": "sql_row",
"table": "contacts",
"identityEq": [
{
"column": "id",
"value": "missing_id"
}
],
"requiredFields": {
"name": "X",
"status": "Y"
}
},
"status": "missing",
"reasons": [
{
"code": "ROW_ABSENT",
"message": "No row matched key (table=contacts id=missing_id)"
}
],
"evidenceSummary": {
"rowCount": 0
},
"repeatObservationCount": 1,
"evaluatedObservationOrdinal": 1,
"failureDiagnostic": "workflow_execution"
}
],
"verificationRunContext": {
"maxWireSchemaVersion": 1,
"retrievalEvents": [],
"controlEvents": [],
"modelTurnEvents": [],
"toolSkippedEvents": [],
"toolObservedIngestIndexBySeq": {
"0": 0
},
"firstToolObservedIngestIndex": 0,
"hasRunCompletedControl": false,
"lastRunEvent": {
"ingestIndex": 0,
"type": "tool_observed"
}
},
"workflowTruthReport": {
"schemaVersion": 9,
"workflowId": "wf_missing",
"workflowStatus": "inconsistent",
"trustSummary": "NOT TRUSTED: At least one step failed verification against the database (determinate failure).",
"runLevelIssues": [],
"eventSequence": {
"kind": "normal"
},
"steps": [
{
"seq": 0,
"toolId": "crm.upsert_contact",
"outcomeLabel": "FAILED_ROW_MISSING",
"observations": {
"evaluatedOrdinal": 1,
"repeatCount": 1
},
"reasons": [
{
"code": "ROW_ABSENT",
"message": "No row matched key (table=contacts id=missing_id)"
}
],
"intendedEffect": {
"narrative": "Upsert contact \"missing_id\" with fields {\"name\":\"X\",\"status\":\"Y\"}"
},
"observedExecution": {
"paramsCanonical": "{\"fields\":{\"name\":\"X\",\"status\":\"Y\"},\"recordId\":\"missing_id\"}"
},
"verifyTarget": "table=contacts identity=[id=missing_id] required_fields=[name, status]",
"observedStateSummary": "rowCount=0",
"failureCategory": "workflow_execution"
}
],
"failureAnalysis": {
"summary": "Primary failure at seq 0 tool crm.upsert_contact (code ROW_ABSENT); origin: downstream_system_state.",
"primaryOrigin": "downstream_system_state",
"confidence": "medium",
"unknownReasonCodes": [],
"evidence": [
{
"scope": "step",
"seq": 0,
"toolId": "crm.upsert_contact",
"codes": [
"ROW_ABSENT"
]
}
],
"alternativeHypotheses": [
{
"primaryOrigin": "downstream_system_state",
"rationale": "The database has no row at the verified key; the tool log may not have committed a write, or replication lag prevented observation."
},
{
"primaryOrigin": "tool_use",
"rationale": "The database has no row at the verified key; the registry key/value or pointer resolution from tool params may not match the row that was written."
}
],
"actionableFailure": {
"category": "ambiguous",
"severity": "high",
"recommendedAction": "manual_review",
"automationSafe": false
}
},
"executionPathFindings": [],
"executionPathSummary": "Full upstream execution-path visibility requires schemaVersion 2 run events (retrieval, model_turn, control, tool_skipped) with run graph fields.",
"failureExplanation": {
"schemaVersion": 1,
"expected": "Verification expected post-execution database state to satisfy verify_target \"table=contacts identity=[id=missing_id] required_fields=[name, status]\" and intended_effect \"Upsert contact \"missing_id\" with fields {\"name\":\"X\",\"status\":\"Y\"}\" for seq=0 toolId=crm.upsert_contact under policy [consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0].",
"observed": "Step verification outcome: code=ROW_ABSENT detail=No row matched key (table=contacts id=missing_id); rowCount=0",
"divergence": "Divergence at step seq=0 toolId=crm.upsert_contact: primary_code=ROW_ABSENT meaning=Success was implied, but no matching row was found in the database.",
"knownFacts": [
{
"id": "trust_summary",
"value": "NOT TRUSTED: At least one step failed verification against the database (determinate failure)."
},
{
"id": "workflow_status",
"value": "inconsistent"
},
{
"id": "verification_policy",
"value": "consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0"
},
{
"id": "primary_origin",
"value": "downstream_system_state"
},
{
"id": "classification_confidence",
"value": "medium"
},
{
"id": "failure_analysis_summary",
"value": "Primary failure at seq 0 tool crm.upsert_contact (code ROW_ABSENT); origin: downstream_system_state."
},
{
"id": "primary_scope",
"value": "step"
},
{
"id": "primary_codes",
"value": "ROW_ABSENT"
},
{
"id": "primary_tool_id",
"value": "crm.upsert_contact"
},
{
"id": "primary_seq",
"value": "0"
},
{
"id": "verify_target",
"value": "table=contacts identity=[id=missing_id] required_fields=[name, status]"
},
{
"id": "intended_effect_narrative",
"value": "Upsert contact \"missing_id\" with fields {\"name\":\"X\",\"status\":\"Y\"}"
},
{
"id": "evidence_summary_row_count",
"value": "0"
}
],
"unknowns": [
{
"id": "classification_confidence_band",
"value": "medium"
},
{
"id": "competing_hypothesis",
"value": "origin=downstream_system_state|rationale=The database has no row at the verified key; the tool log may not have committed a write, or replication lag prevented observation."
},
{
"id": "competing_hypothesis",
"value": "origin=tool_use|rationale=The database has no row at the verified key; the registry key/value or pointer resolution from tool params may not match the row that was written."
}
]
},
"correctnessDefinition": {
"schemaVersion": 1,
"enforcementKind": "step_sql_expectation",
"mustAlwaysHold": "Must: after tool_observed seq=0 toolId=crm.upsert_contact, database state SHALL satisfy the verification contract in verificationRequest under policy [consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0] for workflowId=wf_missing.",
"enforceAs": [
"Registry (or synthetic events plus registry) SHALL keep verificationRequest aligned with declared tool parameters for seq=0.",
"Authoritative SQL state SHALL match identity, required fields, and relational checks encoded in verificationRequest."
],
"enforceableProjection": {
"projectionKind": "step_sql_expectation",
"workflowId": "wf_missing",
"verificationPolicyFragment": "consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0",
"seq": 0,
"toolId": "crm.upsert_contact",
"verificationRequest": {
"kind": "sql_row",
"table": "contacts",
"identityEq": [
{
"column": "id",
"value": "missing_id"
}
],
"requiredFields": {
"name": "X",
"status": "Y"
}
}
},
"remediationAlignment": {
"recommendedAction": "manual_review",
"automationSafe": false
}
}
}
}wf_inconsistent
Truth report (excerpt)
workflow_id: wf_inconsistent
workflow_status: inconsistent
trust: NOT TRUSTED: At least one step failed verification against the database (determinate failure).
execution_path: Full upstream execution-path visibility requires schemaVersion 2 run events (retrieval, model_turn, control, tool_skipped) with run graph fields.
diagnosis:
summary: Primary failure at seq 0 tool crm.upsert_contact (code VALUE_MISMATCH); origin: downstream_system_state.
primary_origin: downstream_system_state
confidence: medium
actionable_failure: category=ambiguous severity=high recommended_action=manual_review automation_safe=false
- evidence: scope=step codes=VALUE_MISMATCH seq=0 tool=crm.upsert_contact
alternative_origin: downstream_system_state
rationale: Stored column values differ from required fields; the live database state may have diverged from what the tool reported.
alternative_origin: inputs
rationale: Stored column values differ from required fields; registry pointers or consts used to build the verification request may not match the observation payload.
failure_explanation:
expected: Verification expected post-execution database state to satisfy verify_target "table=contacts identity=[id=c_bad] required_fields=[name, status]" and intended_effect "Upsert contact "c_bad" with fields {"name":"Bob","status":"active"}" for seq=0 toolId=crm.upsert_contact under policy [consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0].
observed: Step verification outcome: code=VALUE_MISMATCH detail=Expected "active" but found "wrong" for field status (table=contacts id=c_bad); field=status; expected="active"; actual="wrong"; rowCount=1
divergence: Divergence at step seq=0 toolId=crm.upsert_contact: primary_code=VALUE_MISMATCH meaning=Wrong value in the database for a required field.
known_facts:
- id=trust_summary value=NOT TRUSTED: At least one step failed verification against the database (determinate failure).
- id=workflow_status value=inconsistent
- id=verification_policy value=consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0
- id=primary_origin value=downstream_system_state
- id=classification_confidence value=medium
- id=failure_analysis_summary value=Primary failure at seq 0 tool crm.upsert_contact (code VALUE_MISMATCH); origin: downstream_system_state.
- id=primary_scope value=step
- id=primary_codes value=VALUE_MISMATCH
- id=primary_tool_id value=crm.upsert_contact
- id=primary_seq value=0
- id=verify_target value=table=contacts identity=[id=c_bad] required_fields=[name, status]
- id=intended_effect_narrative value=Upsert contact "c_bad" with fields {"name":"Bob","status":"active"}
- id=evidence_summary_field value=status
- id=evidence_summary_expected value="active"
- id=evidence_summary_actual value="wrong"
- id=evidence_summary_row_count value=1
unknowns:
- id=classification_confidence_band value=medium
- id=competing_hypothesis value=origin=downstream_system_state|rationale=Stored column values differ from required fields; the live database state may have diverged from what the tool reported.
- id=competing_hypothesis value=origin=inputs|rationale=Stored column values differ from required fields; registry pointers or consts used to build the verification request may not match the observation payload.
correctness_definition:
enforcement_kind: step_sql_expectation
must_always_hold: Must: after tool_observed seq=0 toolId=crm.upsert_contact, database state SHALL satisfy the verification contract in verificationRequest under policy [consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0] for workflowId=wf_inconsistent.
enforce_as:
- Registry (or synthetic events plus registry) SHALL keep verificationRequest aligned with declared tool parameters for seq=0.
- Authoritative SQL state SHALL match identity, required fields, and relational checks encoded in verificationRequest.
enforceable_projection: {"projectionKind":"step_sql_expectation","workflowId":"wf_inconsistent","verificationPolicyFragment":"consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0","seq":0,"toolId":"crm.upsert_contact","verificationRequest":{"kind":"sql_row","table":"contacts","identityEq":[{"column":"id","value":"c_bad"}],"requiredFields":{"name":"Bob","status":"active"}}}
remediation_alignment: recommended_action=manual_review automation_safe=false
run_level: (none)
event_sequence: normal
steps:
- seq=0 tool=crm.upsert_contact
declared: tool=crm.upsert_contact; intent=Upsert contact "c_bad" with fields {"name":"Bob","status":"active"}; parameters_digest={"fields":{"name":"Bob","status":"active"},"recordId":"c_bad"}
expected: table=contacts identity=[id=c_bad] required_fields=[name, status]
observed_database: rowCount=1 field=status expected="active" actual="wrong"
verification_verdict: outcome=FAILED_VALUE_MISMATCH; A row was found, but required values do not match.; failure_category=workflow_execution
observations: evaluated=1 of 1 in_capture_order
detail: Expected "active" but found "wrong" for field status (table=contacts id=c_bad) field=status
reference_code: VALUE_MISMATCH
user_meaning: Wrong value in the database for a required field.workflow-result (JSON)
{
"schemaVersion": 15,
"workflowId": "wf_inconsistent",
"status": "inconsistent",
"runLevelReasons": [],
"verificationPolicy": {
"consistencyMode": "strong",
"verificationWindowMs": 0,
"pollIntervalMs": 0
},
"eventSequenceIntegrity": {
"kind": "normal"
},
"steps": [
{
"seq": 0,
"toolId": "crm.upsert_contact",
"intendedEffect": {
"narrative": "Upsert contact \"c_bad\" with fields {\"name\":\"Bob\",\"status\":\"active\"}"
},
"observedExecution": {
"paramsCanonical": "{\"fields\":{\"name\":\"Bob\",\"status\":\"active\"},\"recordId\":\"c_bad\"}"
},
"verificationRequest": {
"kind": "sql_row",
"table": "contacts",
"identityEq": [
{
"column": "id",
"value": "c_bad"
}
],
"requiredFields": {
"name": "Bob",
"status": "active"
}
},
"status": "inconsistent",
"reasons": [
{
"code": "VALUE_MISMATCH",
"message": "Expected \"active\" but found \"wrong\" for field status (table=contacts id=c_bad)",
"field": "status"
}
],
"evidenceSummary": {
"rowCount": 1,
"field": "status",
"expected": "\"active\"",
"actual": "\"wrong\""
},
"repeatObservationCount": 1,
"evaluatedObservationOrdinal": 1,
"failureDiagnostic": "workflow_execution"
}
],
"verificationRunContext": {
"maxWireSchemaVersion": 1,
"retrievalEvents": [],
"controlEvents": [],
"modelTurnEvents": [],
"toolSkippedEvents": [],
"toolObservedIngestIndexBySeq": {
"0": 0
},
"firstToolObservedIngestIndex": 0,
"hasRunCompletedControl": false,
"lastRunEvent": {
"ingestIndex": 0,
"type": "tool_observed"
}
},
"workflowTruthReport": {
"schemaVersion": 9,
"workflowId": "wf_inconsistent",
"workflowStatus": "inconsistent",
"trustSummary": "NOT TRUSTED: At least one step failed verification against the database (determinate failure).",
"runLevelIssues": [],
"eventSequence": {
"kind": "normal"
},
"steps": [
{
"seq": 0,
"toolId": "crm.upsert_contact",
"outcomeLabel": "FAILED_VALUE_MISMATCH",
"observations": {
"evaluatedOrdinal": 1,
"repeatCount": 1
},
"reasons": [
{
"code": "VALUE_MISMATCH",
"message": "Expected \"active\" but found \"wrong\" for field status (table=contacts id=c_bad)",
"field": "status"
}
],
"intendedEffect": {
"narrative": "Upsert contact \"c_bad\" with fields {\"name\":\"Bob\",\"status\":\"active\"}"
},
"observedExecution": {
"paramsCanonical": "{\"fields\":{\"name\":\"Bob\",\"status\":\"active\"},\"recordId\":\"c_bad\"}"
},
"verifyTarget": "table=contacts identity=[id=c_bad] required_fields=[name, status]",
"observedStateSummary": "rowCount=1 field=status expected=\"active\" actual=\"wrong\"",
"failureCategory": "workflow_execution"
}
],
"failureAnalysis": {
"summary": "Primary failure at seq 0 tool crm.upsert_contact (code VALUE_MISMATCH); origin: downstream_system_state.",
"primaryOrigin": "downstream_system_state",
"confidence": "medium",
"unknownReasonCodes": [],
"evidence": [
{
"scope": "step",
"seq": 0,
"toolId": "crm.upsert_contact",
"codes": [
"VALUE_MISMATCH"
]
}
],
"alternativeHypotheses": [
{
"primaryOrigin": "downstream_system_state",
"rationale": "Stored column values differ from required fields; the live database state may have diverged from what the tool reported."
},
{
"primaryOrigin": "inputs",
"rationale": "Stored column values differ from required fields; registry pointers or consts used to build the verification request may not match the observation payload."
}
],
"actionableFailure": {
"category": "ambiguous",
"severity": "high",
"recommendedAction": "manual_review",
"automationSafe": false
}
},
"executionPathFindings": [],
"executionPathSummary": "Full upstream execution-path visibility requires schemaVersion 2 run events (retrieval, model_turn, control, tool_skipped) with run graph fields.",
"failureExplanation": {
"schemaVersion": 1,
"expected": "Verification expected post-execution database state to satisfy verify_target \"table=contacts identity=[id=c_bad] required_fields=[name, status]\" and intended_effect \"Upsert contact \"c_bad\" with fields {\"name\":\"Bob\",\"status\":\"active\"}\" for seq=0 toolId=crm.upsert_contact under policy [consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0].",
"observed": "Step verification outcome: code=VALUE_MISMATCH detail=Expected \"active\" but found \"wrong\" for field status (table=contacts id=c_bad); field=status; expected=\"active\"; actual=\"wrong\"; rowCount=1",
"divergence": "Divergence at step seq=0 toolId=crm.upsert_contact: primary_code=VALUE_MISMATCH meaning=Wrong value in the database for a required field.",
"knownFacts": [
{
"id": "trust_summary",
"value": "NOT TRUSTED: At least one step failed verification against the database (determinate failure)."
},
{
"id": "workflow_status",
"value": "inconsistent"
},
{
"id": "verification_policy",
"value": "consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0"
},
{
"id": "primary_origin",
"value": "downstream_system_state"
},
{
"id": "classification_confidence",
"value": "medium"
},
{
"id": "failure_analysis_summary",
"value": "Primary failure at seq 0 tool crm.upsert_contact (code VALUE_MISMATCH); origin: downstream_system_state."
},
{
"id": "primary_scope",
"value": "step"
},
{
"id": "primary_codes",
"value": "VALUE_MISMATCH"
},
{
"id": "primary_tool_id",
"value": "crm.upsert_contact"
},
{
"id": "primary_seq",
"value": "0"
},
{
"id": "verify_target",
"value": "table=contacts identity=[id=c_bad] required_fields=[name, status]"
},
{
"id": "intended_effect_narrative",
"value": "Upsert contact \"c_bad\" with fields {\"name\":\"Bob\",\"status\":\"active\"}"
},
{
"id": "evidence_summary_field",
"value": "status"
},
{
"id": "evidence_summary_expected",
"value": "\"active\""
},
{
"id": "evidence_summary_actual",
"value": "\"wrong\""
},
{
"id": "evidence_summary_row_count",
"value": "1"
}
],
"unknowns": [
{
"id": "classification_confidence_band",
"value": "medium"
},
{
"id": "competing_hypothesis",
"value": "origin=downstream_system_state|rationale=Stored column values differ from required fields; the live database state may have diverged from what the tool reported."
},
{
"id": "competing_hypothesis",
"value": "origin=inputs|rationale=Stored column values differ from required fields; registry pointers or consts used to build the verification request may not match the observation payload."
}
]
},
"correctnessDefinition": {
"schemaVersion": 1,
"enforcementKind": "step_sql_expectation",
"mustAlwaysHold": "Must: after tool_observed seq=0 toolId=crm.upsert_contact, database state SHALL satisfy the verification contract in verificationRequest under policy [consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0] for workflowId=wf_inconsistent.",
"enforceAs": [
"Registry (or synthetic events plus registry) SHALL keep verificationRequest aligned with declared tool parameters for seq=0.",
"Authoritative SQL state SHALL match identity, required fields, and relational checks encoded in verificationRequest."
],
"enforceableProjection": {
"projectionKind": "step_sql_expectation",
"workflowId": "wf_inconsistent",
"verificationPolicyFragment": "consistencyMode=strong; verificationWindowMs=0; pollIntervalMs=0",
"seq": 0,
"toolId": "crm.upsert_contact",
"verificationRequest": {
"kind": "sql_row",
"table": "contacts",
"identityEq": [
{
"column": "id",
"value": "c_bad"
}
],
"requiredFields": {
"name": "Bob",
"status": "active"
}
}
},
"remediationAlignment": {
"recommendedAction": "manual_review",
"automationSafe": false
}
}
}
}Try it (no account)
Pick a bundled scenario. The server runs the same verification engine as the open-source CLI against demo fixtures.
Commercial surface (what the product charges for)
The default OSS build from this repository gives you full contract verify without an API key. The published npm package uses license preflight: licensed verify, quick verify, and CI locks require an active Individual, Team, Business, or Enterprise subscription (Stripe trial counts), then consume monthly quota. Higher tiers add headroom. Machine contracts: OpenAPI and plans JSON are linked from docs and the account page.