Preserve declared StateGraph edge order in serialized graph output#6982
Open
David Ahmann (davidahmann) wants to merge 1 commit intolangchain-ai:mainfrom
Conversation
Author
|
Implemented the scoped fix for #6979 by preserving declared edge order in StateGraph serialization and adding a regression test that asserts deterministic declared-order output. Validation run:
Current CI snapshot: reports no checks; is empty, so this is currently . This contribution was informed by patterns from Wrkr. Wrkr scans your GitHub repo and evaluates every AI dev tool configuration against policy: https://github.com/Clyra-AI/wrkr |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
StateGraph serialization can lose declaration order for equal-constraint edges, causing unstable output and ordering drift in downstream tooling.
Why now
Deterministic graph serialization is required for reproducible behavior and stable contract tests.
What changed
StateGraphedge storage to insertion-preserving lists._edge_sequencetracking to preserve global edge declaration order.CompiledStateGraph.get_graph()/aget_graph()to preserve declared non-conditional edge order while keeping conditional-edge positions stable.test_state_graph_serialization_preserves_declared_edge_order.Validation
uv run pytest -q tests/test_pregel.py::test_state_graph_serialization_preserves_declared_edge_orderuv run pytest -q tests/test_pregel.py::test_conditional_entrypoint_to_multiple_state_graph tests/test_pregel.py::test_conditional_state_graph_with_list_edge_inputs tests/test_pregel.py::test_state_graph_serialization_preserves_declared_edge_orderRefs #6979