Contract link (optional, additive)
A transport endpoint may carry an inline requirement; nothing changes for endpoints without one:
deleteMessage: {
method: "DELETE", path: "/messages/:id",
request, response,
permission: { require: ["chat.MANAGE_MESSAGES"] }, // ← the flag, written once
}P.authorize(perms, endpoint.permission) returns a decision rich enough to build
both a 403 body and an audit-log line — the same evaluation the client uses to
pre-block the call and grey out the button. The NestJS guard that reads this key
lives in @tahanabavi/typewire-nestjs, never here.