theorydeltaclaim-fidelity audits
built 2026-07-17dossiers: 5last verified 2026-07-09independent · evidence-traced · no vendor influence

LABEL CHECK / DOSSIER

LangGraph

https://github.com/langchain-ai/langgraph·verified at langgraph==1.2.6 (2026-06-18)·last verified 2026-06-28·volatile (re-verified per release (≤2 weeks))

12claims sampled
3as labeled
7partial
2not as labeled
14open deltas
0verified closed

closure trend: zero closures to date — all four serialization deltas and the double-interrupt delta, first published 2026-03-29 against v1.0.10, remain open in the 1.2.x line (re-verified 2026-06-11); #6718 was closed once and reopened

Verdict

LangGraph's orchestration, streaming, and adoption claims hold as labeled, but its durable-execution and persistence label rests on a checkpoint layer whose documented enum and failure handling silently corrupts state — four serialization bugs, a double-interrupt snapshot bug, and a sync/async recovery divergence all re-verified open on 2026-06-28 against the 1.2.6 release line, the entire v1.0.10→1.2.4 span since Theory Delta first published them on 2026-03-29.

Claim ledger — 12 rows

#statusclaimedobservedevidenceverified
2as labeled"Trusted by companies shaping the future of agents – including Klarna, Replit, Elastic, and more"Full detail →Docs-reviewed for the named companies (vendor-published case studies; not independently confirmed by TD). Full detail →[1][2]
4partialDurable execution: "Build agents that persist through failures and can run for extended periods, automatically resuming from exactly where they left off"Full detail →"Exactly where they left off" holds only at checkpoint (node/superstep) boundaries: in-node progress is lost on failure, and a resumed node re-executes from its beginning — every side effect before an interrupt or… Full detail →[1][2][3][4]2026-07-12
7partialHuman-in-the-loop: "Seamlessly incorporate human oversight by inspecting and modifying agent state at any point during execution"Full detail →interrupt()/Command(resume) is confirmed as the working primary mechanism, with production constraints that fail silently rather than loudly: a node containing two interrupt() calls leaves get_state().next empty after… Full detail →[1][2][3]2026-07-12
8partial"Deploy sophisticated agent systems confidently with scalable infrastructure designed to handle the unique challenges of stateful, long-running workflows"Full detail →The deployment product exists (LangGraph Platform GA 2025-05-16, renamed LangSmith Deployment October 2025, per-deployment-minute pricing), but multi-tenant checkpoint isolation is not enforced at the framework level —… Full detail →[1][2][3]
9not as labeledDouble-texting Interrupt strategy: "This option halts the current execution and preserves the progress made up to the interruption point" before processing the new inputFull detail →Source-reviewed: reported behavior diverges from the documented semantics — both concurrent requests are processed together and return merged combined tool calls (e.g. Full detail →[1][2]2026-07-12
10partial"It also integrates seamlessly with any LangChain product, giving developers a full suite of tools for building agents"Full detail →LangSmith integration is genuinely zero-code (two environment variables auto-instrument every LLM call, tool invocation, and graph step). Full detail →[1][2][3]2026-07-12
11partialDebugging: "Gain deep visibility into complex agent behavior with visualization tools that trace execution paths, capture state transitions, and provide detailed runtime metrics"Full detail →Studio provides node-level execution and state visibility as claimed (interrupt-and-edit, replay, hot reload confirmed in the vendor's own launch material), but the debug surface is shallower than the failure surface… Full detail →[1][2]
12partialFault tolerance: "If one or more nodes fail at a given superstep, you can restart your graph from the last successful step," with pending checkpoint writes from successfully completed nodes preserved so they are not re-runFull detail →The superstep recovery mechanism works as documented, with two qualifications re-verified 2026-06-11: restored state whose deserialization fails is silently replaced with None rather than erroring, so a "successful"… Full detail →[1][2][3][4]

Delta ledger — 14 open

LG-01opened 2026-02-28

JsonPlusSerializer silently replaces failed deserializations with None — checkpoint restore cannot be trusted without post-restore validation

closes when:A checkpoint round-trip whose value fails deserialization raises an exception instead of restoring None, re-verified on a current release

evidence:[1]Re-verified open 2026-06-28 against langgraph==1.2.6

LG-02opened 2025-12-16

StrEnum fields silently coerced to plain str on checkpoint round-trip — type information lost

closes when:StrEnum fields restore from a checkpoint round-trip as StrEnum (isinstance check passes), re-verified on a current release

evidence:[1]Re-verified open 2026-06-28 against langgraph==1.2.6

LG-03opened 2026-01-24

Nested Enum fields become None after checkpoint deserialization (closed once, reopened 2026-01-24)

closes when:Nested Enum fields restore with their original values after checkpoint deserialization, re-verified on a current release

evidence:[1]Re-verified open 2026-06-28 against langgraph==1.2.6

LG-04opened 2026-02-23

BinaryOperatorAggregate stores the Overwrite wrapper instead of the payload when the initial value is MISSING

closes when:A BinaryOperatorAggregate channel whose initial value is MISSING stores the unwrapped payload, not the Overwrite wrapper, re-verified on a current release

evidence:[1]Re-verified open 2026-06-28 against langgraph==1.2.6

LG-05opened 2026-02-27

get_state().next returns empty after the first of two interrupt() calls — paused graph reports complete, approval gates can be silently skipped

closes when:get_state().next reports the paused node after resuming the first of two interrupt() calls in one node, re-verified on a current release

evidence:[1]Re-verified open 2026-06-28 against langgraph==1.2.6

LG-06opened 2026-03-04

Sync checkpoint path caches ERROR/INTERRUPT writes that the async path guards against — recovery behavior differs by execution mode

closes when:Sync and async checkpoint paths produce identical write sets for ERROR/INTERRUPT states, re-verified on a current release

evidence:[1]Re-verified open 2026-06-28 against langgraph==1.2.6

LG-07opened 2026-03-05

Command(resume=None) crashes the resume flow with UnboundLocalError

closes when:Command(resume=None) either resumes cleanly or raises a clear validation error instead of UnboundLocalError, re-verified on a current release

evidence:[1]Re-verified open 2026-06-28 against langgraph==1.2.6

LG-08opened 2025-09-01

Platform double-texting Interrupt strategy returns merged combined outputs instead of halting the prior run with isolated preserved progress

closes when:A concurrent request under the Interrupt double-texting strategy halts the prior run and returns its partial output isolated from the new run, re-verified against the deployed platform

evidence:[1]Re-verified open 2026-06-28 against langgraph==1.2.6

LG-09opened 2026-05-14

Multi-tenant checkpoint isolation not enforced at the framework level — thread scoping is application code's responsibility; cross-tenant state access reported in production

closes when:Checkpoint-level tenant scoping or namespace access control ships such that one thread's state cannot be read across tenants without application-layer guards, re-verified

evidence:[1]UPDATE 2026-06-28: the dev.to article no longer contains the cross-tenant claim (mutable source drift); the underlying behavior is corroborated by https://docs.langchain.com/langgraph-platform/auth (HTTP 200, developer-scoped isolation)Re-verified open 2026-06-28 against langgraph==1.2.6

LG-10opened 2025-12-23

langchain-mcp-adapters fails entirely when any single MCP server is down — no partial initialization or graceful degradation

closes when:MultiServerMCPClient initializes with unavailable servers skipped with a warning while the remaining servers' tools stay available, re-verified on a current release

evidence:[1]Re-verified open 2026-06-28 against langgraph==1.2.6

LG-11opened 2026-02-09

langchain-mcp-adapters ProxyUser serialization breaks on LangGraph Cloud while working locally — passes local testing, fails in deployment

closes when:MCP tool invocation with a ProxyUser auth context succeeds on LangGraph Cloud as it does locally, re-verified

evidence:[1]Re-verified open 2026-06-28 against langgraph==1.2.6

LG-12opened 2026-06-17

Race condition in PregelLoop.put_writes() silently loses checkpoint writes under concurrent Send tasks — fix PR #8114 closed unmerged

closes when:Concurrent Send tasks writing to the checkpoint produce the complete write set (no lost writes) under a stress test, re-verified on a current release

evidence:[1][2]

LG-13opened 2026-06-24

Checkpoint serialization failure class expanding — dict subclasses lose type fidelity (#8184) and Fraction/complex raise TypeError (#8185)

closes when:dict-subclass and Fraction/complex state values round-trip through a checkpoint with type preserved and no exception, re-verified on a current release

evidence:[1][2]

LG-14opened 2026-06

MCP tool parameter named "config" silently overwritten by RunnableConfig injection (langchain-mcp-adapters #532)

closes when:An MCP tool with a parameter named 'config' receives the caller's value rather than LangChain's injected RunnableConfig, re-verified on a current release

evidence:[1]

Methodology

sampling
Material-claims sampling rule (strategy/method.md §2, label-check methodology D0086): a claim is sampled iff it appears on the product's own label and would plausibly influence an adoption decision. Sampling frame: the langchain-ai/langgraph README (core benefits and ecosystem sections), the docs.langchain.com LangGraph overview, persistence, durable-execution, and streaming pages, and the LangGraph Platform double-texting and auth pages — label captured 2026-06-11. All material claims found on these surfaces are sampled (12 found).
verification depth
source-reviewed — not executed by Theory Delta
verification statement
Evidence is drawn from the project's own issue tracker, release history, and published documentation, plus third-party production reports. All load-bearing GitHub issue statuses (langgraph #6970, #6598, #6718, #6909, #6956, #7015, #7034; langchain-ai/docs #474; langchain-mcp-adapters #401, #416) were re-verified open on 2026-06-28 against the langgraph==1.2.6 release line (released 2026-06-18); 1.2.5 and 1.2.6 shipped no fixes for any tracked delta. Theory Delta has not executed LangGraph in its own environment for this dossier. Quantitative vendor-adjacent metrics (star counts, blog-reported PyPI download figures) are treated as unreliable and excluded from assessment.
backing confidence
secondary-research
strongest case against
All non-as_labeled verdicts rest on open-issue review, not execution: an open issue does not prove the behavior reproduces on langgraph==1.2.4, and most of the serialization bugs were filed against the 1.0.x line — a fix could have shipped without the issue being closed. The serialization failures affect specific type patterns; pipelines that checkpoint only primitive types never hit them, and a postmortem review in the backing corpus found real-world failures were mostly environmental rather than structural. LangGraph ships multiple releases per month (volatile decay class), so any specific row can go stale within weeks of the last-verified date.
theorydelta.com · 2026independent · evidence-backed · every claim sourced or labelledabout ·glossary ·rss ·mcp ·llms.txt