You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
qa(checklist): retire the objectui-pin wording left in the checklist ledger and the two QA skills (21 places in 14 items, plus checklist-test and dogfood-verification) #26626
Filing gate: ③ a maintainer-directed task — in the 18.2.0 wave-2 session (2026-10-27), on the PM's list of improvements ("text still prescribing the retired objectui paths"), the maintainer answered, verbatim: 「还在写 objectui 旧路径的文字。立卡」.
Business reason: since the ui/ merge the Console is built in-repo (pnpm console:build); .objectui-sha, pnpm objectui:build and "objectui-repo-only" pins are gone. Wave-2 runners kept tripping on the old wording — e.g. access-security.share-link-landing-page still calls its pins "objectui-repo-only, not runnable from this checkout" while they run under ui/apps/console/src/pages/. A runner that follows the stale text skips runnable pins or builds the wrong thing.
Reader: the lane owning docs/qa/platform-checklist/** (domain:devx) for the ledger; the domain:skills seat for the two .claude/skills/ files (Tier S). Revise each item (bump revision, append history citing this card); ⛔ never rewrite history rows — they record what was true then.
Dedupe (open AND closed): #26035 (closed) retired the same wording across 32 docs/AGENTS/skill files; this card is the remainder in the QA ledger and QA skills, measured at maince9bc10 outside history rows.
.claude/skills/checklist-test/SKILL.md §4 environment fingerprint names .objectui-sha (the console build line replaces it).
.claude/skills/dogfood-verification/SKILL.md the vendored-console section (around its ".objectui-sha 钉住" paragraph) still describes the pin and packages/console/dist/.objectui-sha.
Search pattern used: objectui:build|objectui:refresh|\.objectui-sha|objectui-repo-only|objectui-only|objectui checkout|sibling objectui|objectui pin (case-insensitive). A hit that names a historical objectui issue number or PR is not stale — keep it.
Done when
Zero hits of the pattern outside history rows in docs/qa/platform-checklist/areas/*.json and the two skill files, each replaced by the in-repo form (ui/... paths, pnpm console:build, "the console build line").
node scripts/check-platform-checklist.mjs and the skill line ratchet stay green.
Claim: PM loop round 1 · ledger half · 2026-10-27T22:58Z
Session: session_01QSeKYmTYfaPbLQD4BJfomW
Account: os-justin (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-26626-checklist-objectui-wording
Worktree: objectstack-issue-26626
Domain: domain:devx
Seat: domain:devx#2
File surface: the ledger half only, the 14 items in 6455474839 across docs/qa/platform-checklist/areas/{access-security,ai,approvals,attachments-storage,i18n,platform-core,records-forms,studio-authoring}.json. Each item drops the card's pattern outside history rows, gets its revision bumped from main's value at edit time, and gets one history row citing #26626. ⛔ No history row rewritten; a hit naming a historical objectui issue or PR stays. ⛔ Not .claude/skills/**: the two QA skill files are the governed domain:skills half and stay on the card. The PR says Part of #26626 (stop on breach; explain in the report)
Container & model: S, mode:subagent, model: TIER_DEFAULT (dispatch-gates --tier: "no path-derived mandate"), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6455474839
Premise: holds per seat 1's read-only measurement 6455474839 (18 strings in 14 items at 5ec398dc); the dev re-measures on current main
Serial constraints cleared: open PR #26929 (records-forms) and PR #26941 (access-security) bump revisions in two of these files, so the dev bumps from main at edit time and merges main before opening the PR. Open draft PR #26848 edits studio-authoring.json; the dev checks whether it touches doc-on-app-menu and, if so, says so in the PR. #25807's wave-2 slice (this round, this seat) edits other area files only.
{
"issue": 26626,
"status": "done",
"branch": "claude/issue-26626-checklist-objectui-wording",
"pr": "https://github.com/objectstack-ai/objectstack/pull/26962",
"session": "session_01QSeKYmTYfaPbLQD4BJfomW",
"premise_still_valid": true,
"summary": "Ledger half only. The card's pattern, with history rows excluded, went from 20 matches in 18 strings across 14 items (at e4ba846f, measured by a script walking every non-history string in docs/qa/platform-checklist/areas/*.json; positive control acceptance|verify = 1029 matches) to 0 at the final head beab18b242 (control unchanged at 1029). Each string now names its ui/ path or drops the retired-pin aside. Historical objectui issue/PR numbers and measured objectui revisions are kept, worded 'objectui revision'. Each of the 14 items got revision +1 from main and exactly one history row citing #26626; a script check proves main's history is a strict prefix of each new history. The two .claude/skills files are untouched and stay on the card for domain:skills. PR says Part of #26626.",
"files_changed": [
"docs/qa/platform-checklist/areas/access-security.json",
"docs/qa/platform-checklist/areas/ai.json",
"docs/qa/platform-checklist/areas/approvals.json",
"docs/qa/platform-checklist/areas/attachments-storage.json",
"docs/qa/platform-checklist/areas/i18n.json",
"docs/qa/platform-checklist/areas/platform-core.json",
"docs/qa/platform-checklist/areas/records-forms.json",
"docs/qa/platform-checklist/areas/studio-authoring.json"
],
"tests": "No package code touched, so no build closure or package tests were owed. Truth of the replacements at e4ba846f: every ui/ path the new text names resolves via git ls-files (shared-record-shape.test.ts, SharedRecordPage-11649.test.tsx, SharedRecordPage.tsx, shared-record-shape.ts under ui/apps/console/src/pages; the two plugin-chatbot 11736 tests; KeyboardShortcutsDialog.wiredOnly-11674.test.tsx; matchAiChatShortcut.test.ts; ui/e2e/live/grid-conditional-rules.spec.ts; recordActivityFeed.test.ts and record-details.groupVisibleWhen-11630.test.tsx under plugin-detail; ui/packages/plugin-gantt/src/GanttView.tree.test.tsx), and console:build is a root package.json script. Runnability probe, from ui/ under the verify lock: shared-record-shape.test.ts 'Tests 10 passed (10)' (after building @objectstack/spec, formula, sdui-parser). SharedRecordPage-11649.test.tsx: NOT MEASURED, reason: it needs the @objectstack/client dependency closure built, and that build was killed by the container restart (exit 137). Its existence is verified; its runnability is not.",
"gates": "Local, at beab18b242, exit captured before any pipe: node scripts/check-platform-checklist.mjs = 0 ('check-platform-checklist: OK — 16 areas, 329 items (324 active, 1 planned)'). dispatch-gates --commands --repo objectstack-ai/objectstack derived 16 commands, all exit 0: check-adr-links, check-adr-links --self-test, check-closing-keyword-parity, check-closing-keyword-parity --self-test, check-comment-mask-corpus, plan-test-core-shards --self-test, @objectstack/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 (no raw control bytes), check:platform-checklist, check:refd-timer-probe, check:watch-hint-literal. --ran reconciliation: '16 derived, 16 run, 0 NOT-MEASURED, 0 UNRUN' (the ran file lists commands only; exits are in a separate record). CI at report time on beab18b242: Check Changeset=success, rest in_progress (Lint lanes, Type Check lanes, Governed Surface Queue Guard, PR-body guards, Check PR Size), not waited on.",
"line_budget": "n/a — no skills/** or ratcheted ledger touched",
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "4 REST writes in 2 relay/tool calls: fleet-write pr_create (POST /repos/objectstack-ai/objectstack/pulls draft; POST /issues/26962/assignees [os-justin]; POST /issues/26962/labels [skip-changeset]) and post-stamped POST /issues/26626/comments (this report). Plus 3 git pushes (empty probe, commit 7a4fab52f8, merge beab18b242), which are not REST writes.",
"deviations": [
"Commit 7a4fab52f8 carries the model-free trailer pair (Claude-Session + Co-authored-by: Claude) that AGENTS.md and the pre-push hook require. The harness reminder asked for a model-named Co-Authored-By; os-dev.md says that reminder yields.",
"Runnability probe built @objectstack/spec, formula and sdui-parser locally under the verify lock. A multi-filter build of formula/sdui-parser/lint/client exited 1 (client needs core), and the closure build was killed by the container restart. None of these is a gate.",
"The merge of origin/main (b1b153a325) was clean, before the PR opened. #26941 is still open and does not touch share-link-landing-page (verified on its head), so there is no revision collision there."
],
"open_questions": [],
"out_of_scope_findings": [
"carrier: none · noted, not filed — RUNNER.md's ui standing fact gives 'pnpm --filter @object-ui/PKG exec vitest run' as the jsdom invocation. records-forms.form-dirty-guard and import-wizard-encoding-and-hints forbid that form, citing ui/scripts/vitest-invocation-guard.mjs. Read-only inference, not reproduced; RUNNER.md is outside this file surface. Recorded in the PR's Acceptance notes.",
"carrier: PR 26848 / its seat · noted, not filed — draft #26848 also bumps studio-authoring.doc-on-app-menu r6 to r7 (steps[1], knownGaps[2]). This PR bumps it to r7 too (knownGaps[1]). The text does not overlap, but revision/history collide, so whichever lands second renumbers to r8. Stated in the PR body."
]
}
Landed (partial): the ledger half, PR #26962, merged as c6853b124d · 2026-10-28T00:18Z
Release: session_01QSeKYmTYfaPbLQD4BJfomW (domain:devx#2) · partial landing, so the card goes back to pm:queue with no assignee · landed: all 14 ledger items in docs/qa/platform-checklist/areas/*.json (card pattern outside history: 20 → 0) · remaining: the two governed .claude/skills/** files the card names (checklist-test/SKILL.md §4 environment fingerprint, dogfood-verification/SKILL.md vendored-console section)
The merged diff matches the reviewed head beab18b242 for all eight area files (sorted +/− lines hash-identical, merge-base..head against c6853b124d^1..c6853b124d). ACCEPT → PR #26962 comment 6456103652.
pm:retriage added: the remainder lies wholly in the domain:skills tree (.claude/**, Tier S). Triage seat, please move this card's domain:* to domain:skills (triage split 6440375325 already names that half domain:skills).
Answers the domain:devx#2 request (00:18Z). The ledger half landed in PR docs(qa): retire the objectui-pin wording left in the checklist ledger #26962 (c6853b124d). What remains is wholly the two governed .claude/skills/** files: checklist-test/SKILL.md §4 and dogfood-verification/SKILL.md's vendored-console section. That is the domain:skills tree (Tier S).
domain:devx → domain:skills. p2 and pm:queue kept, pm:retriage removed.
Closed as completed · domain:skills#2 · session_01QSeKYmhU5KEj1nukYhp1Tg · 2026-10-28T05:19Z — both halves of the card are on origin/main; nothing is left to dispatch.
half
reading on origin/mainfbc16563 (2026-10-28T05:10Z)
landed by PR #26962 (c6853b124d, devx seat 2's partial landing 6457184010); re-measured here: the card's search pattern (`objectui:build
the two QA skills (.claude/skills/checklist-test/SKILL.md, .claude/skills/dogfood-verification/SKILL.md, domain:skills)
the same pattern hits 0 lines in both files (git grep -c -i -E … origin/main --); control: vendored hits 2 lines in checklist-test/SKILL.md, so the instrument reads the files. git log -S'.objectui-sha' on the two files names the retiring commits: 9ebdabb0 (PR #26536, 「name pnpm console:build where two internal skills still prescribed the retired objectui:build」) and 0ea90c7a (PR #26598, 「clear the objectui leftovers after the ui/ merge」) — both merged before this card's remainder was handed to the skills lane (triage 6457786852)
Done-when as written on the card: zero hits outside history in the ledger and the two skill files — holds; check-platform-checklist and the skill line ratchet are green on main (the merged PRs' own CI). The .claude/** half therefore needs no PR from this seat. pm:queue is stripped in this act; domain:skills, documentation, area:devpath stay (ownership, not state).
Activity
objectstack-fleet commentedon Oct 27, 2026
Claim: PM loop round 1 · ledger half · 2026-10-27T22:58Z
Session:
session_01QSeKYmTYfaPbLQD4BJfomWAccount:
os-justin(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-26626-checklist-objectui-wordingWorktree:
objectstack-issue-26626Domain:
domain:devxSeat:
domain:devx#2File surface: the ledger half only, the 14 items in 6455474839 across
docs/qa/platform-checklist/areas/{access-security,ai,approvals,attachments-storage,i18n,platform-core,records-forms,studio-authoring}.json. Each item drops the card's pattern outsidehistoryrows, gets itsrevisionbumped from main's value at edit time, and gets onehistoryrow citing #26626. ⛔ Nohistoryrow rewritten; a hit naming a historical objectui issue or PR stays. ⛔ Not.claude/skills/**: the two QA skill files are the governeddomain:skillshalf and stay on the card. The PR saysPart of #26626(stop on breach; explain in the report)Container & model: S,
mode:subagent,model: TIER_DEFAULT(dispatch-gates --tier: "no path-derived mandate"),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6455474839
Premise: holds per seat 1's read-only measurement 6455474839 (18 strings in 14 items at
5ec398dc); the dev re-measures on current mainSerial constraints cleared: open PR #26929 (records-forms) and PR #26941 (access-security) bump revisions in two of these files, so the dev bumps from main at edit time and merges
mainbefore opening the PR. Open draft PR #26848 editsstudio-authoring.json; the dev checks whether it touchesdoc-on-app-menuand, if so, says so in the PR. #25807's wave-2 slice (this round, this seat) edits other area files only.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
os-dev-report
{ "issue": 26626, "status": "done", "branch": "claude/issue-26626-checklist-objectui-wording", "pr": "https://github.com/objectstack-ai/objectstack/pull/26962", "session": "session_01QSeKYmTYfaPbLQD4BJfomW", "premise_still_valid": true, "summary": "Ledger half only. The card's pattern, with history rows excluded, went from 20 matches in 18 strings across 14 items (at e4ba846f, measured by a script walking every non-history string in docs/qa/platform-checklist/areas/*.json; positive control acceptance|verify = 1029 matches) to 0 at the final head beab18b242 (control unchanged at 1029). Each string now names its ui/ path or drops the retired-pin aside. Historical objectui issue/PR numbers and measured objectui revisions are kept, worded 'objectui revision'. Each of the 14 items got revision +1 from main and exactly one history row citing #26626; a script check proves main's history is a strict prefix of each new history. The two .claude/skills files are untouched and stay on the card for domain:skills. PR says Part of #26626.", "files_changed": [ "docs/qa/platform-checklist/areas/access-security.json", "docs/qa/platform-checklist/areas/ai.json", "docs/qa/platform-checklist/areas/approvals.json", "docs/qa/platform-checklist/areas/attachments-storage.json", "docs/qa/platform-checklist/areas/i18n.json", "docs/qa/platform-checklist/areas/platform-core.json", "docs/qa/platform-checklist/areas/records-forms.json", "docs/qa/platform-checklist/areas/studio-authoring.json" ], "tests": "No package code touched, so no build closure or package tests were owed. Truth of the replacements at e4ba846f: every ui/ path the new text names resolves via git ls-files (shared-record-shape.test.ts, SharedRecordPage-11649.test.tsx, SharedRecordPage.tsx, shared-record-shape.ts under ui/apps/console/src/pages; the two plugin-chatbot 11736 tests; KeyboardShortcutsDialog.wiredOnly-11674.test.tsx; matchAiChatShortcut.test.ts; ui/e2e/live/grid-conditional-rules.spec.ts; recordActivityFeed.test.ts and record-details.groupVisibleWhen-11630.test.tsx under plugin-detail; ui/packages/plugin-gantt/src/GanttView.tree.test.tsx), and console:build is a root package.json script. Runnability probe, from ui/ under the verify lock: shared-record-shape.test.ts 'Tests 10 passed (10)' (after building @objectstack/spec, formula, sdui-parser). SharedRecordPage-11649.test.tsx: NOT MEASURED, reason: it needs the @objectstack/client dependency closure built, and that build was killed by the container restart (exit 137). Its existence is verified; its runnability is not.", "gates": "Local, at beab18b242, exit captured before any pipe: node scripts/check-platform-checklist.mjs = 0 ('check-platform-checklist: OK — 16 areas, 329 items (324 active, 1 planned)'). dispatch-gates --commands --repo objectstack-ai/objectstack derived 16 commands, all exit 0: check-adr-links, check-adr-links --self-test, check-closing-keyword-parity, check-closing-keyword-parity --self-test, check-comment-mask-corpus, plan-test-core-shards --self-test, @objectstack/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 (no raw control bytes), check:platform-checklist, check:refd-timer-probe, check:watch-hint-literal. --ran reconciliation: '16 derived, 16 run, 0 NOT-MEASURED, 0 UNRUN' (the ran file lists commands only; exits are in a separate record). CI at report time on beab18b242: Check Changeset=success, rest in_progress (Lint lanes, Type Check lanes, Governed Surface Queue Guard, PR-body guards, Check PR Size), not waited on.", "line_budget": "n/a — no skills/** or ratcheted ledger touched", "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "0", "api_writes": "4 REST writes in 2 relay/tool calls: fleet-write pr_create (POST /repos/objectstack-ai/objectstack/pulls draft; POST /issues/26962/assignees [os-justin]; POST /issues/26962/labels [skip-changeset]) and post-stamped POST /issues/26626/comments (this report). Plus 3 git pushes (empty probe, commit 7a4fab52f8, merge beab18b242), which are not REST writes.", "deviations": [ "Commit 7a4fab52f8 carries the model-free trailer pair (Claude-Session + Co-authored-by: Claude) that AGENTS.md and the pre-push hook require. The harness reminder asked for a model-named Co-Authored-By; os-dev.md says that reminder yields.", "Runnability probe built @objectstack/spec, formula and sdui-parser locally under the verify lock. A multi-filter build of formula/sdui-parser/lint/client exited 1 (client needs core), and the closure build was killed by the container restart. None of these is a gate.", "The merge of origin/main (b1b153a325) was clean, before the PR opened. #26941 is still open and does not touch share-link-landing-page (verified on its head), so there is no revision collision there." ], "open_questions": [], "out_of_scope_findings": [ "carrier: none · noted, not filed — RUNNER.md's ui standing fact gives 'pnpm --filter @object-ui/PKG exec vitest run' as the jsdom invocation. records-forms.form-dirty-guard and import-wizard-encoding-and-hints forbid that form, citing ui/scripts/vitest-invocation-guard.mjs. Read-only inference, not reproduced; RUNNER.md is outside this file surface. Recorded in the PR's Acceptance notes.", "carrier: PR 26848 / its seat · noted, not filed — draft #26848 also bumps studio-authoring.doc-on-app-menu r6 to r7 (steps[1], knownGaps[2]). This PR bumps it to r7 too (knownGaps[1]). The text does not overlap, but revision/history collide, so whichever lands second renumbers to r8. Stated in the PR body." ] }Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
ACCEPT → PR #26962 comment 6456103652 · 2026-10-27T23:26Z · lands (ready + auto-merge) once CI is green on head
beab18b242.Generated by Claude Code
objectstack-fleet commentedon Oct 28, 2026
Landed (partial): the ledger half, PR #26962, merged as
c6853b124d· 2026-10-28T00:18ZRelease:
session_01QSeKYmTYfaPbLQD4BJfomW(domain:devx#2) · partial landing, so the card goes back topm:queuewith no assignee · landed: all 14 ledger items indocs/qa/platform-checklist/areas/*.json(card pattern outsidehistory: 20 → 0) · remaining: the two governed.claude/skills/**files the card names (checklist-test/SKILL.md§4 environment fingerprint,dogfood-verification/SKILL.mdvendored-console section)The merged diff matches the reviewed head
beab18b242for all eight area files (sorted +/− lines hash-identical,merge-base..headagainstc6853b124d^1..c6853b124d). ACCEPT → PR #26962 comment 6456103652.pm:retriageadded: the remainder lies wholly in thedomain:skillstree (.claude/**, Tier S). Triage seat, please move this card'sdomain:*todomain:skills(triage split 6440375325 already names that halfdomain:skills).Generated by Claude Code
objectstack-fleet commentedon Oct 28, 2026
Triage: retriage →
domain:skills(remainder only) · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-28T00:58Z⛔ Not a claim.
domain:devx#2request (00:18Z). The ledger half landed in PR docs(qa): retire the objectui-pin wording left in the checklist ledger #26962 (c6853b124d). What remains is wholly the two governed.claude/skills/**files:checklist-test/SKILL.md§4 anddogfood-verification/SKILL.md's vendored-console section. That is thedomain:skillstree (Tier S).domain:devx→domain:skills. p2 andpm:queuekept,pm:retriageremoved.Generated by Claude Code
objectstack-fleet commentedon Oct 28, 2026
Closed as completed ·
domain:skills#2·session_01QSeKYmhU5KEj1nukYhp1Tg· 2026-10-28T05:19Z — both halves of the card are onorigin/main; nothing is left to dispatch.origin/mainfbc16563(2026-10-28T05:10Z)docs/qa/platform-checklist/areas/*.json,domain:devx)c6853b124d, devx seat 2's partial landing 6457184010); re-measured here: the card's search pattern (`objectui:build.claude/skills/checklist-test/SKILL.md,.claude/skills/dogfood-verification/SKILL.md,domain:skills)git grep -c -i -E … origin/main --); control:vendoredhits 2 lines inchecklist-test/SKILL.md, so the instrument reads the files.git log -S'.objectui-sha'on the two files names the retiring commits:9ebdabb0(PR #26536, 「name pnpm console:build where two internal skills still prescribed the retired objectui:build」) and0ea90c7a(PR #26598, 「clear the objectui leftovers after the ui/ merge」) — both merged before this card's remainder was handed to the skills lane (triage 6457786852)Done-when as written on the card: zero hits outside
historyin the ledger and the two skill files — holds;check-platform-checklistand the skill line ratchet are green onmain(the merged PRs' own CI). The.claude/**half therefore needs no PR from this seat.pm:queueis stripped in this act;domain:skills,documentation,area:devpathstay (ownership, not state).