Repository navigation
Description
domain:server#3 · os-steve · session_01ADHkmQJdgarUjPLNgFBY67
Filing gate: ③ an open question of the #29460 dev (os-dev-report 6586656992, open question 2). The CONTRACT_REVIEW_TIER record on PR #29576 (head 7e8a7b30, verdict PASS) escalated it as the one place where the card and the tree disagree. Filed by domain:server seat 3. ⛔ Not a claim. Suggested-grade: p2 (it decides whether the ruling is fully delivered; nothing is unsafe meanwhile).
The question
Director ruling 6574398310 on #29171 (batch #454, letter B, maintainer 「454 同意」 2026-11-02T10:04Z) says that, for a field declaring the key and a caller who cannot read the target, "the engine returns … the target's nameField value and the id … expand on that field returns the same". Its workload line gives domain:server "the objectql/REST read and expand branch".
PR #29576 serves the $expand branch only. On a plain read, without $expand, the field answers the stored id string for every reader, as it does today. The dev chose this on ADR-0104 D1 grounds. That accepted ADR fixes the unexpanded form of a reference at the id string, and serving an object there would reverse it. Under Prime Directive #13 only a new ADR can reverse an accepted one, never a card. The describe, the module header and the report all say this, and the review confirmed that the describe is true of the tree.
Options
- A. Accept the
$expand-only delivery (seat recommends). The ruling counts as delivered by PR feat(objectql): a referenceNameVisible lookup or user field names a target the reader is refused, on $expand (#29460) #29576. The ui card ui: render areferenceNameVisiblelookup's name as plain text, and add its Studio form row (#29171 ruling B) #29462 expands the field to render the name, and a plain read stays the id string, so there is one stored form for every reader. No ADR changes, and server: serve the target's name and id for areferenceNameVisiblelookup when the caller cannot read the target (#29171 ruling B) #29460 closes as landed.
Cost: a portal page that reads without$expandshows no name until it adds$expandfor that field. - B. Serve the plain read too. File an ADR-0104 amendment first, so that the unexpanded form of a key-declaring reference may be
{ id, name, readRefused }for a refused reader. Then file a server card to serve it.
Cost: two reader shapes for one stored value, which every client that reads the field unexpanded must now branch on. It also needs a contract review on a narrowing face for clients that expect a string.
Seat analysis: A. The ruling's purpose is that the reader sees the target's name. The ui renders lookups through $expand already, so A reaches that purpose with no second wire shape. B buys only the unexpanded case, and it costs an ADR reversal and a shape change on every unexpanded lookup read.
PR #29576 lands on its own contract either way. It delivers the $expand branch, and nothing in it is undone by B.
Activity
objectstack-fleet commentedon Nov 2, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: p2 ·
domain:server· decision card · 2026-11-02T21:00Z⛔ Not a claim.
referenceNameVisibleis delivered on$expandonly (A, the seat's recommendation) or on the plain read too (B: an ADR-0104 amendment, then a second wire shape). It reinterprets the maintainer's Portal UX: let a lookup show the target's name when the viewer cannot read the target (decision) #29171 ruling B, so it is the maintainer's call. Routed todomain:serverat p2. Triage leans A: one stored form for every reader, and the ui renders lookups through$expandalready.Generated by Claude Code
zhuangjianguo commentedon Nov 4, 2026
Ruling: #29580 · letter A · maintainer 「A」
thread · zhuangjianguo · session_01QsR2jRhuzapDeDHazqEpLs · written 2026-11-04T14:26Z
The maintainer chose A in the project thread at 2026-11-04T14:25:43Z, after reading both options as filed above.
What the ruling binds
$expandonly. The Portal UX: let a lookup show the target's name when the viewer cannot read the target (decision) #29171 ruling B (batch Fix MDX parser error in mapping.mdx documentation #454) counts as delivered by PR feat(objectql): a referenceNameVisible lookup or user field names a target the reader is refused, on $expand (#29460) #29576. AreferenceNameVisiblefield read by a caller who cannot read the target answers{ id, name, readRefused }on$expand. A plain read without$expandkeeps answering the stored id string for every reader.referenceNameVisiblelookup's name as plain text, and add its Studio form row (#29171 ruling B) #29462) renders the name through$expand.$expandadds$expandfor that field to show the name. That is the accepted cost.Execution
referenceNameVisiblelookup when the caller cannot read the target (#29171 ruling B) #29460 is already closed as landed.needs-user-decisionoff) and closing this issue are thedomain:serverseat's.Generated by Claude Code
objectstack-fleet commentedon Nov 6, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: ruled and delivered · close as completed? · 2026-11-06T12:34Z
⛔ Not a claim.
维护者速读
$expand上提供名称)。按裁决,PR feat(objectql): a referenceNameVisible lookup or user field names a target the reader is refused, on $expand (#29460) #29576 已经交付,ui 半边 PR feat(fields, spec): show a referenceNameVisible lookup's served name as plain text, and offer its field-form row #29639 也在main上,ADR-0104 D1 不改,没有剩余工作。needs-user-decision。Generated by Claude Code
objectstack-fleet commentedon Nov 7, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Closed as completed · 2026-11-07T11:00Z
⛔ Not a claim.
referenceNameVisibleis served on$expandonly, and ADR-0104 D1 stands. The server half, PR feat(objectql): a referenceNameVisible lookup or user field names a target the reader is refused, on $expand (#29460) #29576, merged 2026-11-02, and the UI half, PR feat(fields, spec): show a referenceNameVisible lookup's served name as plain text, and offer its field-form row #29639, merged 2026-11-03. Nothing is left to dispatch.needs-user-decisionremoved.Generated by Claude Code