Repository navigation
fix(reporting): forward-port unique installation handler names - #1849
Conversation
* fix(reporting): allocate a unique handler name for every installation Give each newly installed reporting handler its own UUID-backed class name. Service addresses can be reused, and one service can install sellers with separate advertised tool sets. Preserve same-platform reinstall identity and strict conflicting handler registration checks. Fixes #1846 * test(reporting): isolate the installation fixture from global handler names (cherry picked from commit 86302d0)
There was a problem hiding this comment.
Ladon verdict: Approve
Approve.
Clean forward-port fixing handler-name collision (#1846). The change swaps id(self) for uuid4().hex in the installed handler class name, eliminating collisions when two sellers of the same class run under one service or an id is recycled after GC — which previously tripped register_handler_tools's "called twice with different tool sets" guard. The idempotent-reinstall path preserves same-platform identity, and the new parametrized test covers both legs plus re-verifies the conflict guard.
No wire/schema/public-surface change; fix(reporting): is the correct semver signal. No high-risk paths, no gated paths, no author team gate, no prior decision. Reviewer found no blocking or Medium findings.
Decision table: rows 1–8 do not fire (no findings, high_risk false, gated_paths false, no team match) → row 9 approve.
Forward-port the qualified stable reporting installation fix from #1847 with
cherry-pick -xof its actual main squash86302d09404067410a60d3f9d0f850790038a36f.Each newly installed reporting handler gets a unique class name, so one service can install sellers with different tool sets and later services cannot collide with retained registrations through recycled addresses. Same-platform reinstall identity and strict conflicting-registration refusal remain intact. The port applies cleanly and changes only the same service lines and byte-identical public regression; NEXT managed/production/principal/account/dispatch behavior is preserved. No wire, schema, cache, version or dependency changes.
Validation:
UV_NO_CACHE=1 make testpassed on the frozen final source: 21,647 passed, 2,847 skipped, 10 deselected and one existing xfail; 92.04% coverage (47m22s).ec1bc5a33c690c33bc1f6ede76da99d2258c646fwith no findings or unresolved threads. The separate non-required ledger checkout cancellation is recorded independently.The existing beta.10 tag/source and cancelled publisher remain untouched; a future official beta release will carry this repair.