(
+ row: DispatchSubscription,
+ event: P,
+ ): P {
+ // Asked of every delivery, so the families that can never answer are
+ // turned away on a token comparison rather than a subject parse.
+ if (!isKvToken(row.token)) return event;
+ const handle = kvHandleFromSubject(row.subject);
+ if (handle === null) return event;
+
+ const key = relativeToKvShareRoot(
+ row.permission,
+ (event as ProjectedKvEvent).key,
+ );
+ if (key === null) return event;
+ return { ...event, subject: `kv:${handle}:${key}`, key };
+ }
+
/** Op filter first — a comparison, where the glob is not. */
#passes(
row: DispatchSubscription,
@@ -2659,7 +2930,7 @@ export class EventsService extends PuterService {
if (!decision) {
decision = checkDeliveryAuthorized(
resolved.actor,
- row.permission,
+ row.permission as AclMode,
node,
this.#aclDeps(),
);
@@ -2692,6 +2963,11 @@ export class EventsService extends PuterService {
const decisions = new Map