Skip to content

docs(qa): re-point three stale checklist lines (dataset editor, zh-CN template writes, built-in nav walk) - #30167

Merged
objectstack-fleet[bot] merged 4 commits into
mainfrom
claude/issue-30129-stale-ledger-lines
Nov 4, 2026
Merged

objectstack-fleet[bot] merged 4 commits into
mainfrom
claude/issue-30129-stale-ledger-lines

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Requested by 田騏 · project thread

Fixes #30129

Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:更新了 4 个测试清单条目里过时的准备步骤和操作步骤:仪表盘条目不再说"Studio 没有数据集编辑器";两个邮件模板条目改为把中文(zh-CN)版本写进 showcase 的定制包;内置应用导航条目更新了 Setup 的入口数,并加了一步:窄窗口下先展开侧边栏。
  • 为什么改:照旧步骤跑,中文模板的写入会被 403 拒绝,后面的测试步骤就跑不下去;入口数和侧边栏的写法也会让测试人员把正常行为误判为失败。中文模板的新写法我在 base 上启动 showcase 实测过:能写入、能读回,也能按中文渲染发出邮件。
  • 风险与回滚:只改了 docs/qa 下的 4 个清单 JSON,产品代码、种子数据和 showcase 都没动。回滚就是 revert 这个 PR。
  • 先看:integration-system.json 的 email-template-render 条目(fixtures.requires[2],新的写入方式);api-backend.json 的 meta-read-doors-v18 条目(fixtures.requires[1]);platform-core.json 的 builtin-apps-nav-render 条目(steps[2] 和 steps[5])。
  • 两分钟验证:在分支上运行 node scripts/check-platform-checklist.mjs,应输出 OK(16 areas, 360 items),退出码 0。
  • 需要你做的:无,席位落地

What changes

Each of the card's three lines was re-read at base 232d3bb5ef before it was applied. None was already done at base, so all three are applied. Each edited item gets a revision bump and a history row with ref #30129.

Tests

This PR changes the checklist ledger only. No product code, test, seed or showcase file changes. scripts/check-platform-checklist.mjs validates the ledger. Every edit was applied at text level. Each file was then re-parsed and compared item by item against the base, to prove that only the intended item changed and that its revision equals its last history row.

Acceptance notes

  • All three lines were re-read at base 232d3bb5ef. None was already applied, so none is skipped.
  • Line 2 differs from the card's suggested recipe in one way: no overrides for a member the base does not ship. Both the save-door refusal and the live send were measured.
  • Added by the seat's call: studio-authoring.no-entry-property-matrix (rev 6 → 7), variants[35] carried the same stale "dataset (Studio has no dataset editor)" parenthetical. It now names Studio's New dataset and why the row's keys still have no Studio control (commit ecccdedfea, report delta 6639164497).
  • Out of scope, not edited: the package-less zh-CN PUT answers 403 NOT_OVERRIDABLE. Its sentence tells the caller to save into the pair "declaring overrides", and that write is refused 403 in turn. The docblock of packagelessCloseSubject (protocol-packageless-overlay-migration.ts) says the opposite: an email_template member at a locale the base does not ship "stays open", and its package-less write is kept. Measured live; filed by the seat as metadata-protocol: a package-less write of an email_template member at a locale the base does not ship is refused, though packagelessCloseSubject documents it as open #30168 (domain:server, finding).

Verification

  • node scripts/check-platform-checklist.mjs → OK — 16 areas, 360 items (354 active, 1 planned), exit 0.
  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 16 commands at f9530757f7. All 16 ran and exited 0. --ran reconciliation: 16 derived, 16 run, 0 NOT-MEASURED, 0 UNRUN. This is a derived zero, because every line recorded an exit code.
  • origin/main was merged once before opening (merge f9530757f7).
