0.12.0
Fixed
-
A dispatched command's handler is no longer a hidden caller. The dispatch tracer drew a
dispatcher → handleredge only when the dispatched or instantiated target looked like a queued job — namespaced underJobs\, or implementingShouldQueue. A resolveddispatch(new SomeCommand())whose target is aDispatchablecommand, or a plain self-handling command (ahandle()/__invoke()class with no queue trait, which Laravel still runs synchronously through the bus), drew no edge. A change to such a handler could then drop the dispatching action's test fromaffected-testsselection — but only when the graph contained no other unfollowable dispatch — andrichter:impactunder-reported the change's blast radius. Both now recognise the command handler as a real caller. -
A queued job with an unloadable ancestor no longer silently disappears from the graph. The previous job check swallowed autoload failures and concluded "not a job", so a
ShouldQueuejob whose parent class or trait could not be loaded drew no dispatch edge at all. The shared dispatch-target predicate now resolves that uncertainty toward drawing the edge, so an unclassifiable target is over-approximated (a caller is shown) rather than dropped.
Changed
richter:impactanddetect-changesmay report more reach — and occasionally a higher risk level — for code that dispatches commands. This release only ever adds edges to the graph, soaffected-testscan select the same tests or more, never fewer, and impact reports become more complete. If a change dispatchesDispatchableor self-handling commands, expect its reported reach to grow to include those handlers. This is the intended, more-honest behavior; it lands as a minor version because the output shifts for a real class of applications.
Internal
- The dispatch tracer and the
affected-testsdeterminability blocker now share one definition of "dispatch target", so edge-drawing and change-scoping recognise exactly the same set of shapes. - No cache-format bump was needed: the richter package version is part of the graph fingerprint, so upgrading invalidates any cached graph and rebuilds it once, automatically, on first use — the wider edge set appears immediately, no action required.
- Suite grows to 717 tests / 1,649 assertions, including new coverage that a resolved dispatch of a self-handling command and of a
Dispatchablecommand each draw the handler edge, and that a genuinely non-dispatchable class still draws none.
Full Changelog: v0.11.1...v0.12.0