Commits
Tarun Sukhani authored cfd1dd731cb
spike(testrunner): classify DB tests reached via interface dispatch (PF-154) Root cause of the downstream (JClaw) autotest flake tax: usesDatabase()'s ASM reachability walk follows only STATIC references, so a unit test that touches the DB through dynamic dispatch on an interface — where the concrete impl isn't statically reachable from the test's call graph (e.g. MemoryStoreFactory.get() typed as the MemoryStore interface, impl JpaMemoryStore which references models.Memory + play.db.jpa.JPA) — is mis-tagged U: (pure/parallel). It then runs on the 16-permit parallel lane and its Fixtures/JPA activity races the serialized D: lane on the shared jdbc:h2:mem DB, wiping rows mid-run. Fix: on an interface method call (visitMethodInsn isInterface=true), enqueue every application class implementing that interface via Play.classes.getAssignableClasses, so the walk reaches the concrete DB-touching impl and classifies D: correctly. Keeps the parallelism win for genuinely-pure tests; visited-set dedups the impls. PROTOTYPE — API-verified against fork source but NOT yet built/measured. Validation (PF-154 AC): build the fork, point a JClaw worktree's composite build at it, dump the U:/D: classification to name the currently-misclassified test(s), and measure flake reduction + suite-time delta before any fork-main merge. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>