Skip to content

N-31: docs and the turned-off sentence stop sending people to the Setup pages N-28 retired #29374

Closed

Description

@objectstack-fleet

epic:#28130#1 · hotlong · session_040dfd80c4c9411b895c698e785a6848

Filing gate: ④ child of epic #28236, filed on the maintainer's word in direct chat with the epic PM seat, 2026-11-02: 「立卡」, answering "should the stale documentation found after N-28 and N-30 be filed". ⛔ Not a claim.

Part of #28236 (child N-31) · governs: ADR-0146 D1 (Setup carries no metadata editor and no metadata catalog), D4 (a packaged flow's switch is on the item in Studio; the packaged-action switch stays in Setup), D11 (Packaged automation retired); M-1 ruling 6554738464 (the catalog items and their switches moved to Studio).

Business reason. N-28 #28578 removed these Setup entries, and N-30 #28577 did not cover the pages below. An administrator who follows them looks for a menu that is gone. A person refused a switched-off flow or action is told, in their error toast, to send an administrator to a page that no longer exists. All of this is correct on the published 18.2.0 and goes wrong with the next release, so it is best landed before that release.

Measured (eef116e4d1).

Where What it says Why it is wrong
packages/types/src/packaged-item-turned-off.ts:40 Setup › Packaged automation in the sentence both refusal engines send (describeTurnedOffPackagedItem) The page is retired. Actions are under Setup's Packaged Actions entry (packages/platform-objects/src/apps/setup-nav.contributions.ts:64). A flow's switch and New similar are in the package's Automations pillar in Studio (ui/packages/app-shell/src/views/studio-design/setupMetadataRedirect.ts:57-59)
packages/spec/src/api/protocol.zod.ts:755 disabledActions "turned them off under Setup › Packaged automation" Same page. It generates content/docs/references/api/app-bundle.mdx and protocol.mdx
content/docs/permissions/authorization.mdx:251-253 Setup → Access Control → Permission Sets, /apps/setup/metadata/permission?scope=environment The entry is gone; the catalog is at /studio/~all/metadata/permission?scope=environment (permission-sets.mdx:386 already says so)
content/docs/permissions/access-recipes.mdx:50 Setup → Access Control → Permission Sets Same
content/docs/permissions/administrator-guide.mdx:107 Setup → Access Control → Positions Same; Setup keeps only Position Holders and Permission Set Assignment (packages/plugins/plugin-security/src/security-plugin.ts:1655-1656)
content/docs/permissions/administrator-guide.mdx:117, :151 Setup → Access Control → Permission Sets Same

Re-check, each on origin/main:

git grep -nE 'Packaged [Aa]utomation' origin/main -- packages/types/src/packaged-item-turned-off.ts packages/spec/src/api/protocol.zod.ts
git grep -nE 'apps/setup/metadata|Setup *(→|>|›|->) *Access Control' origin/main -- content/docs skills

The scan matched these literal path and arrow shapes only. A page that names the same entries in other words would not have matched, and the first step below is to look for those.

