ID |
|
|---|---|
Status |
Backlog |
Bucket |
bug |
Priority |
3 |
Theme |
testing |
Created |
2026-08-22 |
Updated |
2026-08-22 |
A bridging-condition split-table execution case returns a second actor only in a full-module run
GraphQLQueryTest.splitTableField_bridgingConditionJoin_returnsActorsPerFilm in
graphitron-sakila-example failed one full mvnd install -Plocal-db and passed the next, on an
unchanged tree. The assertion is an exact list of actor ids: it expected [1] and got [1, 2], so
the read returned one row too many rather than timing out or erroring.
What makes it worth an item rather than a re-run is that the same code answers differently depending
on what ran beside it. Re-run alone the case passes; re-run as the whole GraphQLQueryTest class,
378 tests, it passes; the second full reactor build was green. No commit between the last known-green
full build and the failing one touched generator main sources, the model DDL, or this module, which
is what rules out a regression and leaves execution order or residual database state as the
mechanism. An execution-tier case whose answer depends on its neighbours is a case that cannot be
trusted either way: it will fail a green tree, and it will pass a broken one.
Where to start is what a second actor row means for this shape. The case is a @splitQuery field
whose join is bridged by a @condition, so the candidates are a bridging predicate that admits an
extra row when a row another case wrote is present (making the expected [1] correct only against a
pristine table), and a fixture that mutates shared state without restoring it. The full-module
failure is reproducible material: the failing run’s ordering is recoverable from the surefire report
beside the passing one.
A second order-dependent failure surfaced in the same session, in graphitron-lsp and with nothing
in common with this one beyond being order-dependent; it is filed as
roadmap/trace-static-state-leaks-between-cases.md. Two in three full builds is what says the suite
has such cases rather than one unlucky test, which is the reason both are items instead of re-runs.
Found while holding the In Review gate on the inlay enforcer item, which is unrelated to this module; filed rather than folded into that verdict.