Line 2: live probe on a fresh showcase boot at base (pnpm dev -- --fresh, admin)
# Request Answer
1 PUT /api/v1/meta/email_template/showcase_task_done_email package-less, en-US body (control) 403 NOT_OVERRIDABLE
2 same, body locale: 'zh-CN' (the ledger's old recipe) 403 NOT_OVERRIDABLE
3 GET …?member=zh-CN 404
4 POST /api/v1/packages/com.example.showcase/ensure-customization 201 created: true, writable: true
5 PUT …?package=com.example.showcase.custom, zh-CN body + overrides: {package: 'com.example.showcase', basedOn: '0.1.0'} 403 NOT_OVERRIDABLE (ships no email_template … with locale 'zh-CN')
6 PUT …?package=com.example.showcase.custom, zh-CN body, no overrides 200 Saved customization overlay … state=active
7 GET …?member=zh-CN / ?member=en-US / no member 200 zh-CN (packageId: com.example.showcase.custom) / 200 shipped en-US / 200 en-US
8 scratch type: 'api' flow, notify node channels ['email'], template showcase_task_done_email; admin sys_user.locale zh-CN; POST /api/v1/automation/NAME/trigger 200; sys_email row sent, subject ✅ 任务完成:QA zh probe, zh body
9 same with sys_user.locale en-US (control) sys_email row sent, subject ✅ Task done: QA zh probe
10 DELETE …?package=com.example.showcase.custom&member=zh-CN, then GET …?member=zh-CN / ?member=en-US 200 reset; 404; 200 shipped en-US
Line 3: Setup / Account leaves on the same boot

GET /api/v1/meta/app → showcase_app, setup, account. ?id=setup → 46 leaves (groups excluded), including nav_packaged_actions and no packaged-automation or Packages entry. ?id=account → 8 leaves: nav_account_profile nav_account_notifications nav_account_approvals nav_account_linked nav_account_sessions nav_account_api_keys nav_account_oauth_apps nav_connect_agent. The server was stopped by its process group, and the --fresh home (/tmp/objectstack-dev-…) is gone.

Derived gates (each exit 0, recorded before any pipe)
  • node scripts/check-adr-links.mjs, and the same with --self-test
  • node scripts/check-closing-keyword-parity.mjs, and the same with --self-test
  • node scripts/check-comment-mask-corpus.mjs
  • node scripts/ci/plan-test-core-shards.mjs --self-test
  • pnpm --filter @objectstack/lint run check:doc-formula-expressions
  • pnpm check:ci-filter-parity
  • pnpm check:cross-package-test-inputs
  • pnpm check:doc-authoring
  • pnpm check:driver-memory-census
  • pnpm check:gitlink-declared
  • pnpm check:nul-bytes
  • pnpm check:platform-checklist
  • pnpm check:refd-timer-probe
  • pnpm check:watch-hint-literal

🤖 Generated with Claude Code

…dget-and-filter-types

Studio's New dataset entry sits beside the widget inspector's dataset
picker and the New report dialog's (datasetCreate.tsx DatasetCreateEntry).
The fixture stays API-written for a known shape.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ihL2ebbZkr2QAEG1x7UC8
email-template-render and meta-read-doors-v18 author the zh-CN member
of showcase_task_done_email into com.example.showcase.custom with no
overrides, the recipe measured on a fresh showcase boot: the
package-less PUT and the declared override both answer 403
NOT_OVERRIDABLE, the undeclared pair member writes, is served by
?member=zh-CN and renders for a zh-CN recipient.

builtin-apps-nav-render steps[5] carries 46 Setup and 8 Account
destinations, re-read at base, and steps[2] unfolds the icon rail
before expanding groups.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ihL2ebbZkr2QAEG1x7UC8
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Nov 4, 2026
@github-actions github-actions Bot added the size/s label Nov 4, 2026
…ty matrix

Studio's New dataset writes only a name, an object, the seed's count
measure, group-by dimensions and sum measures, so the dataset row's keys
still have no Studio control; only the reason it gave was stale.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ihL2ebbZkr2QAEG1x7UC8
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:devx#2 · marchtian · session_017ihL2ebbZkr2QAEG1x7UC8

席位核对 — ACCEPT · domain:devx#2 · Head-sha ecccdedfea0252d3f155a8b8030c8d1a51d23cbc · 2026-11-04T18:55Z

  • Shape: 4 files, all docs/qa/platform-checklist/areas/*.json, +42/−12 (read from the diff, not the report). No governed path, under 3000 lines: Tier S landing by the seat. Five items, each with a revision bump and a dated history row (ref checklist: three more stale ledger lines found while re-pointing wave 5 (dataset-editor parenthetical, package-less zh-CN template writes, builtin-apps-nav-render steps) #30129).
  • Line 1: dashboard-widget-and-filter-types rev 7 drops the stale "Studio has no dataset editor" wording; the fixture stays API-written for a known shape. Seat spot-check at origin/main: DatasetCreateEntry is exported from datasetCreate.tsx:351 and used in DashboardWidgetInspector.tsx.
  • Line 2 (measured on a fresh showcase boot at 232d3bb5ef, report 6638956693): a package-less zh-CN PUT is 403; the pair write with overrides is 403 (the base ships no zh-CN member); the pair write without overrides is 200 and notify sends the zh-CN wording to a zh-CN recipient. email-template-render rev 15 and meta-read-doors-v18 rev 5 now carry that recipe, which is also the shape meta-read-doors-live.dogfood.test.ts uses.
  • Line 3: builtin-apps-nav-render rev 13: steps[5] counts 46 Setup / 8 Account destinations (re-measured live at base), steps[2] unfolds the icon rail below CONSOLE_SIDEBAR_RAIL_BELOW_WIDTH (consoleSidebarRail.ts:75, read from source, not driven in a browser).
  • Added by the seat's call: no-entry-property-matrix rev 7, variants[35], the same stale parenthetical (report delta 6639164497).
  • Gates: every check-run on the head is success (27) or skipped (19); check-expected-skips OK, all 19 skips in main's roster. Local dispatch-gates --commands 16/16 exit 0 on both commits, --ran reconciled; check-platform-checklist OK (16 areas, 360 items).
  • Accepted deviations: line 2's recipe drops the card's suggested overrides, because that write is refused for an unshipped member (measured). The contradiction behind it is filed as metadata-protocol: a package-less write of an email_template member at a locale the base does not ship is refused, though packagelessCloseSubject documents it as open #30168 (domain:server, finding), not fixed here.
  • Out of scope: Skills-docs: n/a, Clause-②: no, Metadata-protocol: none.
  • Landing: skip-changeset (QA ledger only). Ready, then auto-merge through the merge queue.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review November 4, 2026 18:57
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Nov 4, 2026
Merged via the queue into main with commit 9a53fc9 Nov 4, 2026
47 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-30129-stale-ledger-lines branch November 4, 2026 19:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

1 participant