Wanted.

  1. Sweep content/docs/** and skills/** once more in other words (for example "Access Control", "Positions", "Permission Sets" near "Setup"). Add any hit to this PR and name it in the PR body.
  2. Point each page in the table at where the task is done today. Before writing a step, confirm in the code that it exists there. In particular, confirm where administrator-guide.mdx:107 (a position's assignments) and :117 (a permission set's Assigned Users panel) now live: Studio's item page, or Setup's Position Holders and Permission Set Assignment.
  3. Rewrite the turned-off sentence by kind. An action names Setup's Packaged Actions; a flow names Studio and keeps its "copy" clause, now true of New similar there. Keep the file's rules: plain language, no ADR or tracker number, and no action-clone offer. Update the file's doc comment, which still calls the page live.
  4. Correct the disabledActions description to Setup's Packaged Actions and regenerate the spec artifacts.
  5. Update the tests that pin the sentence: packages/types/src/packaged-item-turned-off.test.ts, packages/objectql/src/action-activation.test.ts, packages/runtime/src/domains/action-activation-dispatch.test.ts, packages/services/service-automation/src/flow-activation-ledger.test.ts, packages/qa/dogfood/test/api-action-door-forward.dogfood.test.ts, packages/qa/dogfood/test/packaged-action-disabled-dispatch-live.dogfood.test.ts.

Tests. The six files above green. Rebuild @objectstack/types first, because downstream tests read its dist. The docs build and link check stay green. The Re-check commands above, repeated on the PR's head, return no hit for the retired entries beyond what the PR body explains.

Release safety. Words only: no route, permission or behaviour changes. The envelope codes ACTION_DISABLED and FLOW_DISABLED are unchanged, and a machine reads those, not the sentence. Patch changesets on @objectstack/types and @objectstack/spec; Clause-②: no, Metadata-protocol: none. No skills/** change is expected from the table; if the sweep in item 1 finds one, the PR becomes governed and waits for a human merge.

Routing, for triage. Filed under domain:devx because most of the lines are content/docs/**. It also moves one line in packages/spec (domain:spec) and one sentence in packages/types (domain:cli). pm:retriage asks triage to confirm one lane for the single PR, or to split the card if it prefers.

Not here. Code comments in ui/packages/** and historical notes that mention the old page. permission-sets.mdx:387, already correct. The i18n keys packagedAutomation.title and .subtitle (ui/packages/i18n/src/locales/en.ts:5562): whether they still have a reader is not measured here, and if they have none they belong with #28789's readerless keys.

Dedupe. Searched open issues for authorization.mdx, "apps/setup/metadata", and "Access Control" Setup docs permission: only QA run records, seat posts and PRs that merely mention them. N-30's review recorded the finding as out of scope (PR #29264 comment 6575375680). N-29 #28579 excludes docs.

Links back: #28236, #28578, #28577, #28579, #28789, PR #28818, PR #29264.


Generated by Claude Code

Activity

  1. added
    documentationImprovements or additions to documentation
    priority:p1High: required for production / M2
    pm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
    area:studioChanging a running app without code — authoring, publish, docs and the portal
    on Nov 2, 2026
  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p1 kept · domain:devx kept · pm:retriage off · 2026-11-02T15:03Z

    ⛔ Not a claim.

    • Read fresh. Docs and the refusal sentence both refusal engines send (describeTurnedOffPackagedItem) still point people to Setup pages that N-28 retired. Users are told to go where nothing exists, so p1 is kept. The card spans content/docs (devx), packages/spec describe text and packages/types. The devx seat lands the docs; the spec describe edit is anchored to domain:spec, so hand that half over or coordinate it.

    Generated by Claude Code

  3. added and removed
    pm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
    on Nov 2, 2026
  4. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-warren · session_01JQwxbaBjisxkQo9hht9bFB

    Claim: PM loop round 4
    Session: session_01JQwxbaBjisxkQo9hht9bFB
    Account: os-warren
    Branch: claude/project-thread-8wildp
    Worktree: objectstack-issue-29374
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: items 1, 2, 3 and 5 of this card: the content/docs/** pages the sweep names (permissions/authorization, access-recipes, administrator-guide, delegated-administration, capabilities; data-modeling/analytics if the code confirms its entry is retired); packages/types/src/packaged-item-turned-off.ts and its test; the five other pinned test files the card lists; the quoted sentence in the pending .changeset/27842-disabled-actions-served.md and .changeset/27966-flow-disabled-plain-sentence.md; the remedy text pinned in docs/qa/platform-checklist/areas/api-backend.json and areas/automation.json (the items and TRANSITIONAL knownGaps that quote the turned-off sentence); a patch changeset for @objectstack/types. ⛔ Not packages/spec (item 4 is #29446) and not skills/** (sweep: zero hits)
    Container & model: M docs + sentence, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: xhigh asked for p1; the card thread was opened at the platform default effort, as the coordinator cannot set it
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card in the gate sense; the sentence's producer (@objectstack/types) and the docs still name pages ADR-0146 retired
    Thread-read: 6580463328
    Premise: holds
    Serial constraints cleared: PR #29438 (domain:devx#2, #28579 slice 1) edits the same api-backend.json and automation.json items and marks their remedy phrase TRANSITIONAL until the producer changes. This PR goes after it: the dev merges main once #29438 lands and then re-points those items and retires the TRANSITIONAL lines in the same change. PR #29387 edits other content/docs/permissions/ pages only; PR #29218 edits packages/spec, untouched here

    Maintainer queue jump, verbatim 「29374 插队」 (Warren, this account's project, 2026-11-02). Triaged p1, pm:retriage answered and removed (6580463328): devx lands the docs, the spec describe edit is split to #29446.

  5. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-warren · session_01JQwxbW35xq9yvZvbd174ve
    os-dev-report

    PR #29476, head ac19230, reported 2026-11-02T16:16Z.

    {
     "issue": 29374,
     "status": "done",
     "branch": "claude/project-thread-8wildp",
     "pr": "https://github.com/objectstack-ai/objectstack/pull/29476",
     "session": "session_01JQwxbW35xq9yvZvbd174ve",
     "premise_still_valid": true,
     "summary": "Items 1, 2, 3 and 5 done on head ac192301. describeTurnedOffPackagedItem (@objectstack/types) now names Setup › Packaged Actions for an action and the package's Automations in Studio for a flow (copy clause kept: New similar is on that flow); doc comment updated. Docs: administrator-guide (Position Holders and Permission Set Assignment in Setup › People & Organization for who holds what; Studio › All metadata for definitions and switches), access-recipes, authorization (:33, :251-254, :419-421), delegated-administration :55, capabilities :124/:272, data-modeling/analytics :149 (Setup › Datasets: every non-datasource Setup metadata URL redirects to Studio, setupMetadataStudioPath; no Setup nav entry names datasets). skills/**: zero hits. Widened per claim: the quoted sentence in pending .changeset/27842-disabled-actions-served.md and 27966-flow-disabled-plain-sentence.md; after #29438 landed (eb123b7c, main merged in 35e1b9c1) api-backend.packaged-action-disabled-dispatch (rev 13) and automation.packaged-flow-disable-durable (rev 10) re-point their remedy and retire their TRANSITIONAL known gaps. administrator-guide.mdx:216 (Sharing rules, record shares under Setup › Access Control) left as is: plugin-sharing still contributes both there. Patch changeset on @objectstack/types.",
     "tests": "head ac192301 (merged): types packaged-item-turned-off.test.ts 6/6; objectql action-activation.test.ts 22/22; runtime domains/action-activation-dispatch.test.ts 12/12; service-automation flow-activation-ledger.test.ts 49/49; @objectstack/types typecheck exit 0 (lock VERDICT command-exit 0). Dogfood api-action-door-forward + packaged-action-disabled-dispatch-live: 2 files 18/18 at 53a942ac (pre-merge; the merge touched neither the sentence nor these files). @objectstack/types rebuilt first. Reverse check via scripts/ablation-replace.mjs: old action remedy restored in src -> 2 types cases red (byte-for-byte action sentence, never-names-Packaged-automation), restored to HEAD blob eb5a5d2e, git diff HEAD empty.",
     "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack at ac192301: 94 derived; --ran with exit codes: 94 accounted, 92 run, 2 NOT MEASURED. Exit 0: 91 (check:skill-examples first exit 3 on a missing client-react dist, rerun exit 0 after building it). Exit 1: check-empty-changeset --base origin/main, the two rewritten pending changesets (its DELIBERATE CORRECTION class, asks for confirmation on the PR, named in the PR body). NOT MEASURED, exit 3 prerequisite: check-plugin-teardown-shape --self-test (shallow clone cannot reach its pinned fixture commit), check:dual-build-cjs-loads (7 unrelated packages without dist). Also node scripts/check-platform-checklist.mjs exit 0 and --changed-from origin/main exit 0. CI at ac192301 when reported: TypeScript Type Check success, Lint & Repo Gates success, Build Core success, Build Docs success, Check Documentation Links success, Build & E2E UI success, Live E2E UI success, Governed Surface Queue Guard success, Dogfood Regression Gate success, Check Changeset failure (the same two changesets, expected), Test Core and Test UI shards in_progress.",
     "dogfood_battery": "n/a — no ! in the PR title and Clause-②: no without a (narrowing) arm",
     "mcp_calls": "0 — no MCP GitHub calls (reads via gh api REST; writes via relay)",
     "api_writes": "2 relay strokes — pr_create (POST /repos/objectstack-ai/objectstack/pulls, draft, no labels, no assignees) and this os-dev-report comment (post-stamped, POST /repos/objectstack-ai/objectstack/issues/29374/comments); plus git push (not REST)",
     "open_questions": [
      {
       "question": "Check Changeset stays red because this PR rewrites two pending release notes it made false. Confirm the correction?",
       "options": [
        "A confirm on the PR and land with the gate red by design",
        "B drop the two changeset edits and let 18.3.0 publish the old sentence"
       ],
       "recommendation": "A, because B ships a CHANGELOG sentence naming a retired page"
      }
     ],
     "security_findings": "none",
     "out_of_scope_findings": [
      "carrier: #29446 · .changeset/27842-disabled-actions-beside-item.md quotes 'Setup › Packaged automation' for disabledActions, the same line as protocol.zod.ts:755 · noted, not filed",
      "carrier: none · pending changesets 28044, 27504, 27378, 27521, 29139 describe the old page as history; ui datasetCreate.tsx comment says Setup › Datasets · noted, not filed"
     ]
    }
  6. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-warren · session_01JQwxbaBjisxkQo9hht9bFB

    Landed · 2026-11-02T17:28Z · PR #29476 merged as 399df5bba8 (reviewed head 6a1dd2e1fd, contract review PASS 6582421319 with Regen-provenance 6582472184, seat record ACCEPT 6583134188). The turned-off sentence now names live pages by kind (an action under Setup › Packaged Actions; a flow in its package's Automations in Studio), the permissions docs no longer send people to retired Setup pages, the two pending changesets quote the new sentence, and api-backend.packaged-action-disabled-dispatch / automation.packaged-flow-disable-durable are re-pointed with their TRANSITIONAL gaps retired. Check Changeset merged red by design (DELIBERATE CORRECTION, confirmed in the ACCEPT). Item 4 stays with #29446 (domain:spec). pm:dispatched is removed in this stroke.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portaldocumentationImprovements or additions to documentationdomain:devxpriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions