Repository navigation
docs(qa): wave-3 checklist accuracy slice S4 — platform-core.json (#27377) #28338
Description
domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW
Sub-issue of #27377, the v18.3.0 release test sweep anchor. This is wave-3 checklist-accuracy slice S4, split out on the maintainer's word in seat session session_01QSeKYmTYfaPbLQD4BJfomW: 「同意」, to the seat's proposal to split S4–S8 into sub-issues so that both devx seats can work them. ⛔ Not a claim. Any devx seat may claim it. domain:devx is inherited from the parent.
Scope
Files: docs/qa/platform-checklist/areas/platform-core.json. No other file. ⛔ No product code.
Rows: 19, from the seat's read-only census of every finding parked on #27377 (census note 6539602007), taken at origin/main 501c864dd5. Re-verify each row against the current head before editing. A row that no longer holds is reported as fixed upstream.
| census row | record | item | verdict | evidence (census) |
|---|---|---|---|---|
| 3 | #27392 | platform-core.docs-audience-gate |
STALE | knownGaps[0] names "none with audience permissionSet" but not "no translated doc", so the locale leg needs a runtime-authored doc. Add one sentence. |
| 22 | #27392 | platform-core.manifest-install-contract |
STALE | acc[1] says the refusal always carries "a migrateCommand of the form objectstack migrate meta --from". Missing the upgrade case (target major above runtime) and its step. |
| 120 | #27441 | platform-core.notification-center |
STALE | steps[5] and A3 have no note on the digest race. |
| 121 | #27441 | platform-core.package-lifecycle-enable-disable |
STALE | steps[0] "nav entry" is unspecified and has no namespace prefix; A5 names one deep-link shape. |
| 122 | #27441 | platform-core.settings-hub-roundtrip |
STALE | steps[7] "provider=log (or no email plugin mounted)". plugin-email is mounted on stock. |
| 134 | #27481 | platform-core.v18-boot-refusals + cli.organization-ownership-ceremony |
STALE | v18-boot-refusals requires[1] already names 17.7.0 and --legacy-peer-deps but says "created by a 17.x showcase boot". Say blank scaffold. |
| 145 | #27481 | platform-core.v18-boot-refusals (+ org-ownership) |
STALE | acc[1] and verify contain the literal "os migrate organization-ownership --out PLAN"; add the optional --dev. org-ownership acc[3] names only the command, so no edit there. |
| 146 | #27481 | platform-core.boot-health |
STALE | steps[3] and acc[2] have no "capture the log before the first non-health request". |
| 147 | #27481 | platform-core.builtin-apps-nav-render |
STALE | steps[5] "42 Setup destinations". r10 (#27566) did not recount; recount at head. |
| 175 | #27438 | platform-core.activation-ledger-row-contract |
STALE | steps[2] "the six values"; source[6] ":type closed to those four". queue and assignment_rule are missing. |
| 176 | #27438 | platform-core.metadata-registry-serving |
STALE | steps[2] and acc[2] "the richer Studio listing … distinct". |
| 177 | #27438 | platform-core.metadata-registry-serving |
STALE | acc[0].verify "of the entries only dashboard, action and report" (labelled A1 in the finding). |
| 181 | #27438 | platform-core.serve-composition-v18 |
STALE | The A4 leg does not say a plugin is needed: a plugin-less production stack boots on SQLite. Confirm that is by design. |
| 182 | #27438 | platform-core.v18-boot-refusals |
STALE | requires[1] "or the guard pin's fixture shape planted into a scratch DB" gives no recipe. Optional. |
| 227 | #27438 | platform-core.metadata-authoring-roundtrip |
STALE | steps[0] and requires[0] have no dependencies:{com.example.showcase}. |
| 228 | #27438 | platform-core.lifecycle-retention-sweep |
STALE | steps[3] and acc[2] "the sweep report lists sys_audit_log skipped archive-pending". There is no live report. |
| 229 | #27438 | platform-core.protocol-18-handshake-and-stored-replay |
STALE | steps[1] GET after plant has no reboot; steps[2] off-tree artifact. The finding line is truncated. |
| 230 | #27438 | platform-core.url-overlay-contract |
STALE | steps[5] "the URL carries from=…". A plain click opens the peek. |
| 231 | #27438 | platform-core.metadata-authoring-roundtrip |
STALE | steps[7] "set it to 'record'" has no Kind=full. |
GAP rows are listed only where the census found a cheap fixture recipe. The other gaps stay parked on #27377.
Edit shape (wave 2's slices A–D; #27164 is the precedent)
revisiongoes up by 1.- main's
historystays an exact prefix, with ONE appended row citing the run record (QA run · release-18.3.0-w3-manual-api (25/25) · c4c515ad · 2026-10-29 · 23 PASS / 2 PARTIAL / 0 FAIL / 0 BLOCKED / 0 NOT-RUN #27392, QA run · release-18.3.0-w3-tier1-a (73/73) · c4c515ad · 2026-10-29 · 59 PASS / 14 PARTIAL / 0 FAIL / 0 BLOCKED / 0 NOT-RUN #27409, QA run · release-18.3.0-w3-tier1-b (89/89) · c4c515ad · 2026-10-29 · 79 PASS / 6 PARTIAL / 4 FAIL / 0 BLOCKED / 0 NOT-RUN #27438, QA run · release-18.3.0-w3-manual-browser (54/55) · c4c515ad · 2026-10-29 · 44 PASS / 2 PARTIAL / 8 FAIL / 0 BLOCKED / 1 NOT-RUN #27441 or QA run · priority:P0 (23/23) · c4c515ad · 2026-10-29 · 20 PASS / 3 PARTIAL / 0 FAIL / 0 BLOCKED / 0 NOT-RUN #27481) and [sweep] v18.3.0 release test sweep #27377. - The text is fixed to what the code says today.
- An edit may make a clause stronger or more precise. It never weakens a clause to make it pass.
- A finding that, on reading, is a product defect is NOT edited. It is reported for the seat to file.
- Keep
pnpm check:platform-checklistgreen. - Changeset: none (label
skip-changeset). - The PR says
Fixes #<this card>andPart of #27377.
Not in this slice (held on #27377 until ruled)
studio-authoring.expression-editors;- the SCOPE-negatives sweep, which includes
platform-core.notification-centernegative[3]; ai.mcp-stdio-fail-closed;- the UNCLEAR rows:
settings-organization-isolation-and-platform-rungandux-conventions.write-feedbackacc[1].verify, among others.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 31, 2026
domain:devx#1 · os-zhuang · session_01QUs3BvP5Aq9USg5GtmgAAR
Claim: PM loop round 1
Session:
session_01QUs3BvP5Aq9USg5GtmgAARAccount:
os-zhuangBranch:
claude/project-thread-fgz4le(the card thread's platform-assigned push branch, the measured platform exception to the protocol branch shape)Worktree:
objectstack-issue-28338Domain:
domain:devxSeat:
domain:devx#1File surface:
docs/qa/platform-checklist/areas/platform-core.json(stop on breach; explain in the report)Container & model:
M,mode:thread,model: default (dispatch-gates --tier: "no path-derived mandate … floor sonnet · default opus · ceiling fable"; judgment call: 19 rows needing code reads),effort: xhigh (p1)Clause-②: no
Metadata-protocol: none
Responsibility:
n/a — not a defect cardThread-read: none
Premise: holds (card filed 2026-10-31T05:40:25Z from census 6539602007 at
501c864dd5;git log 501c864dd5..origin/main -- docs/qa/platform-checklist/areas/platform-core.jsonis empty ata0f865491d; the dev still re-verifies each row at head, as the card says)Serial constraints cleared: sibling slice #28339 (S5) touches five other area files, no overlap; parent #27377 (seat 2) holds no open PR on this file; none
Taken at 2026-10-31T05:48Z by the full order in alternation with seat 2 (S4 is the older of the two p1 slices, seat 1's odd position).
objectstack-fleet commentedon Oct 31, 2026
domain:devx#1 · os-zhuang · session_01QUs3Bs8P3qQzcFo9Bmvsye
os-dev-report
{ "issue": 28338, "status": "done", "branch": "claude/project-thread-fgz4le", "pr": "https://github.com/objectstack-ai/objectstack/pull/28358", "session": "session_01QUs3Bs8P3qQzcFo9Bmvsye", "premise_still_valid": true, "summary": "All 19 census rows were re-verified at main 3fd80337. No commit touched platform-core.json between census base 501c864dd5 and that head; the last one, 35ffb779, is an ancestor of 501c864dd5. None of the 19 rows was fixed upstream, and all 15 items were edited: revision +1 and exactly one appended history row each, citing the run record (#27392, #27441, #27481 or #27438) and #27377, with main's history an exact prefix on every item. Each edit was checked against the code it names. Five rows were also read live on a fresh os dev --seed-admin showcase boot at 3fd80337: the builtin-apps recount (48 Setup, 8 Account leaves), the stock translated doc, the two plugin-email mail/test texts, the six-type catalog door 400, and /meta/types and /meta returning byte-identical bodies. Row 3 went against the finding's suggestion. Stock DOES ship a translated doc (showcase_index, zh variant, in showcase_manual), and the run missed it because every /meta/doc read drops `translations`. The edit names that doc and the trap. Four clauses got stricter: manifest acceptance[1], the ahead direction with no migrateCommand; v18-boot-refusals acceptance[1], --dev pinned to the boot mode; metadata-registry acceptance[2], parity with /meta; activation-ledger acceptance[4], the eight-value wall. None was weakened, and no product defect was found.", "tests": "pnpm check:platform-checklist at af8d16ea :: exit 0 (check-platform-checklist: OK — 16 areas, 352 items (347 active, 1 planned)). Structural check over origin/main vs head: 15 items changed, each with main's history as an exact prefix, exactly one row appended, revision = main + 1 = the last row's revision, and #27377 in the row text; no other item changed. Control-byte self-scan of the file: 0 hits. Live reads on a fresh showcase boot at 3fd80337 (port 38427, torn down after): GET /meta/app?id=setup 48 leaves, ?id=account 8 leaves; showcase_manual tree under zh-CN labels showcase_index 'Showcase 示例'; GET /meta/doc 9 docs, 0 with translations; POST /api/settings/mail/test gave 400 SETTINGS_ACTION_FAILED 'SMTP host is required — nothing was sent.' and, with provider log, 'No delivery transport is active — …'; the capability catalog-door POST 400 lists six types; GET /meta/types and GET /meta have the same md5. No ablation: no tested behaviour changed (a ledger-text edit only). test:repo was not run locally because the diff touches no test; it is declared to CI.", "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack at af8d16ea: 16 families, each run locally :: exit 0 (check-adr-links and --self-test, check-closing-keyword-parity and --self-test, check-comment-mask-corpus, plan-test-core-shards --self-test, lint check:doc-formula-expressions, check:ci-filter-parity, check:cross-package-test-inputs, check:doc-authoring, check:driver-memory-census, check:gitlink-declared, check:nul-bytes, check:platform-checklist, check:refd-timer-probe, check:watch-hint-literal). --ran: '16 derived famil(ies) accounted for — 16 run, 0 NOT-MEASURED (a DERIVED zero — all 16 recorded an exit code and none of them is 3)'. PR check-runs at af8d16ea when read: success are Check Changeset, Check Documentation Links, Check PR Size, Governed Surface Queue Guard, Test UI and filter; in_progress are the Lint · and Type Check · lanes, Plan Test Core shards and Dogfood Regression Gate. FAILURE is 'PR-body guards (claim · duplicate · Part-of · single-writer path)', an advisory check outside the ten required. Cause: check-closing-target-claim reads a claim's Branch: line only through CLAIM_BRANCH_SHAPE, claude/issue-N-slug (scripts/pm/check-half-states.mjs), so no claim can name the platform-assigned claude/project-thread-fgz4le. The corrected claim 6539735655 does name it. This is the platform exception the claim records, not a diff defect; the seat decides.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "line_budget": "209 changed lines (+148 / -61), 1 file, against the 3000 human-merge threshold: under", "files_changed": ["docs/qa/platform-checklist/areas/platform-core.json"], "deviations": [ "Branch is the card thread's platform-assigned claude/project-thread-fgz4le, not claude/issue-28338-platform-core-s4. It was reported to the seat first, and the seat corrected claim 6539735655. Consequence: the advisory PR-body guards check is red (see gates).", "Worktree ../objectstack-issue-28338 was made from that platform branch, reset to origin/main 3fd80337, after detaching the shared checkout (the branch was checked out there). No empty-branch probe push, because this is a card-thread branch.", "PR body opens with the harness-required attribution marker line (an HTML comment) and the Requested-by line, with Fixes #28338 right after; reported as the harness exception. The session context also asked to assign the PR and request a review from os-zhuang; not done, per the os-dev role and the dispatch (no assignees, no reviewers).", "Commit trailers are the model-free Claude-Session and Co-authored-by pair (AGENTS.md); the harness's model-named Co-Authored-By trailer was not used.", "The live boot was started with pnpm --filter @objectstack/example-showcase dev, not root pnpm dev: root dev's check-dev-prereqs refused because 42 packages outside the showcase/cli build closure were unbuilt. The closure was built under os-verify-lock (VERDICT command-exit 0, 6m32s).", "While reading the live boot, one stray POST /api/v1/meta/types {enabled:false} hit the run's own ephemeral local server (a typo'd curl); no GitHub effect, and the DB was discarded." ], "mcp_calls": "0 — no GitHub MCP tool was called; card, comment, run-record and check-run reads used gh api GET", "api_writes": "2 — (1) fleet-write relay pr_create (draft, labels [skip-changeset], no assignees) creating #28358, run 41175827976, body read back as 10042 bytes sent and 10042 stored, identical; (2) this os-dev-report comment on #28338 via post-stamped.mjs. git push is not a REST write.", "open_questions": [], "out_of_scope_findings": [ "carrier: none · noted, not filed: packages/runtime/src/route-ledger.ts 'GET /meta/types' row note still reads 'richer types listing consumed by Studio tooling directly', but /meta/types is the same handler as GET /meta (dogfood pin meta-types-create-seed asserts body parity). Stale prose, not a filing class; in the PR's Acceptance notes.", "carrier: seat · noted, not filed: the PR-body guards claim gate cannot be satisfied by a platform-assigned card-thread branch (CLAIM_BRANCH_SHAPE accepts only claude/issue-N-slug). Recorded for the seat's ruling, not a defect of this diff." ] }Generated by Claude Code
objectstack-fleet commentedon Oct 31, 2026
domain:devx#1 · os-zhuang · session_01QUs3BvP5Aq9USg5GtmgAAR
Landed · 2026-10-31T07:27Z — PR #28358 merged through the queue as
ebd312a31f.merged: true, merge commitebd312a31forigin/mainplatform-core.json: blob sha1 on main identical to the PR head (3d249fa8, the seat's main-merge of the acceptedaf8d16ea)State change: card closed
completedbyFixes;pm:dispatchedremoved in this stroke.