ReviewOS

also looking at this

craft-native/craft

fix(capabilities): stop the channel manifest claiming knowledge it does not have

#68
Merged chris wants to merge fix/capability-channels into main
15 files +227 -67
docs/BRIDGE_API.mdmodified+9-5
Changes to docs/BRIDGE_API.md
@@ -559,11 +559,15 @@ holds a ceiling on how many may remain that only ever goes down.
559559
560560### `channels`
561561
562Every `craft:*` event, and whether anything native emits on it. This cannot be
563derived from the action tables — an emitter is a separate piece of code that may
564or may not have been written — so a channel is reported live only because the
565code that emits on it took out a permit at startup. Sixteen channels the JS
566surface subscribes to currently have no emitter at all.
562Every `craft:*` event, and what craft can say about it: `'live'` when something
563in this build took out a permit to emit on it, `'unknown'` when craft cannot
564prove it either way.
565
566There is no `'dead'`, deliberately. Craft cannot establish absence — the
567`craft:window:*` names are composed in JavaScript from
568`__craftDeliverWindowEvent('focus')`, so no source scan finds the literal even
569though the emitter is right there. Treat `'unknown'` as "subscribe and see", not
570as "this will never fire".
567571
568572### `supports()` fails open
569573