X_POLICY_SURFACE_UNKNOWN
Means
enforce() was handed a surface no adapter answers to
Typical cause
enforce(surface, policy, args) called with a value outside 'http' \| 'live' \| 'job' \| 'mcp' — a config-driven table, a surface name off the wire, or a JS host, none of which the type reached. Refused rather than dispatched because the adapter table is an object literal and so inherits Object.prototype: adapters['valueOf'] answered a FUNCTION, enforce('valueOf', …) called it with the table as its receiver, and the truthy return was the adapter table typed as a SurfaceDenial — an authz dispatch that failed CLOSED with a denial carrying no code and no reason
Fix
pass one of http, live, job, mcp — enforce('http', policy, args) — or add the adapter for the new surface in packages/policy/src/surfaces.ts, the one place a fifth may be declared