Skip to content

docs(qa): wave-2 checklist-accuracy close-out, slice B — six areas - #27009

Merged
objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/issue-25807-wave2-accuracy-b
Oct 28, 2026
Merged

objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/issue-25807-wave2-accuracy-b

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #25807 (wave-2 accuracy, slice B)

Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:按 18.2.0 第二波五份测试记录,修正 ai、approvals、attachments-storage、i18n、platform-core、records-forms 六个领域共 35 条测试清单条目里的过时描述。只改文档,不动产品代码。
  • 为什么改:这些条目的步骤、字段、错误码、界面文案或引用的测试文件已与当前代码不符(例如审批抽屉已移除、货币字段不再带 scale、动态摘要按读者语言渲染),下一轮运行会被误导或误判。
  • 风险与回滚:只影响 QA 清单文本。三条断言随产品已变的行为改写(i18n.surface-matrix 的 a7/a10、records-forms.field-type-constraints 的 a2),旧版本的判定不再沿用。每条 revision +1、追加一行 history,回滚即 revert 本 PR。
  • 先看:areas/records-forms.json 的 field-type-constraints(scale 从“已知缺口”改为“拒收、不舍入”);areas/i18n.json 的 surface-matrix(a10 改为读者语言,plugin-audit: an activity summary is rendered once, at write time, in the workspace locale — store it as a key and render it in the reader's language #26167);areas/approvals.json 的 quorum-m-of-n(抽屉改为请求记录页)。
  • 两分钟验证:node scripts/check-platform-checklist.mjs,预期打印 check-platform-checklist: OK、退出码 0。
  • 需要你做的:无,席位落地。

What changes

The slice-B close-out of the wave-2 checklist-accuracy findings that RUNNER.md routes to the wave anchor ("close out through the wave's anchor card … not extracted"). Sources: anchor comments 6433587719, 6433708086, 6433784748, 6433878766, 6433966437 and the run records #26450, #26456, #26468, #26476, #26481. Every finding was read against the code at base fd246c22 before its edit; each item's new history row names the files read.

  • 35 items in ai (5), approvals (7), attachments-storage (8), i18n (2), platform-core (9) and records-forms (4): revision +1 from main's value and one appended history row each, citing the run record that found it (ref is the anchor [sweep] v18.2.0 release test sweep #25807, as slice A's rows are). No existing history row is changed; the previous last row only gains the comma the appended row needs.
  • Three clauses change meaning with the product, and say so in their history rows (a verdict for an older revision does not carry): i18n.surface-matrix acceptance[7] (the served document is fifteen groups, not twelve) and acceptance[10] (activity summaries render in the reader's locale since plugin-audit: an activity summary is rendered once, at write time, in the workspace locale — store it as a key and render it in the reader's language #26167, not the write locale); records-forms.field-type-constraints acceptance[2] (scale is enforced by rejection, max_scale, and currency carries no scale; it was recorded as an unenforced gap).
  • attachments-storage.upload-limits-scope-and-ownership acceptance[3] now scores pass from a pin the ref did not name (storage-upload-door-ownership.wall.test.ts, HTTP over a booted wall); attachments-storage.chunked-upload-integrity knownGaps[0] is closed for its pin half by storage-upload-organization-change.wall.test.ts.
  • No pin upgrades of the Parked-on: #25807 partials. No studio-authoring, access-security, slice-A area file or RUNNER.md is touched.
item before after source record what
ai.mcp-http-surface 6 7 #26468 automated.ref and variants[2] corrected
ai.mcp-stdio-fail-closed 7 8 #26468, #26481 steps[4] waits for the HTTP listener, and automated.ref names two corroborating files
ai.mcp-run-action-exposure-gate 4 5 #26476 acceptance[1].verify says which half the stock fixture discriminates
ai.mcp-validate-expression 4 5 #26468 variants[2] and automated.ref corrected
ai.mcp-oauth-private-host-transport 4 5 #26468 fixtures.requires[0] and steps[6] name the base-URL door and the no-private-address case
approvals.quorum-m-of-n 7 8 #26456 steps[8] and acceptance[4] read the request page, not the retired drawer, and fixtures.requires[1] names the admin's double role
approvals.inbox-metadata-actions 6 7 #26456 acceptance[1].verify names the override label
approvals.decision-only-via-service 3 4 #26476 steps[5] names the doors that pause and resume the contrast run
approvals.account-app-entry 5 6 #26481 fixtures.requires[2] says the invoice's account must be active, and acceptance[3] names the door for the appended row
approvals.approver-resolution-matrix 7 8 #26476 the auto_approve marker names a real field
approvals.status-mirror-field 4 5 #26468 automated.ref names three corroborating pins
approvals.act-door-and-admin-rescue-slate 4 5 #26468 automated.ref says which 404 arm is pinned
attachments-storage.presigned-upload-roundtrip 2 3 #26468 automated.ref names a corroborating pin
attachments-storage.download-authz-both-sides 8 9 #26468 automated.ref names the component pin of clause 4
attachments-storage.sys-file-status-pipeline 4 5 #26468 automated.ref gains attachment-lifecycle.test.ts
attachments-storage.upload-session-abort 5 6 #26468 automated.ref names two more storage-routes cases and the chunked dogfood file
attachments-storage.inline-grid-receipt-cells 4 5 #26468 steps[0] names the base URL
attachments-storage.field-accept-maxsize-server-enforced 6 7 #26476 steps1, steps[5] and negative[3] corrected
attachments-storage.upload-limits-scope-and-ownership 2 3 #26468 automated.ref names two HTTP pins and rescores acceptance[3]
attachments-storage.chunked-upload-integrity 7 8 #26468 knownGaps[0], acceptance[0] and automated.ref follow the chunked-door wall pin
i18n.surface-matrix 11 12 #26450 acceptance[7], acceptance[10], steps[17] and the appTranslationDataShape source line corrected
i18n.strict-translation-key-rejection 3 4 #26456 steps[3] names the out-of-tree route
platform-core.boot-health 11 12 #26481 steps[3] scopes the ⚠ read past the compile
platform-core.seed-integrity 5 6 #26481 acceptance[1].verify names the masked field
platform-core.builtin-apps-nav-render 8 9 #26481 fixtures.knownGaps[2] and steps[9] corrected
platform-core.settings-hub-roundtrip 5 6 #26456 steps[9], steps[10], steps[13], acceptance[9].verify and negative[1] corrected
platform-core.manifest-install-contract 6 7 #26476 acceptance[1] names the protocolVersion field, and the derivation clause names the 20-character cut
platform-core.marketplace-install-local-lifecycle 8 9 #26476 acceptance[5] names the refusal code, and the member persona says how to prove it
platform-core.runtime-config-boot-read 4 5 #26476 steps[1] says why cloudUrl is empty on the showcase
platform-core.seed-mode-matrix 5 6 #26476 fixtures.requires[0] names the earlier refusal
platform-core.v18-boot-refusals 7 8 #26481 acceptance[0].verify, steps[1] and fixtures.requires[1] corrected
records-forms.crud-roundtrip 14 15 #26481 steps[0], steps[1], steps[4], acceptance[4].verify and one source line corrected
records-forms.form-view-gallery 4 5 #26456 steps[6] says how to reach the page form
records-forms.field-type-constraints 4 5 #26450 acceptance[2], negative[3], steps[3], fixtures.requires[0], knownGaps[0] and one source line follow the enforced scale contract
records-forms.field-group-visible-when 9 10 #26456 acceptance[3] says when the detail page re-gates

No change, because …

Tests

No product code changed, so no package test is owed. node scripts/check-platform-checklist.mjs exits 0 at the head (check-platform-checklist: OK — 16 areas, 329 items (324 active, 1 planned)). The edits were applied by a script that rebuilds each file from base text and asserts, per area, that only the 35 items differ, each at base revision + 1 with exactly one appended history row and every earlier row equal.

Acceptance notes

  • approvals: four items not named by any wave-2 source still describe the retired request drawer (viewer-gating-submitter-side, notification-deep-link, dynamic-approver-routing, inbox-keyboard-flow). Rewriting them is not mechanical (inbox-keyboard-flow's drawer walk may describe removed behaviour), so they are reported for the anchor, not edited here.
  • approvals.approver-resolution-matrix steps[6] / acceptance[5] still describe queue as a dead slot (审批节点「处理人 Value」应改为记录 lookup(现查 metadata 端点→只能手填);附 approver value 语义核实 + queue 未实现 #3508), while approval-service.ts now expands a queue to its members (ADR-0142 D6) and only warns when it expands to nobody. Not named by a wave-2 source; reported for the anchor.

Verification

Derived gates at afa60d7 (dispatch-gates --commands, then --ran)

16 derived commands, each exit captured before any pipe: check-adr-links 0, --self-test 0, check-closing-keyword-parity 0, --self-test 0, check-comment-mask-corpus 0, plan-test-core-shards --self-test 0, check:doc-formula-expressions 0 (first run exit 3 PREREQUISITE NOT MET; re-run after a locked turbo build of @objectstack/formula and @objectstack/lint, VERDICT command-exit 0), check:ci-filter-parity 0, check:cross-package-test-inputs 0, check:doc-authoring 0, check:driver-memory-census 0, check:gitlink-declared 0, check:nul-bytes 0, check:platform-checklist 0, check:refd-timer-probe 0, check:watch-hint-literal 0. --ran: 16 derived families accounted for, 16 run, 0 NOT-MEASURED.


Generated by Claude Code

@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 28, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 — ACCEPT · domain:devx#2 · head afa60d7ab8 · 2026-10-28T03:32Z

席位意见:合入。18.2.0 wave 2 清单准确性修正(slice B: ai, approvals, attachments-storage, i18n, platform-core, records-forms),35 个条目逐条对照源码改写,账本规矩无一违反,CI 全绿;非受管面。

Shape: draft → main. Part of #25807 (slice B: ai, approvals, attachments-storage, i18n, platform-core, records-forms). Label skip-changeset, assignee os-justin. Report: os-dev-report 6457925443.

Seat's mechanical check: a JSON walk over every areas/*.json item, merge base against head. 35 items changed, 0 added, 0 removed. Every changed item has revision +1, main's history as an exact prefix, and exactly one appended row (ref #25807). 0 violations.

Seat's spot-check against source: approvals.quorum-m-of-n steps now open the served sys_approval_request record page; the one remaining "drawer" is the sentence "objectui#12484 retired the drawer". i18n.surface-matrix no longer says "12 groups".

Gates: CI on the head: 27 success, the rest skipped by path, 0 failure. The dev's local union is in the report.

Open questions: both answered A, the dev's recommendation. history ref stays the anchor #25807, because each row's change text names its run record. records-forms.field-group-visible-when documents the observed behaviour: the detail page re-gates once the flip is saved. Live re-gating on an unsaved edit would be a product card, not a ledger edit.

Out of scope: recorded in the report and kept as Acceptance notes. The class-a/b product findings among them go through the filing gate by the seat after landing; none blocks this ledger PR.

Landing: non-governed. Ready + auto-merge now.


Generated by Claude Code

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants