mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
Advertising a capability and running a service are different claims, and conflating them made an Amethyst user un-addable to any group a White Noise user starts. The reference client installs agent-text-stream-quic-v1 with `required_member_roles = receive` into the required component set of EVERY group it creates, then refuses an invitee whose KeyPackage omits either the component or the `0xF2D1` role — checked before negotiation, so negotiation cannot rescue it, and the invite path applies the same rule. Dropping the advertisement on the grounds that nothing in the deployed network publishes previews was right about the traffic and wrong about the capability: a capability says "this client can handle it", never "this group uses it". So the component and the receive role go back. `send` and `fanout` stay off and no watcher is started — we can be shown a preview, we do not originate one, and nothing dials a broker. Two tests had encoded the old premise, one of them asserting the refusal as if it were a feature. They now assert the rule that actually decides interop: our default leaf is admitted by the reference's own stream policy, and is refused by a group that requires `send`. The KDoc on `currentProfileLeafCapabilities` had described the role as present the whole time — it was the code that had drifted from it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016kCuA6tc4JQzHPCDd39GHq