Skip to content

fix(reporting): forward-port unique installation handler names - #1849

Merged
bokelley merged 1 commit into
nextfrom
claude/issue-1846-reporting-install-names-next
Nov 3, 2026
Merged

bokelley merged 1 commit into
nextfrom
claude/issue-1846-reporting-install-names-next

Conversation

@bokelley

@bokelley bokelley commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Forward-port the qualified stable reporting installation fix from #1847 with cherry-pick -x of its actual main squash 86302d09404067410a60d3f9d0f850790038a36f.

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:

  • 217 focused reporting, registry, managed-subscription and reconcile cases pass, including the original beta.10 failing CLI journey.
  • Required lint, all mypy/pyright contracts, generated equality and applicable normal hooks pass. Root, protocol/security and independent Claude Opus 5.5 reviews approve the port.
  • Full required UV_NO_CACHE=1 make test passed on the frozen final source: 21,647 passed, 2,847 skipped, 10 deselected and one existing xfail; 92.04% coverage (47m22s).
  • Core CI completed successfully with all 37 jobs passing, including canonical Python 3.12 coverage. Ladon approved exact head ec1bc5a33c690c33bc1f6ede76da99d2258c646f with 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.

* 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)
@bokelley
bokelley marked this pull request as ready for review November 3, 2026 20:17

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@bokelley
bokelley merged commit 5450616 into next Nov 3, 2026
40 of 41 checks passed
@bokelley
bokelley deleted the claude/issue-1846-reporting-install-names-next branch November 3, 2026 20:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant