Repository navigation
Description
Ruled: 6417978207 · letter C · 2026-10-26T14:04Z
Filing gate: maintainer-directed task. Filed by the 18.2.0 release-assessment thread · session_01G3h9iZTpL8aCiXbfsp8H5u. ⛔ Not a claim, ⛔ not dispatched.
Maintainer's words (project thread, 2026-10-25, verbatim): 22:54Z 「约 300 条清单准确性问题:是不是应该开卡?」, then 22:55Z 「写issue,不派发」.
Parent: wave anchor #25807 (18.2.0 release test sweep). RUNNER's extraction obligation parks checklist-accuracy findings on the anchor; the maintainer asked for them as issues, so the wave's findings are split into one card per ledger file and the anchor links each card. This is not a release blocker, so it carries no target:v18.
Reader who acts: the lane owning docs/qa/platform-checklist/** (domain:devx). Dedupe (open and closed): no card holds these lines; the 18.0 precedent closed its accuracy rows on its anchor #24579.
Wanted
For each line below, edit docs/qa/platform-checklist/areas/ux-conventions.json: revise the item's text, bump its revision, and append a history entry citing the run record the line comes from. Keep pnpm check:platform-checklist green. A line that turns out to describe a product defect rather than stale text gets its own card instead of a ledger edit.
Findings (5)
From #25817 — release-18.2.0-manual-set, 29 items, at 6679644a, pin b41ed7f68956
- ux-conventions.write-feedback:
- knownGaps[3] and A5 ("no stock surface offers Undo") are stale: import Undo works in both create and update modes.
- variants[10]: Discard draft is now an in-app dialog.
- variants[6]: the approvals route has no drawer.
- steps[3]: the console offers a member no inline edit, selection or drag, so use the member's Mark Done for the refusal row.
- A1 needs a ruling on object-only strings ("Task created successfully", "Settings saved",
Flow "Reassign Task" completed).
Acceptance
- Every line above is either applied (item revised,
revisionbumped,historycites the record) or answered on this card with the reason it was not. pnpm check:platform-checklistis green.- The PR links this card and [sweep] v18.2.0 release test sweep #25807.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 26, 2026
Claim: PM loop round 1 · 2026-10-26T12:25Z
Session:
session_01Q4MDXRbEJCNdPAP4SiXwp9(devx seat 2) · card threadsession_01K6HUHL4N3MV54PMcKnRgP3Account:
os-steveBranch:
claude/project-thread-jk51nb(the harness-pinned branch of the card thread; it names no issue, so this claim is the identity record; amended on spawn); family dispatch, chain head #25842, one shared branch and one PR for #25842 #25847 #25848 #25849 #25850Worktree:
objectstack-issue-25842Domain:
domain:devxSeat:
domain:devx#2(seat post #20163)File surface:
docs/qa/platform-checklist/areas/ux-conventions.jsononly (family:docs/qa/platform-checklist/areas/i18n.json,docs/qa/platform-checklist/areas/search.json,docs/qa/platform-checklist/areas/studio-authoring.json,docs/qa/platform-checklist/RUNNER.mdare the sibling members' files) (stop on breach; explain in the report)Container & model: M,
mode:thread,model: default tier (TIER_DEFAULT, from dispatch-gates --tier: no path-derived mandate),effort: highClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: none
Premise: holds (action surface
git log origin/mainon the file since filing: no commit; the dev re-reads each line against main first)Serial constraints cleared: own ledger file only; seat 1 holds #25835 / #25836 on other files; #26035 left the retired objectui pin wording in these files to these cards; no other
Claim:names this fileFamily fold (five gates): same shape (stale checklist text, ledger edit + revision + history), same region (
docs/qa/platform-checklist/, one PR,skip-changeset), every member graded p2 by triage, each member checked on its own bypnpm check:platform-checklistand its own line list, excluded: #25835 / #25836 (seat 1) and #25837–#25846 minus #25842 (sized for their own threads).Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
devx seat 2 · review: ACCEPT → PR #26109 comment 6416357640. Landing: ready + merge queue once every check on the reviewed head is green or skipped. This card is
Part of, notFixes: acceptance[1] of ux-conventions.write-feedback waits on a maintainer ruling, so the card stays open after merge.Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
待维护者裁决 · ux-conventions.write-feedback acceptance[1] · devx seat 2 · 2026-10-26T13:16Z
State:
pm:dispatched→needs-user-decision. #26109 已合并(f0eb9bb8),本卡 5 条里 4 条已落地,只剩这一条,所以卡保持打开。一句话问题: 保存成功后,用户看到「任务 创建成功」「Settings saved」或「Flow "Reassign Task" completed」,却看不出是哪一条记录变了。这类提示应该算「说清了改了什么」还是算不合格?
背景: 清单条款 acceptance[1] 原文是 "success feedback names what changed — the record, item or count — rather than a bare 'Success' or a machine name"。QA run #25817(
6679644a)在三处只看到对象名或页面名,规则没法判,于是请求裁决。Governing text: 维护者 2026-10-07 原话(条目 source[0]):「每个写操作都有反馈」「不对用户显示机器名」。原话没有讲「必须点名到具体记录」。检索
success toast should name the record与write feedback toast names what changed,两条都是 0 hit;ADR 无。协议: 不涉及。这是清单口径加 UI 文案,不改 spec,也不改
/meta。前提(可复核):
git grep -n "createSuccess" origin/main -- ui/packages/app-shell/src/console/AppContent.tsx取到${label} created successfully(只插对象标签);ui/packages/app-shell/src/console/organizations/manage/SettingsPage.tsx:152是Settings saved;流程完成的提示由ui/packages/app-shell/src/utils/flowResponse.ts生成,形如Flow "…" completed。选项
form.createSuccess及编辑成功提示带记录标题);无先例业务含义: A 好比收银小票只印「商品已售出」;B 要求连「系统设置」也写出改了哪个设置项;C 的做法和 Salesforce 一样,记录写入时写出记录名(
Account "Acme" was created.),设置页只写「Changes saved」。四轴
os-decision-facets
Prior rulings read: "success toast should name the record" / "write feedback toast names what changed" → 0 hits; ADR none; thread: none
推荐 C. 只看 ① 就选 C:两年后平台的样子应当和主流 CRM 一致,记录写入写出记录名,设置页用通用确认。②③④ 是否翻转:否。置信缺口:
form.createSuccess拿记录标题要看各对象titleField是否齐全,这一点我没有实测;缺标题时退回对象名,这个降级是 ui 卡的事。不取 A: 条款会失去判别力,连续录入时分不清记录的问题会一直留着。不取 B: 设置页和具名流程本来就有主语,硬造只会增加文案负担。
裁后执行: 选 C:本席派一张 devx 账本 PR,把 acceptance[1] 写成「记录级写入点名记录或数量;单例页与具名自动化以其名称为主语」,bump revision,history 引本卡;并给 ui 车道立 1 张卡(
form.createSuccess与编辑成功提示插记录标题)。选 A:只派账本 PR。选 B:账本 PR 加 3 张 ui 卡。三种都由本席落地后关卡。相关: #25807(18.2.0 波次锚)· PR #26109(本卡其余 4 条,已合并)· QA run #25817。
Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Brief-claimed-by: session_01KrKXQVvgYk2AJ4VkqMobyb · batch #399 · 2026-10-26T13:47Z
Director seat, summon #51 continuation (ledger objectstack#12708). Presented to the maintainer in batch #399 as its one item: the fork devx seat 2 raised in 6416962662 (acceptance[1] of
ux-conventions.write-feedback), the other four lines of this card having landed in PR #26109. Seat increment (re-verified onorigin/maincdd4eea9; the seat's analysis is not restated):form.createSuccessis'{{object}} created successfully'(ui/packages/i18n/src/locales/en.ts:325) and both call sites pass only{ object: label }(AppContent.tsx:817,:843);SettingsPage.tsx:152toasts a fixed "Settings saved"; the flow toast is built inflowResponse.tsfrom the run's status. The clause under test isux-conventions.json:63("success feedback names what changed — the record, item or count — rather than a bare 'Success' or a machine name"); the maintainer's 2026-10-07 words it cites say every write has feedback and no machine names — nothing about naming the record.git grep -iE 'names what changed|success feedback'on AGENTS.md + docs/adr → 0 rulings (the clause itself is the only hit); ADR none. ADR-0079 (record display name, canonicalnameField) is the platform mechanism C would use for the title in the create toast — the create response carries the record, so the title is available at the toast site; the fallback to the object label when an object declares no title is the ui card's one edge.form.createSuccessand the edit-success toast carry the record title). Not A (the clause loses its test) and not B (a forced subject on the settings page).Prior rulings read:
success feedback·names what changed·createSuccess→ the clause and the two call sites only; ADR-0079 as mechanism; thread: 6416962662.objectstack-fleet commentedon Oct 26, 2026
Ruling: batch #399 item 1 · letter C · maintainer 「同意」 2026-10-26T14:04Z
Recorded by the director seat (summon #51 continuation,
session_01KrKXQVvgYk2AJ4VkqMobyb, ledger objectstack#12708, brief 6417619020) on the fork devx seat 2 raised in 6416962662. Letter C: acceptance[1] ofux-conventions.write-feedbackreads — a record-level write names the record (its title) or the count; a singleton page (settings) and a named automation (Flow "X" completed) are their own subject and pass as they are; the clause states that boundary. The 2026-10-07 words it cites (every write has feedback; no machine names) are unchanged in meaning; this ruling sharpens the test the clause performs. Not A (the clause loses its test) and not B (a forced subject on the settings page, three ui cards).Workload of the chosen letter (card column): devx ledger · 1 PR (~10 lines, precedent #26109 +14/−8: acceptance[1] reworded,
revisionbumped,historycites this card and run #25817) + ui · 1 card (form.createSuccess—'{{object}} created successfully',en.ts:325, call sitesAppContent.tsx:817/:843— and the edit-success toast carry the record title via ADR-0079's display name, falling back to the object label when an object declares no title).Execution:
needs-user-decision→pm:dispatchedin this act (devx seat 2 holds the card, claim 6415957906; the assignee stays). The holding seat dispatches the ledger PR and files the ui card withRuling-ref:naming this comment, then closes this card once the ledger PR lands (the ui card tracks its own landing).Clause-②: no,Metadata-protocol: none.objectstack-fleet commentedon Oct 26, 2026
Claim: PM loop round 4 · ruling execution · 2026-10-26T14:44Z
Session:
session_01Q4MDXRbEJCNdPAP4SiXwp9(devx seat 2) · card threadsession_01LxjRCZExSRaXN87XaS2A33Account:
os-steveBranch:
claude/project-thread-a10sjo(the harness-pinned branch of the card thread; it names no issue, so this claim is the identity record; amended on spawn)Worktree:
objectstack-issue-25849Domain:
domain:devxSeat:
domain:devx#2(seat post #20163)File surface:
docs/qa/platform-checklist/areas/ux-conventions.jsononly — itemux-conventions.write-feedback: acceptance[1]clauseandverifyreworded to ruling 6417978207 letter C,revision5 → 6, onehistoryentry citing this card, the ruling comment and QA run #25817 (stop on breach; explain in the report)Container & model: S,
mode:thread,model: default tier (TIER_DEFAULT, from dispatch-gates --tier: no path-derived mandate),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6417978207
Premise: holds on
origin/main— the item is at revision 5 and acceptance[1] still reads "success feedback names what changed — the record, item or count — rather than a bare 'Success' or a machine name"; the earlier round's PR #26109 landed the other four linesSerial constraints cleared: no other
Claim:namesux-conventions.json; the ui half of the ruling is its own card #26172 (domain:ui), which this PR does not wait for — the clause defines the test, the ui card makes the console pass itGenerated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
os-dev-report
{ "issue": 25849, "status": "done", "branch": "claude/project-thread-a10sjo", "pr": "https://github.com/objectstack-ai/objectstack/pull/26185", "head": "fa4e25d8", "session": "session_01LxjRCZExSRaXN87XaS2A33", "premise_still_valid": true, "summary": "ux-conventions.write-feedback acceptance[1] clause and verify reworded to ruling 6417978207 letter C (record-level names the record or count; settings page and named automation are their own subject; bare Success/Done or machine name FAIL; object-only record toast is an expected FAIL citing #26172); revision 5 to 6; one history row citing #25849, 6417978207 and QA run #25817.", "files_changed": ["docs/qa/platform-checklist/areas/ux-conventions.json"], "line_budget": "+9 / -3 (12 changed lines, 1 file); ruling workload estimate ~10 lines, precedent #26109 +14/-8", "gates": "local at fa4e25d8, dispatch-gates --commands derived 13, all exit 0 (captured before any pipe): check-ci-filter-parity, check-closing-keyword-parity, check-closing-keyword-parity --self-test, check-comment-mask-corpus, lint check:doc-formula-expressions (after turbo build formula+lint under os-verify-lock, VERDICT command-exit 0), check:cross-package-test-inputs, check:doc-authoring, check:driver-memory-census, check:gitlink-declared, check:nul-bytes, check:platform-checklist (OK, 16 areas, 329 items), check:refd-timer-probe, check:watch-hint-literal. --ran: 13 derived, 13 run, 0 NOT-MEASURED, 0 UNRUN. CI check-runs on fa4e25d8: in_progress at report time (9 completed, 19 in progress), not awaited per contract.", "dogfood_battery": "n/a: no ! in the PR title and Clause-2 has no (narrowing) arm", "mcp_calls": "0", "api_writes": "2 relay writes (fleet-write pr_create #26185 with assignee os-steve and label skip-changeset, read back identical; this os-dev-report comment via post-stamped) plus 1 git push", "deviations": [ "history ref is #25849 (the card), following the revision-5 row of the same card and PR #26109; no PENDING swap commit", "reviewer request for os-steve not made: the harness asks for a GitHub MCP update_pull_request, the dispatch order forbids every GitHub MCP write; the seat may request it through the relay", "record-level class keeps the original clause's item (Studio rows named by label) so the Studio variants keep a class; noted in the PR Acceptance notes" ], "open_questions": [], "out_of_scope_findings": [] }Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
devx seat 2 · review: ACCEPT → PR #26185 comment 6419628867. Landing: ready + merge queue, every check on the reviewed head green or skipped.
Generated by Claude Code