Skip to content

test: add cache callable-identity regression matrix - #8760

Draft
Aleksey Safonov (safal207) wants to merge 1 commit into
langchain-ai:mainfrom
safal207:test/8753-cache-callable-identity
Draft

test: add cache callable-identity regression matrix#8760
Aleksey Safonov (safal207) wants to merge 1 commit into
langchain-ai:mainfrom
safal207:test/8753-cache-callable-identity

Conversation

@safal207

@safal207 Aleksey Safonov (safal207) commented Aug 30, 2026

Copy link
Copy Markdown

Fixes #8761

Related bug: #8753

Summary

Adds a tests-only regression matrix for #8753 at the public StateGraph.add_node() boundary.

The matrix covers:

  • distinct top-level named functions as the non-colliding sync/async control;
  • callable instances;
  • lambdas;
  • functools.partial bindings;
  • closures with different captured values;
  • bound methods from different instances;
  • RunnableCallable wrappers with different bound kwargs;
  • distinct named async def nodes.

Known collision rows use xfail(strict=True). This keeps the suite green before a source fix lands, while making an unexpected XPASS fatal so each repaired row must be converted into an ordinary permanent regression.

Scope boundary

Validation

Validated against exact main@11ee185999b86bfea2d8c0e69cef9a5e37acf686:

Python 3.11: 2 passed, 13 xfailed
Python 3.12: 2 passed, 13 xfailed
Ruff check: pass
Ruff format --check: pass
Unexpected passes: 0
Errors: 0

The two passing rows are the named-function controls; the 13 strict xfails are the currently reproduced callable-identity collisions.

@github-actions

This comment has been minimized.

@vasilisnasopoulos

Copy link
Copy Markdown

Connor Braa (@cwlbraa) John Kennedy (@jkennedyvz) — a small procedural ask rather than a technical one, since the bot points at maintainers here.

This PR was auto-closed for the missing assignment, not for anything about its content. It is tests only: one added file, no production changes, and it deliberately does not choose between the two fixes under discussion in #8753.

The reason it can land ahead of any fix is the way it is marked. The known-colliding rows are xfail(strict=True), so the suite is green today and every row that a later fix repairs turns into a fatal XPASS until someone removes its marker. Validated on main@11ee185: 2 passed, 13 xfailed on both 3.11 and 3.12 — the two passing rows are the named-function controls, which are what make the other thirteen mean anything.

The bot's own note says reopening or dropping the missing-issue-link label is enough. Failing that, assigning Aleksey Safonov (@safal207) to #8761 reopens it automatically.

I filed the underlying bug (#8753) and have no stake in this PR beyond wanting the matrix to exist: Aleksey Safonov (@safal207) measured most of these rows independently on current main, and Sehlani042 is holding the source change separately so the two do not collide. Whichever policy you eventually prefer, the coverage is the part that makes it checkable.

@github-actions github-actions Bot added the bypass-issue-check Maintainer override: skip issue-link enforcement label Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bypass-issue-check Maintainer override: skip issue-link enforcement external

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add tests-only regression matrix for cache callable-identity collisions

3 participants