juliendufresne/inter-app-request-identifier-bundle
A Symfony bundle that assigns and propagates unique identifiers for inter-application requests, making it easier to trace requests and correlate logs across services. Integrates with the Symfony request lifecycle and provides configuration for consistent request IDs.
Verdict: Still do not adopt — but reclassify. v0.2.0 materially changes what this package is: from "an interface with no implementers" to "an interface plus two working integrations (Guzzle middleware, Monolog processor/handler)." That invalidates part of the prior reasoning and deserves an honest restatement. It does not change the conclusion for a Laravel estate, because the new capability ships as Symfony bundle service wiring that Laravel will not auto-discover. Net position: keep building in-house, but treat this repository as a directly copyable reference implementation (MIT) rather than a mere interface stub. Two new concerns are introduced by the release itself: behavior is now on by default, and the project now has runtime hooks into the log pipeline and the HTTP client stack — both high-blast-radius surfaces.
Architecture fit
*Bundle suffix), not a Laravel package. No Illuminate\Support\ServiceProvider, no extra.laravel.providers, no config publish. The new Guzzle/Monolog activation logic almost certainly lives in the bundle's DI extension, which Laravel never executes — so the headline feature of v0.2.0 delivers zero behavior to a Laravel app without hand-porting the wiring anyway.Context (Laravel 11+), Log::withContext(), Http::withHeaders() / global HTTP middleware, and job middleware. Nothing here supersedes those; the package's value is as a specification of which headers and which lifetime semantics, not as runtime code.Integration Feasibility
^6.4 || ^7.x and PHP 8.2+, install conflict risk drops from High to Medium; nothing else in this note supports that inference.composer require buys you a vendored copy of two classes you could copy in five minutes.Technical risk
#2) against a package with prior release history suggests a reset or a fork, which is a governance question, not a technical one. Re-run composer audit and abandonment checks before quoting the old verdict.singleton-bound ID leaks across jobs on a long-lived worker.0.2.x carries no stability promise. Every minor bump may flip another default on.Key questions
composer.json constraints and PHP/Symfony support matrix as of v0.2.0? The note does not say, and this is the single fact that could move the verdict.0.x package with default-on cross-cutting behavior, independent of the archived question?Stack fit
CorrelationId middleware: honor inbound X-Request-Id/traceparent from trusted sources only; otherwise generate UUIDv7/ULID; bind scoped; echo on the response.Log::withContext() or a Monolog processor — registered explicitly, never by class-presence detection.Http::withHeaders() or Http::globalMiddleware, explicitly ordered relative to retries.handle(); this remains ours to build.Migration path
composer require into application code. If a proof-of-concept is demanded to evaluate the new integrations, isolate it in a throwaway Symfony-shaped sandbox, not the Laravel app — installing it in Laravel tests nothing, because the wiring never runs.Compatibility
scoped. With a Monolog processor now in play, also ensure the processor reads from the scoped instance rather than capturing the ID at construction time, or every record after the first request/job carries a stale ID.Sequencing
X-Request-Id vs. W3C traceparent.Maintenance
0.x versioning, low PR volume, and a demonstrated willingness to change defaults in a minor release. Budget for reading changelogs before every bump — a tax that an internal 100-LOC equivalent does not levy.Support
Scaling
Failure modes
traceparent, producing two disagreeing IDs in one record. Decide precedence explicitly.Ramp-up
How can I help you explore Laravel packages today?