Skip to content

qa(checklist): ux-conventions — 5 ledger edits from the 18.2.0 release sweep (#25807) #25849

Closed

Description

@objectstack-fleet

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, revision bumped, history cites the record) or answered on this card with the reason it was not.
  • pnpm check:platform-checklist is green.
  • The PR links this card and [sweep] v18.2.0 release test sweep #25807.

Generated by Claude Code

Activity

  1. added
    documentationImprovements or additions to documentation
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    and removed on Oct 25, 2026
  2. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-26T12:25Z
    Session: session_01Q4MDXRbEJCNdPAP4SiXwp9 (devx seat 2) · card thread session_01K6HUHL4N3MV54PMcKnRgP3
    Account: os-steve
    Branch: 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 #25850
    Worktree: objectstack-issue-25842
    Domain: domain:devx
    Seat: domain:devx#2 (seat post #20163)
    File surface: docs/qa/platform-checklist/areas/ux-conventions.json only (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.md are 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: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Premise: holds (action surface git log origin/main on 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 file

    Family 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 by pnpm check:platform-checklist and its own line list, excluded: #25835 / #25836 (seat 1) and #25837–#25846 minus #25842 (sized for their own threads).


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    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, not Fixes: acceptance[1] of ux-conventions.write-feedback waits on a maintainer ruling, so the card stays open after merge.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    待维护者裁决 · 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。

    选项

    选项 做什么 客户感受 工作量
    A 宽 对象名就算点名;只改清单条款措辞 提示不变,批量录入时仍分不清刚存的是哪条 devx · 1 PR · 约 10 行账本(先例 #26109 ux-conventions +14/−8)
    B 严 三处都必须点名具体记录或数量;记 FAIL,给 ui 立 3 张卡 所有提示都带记录标题;设置页要硬造一个主语 devx 账本 1 PR + ui 3 张卡;无先例
    C 分(推荐) 记录级写入必须点名记录(标题)或数量。单例页(设置)和具名自动化(Flow "X")本身已经是主语,算合格。条款写明这条边界 新建或编辑记录时看到「任务「季度复盘」已创建」;设置页不变 devx 账本 1 PR + ui 1 张卡(form.createSuccess 及编辑成功提示带记录标题);无先例

    业务含义: A 好比收银小票只印「商品已售出」;B 要求连「系统设置」也写出改了哪个设置项;C 的做法和 Salesforce 一样,记录写入时写出记录名(Account "Acme" was created.),设置页只写「Changes saved」。

    四轴

    os-decision-facets

    • ① 项目长远合理性:C 把「主语」定义成一条可判的规则(记录写入要点名记录,单例和具名对象自带主语),没有为每个页面造特例。A 让条款失去判别力,B 会逼出硬造主语的文案特例。
    • ② 实际业务拉动:今天受影响的是连续录入或批量编辑记录的用户,看不出刚存的是哪条;设置页没人反映过这个问题。拉动集中在记录写入上。
    • ③ 防 AI 犯错:C 是闭合的二分(记录级 vs 单例/具名),跑清单的 agent 能稳定判同一行。A 什么都放过,等于静默容忍;B 会让 agent 在设置页上判出假 FAIL。
    • ④ 创业阶段不扩散:C 只多一个 i18n 插值参数(记录标题),不新增声明键;B 要给三处都加文案契约。
      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

  5. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    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 on origin/main cdd4eea9; the seat's analysis is not restated):

    • Premises hold: form.createSuccess is '{{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:152 toasts a fixed "Settings saved"; the flow toast is built in flowResponse.ts from the run's status. The clause under test is ux-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, canonical nameField) 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.
    • Facets read: same direction; the seat agrees with C (record-level writes name the record title or the count; singleton pages and named automations are their own subject; the clause says so). Workload (card column): devx ledger · 1 PR (~10 lines, precedent qa(checklist): 18.2.0 sweep ledger edits — i18n, search, studio-authoring, ux-conventions, RUNNER #26109 +14/−8) + ui · 1 card (form.createSuccess and 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.
  6. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    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] of ux-conventions.write-feedback reads — 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, revision bumped, history cites this card and run #25817) + ui · 1 card (form.createSuccess — '{{object}} created successfully', en.ts:325, call sites AppContent.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:dispatched in 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 with Ruling-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.

  7. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 4 · ruling execution · 2026-10-26T14:44Z
    Session: session_01Q4MDXRbEJCNdPAP4SiXwp9 (devx seat 2) · card thread session_01LxjRCZExSRaXN87XaS2A33
    Account: os-steve
    Branch: 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-25849
    Domain: domain:devx
    Seat: domain:devx#2 (seat post #20163)
    File surface: docs/qa/platform-checklist/areas/ux-conventions.json only — item ux-conventions.write-feedback: acceptance[1] clause and verify reworded to ruling 6417978207 letter C, revision 5 → 6, one history entry 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: medium
    Clause-②: 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 lines
    Serial constraints cleared: no other Claim: names ux-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 it


    Generated by Claude Code

  8. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    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

  9. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    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

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

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:devxpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions