verified=true arrived without an opened supporting source.- Expected
opened_sources_count > 0- Observed
opened_sources_count = 0- Repair
- Before
verifier - Affected
verifier → decision_maker → publisher
Semantic Compatibility Infrastructure
GraphABI finds the first edge where meaning changed, shows the exact recorded witness, and traces every downstream node that may be affected.
uvx --from git+https://github.com/graphabi/graphabi graphabi demo --allow-breaking
verified=true arrived without an opened supporting source.
opened_sources_count > 0opened_sources_count = 0Repair before verifier · affected path reaches publisher
Graph playground
Choose the recorded producer output, then watch the semantic pulse travel toward the verifier. The candidate keeps its schema and breaks its meaning.
verified=true arrived without an opened supporting source.opened_sources_count > 0opened_sources_count = 0verifierverifier → decision_maker → publisherThe bug normal tests miss
Pydantic can validate a boolean. It cannot prove the boolean still means what the next node assumes.
{
"verified": true,
"confidence": 0.92,
"sources": ["source-1"]
}
Source opened and shown to support the claim.
{
"verified": true,
"confidence": 0.92,
"sources": ["source-1"]
}
Source access failed; the claim merely sounded plausible.
The JSON is identical. The meaning at researcher → verifier is not.
How GraphABI works
Every interface follows the same reasoning path. Nothing animates without explaining a step.
Record what crosses each graph edge.
Evaluate what the consumer relies on.
Stop at the first incompatible meaning.
Calculate downstream terminal paths.
Show the exact run and conflicting value.
Name the nearest repair location.
Consumer-driven edge contracts
The verifier defines what it needs from the researcher. Evaluators stay deterministic and independently extensible.
version: "0.1"
graph: research_demo
edges:
- id: researcher_to_verifier
producer: researcher
consumer: verifier
invariants:
- id: verified_requires_opened_supporting_source
evaluator: provenance
severity: breaking
rule: opened_supporting_source
Contract anatomy
researcherverifierverified requires source accesscandidate-003Run the proof locally
The demo executes baseline and candidate LangGraphs, records both in SQLite, and generates offline JSON and HTML.
GraphABI semantic compatibility report
Structural compatibility: PASS
Semantic compatibility: FAIL
First breaking edge: researcher → verifier
Breaking contract: verified_requires_opened_supporting_source
Witness: run candidate-003
Affected downstream nodes: verifier, decision_maker, publisher
Reports:
.graphabi/reports/latest/report.json
.graphabi/reports/latest/index.html
Framework-independent core
LangGraph integration ends at a versioned trace boundary. Contracts, comparison, impact, and reporting do not import framework types.
Framework-independent semantic compatibility pipeline
Framework types stop at the adapter boundary. Report presentation never decides compatibility.
A report that explains causality
Machine-readable JSON and a self-contained HTML report come from one redacted report model. The report works offline.
{
"structural": "pass",
"semantic": "breaking",
"first_breaking_edge": {
"producer": "researcher",
"consumer": "verifier",
"contract": "verified_requires_opened_supporting_source"
},
"witness": {
"run": "candidate-003",
"expected": "opened_sources_count > 0",
"observed": 0
},
"affected": ["verifier", "decision_maker", "publisher"],
"repair_before": "verifier"
}
researcherverifier
opened_sources_count > 0 expected, 0 observed.
verifierdecision_makerpublisher
Before verifier
One redacted report model. Both renderings are generated from it, and neither can disagree with the other.
Measured technical proof
Current branch measurements, linked to the source that enforces them.
Benchmarks cover synthetic graphs at 10, 100, and 1,000 nodes. They do not establish production scale. Inspect the methodology.
Honest uncertainty is part of the interface.
GraphABI evaluates explicit contracts. It does not understand arbitrary meaning.
A passing observed edge does not prove unobserved branches or inputs are compatible.
Trace schema 0.1 does not yet pair repeated loop or retry occurrences.
LangGraph is the only maintained adapter. OpenTelemetry and OpenInference ingestion are planned.
Choose a real edge
Each path has an architecture boundary, acceptance criteria, and a maintainer review point.
Semantic Compatibility Infrastructure
Run the local demo, read the contract, and inspect the trace-backed witness.
Local setup
Choose a setup path that works today. GraphABI is installed from Git until the first package release is approved.
Run the deterministic demo without a local install or API key.
uvx --from git+https://github.com/graphabi/graphabi graphabi demo --allow-breakingUse pipx to run the CLI directly from the public repository. GraphABI is not published to PyPI.
pipx run --spec git+https://github.com/graphabi/graphabi graphabi demo --allow-breakingUse the locked development environment for examples, tests, and contribution work.
git clone https://github.com/graphabi/graphabi.git && cd graphabi && uv syncInstall GraphABI from Git, then run the included LangGraph research graph or add the adapter to your trace boundary.
uv add "graphabi @ git+https://github.com/graphabi/graphabi"