From 1b2c59be8ff4d79c8daad8751c51a6b85cd71b99 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 30 Oct 2026 12:09:59 +0000 Subject: [PATCH] test(dogfood): the api-action door's disabled pin reads the ruled sentence, not the ledger table name The door's ACTION_DISABLED refusal now carries the end user's sentence (packages/objectql/src/action-activation.ts describeDisabled), which names Setup > Packaged automation and no system table. The pin asserted the old wording's table name and has been red on main since that sentence landed. It now asserts the ruled sentence and that the table name does not leak; the 409, the code and the not-banned assertions are unchanged. Claude-Session: https://claude.ai/code/session_01QSeKYmTYfaPbLQD4BJfomW Co-Authored-By: Claude --- .../dogfood/test/api-action-door-forward.dogfood.test.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/qa/dogfood/test/api-action-door-forward.dogfood.test.ts b/packages/qa/dogfood/test/api-action-door-forward.dogfood.test.ts index f055157920a..b628554cdeb 100644 --- a/packages/qa/dogfood/test/api-action-door-forward.dogfood.test.ts +++ b/packages/qa/dogfood/test/api-action-door-forward.dogfood.test.ts @@ -175,7 +175,12 @@ describe('[#27506] a same-origin api action is dispatched through the action doo expect(refused.status, refused.text).toBe(409); expect(refused.json?.error?.code).toBe('ACTION_DISABLED'); - expect(String(refused.json?.error?.message)).toContain('sys_metadata_activation'); + // [#27842] The sentence is the end user's: it names where an administrator + // turns the action back on, and no system table (the code is the machine half). + const message = String(refused.json?.error?.message); + expect(message).toMatch(/^This action is turned off for this deployment\. /); + expect(message).toContain('An administrator can turn it on again under Setup › Packaged automation'); + expect(message).not.toContain('sys_metadata_activation'); expect(await isBanned(), 'a switched-off Ban User still banned — the #27506 defect').toBe(false); }, 120_000);