From cf6918798460b50b20c0021e242f2000e55e4222 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Thu, 17 Sep 2026 07:29:20 -0700 Subject: [PATCH] oskiewar consent: pass the desk's capability through instead of a hardcoded null MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit capability: null has been in this response since slice 1, with a comment saying it stays that way until there is a worker whose reach a grant can bound. The desk at gate.regarde.io now mints one on an allow, so the null is no longer the honest answer — it is just stale. What arrives is narrow by construction: the approved source categories and outputs, a hash of the exact scope it descends from, and ten minutes of life. No distribution, no marketing, no merchandise, no training — those govern a finished bundle rather than what a worker may touch, and a generation worker is the wrong place to enforce them. An edit still carries nothing. The counter is an offer the player has not taken, and authority on the strength of terms nobody accepted is the failure this wall exists to prevent. Still no worker consumes it. It is passed through rather than withheld because the next stage binds to it, and because a player told "allowed, and recorded" should be able to see the shape of what they permitted. Cherry-picked from oskiewar-netplay-saber (b0407cda). Its two new tests stay on that branch with the rest of the consent suite, which is not on main yet. Co-Authored-By: Claude Opus 5 (1M context) --- system/netlify/functions/oskiewar-consent.mjs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/system/netlify/functions/oskiewar-consent.mjs b/system/netlify/functions/oskiewar-consent.mjs index 71d41029ff..a43b68625e 100644 --- a/system/netlify/functions/oskiewar-consent.mjs +++ b/system/netlify/functions/oskiewar-consent.mjs @@ -224,10 +224,20 @@ export async function handler(event) { receipt, scope: request.frozen_fields.purpose_scope, counter: answer?.counter?.frozen_fields?.purpose_scope ?? null, - // Slice 1 proves the wall. The generation capability is the next thing - // to land behind it, and it stays null until there is a worker whose - // reach this grant can actually bound. - capability: null, + // The desk mints this on an allow and only on an allow — an edit is an + // offer the player has not taken, and authority on the strength of terms + // nobody accepted is the failure this wall exists to prevent. + // + // It is narrow on purpose: the approved source categories and outputs, + // and nothing about distribution, marketing, merchandise or training. + // Those govern a finished bundle, not what a worker may touch. It + // expires in minutes, because a capability is for one job run. + // + // No worker consumes it yet. It is passed through rather than withheld + // because the next stage binds to it, and because a player who has just + // been told "allowed, and recorded" should be able to see the shape of + // what they permitted. + capability: answer?.capability ?? null, }), }; } -- 2.51.2