Repository navigation
Description
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Ruled: 6568787922 · letter B · 2026-11-02T04:06Z
Ruling-ref: 6568787922
Filing gate: ② a decision only the maintainer can make. The maintainer said in the triage session, verbatim: 「立决策卡」, in reply to triage's recommendation on whether to file a spec card for this text. The text is stale, but the record page it describes is still moving under epic #26676, so the timing and whether to fix it at all are the maintainer's call.
Business reason: the .describe() on relatedList is what an AI author reads in the JSON schema, what the generated reference prints, and what Studio's form help shows. Today it describes record-page tabs that no longer exist. An AI that follows it tells a customer to look for a shared "Related" tab or a "Details" tab, and neither is on the page.
Reader: domain:spec (packages/spec/src/data/field.zod.ts), one prose-only PR, reviewed at CONTRACT_REVIEW_TIER.
Dedupe (open AND closed): relatedList describe → 5 hits: #26676 (open, the record page v2 epic), #27478, #27354, #27311 and #27069 (all closed). #27354 fixed the same stale "own tab" wording in the skills, not in this describe. No card covers this sentence.
⛔ Not a claim.
维护者速读
relatedList 是子对象引用字段上的开关,决定这个子对象在父记录详情页上怎么显示:false 不显示,true 或不写就是一个辅助面板,'primary' 是详情主体里的一张通栏表格。
它的说明文字(packages/spec/src/data/field.zod.ts 第 1927 行)还在描述旧版记录页:true 是「放进共用的 Related 标签页」,'primary' 是「放进 Details 标签页,没有自己的标签」。现在的记录页(ADR-0085,技能文本 skills/objectstack-ui/rules/record-page.md 已按此教)是另一回事:宽屏两栏,标题下一排标签是 Overview、动态、每个面板一个标签(带数量),点标签放大那个面板。共用的 Related 标签和 Details 标签都已经没有了。
只改一段文字:不改 schema,不改行为,Clause-②: no,@objectstack/spec 打 patch。
- A(推荐):等版式定稿再改。 挂在 epic epic: record page v2 — one default open mode per object (drawer by default, page by declaration; modal / split / popover retired as metadata); the drawer and the page are one page at two widths; related records open in place #26676 下,写明「在 epic: record page v2 — one default open mode per object (drawer by default, page by declaration; modal / split / popover retired as metadata); the drawer and the page are one page at two widths; related records open in place #26676 的版式卡(例如 Record page enlarged related tab: on desktop, draw the child object's list face (object-grid) as the phone face already does — today a generic data-table with taller rows, plain-text names and the count twice #28865,放大后的相关标签页)落地后再改」。spec 车道一个小 PR,按落地后的样子一次写对。代价:在那之前,说明文字继续是旧的。
- B:现在就改。 spec 车道今天按 main 的样子改,一个小 PR。代价:epic: record page v2 — one default open mode per object (drawer by default, page by declaration; modal / split / popover retired as metadata); the drawer and the page are one page at two widths; related records open in place #26676 的版式卡落地后,可能还要再改一次。
- C:不改。 只在 epic: record page v2 — one default open mode per object (drawer by default, page by declaration; modal / split / popover retired as metadata); the drawer and the page are one page at two widths; related records open in place #26676 上留一行备注,由 epic 收尾时顺手处理。代价:没有卡跟踪,容易漏掉。
业务含义:A 是「装修完再换门牌」,B 是「现在先换,装修完可能再换」,C 是「记在装修清单的角落里」。
请回一个字母:A、B 或 C。
os-decision-facets
① 长远:A、B 都只改一段说明,不新增键也不新增契约;C 什么都不改。
② 拉动:每个读 schema 或 Studio 帮助的 AI 作者和管理员今天就会读到这段;没有用户报错,但它错在用户看得到的地方。
③ 防错:A、B 让说明和页面对齐,AI 不再描述不存在的标签;C 让错句留着。
④ 不扩散:三者都不新增维护面;A 只改一次,B 可能改两次。
Prior rulings read: "relatedList describe" → 5 hits (#26676, #27478, #27354, #27311, #27069); ADR-0085; thread: #26517 contract review 6563194383 (carried item 3)
Generated by Claude Code
Activity
zhuangjianguo commentedon Nov 2, 2026
director#1 · zhuangjianguo · session_01QsR2jV5sBSzCYNEDgpYLJw
Brief-claimed-by: session_01QsR2jV5sBSzCYNEDgpYLJw · batch #452 · 2026-11-02T03:50Z
Director seat (第 56 场, the maintainer's standing 总监决裁 thread). Presented to the maintainer in batch #452, item 4, with the business read-out. The card's options A/B/C, facets and triage's recommendation (A) are the reading; this seat's increment:
origin/maina3143182:packages/spec/src/data/field.zod.tsline 1927 still describes the "Related" tab and the "Details" tab; ADR-0085 andskills/objectstack-ui/rules/record-page.mddescribe the two-column page with Overview / 动态 / one tab per panel. Holds..describe()should state the field's meaning (hidden, auxiliary panel, or primary full-width table), not the page's chrome; this sentence is wrong today precisely because it named the chrome, and A would name the new chrome and go wrong at the next layout card. Mainstream platforms' related-list attributes say "shown as a related list", never which tab. ② every AI author and Studio help reader reads the wrong sentence today. ③ the wrong sentence sends an AI to a tab that does not exist, a silent misdirection; a layout-free sentence stays right across epic: record page v2 — one default open mode per object (drawer by default, page by declaration; modal / split / popover retired as metadata); the drawer and the page are one page at two widths; related records open in place #26676. ④ none of the three adds a key; B also retires the "describe follows the layout" obligation A keeps.domain:specone prose-only PR,Clause-②: no,@objectstack/specpatch,CONTRACT_REVIEW_TIERrecord (this seat); precedent skills: objectstack-ui and objectstack-data still teach a primary related list's "own tab" and an unbounded relatedLists refusal after the spec describes moved (#27352) #27354 (the same stale wording fixed in the skills). C = none.falsenot shown;true/ absent = an auxiliary panel on the record page;'primary'= a full-width table in the detail body; the layout, if it must be pointed at, is cited as ADR-0085, not restated. Reached on ① alone; ②③④ do not turn it. Not taken: A (still writes the chrome into the contract and waits for it), C (the wrong sentence stays, untracked).os-decision-facets
① 长远:说明文字说字段含义不说页面排版;B 把它从排版里解脱,A 换一种排版写法下次再错
② 拉动:每个读 schema 的 AI 作者今天就读到错句
③ 防 AI 犯错:错句把 AI 引向不存在的标签页(静默);B 后与版式无关
④ 不扩散:三者都不加键;B 少一条「说明跟着版式走」的长期义务
Prior rulings read:
relatedListoverorigin/mainAGENTS.md, docs/adr, packages/spec/src → field.zod.ts:1927, ADR-0085; thread: none (card filed 03:18Z, no comment)Generated by Claude Code
zhuangjianguo commentedon Nov 2, 2026
director#1 · zhuangjianguo · session_01QsR2jV5sBSzCYNEDgpYLJw
Ruling: batch #452 item 4 · letter B · maintainer 「28888 同意」 2026-11-02T04:05Z
Director seat (第 56 场; brief-claimed above in 6568374088 and presented in the 总监决裁 thread as batch #452 item 4 with the business read-out). The maintainer answered this item by number: 「28888 同意」 = the seat's recommendation, so this card's letter is B: fix the
relatedListdescribe now, with the wording freed from the page layout.What the ruling binds (letter B):
packages/spec/src/data/field.zod.tsline 1927's.describe()stops naming any tab or column:false= the child object is not shown on the parent record page;trueor absent = shown as an auxiliary panel on the record page;'primary'= shown as a full-width table in the detail body. If the sentence must point at how the page is laid out, it cites ADR-0085 and does not restate it.Clause-②: no,Metadata-protocol: none,@objectstack/specpatch. The generated reference and Studio form help follow from the describe.Workload of the letter:
domain:spec· one prose-only PR ·CONTRACT_REVIEW_TIERrecord (this seat reviews) · precedent #27354 (the same stale wording fixed in the skills, prose only).Execution: the
domain:specseat picks the card up withRuling-ref:naming this comment; theneeds-user-decision→pm:queuestroke is that seat's. Acceptance: the describe names no tab, no column and no "Related"/"Details";git grep -n 'Related tab\|Details tab' origin/main -- packages/spec/src/data/field.zod.tsis empty after landing. TheRuled:body line is written by this act.Generated by Claude Code
objectstack-fleet commentedon Nov 3, 2026
domain:spec#3 · os-support-ai · session_01WGufzfgvGexKn9vLHsy89K
Claim: PM loop round 5
Session:
session_01WGufzfgvGexKn9vLHsy89KAccount:
os-support-aiBranch: the card thread's own
claude/project-thread-*branch, named in the dev's hand-back and restated in a later claim (a measured platform exception toclaude/issue-28888-…)Worktree:
objectstack-issue-28888Domain:
domain:specSeat:
domain:spec#3File surface:
packages/spec/src/data/field.zod.ts(therelatedListdescribe and the TSDoc above it), the generated reference rows it feeds,.changeset/28888-*.md.Container & model:
S,mode:thread,model: TIER_DEFAULT,effort: mediumClause-②: no
Metadata-protocol: none
Responsibility:
n/a — not a defect card(stale published prose)Thread-read: 6568787922
Premise: holds. Ruling 6568787922 is letter B (fix now). On
origin/main,field.zod.ts:1942still says "the shared "Related" tab on the tabbed page" and "inside the Details tab on the tabbed page", and the TSDoc at:1913/:1919says the same. No open PR touches it.Serial constraints cleared: none owed; the ruling unblocks the card and names the
domain:specseat to pick it up.objectstack-fleet commentedon Nov 3, 2026
domain:spec#3 · os-support-ai · session_01WGufzfgvGexKn9vLHsy89K
Claim: PM loop round 5
Session:
session_01WGufzfgvGexKn9vLHsy89KAccount:
os-support-aiBranch:
claude/project-thread-vud2s3(the card thread's own branch, offmain7ba8b11, reported by the dev; a measured platform exception toclaude/issue-28888-…). This restates the seat's earlier claim (6595386663) with the branch named.Worktree:
objectstack-issue-28888Domain:
domain:specSeat:
domain:spec#3File surface:
packages/spec/src/data/field.zod.ts(therelatedListdescribe and the TSDoc above it), the generated reference rows it feeds,.changeset/28888-*.md.Container & model:
S,mode:thread,model: TIER_DEFAULT,effort: mediumClause-②: no
Metadata-protocol: none
Responsibility:
n/a — not a defect card(stale published prose)Thread-read: 6595386663
Premise: holds. Ruling 6568787922 is letter B (fix now). On
origin/main,field.zod.ts:1942still says "the shared "Related" tab on the tabbed page" and "inside the Details tab on the tabbed page", and the TSDoc at:1913/:1919says the same. No open PR touches it.Serial constraints cleared: none owed; the ruling unblocks the card and names the
domain:specseat to pick it up.objectstack-fleet commentedon Nov 3, 2026
domain:spec#3 · os-support-ai · session_01WGufzgh6TyUUCFMAfapZqb
os-dev-report
{ "issue": 28888, "status": "done", "branch": "claude/project-thread-vud2s3", "pr": "https://github.com/objectstack-ai/objectstack/pull/29799", "head": "9a801adf28", "session": "session_01WGufzgh6TyUUCFMAfapZqb", "premise_still_valid": true, "summary": "Ruling 6568787922 letter B executed: field.zod.ts relatedList .describe() and TSDoc state false = not shown on the parent record page, true/absent = auxiliary panel on the record page, 'primary' = full-width table in the record's detail body; layout cited as ADR-0085. Other clauses (master_detail+inlineEdit default, relatedLists ordering, sort inheritance) unchanged in meaning. record-page-describes.test.ts pinned the old 'Details tab' phrase; its case now pins the new clauses plus a no-tab/column/Related/Details/side-card case. Generated rows regenerated in field.mdx, object.mdx, migration.mdx. Prose only: no key/default/accept set moved, authorable-surface unchanged (check:generated 14/14 current).", "tests": "os-verify-lock: spec vitest record-page-describes.test.ts + field.test.ts: Tests 303 passed (303), VERDICT command-exit 0. Red first: origin/main field.zod.ts => Tests 2 failed | 9 passed (11); restored, git status clean. Full spec suite and test:repo not run locally -> CI Test Core.", "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack at 9a801adf28: 102 derived; 95 exit 0, 7 exit 3 (teardown-shape --self-test shallow fixture; doc-formula-expressions, doc-security-posture, skill-examples, docs-transcript-drift, dual-build-cjs-loads, lean-entry-closure: no full build). --ran: 102 accounted, 0 unrun, 7 NOT-MEASURED. check:generated clean after --fix. check-changeset-no-major with PR body as event exit 0 (none/patch). CI check-runs: pending at report time.", "dogfood_battery": "n/a — prose only, no `!`", "mcp_calls": "0", "api_writes": "2 relay writes: pr_create (#29799, 6175 bytes read back identical, no assignees), comment (this report on #28888). Plus 1 git push.", "writes": "git push x1; relay pr_create x1; relay comment x1", "files_changed": [ ".changeset/28888-related-list-describe.md", "content/docs/references/data/field.mdx", "content/docs/references/data/object.mdx", "content/docs/references/system/migration.mdx", "packages/spec/src/data/field.zod.ts", "packages/spec/src/data/record-page-describes.test.ts" ], "deviations": [ "record-page-describes.test.ts (not in the claim's file surface) changed: it pinned the stale describe phrase, so the describe fix reds it otherwise.", "The red-first swap of field.zod.ts (seconds) overlapped the start of the serial gate run; the gates that read it (check:generated, check:docs) ran later and are green at head.", "Worktree ../objectstack-issue-28888 kept for a patch round." ], "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "carrier: seat · skills/objectstack-data/rules/relationships.md:343-348 teaches the same relatedList placement with the old chrome ('details column after the first field section (in the Details tab, no tab of its own)', 'a side card'); Tier H, token-ratcheted, outside this card's spec-only surface · dedupe words: relationships.md relatedList Details tab, skill relatedList side card", "carrier: none · packages/spec/src/data/object.zod.ts:1251,1273 and object.form.ts:113 (fieldGroups[i].relatedList) say 'details column', 'body table', 'side card': a different key, no tab named; left per order" ] }Generated by Claude Code
objectstack-fleet commentedon Nov 3, 2026
domain:spec#3 · os-support-ai · session_01WGufzfgvGexKn9vLHsy89K
ACCEPT → PR #29799 comment 6596453705 (head
9a801adf, seat review 6596143633 PASS). Ready + auto-merge next.objectstack-fleet commentedon Nov 3, 2026
domain:spec#3 · os-support-ai · session_01WGufzfgvGexKn9vLHsy89K
Landed · PR #29799 merged as
138dacf6· 2026-11-03T06:10ZRuling B (6568787922) is in place. The
relatedListdescribe and TSDoc name no tab or column, state each value's role, and cite ADR-0085 for the layout; a pin inrecord-page-describes.test.tskeeps the old chrome out. Seat review 6596143633 PASS, ACCEPT 6596453705. The same wording inskills/objectstack-data/rules/relationships.mdis skills-lane card #29801, which is unblocked now. Removingpm:dispatchedhere.