Parent: #77
wire-mesh has no central directory, so "a request bubbles up to whoever can grant it" can only ever reach a scope's structural root (the room owner, the group root) today -- there is no way for a requester to discover an intermediate delegate (someone holding a narrower, still-delegable grant) who could answer faster or with less load on the root. Deliberately left out of #77's initial batch as its own, bigger design question; filing it now that a design is settled.
Extend the gossip `peer-advert` extension (the same open extension bag already planned for presence/policy) with a structured field listing `(capability, scope, delegations-remaining)` tuples a peer is willing to field `capability-request`s for. A requester picks the best candidate it can actually see -- nearest, most permissive, whatever -- falling back to the scope's own structural root when nothing closer has been gossiped, mirroring the design's own already-adopted `resolved_by`/timeout/fallback shape rather than inventing a new escalation model.
Honest limit worth stating rather than glossing over: this is only ever as complete as gossip propagation allows -- a request can go unanswered by a nearer delegate not because none exists, but because it hasn't been gossiped yet. Same "detection with propagation delay" honesty already accepted elsewhere in the design (kick propagation, revocation timing), not a new kind of gap.
Blocked by #78 (the `capability-request`/`capability-grant-ok` primitive needs to exist before advertising who can answer one is useful).
Parent: #77
wire-mesh has no central directory, so "a request bubbles up to whoever can grant it" can only ever reach a scope's structural root (the room owner, the group root) today -- there is no way for a requester to discover an intermediate delegate (someone holding a narrower, still-delegable grant) who could answer faster or with less load on the root. Deliberately left out of #77's initial batch as its own, bigger design question; filing it now that a design is settled.
Extend the gossip `peer-advert` extension (the same open extension bag already planned for presence/policy) with a structured field listing `(capability, scope, delegations-remaining)` tuples a peer is willing to field `capability-request`s for. A requester picks the best candidate it can actually see -- nearest, most permissive, whatever -- falling back to the scope's own structural root when nothing closer has been gossiped, mirroring the design's own already-adopted `resolved_by`/timeout/fallback shape rather than inventing a new escalation model.
Honest limit worth stating rather than glossing over: this is only ever as complete as gossip propagation allows -- a request can go unanswered by a nearer delegate not because none exists, but because it hasn't been gossiped yet. Same "detection with propagation delay" honesty already accepted elsewhere in the design (kick propagation, revocation timing), not a new kind of gap.
Blocked by #78 (the `capability-request`/`capability-grant-ok` primitive needs to exist before advertising who can answer one is useful).