- Shipped
- August 20, 2026 at 1:24 AM UTC
- Author
- Kamo
- Commit
- c6ac99d
The register site now forwards the marketing visitor GUID and tracking code in the request body — not a header, because the proxy strips Cookie and the ingress rewrites X-Forwarded-Host — and register() passes them to a signup signal when they are present. Most signups carry neither and publish nothing. MarketingSignalPublisher serializes with a LOCAL ObjectMapper, deliberately not the shared bean. That bean also writes the Redis *** session map and 65 call sites read ids back out of it as Number; giving it a global Long->String rule turns org resolution into a ClassCastException that the helpers swallow, and a null org is a 401 on every authenticated request across four services. The publisher is best-effort, holds an optional NATS connection, and never throws. Both signals are registered afterCommit with the payload snapshotted inside the transaction, so the consumer cannot look up a user or organization row that has not been committed yet. RoleRightsSyncSeedTest gains a negative case: neither of the two new tracking rights may ever enter NEW_RIGHT_SEEDS, since seeding them would grant every existing referral-code holder visibility into colleagues' visitor-level analytics on the deploy boot. Their ids are pinned at 200 and 201.