mirror of
https://github.com/block/buzz.git
synced 2026-11-03 07:51:22 +00:00
KIND_DREAM_DUE (24300) was absent from P_GATED_KINDS, so p_gated_filters_authorized() never enforced #p-must-match-self for it. Any authenticated relay user could subscribe with kinds:[24300], #p:[victim_pubkey] and receive another agent's dream-due signals, leaking "agent X is over memory budget and idle" to anyone who knows an agent pubkey. The kind's own doc already states "single-delivery to the authenticated agent"; P_GATED_KINDS is the registry that makes the relay enforce it. Fix: add KIND_DREAM_DUE to P_GATED_KINDS. Ephemeral kinds are included in this list for filter-layer enforcement only and are never stored, so no schema/migration/tsvector change is needed. The ACP harness's own subscription (DREAM_SIGNAL_SUB_ID, #p=[self]) continues to be accepted — the self case is exactly what P_GATED_KINDS allows through. Test: dream_due_subscription_requires_matching_p_tag verifies: - no #p → rejected - #p:[other] → rejected - #p:[self] → accepted Confirmed: test fails without the registry add and passes with it. Co-authored-by: Will Pfleger <pfleger.will@gmail.com> Signed-off-by: Will Pfleger <pfleger.will@gmail.com>