Skip to content

test(dogfood): the api-action door's disabled pin reads #27842's sentence, not the ledger table name - #28095

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-28082-door-disabled-sentence-pin
Oct 30, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-28082-door-disabled-sentence-pin

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #28082

Clause-②: no
Metadata-protocol: none

维护者速读

What changes

packages/qa/dogfood/test/api-action-door-forward.dogfood.test.ts, the ban_user OFF answers 409 ACTION_DISABLED through the door case. The message assertion that pinned the ledger table name now pins the sentence the engine actually returns (packages/objectql/src/action-activation.ts, describeDisabled, reached through ObjectQL.describeDisabledAction from disabledActionRefusal in packages/runtime/src/action-execution.ts):

  • the message starts with This action is turned off for this deployment. ;
  • it contains An administrator can turn it on again under Setup › Packaged automation;
  • it does not contain sys_metadata_activation.

The 409 status, the ACTION_DISABLED code and the not-banned assertions are unchanged. The shape copies the sibling helper expectDisabledSentence in packaged-action-disabled-dispatch-live.dogfood.test.ts, which #27964 already flipped.

This is a deliberate pin flip. Nothing is skipped, marked todo, retried or quarantined.

Tests

The same file, run both ways under the verify lock after building the dogfood dependency closure (pnpm --workspace-concurrency=2 --filter '@objectstack/dogfood^...' build, VERDICT command-exit 0).

Before the flip (origin/main f6adf48): exit 1, fails at L178
× the switch holds: ban_user OFF answers 409 ACTION_DISABLED through the door and the user is NOT banned
AssertionError: expected 'This action is turned off for this de…' to contain 'sys_metadata_activation'
Expected: "sys_metadata_activation"
Received: "This action is turned off for this deployment. An administrator can turn it on again under Setup › Packaged automation, or you can use another action."
 ❯ test/api-action-door-forward.dogfood.test.ts:178:50
 Test Files  1 failed (1)
      Tests  1 failed | 7 passed (8)
os-verify-lock: VERDICT command-exit 1
After the flip (1b2c59b): exit 0
 Test Files  1 passed (1)
      Tests  8 passed (8)
os-verify-lock: VERDICT command-exit 0
Typecheck

pnpm --filter @objectstack/dogfood run typecheck: VERDICT command-exit 0. tsc --noEmit --listFiles in the package lists the edited test file (1 hit), so the typecheck covers it.

Acceptance notes

  • Grep of packages/qa/dogfood for other refusal-message pins on sys_metadata_activation or on the pre-meta: GET /meta/object serves which packaged actions are switched off beside the item, and the disabled-action refusal reads as a plain sentence #27842 wording (is disabled —, activation ledger, Re-enable the packaged action, author your own action): none besides L178. The other sys_metadata_activation hits are ledger-table reads (const LEDGER, ql.find(...), SQL fixtures). packaged-action-disabled-dispatch-live already pins the new sentence. packaged-activation-ledger-reach and mcp-system-object-action-exposure assert only the code and status.
  • The dogfood shards do not run on pull_request or merge_group. This PR's first CI dogfood reading is main's push battery after the merge. The local before/after readings above are the evidence for this file.

Verification

Local subset at 1b2c59be8f (git rev-parse --short HEAD), derived by node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (51 commands, exit 0). Each command's exit code was written to disk before any pipe.

  • 50 of 51 exit 0.
  • pnpm check:dual-build-cjs-loads exits 3, PREREQUISITE NOT MET. It reads every package's built dist/, and seven packages outside this diff's closure have none. NOT MEASURED locally, reason: no full workspace build. CI's Lint & Repo Gates runs it.
  • node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran ran.list exits 0 and reconciles: 51 derived famil(ies) accounted for — 50 run, 1 NOT-MEASURED (1 DERIVED from a recorded exit 3).

No changeset: the diff changes one test file in a private package (@objectstack/dogfood, "private": true) and publishes nothing, hence skip-changeset. The families CI runs over the whole tree, the type-check lanes and test:repo are left to this PR's check-runs.


Generated by Claude Code

…tence, 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 <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 30, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs.

What this run could not see

Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 8cb8c7f461eb5302aa0bea7205a3fc5ef7bd443a → packageMentionDocs.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW

席位核对 — ACCEPT · domain:devx#2 · head 1b2c59be8f · 2026-10-30T12:53Z

维护者速读

席位意见:合入。这是止血用的有意翻转断言,不是跳过测试;新断言还多了一层保护:表名不许再出现在给最终用户的句子里。合入后由 main push 的 dogfood 分片给出 CI 证明。

Shape: draft → main, Fixes #28082. 1 file, +6/−1. Label skip-changeset. Non-governed; the seat lands it. Report 6523001281, claim 6522157979. The PR assignee is os-justin, the card's assignee: os-dev.md wins over the dispatch's "no assignees", and the seat accepts that deviation.

Checked against the code:

  • Sentence: describeDisabled at packages/objectql/src/action-activation.ts:311-315 returns "This action is turned off for this deployment. An administrator can turn it on again under Setup › Packaged automation, or you can use another action." The runtime's disabledActionRefusal (action-execution.ts:~990) carries it to the door.
  • Only message pin: the seat's own grep at claim and the dev's wider grep (old-sentence fragments included) both find L178 as the only refusal-message pin in packages/qa/dogfood. Every other sys_metadata_activation hit is a ledger-table read. packaged-action-disabled-dispatch-live already pins the new sentence.
  • Two directions: at f6adf4800e (main), the file exits 1 at :178:50 and receives the ruled sentence (1 failed, 7 passed). At 1b2c59be8f it exits 0 (8/8).

Gates: on head 1b2c59be8f, 51 check-runs: 33 success, 18 skipped, 0 failure; mergeable_state: clean. check-expected-skips --pr 28095: OK, all 18 skips are in main's roster (exit 0). check-governed-merges --pr 28095: NOT governed, 7 changed lines. Dev's union: 51 derived, 50 run (exit 0), 1 NOT-MEASURED (check:dual-build-cjs-loads exit 3, no dist for 7 packages outside the closure; CI's Lint & Repo Gates ran it green). The dogfood typecheck exits 0 and lists the edited file.

Out of scope: none. Skills-docs: n/a (Metadata-protocol: none).

Landing: non-governed, 7 changed lines. In this act the seat readies the PR and arms auto-merge. Dogfood shards do not run on pull_request or merge_group by design, so the proof is main's push run after the merge: the seat reads Dogfood Regression Gate (3/3) there before it calls main green. On merge, Fixes #28082 closes the card.


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 30, 2026 12:54
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 30, 2026 12:54
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 30, 2026
Merged via the queue into main with commit 91a423e Oct 30, 2026
52 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-28082-door-disabled-sentence-pin branch October 30, 2026 13:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate tests

Projects

None yet

2 participants