release: v0.1.1 — release the never-throw Dispatcher fix#12
Conversation
Moves the [Unreleased] eager-Dispatcher-injection fix to [0.1.1]. The fix resolves the Bus lazily inside report()'s guard so a BindingResolutionException no longer escapes the consumer's exception handler (observed in Laravel 12). emmie (Laravel 12, requires ^0.1.0) currently pulls v0.1.0, which still carries the eager-injection bug — cutting v0.1.1 lets emmie pick the fix up on the next composer update. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01KJtjLXkdnv4Bm4HV1f1zor
Town Crier Review · 9/10 · PASS · 🔎 Independentkendo-error-tracker #12 · AC anchor: PR description — v0.1.1 release · head Tip Docs-only release PR: the sole diff cuts a No findings — clean against the review checklist. |
jasperboerhof
left a comment
There was a problem hiding this comment.
Auto-approved — Town Crier verdict PASS @Head, CI green, no open MAJOR+ thread. Our approval is our independent vote (approve-alongside): a peer's review / CHANGES_REQUESTED never withholds it — we verify every blocker ourselves, and a real one drops our own verdict below PASS. See the verdict comment + inline notes.
Goosterhof
left a comment
There was a problem hiding this comment.
Confirming the prior PASS. Docs-only release PR — the diff is two lines cutting a ## [0.1.1] — 2026-06-29 header so the previously-[Unreleased] never-throw Dispatcher fix rolls under a versioned heading. No code change, as the description states.
I re-walked the load-bearing claim independently rather than taking it on faith: the CHANGELOG entry asserts the bus is resolved lazily inside report()'s guard rather than eager-injected. Verified against src/ErrorTracker.php at head 1ddceac:
- The constructor takes
Illuminate\Contracts\Container\Container $container, notIlluminate\Contracts\Bus\Dispatcher— no eagerBindingResolutionExceptionat resolve time. report()calls$this->container->make(Dispatcher::class)->dispatch(new ReportErrorJob($payload))inside thetry { … } catch (Throwable $e)block, so an unresolvable Bus deferred provider is swallowed toerror_logand the consumer's original exception is preserved.
That swallow-on-failure / never-throw path is the privacy control the NEN 7510 / AVG consumer territories (emmie, codebook, ublgenie) lean on, so a regression here would be a real blocker — there is none. The doc faithfully records the shipped code.
Housekeeping checks pass: 0.1.0 → 0.1.1 is a correct patch bump (bug fix, no public-API change), the date matches today, and the em-dash heading style is consistent with the existing [0.1.0] — 2026-06-08 entry. CI is green on both PHP 8.4 and 8.5.
No blockers, no concerns, no nits. PASS. COMMENT rather than APPROVE only because this is a war-room-authored PR (self-approve blocked) — the verdict is approve-worthy.
Automated war-room agent review — posted because this PR carries the Agent Review Requested label.
Town Crier Review · 9/10 · PASS · 🤝 Confirmkendo-error-tracker #12 · AC anchor: PR description (no kendo issue linked; fallback per Step 1.2) · head Tip Docs-only release PR (CHANGELOG.md header insertion rolling the never-throw Dispatcher fix under No findings — clean against the review checklist. Bus thread · 1 prior review(s):
|
jasperboerhof
left a comment
There was a problem hiding this comment.
Auto-approved — Town Crier verdict PASS @Head, CI green, no open MAJOR+ thread. Our approval is our independent vote (approve-alongside): a peer's review / CHANGES_REQUESTED never withholds it — we verify every blocker ourselves, and a real one drops our own verdict below PASS. See the verdict comment + inline notes.
Goosterhof
left a comment
There was a problem hiding this comment.
✅ Approve-worthy
0 blockers · 0 concerns · 0 nits · 0 inline
Round 4 — since 1ddceac: 0 addressed, 0 new, 0 open. The only delta at this head (350df73) is a merge-in of main dropping .github/workflows/announce-pr.yml (155 lines, superseded by the ADR-0036 GitHub App producer) — no touch to CHANGELOG.md or src/. Verified directly: git diff --stat 1ddceacc..350df733 shows exactly that one file.
CI green on both check (8.4) and check (8.5).
This re-confirms my prior review (pullrequestreview-4592793607 at 1ddceac) and the bus's already-resolved 3-review consensus (dispatch independent PASS + dispatch confirm + my confirm, resolved 2026-07-01). Nothing to add — same docs-only two-line CHANGELOG bump ([Unreleased] → [0.1.1] — 2026-06-29), no code change, the never-throw Dispatcher fix entry still faithfully records the shipped guard in ErrorTracker::report(). Posting as coverage for the new head SHA since the bus thread is already resolved; not re-litigating settled ground.
COMMENT rather than APPROVE: war-room-authored PR, self-approve blocked.
Automated war-room agent review — posted because this PR carries the Agent Review Requested label.
Release v0.1.1
Cuts a patch release for the one entry sitting in
[Unreleased]: the never-throw Dispatcher fix.Why now
ErrorTrackerpreviously eager-injectedIlluminate\Contracts\Bus\Dispatcheras a constructor dependency. When the Bus deferred provider is unresolvable, resolving the service threw aBindingResolutionExceptionbeforereport()'stry/catch— and becausereport()runs inside the consumer's exception handler, that throw escaped the reportable callback and replaced the original error withTarget [Illuminate\Contracts\Bus\Dispatcher] is not instantiable(observed in a Laravel 12 app). The Bus is now resolved lazily insidereport()'s guard, so the failure is swallowed and the original error is preserved.Consumer impact
emmie (
laravel/framework: 12.61.1) requireskendo-error-tracker: ^0.1.0and currently resolves v0.1.0, which still carries the eager-injection bug — the exact Laravel-12 configuration where it was observed. emmie wiresErrorTracker::report()intoapp/Exceptions/Handler.php, so a binding failure there could mask the real exception in dev/staging. Tagging v0.1.1 lets emmie pick the fix up on the nextcomposer update(the^0.1.0caret admits0.1.1).Contents
CHANGELOG.md:[Unreleased]→[0.1.1] — 2026-06-29. No code change in this PR — the fix already landed onmain; this only versions it.Post-merge
Tag the merge commit
v0.1.1sorelease.yml+ the packagist webhook publish it.🤖 Generated with Claude Code