Skip to content

Preserve declared StateGraph edge order in serialized graph output#6982

Open
David Ahmann (davidahmann) wants to merge 1 commit intolangchain-ai:mainfrom
davidahmann:codex/issue-6979-semantic-edge-order-canonicalization
Open

Preserve declared StateGraph edge order in serialized graph output#6982
David Ahmann (davidahmann) wants to merge 1 commit intolangchain-ai:mainfrom
davidahmann:codex/issue-6979-semantic-edge-order-canonicalization

Conversation

@davidahmann

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

  • Switched StateGraph edge storage to insertion-preserving lists.
  • Added _edge_sequence tracking to preserve global edge declaration order.
  • Ensured compile path applies edges in declared order.
  • Updated CompiledStateGraph.get_graph() / aget_graph() to preserve declared non-conditional edge order while keeping conditional-edge positions stable.
  • Added regression test test_state_graph_serialization_preserves_declared_edge_order.

Validation

  • uv run pytest -q tests/test_pregel.py::test_state_graph_serialization_preserves_declared_edge_order
  • uv 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_order

Refs #6979

@davidahmann
Copy link
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:

  • (pass)

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant