You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(topic)!: ownership-tier rewrite — v2.0.0
Replace single fact/5+hope/5 builder with three ownership-tier builders: realm_fact/realm_hope, org_fact/org_hope, app_fact/app_hope. Sentinel literals _realm and _org fill elided publisher slots while keeping fixed 5-token arity.
Why: the old single-builder API forced realm-owned facts (membership, identity) into per-app namespaces, making the realm authority masquerade as each app and silently breaking cross-app subscribers. Real-world consequence: hecate-daemon listened on io.macula/beam-campus/hecate/membership/revoked_v1 while macula-realm published io.macula.membership.revoked — never matched. Most of the realm/daemon membership lifecycle has been silently dead.
Breaking: removes fact/5, hope/5, build/5, app_id/0 type. Greenfield migration — no production users, no deprecation window. parse/1 now returns tier inference; mismatched sentinel combinations rejected at both build and parse time. is_system_topic/1 tightened to _mesh. prefix only.
46 new eunit tests cover all three tiers, sentinel rejection, parse-tier inference, segment validation, system-topic exemption, per-tier roundtrip. Doc guides (TOPIC_NAMING_GUIDE, PUBSUB_GUIDE, RPC_GUIDE) updated to canonical builder usage; old dot-form recommendations removed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>