Crosswake. Shell. Denial
(crosswake v0.2.3)
View Source
Stable denial envelope shared by shell activation and bounded bridge replies.
Core-owned denial envelope. Not part of the companion contract surface.
Companion implementations return {:deny, Crosswake.Compatibility.Finding.t()}
from route_gated?/2; core translates findings into Denial structs internally.
Extension authors should never construct or return a Denial directly — reach
for Crosswake.Compatibility.Finding instead.
Summary
Types
The four ways Bridge.push/3 can fail to deliver a shell answer, carried in
details.failing_moment for the :shell_unreachable reason (D-12). One reason,
four variants — never four reasons.
Types
@type failing_moment() ::
:no_transport | :reply_timeout | :transport_error | :hook_not_wired
The four ways Bridge.push/3 can fail to deliver a shell answer, carried in
details.failing_moment for the :shell_unreachable reason (D-12). One reason,
four variants — never four reasons.
:no_transport— the bridge hook is wired and acked, but no native transport (window.webkit.messageHandlers.crosswakeBridge/ the Android WebMessage listener) is reachable.:reply_timeout— the shell received the request but never answered before the reply deadline elapsed.:transport_error— the hook found a transport but the call into it itself failed.:hook_not_wired— no acknowledgement arrived before the server-armed wiring deadline; the bridge hook is not wired up on this page at all.
@type reason() ::
:compatibility_mismatch
| :undeclared_capability
| :unavailable_capability
| :commerce_corridor
| :origin_denied
| :inactive_route
| :external_entry_denied
| :pack_incompatible
| :gate_denied
| :kill_switch_active
| :step_up_required
| :notification_open_denied
| :dependency_missing
| :shell_unreachable