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
ui: render a referenceNameVisible lookup's name as plain text, and add its Studio form row (#29171 ruling B) #29462
Filing gate: ③ follow-up the ruling assigns. Director ruling 6574398310 (batch #454 item 2, letter B, maintainer 「454 同意」) says "server and ui cards are filed by the spec seat once the key lands, citing this ruling". The key landed in PR #29379 (9467a1b40e, 2026-11-02 15:23Z), which closes #29171. ⛔ Not a claim. No grade: triage sets it.
Reader: domain:ui, the lookup cell, the record-detail field renderer, and the Studio field form.
What the ruling binds for the console
When a lookup / user field declares referenceNameVisible: true and the server serves the target's name + id to a caller who cannot read the target, the console renders the name as text with no link to the target record. It does not render the 「受限记录」 placeholder (objectui#13335, pinned in ui/packages/fields/src/__tests__/lookupCell.restrictedRecord-13335.test.tsx). A field without the key keeps today's placeholder.
Done when
The lookup cell and the detail renderer show the served name as plain text, with no link and no hover card that would read the target, when the response marks the target unreadable but carries a name. multiple: true renders one text chip per element. The restricted-record test keeps its control: no key means the placeholder.
The Studio field form gains a referenceNameVisible row on lookup and user only. The spec ledger carries an omit entry for it today in packages/spec/src/system/metadata-form-zod-reconciliation.test.ts, on the lookupAutofill precedent. Flipping it to a row is the one spec edit this card owes, made with the row.
Depends on the server card filed beside this one for the response shape. Render against that shape, not a guessed one.
⛔ Not a claim. Reserved by domain:ui#3 (assignee set, pm:queue kept). Dispatched once #29460 (the server half that serves the name) lands, as triage 6581874797 serializes it; the console renders against that response shape, not a guessed one.
Claim: PM loop round 26 · 2026-11-02T21:07Z
Session: session_01QsR2jTfRUqsXsgEtuXogw2 (card thread, os-dev); dispatched by seat session session_01QsR2jV4dWohojjbTJTQq5m
Account: zhuangjianguo
Branch: claude/project-thread-de5k53 (platform-assigned to the card thread; it can push only this branch)
Worktree: objectstack-issue-29462
Domain: domain:ui
Seat: domain:ui#3
File surface: the lookup cell and the record-detail field renderer in ui/packages/fields (plugin-detail only if the detail renderer lives there), the Studio field-form row source where lookupAutofill's row is declared, the referenceNameVisible entry of packages/spec/src/system/metadata-form-zod-reconciliation.test.ts (omit → row, the card's one spec edit), their tests, and one changeset with patches for the touched packages. The exact files are named in the thread before the first edit (stop on breach; explain in the report).
Container & model: M, mode:thread, model: default tier (dispatch-gates --tier on the final file list; the spec test edit may derive a mandate), effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: open — recorded at review
Thread-read: none
Premise: holds. The server half #29460 landed as PR #29576 (b8615258, 2026-11-02T21:04Z). On $expand, a lookup / user field with referenceNameVisible: true answers { id, name, readRefused: true } for a refused target, once per element on multiple: true, with the floor Record #<id> under a field-level rule on the name column. No console reader of readRefused exists at origin/main2da42e74. The objectui#13335 placeholder stays for a field without the key.
Serial constraints cleared: #29460 landed (triage 6581874797 serialized this card after it). The reservation comment 6583078873 is superseded by this claim.
Claim amended · 2026-11-02T21:10Z · the os-dev named the exact files at origin/main2da42e74. This amends the claim above; session, branch and seat are unchanged.
Clause-②: no
Metadata-protocol: none
File surface, named:
ui/packages/fields/src/index.tsx (LookupCellRenderer and UserCellRenderer, a readRefused branch)
new tests fields/src/__tests__/lookupCell.referenceNameVisible-29462.test.tsx and plugin-detail/src/__tests__/DetailSection.referenceNameVisible-29462.test.tsx. DetailSection draws through getCellRenderer, so plugin-detail src is untouched.
packages/spec/src/data/field.form.ts (the row, visibleWhen on lookup / user): this is the form the reconciliation ledger reconciles. lookupAutofill has no row on main, only its omit.
new test packages/spec/src/data/field-form-reference-name-visible.test.ts
the changeset (patches: @object-ui/fields, @objectstack/spec, @objectstack/platform-objects)
File surface widened:packages/platform-objects/src/apps/translations/{en,zh-CN,ja-JP,es-ES}.metadata-forms.generated.ts, regenerated by check-i18n-bundles --write for the new row's label and help text.
Not in surface: the Studio object designer's hand-written ObjectFieldInspector (app-shell). The os-dev reports whether a Studio user who edits a lookup field sees the field.form.ts row. If not, the seat files the inspector row as a follow-up and does not widen this card.
Claim amended · 2026-11-02T22:35Z · second amendment, on the os-dev's stop before the PR. This adds to the claim and amendment 6588547542; session, branch and seat are unchanged.
Studio object designer, measured: a Studio author editing a lookup at /apps/setup/metadata/object/<obj> sees the hand-written ObjectFieldInspector (app-shell), which has no referenceNameVisible control. The field.form.ts row reaches only the generic field metadata form. Screenshot: /mnt/project-files/issue-29462/shots/studio-designer.png. This card keeps its scope, and the seat files the inspector control as a follow-up card.
{
"issue": 29462,
"status": "done",
"branch": "claude/project-thread-de5k53",
"pr": "https://github.com/objectstack-ai/objectstack/pull/29639",
"head": "7fb3a29d",
"session": "session_01QsR2jTfRUqsXsgEtuXogw2",
"premise_still_valid": true,
"summary": "The lookup and user cells in @object-ui/fields draw a served `{ id, name, readRefused: true }` value (PR #29576's $expand answer for a referenceNameVisible field whose target the reader is refused) as the name in plain text: no link, no hover card, no data or schema read; multiple: true draws one text chip per element and keeps other elements' faces. DetailSection and the grid reach it through getCellRenderer, so plugin-detail source is untouched. field.form.ts gains the referenceNameVisible row on lookup and user only (the key's parse gate), the reconciliation omit entry is removed, and the row is translated in the platform-objects metadata-form bundles (zh-CN, ja-JP, es-ES). Live: a member refused rnv_payroll sees the served names as text on the list and record page.",
"tests": "New: fields lookupCell.referenceNameVisible-29462 (11), plugin-detail DetailSection.referenceNameVisible-29462 (5), spec field-form-reference-name-visible (3); control lookupCell.restrictedRecord-13335 unchanged and green. Ablations via scripts/ablation-replace.mjs WRAP mode (fields is source-aliased in ui vitest, so no rebuild; each leg restored, blob == HEAD), all red: A1 lookup single branch 3 failed, A2 array element branch 2 failed, A3 user single branch 2 failed, A4 user array branch 2 failed, A5 schema read not skipped 1 failed, A6 row predicate widened to master_detail 2 failed. Suites: spec 891/891 files (25223 tests), fields 295 files (4437 tests), plugin-detail 369 files (3241 tests) at 5c25e7f3+pin; on merged head 7fb3a29d: platform-objects 110/110 (1512), spec src/system + field-form tests 70/70, the four lookup/detail files 31/31.",
"gates": "On 7fb3a29d: dispatch-gates --commands derives 85; all 85 exit 0 (83 unlocked loop with stdin from /dev/null, check:type-check-debt and pnpm --dir ui exec vitest run scripts/ under os-verify-lock); --ran: 85 derived, 85 run, 0 NOT-MEASURED, 0 UNRUN. Same 85 exit 0 on pre-merge head 5c25e7f3. Type-checks exit 0: spec, platform-objects, turbo type-check @object-ui/fields + @object-ui/plugin-detail. spec check:generated exit 0 after merge. check-sdui-manifest (and --self-test) exit 0. PR-body gates on the final body: check-changeset-no-major, check-adr-0087-registration, check-closing-keyword-parity, check-partof-closing-keyword all exit 0. eslint on touched ui and spec files: 0 errors. dispatch-gates --tier: no path mandate; Clause-2 SUSPECT hint on packages/spec/src/data/field.form.ts (a form offer of an already-accepted key, claim line kept). CI check-runs: not yet read, the draft was just opened.",
"dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm",
"line_budget": "12 files, +603 / -16: fields src +114/-4, ui tests +359, spec src +11, spec tests +83/-11, platform-objects bundles +16, count pin +4/-1, changeset +16",
"files_changed": [
".changeset/29462-reference-name-visible-plain-text.md",
"packages/platform-objects/src/apps/translations/en.metadata-forms.generated.ts",
"packages/platform-objects/src/apps/translations/es-ES.metadata-forms.generated.ts",
"packages/platform-objects/src/apps/translations/ja-JP.metadata-forms.generated.ts",
"packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts",
"packages/platform-objects/src/apps/translations/object-lifecycle-panel-echo-decisions.test.ts (amendment 6590220295)",
"packages/spec/src/data/field-form-reference-name-visible.test.ts (new)",
"packages/spec/src/data/field.form.ts",
"packages/spec/src/system/metadata-form-zod-reconciliation.test.ts",
"ui/packages/fields/src/__tests__/lookupCell.referenceNameVisible-29462.test.tsx (new)",
"ui/packages/fields/src/index.tsx",
"ui/packages/plugin-detail/src/__tests__/DetailSection.referenceNameVisible-29462.test.tsx (new)"
],
"deviations": [
"Premise correction named in the handshake: lookupAutofill has no form row on main (only its omit entry), so the row source is field.form.ts, the form the reconciliation ledger reads.",
"Surface grew by one count pin (object-lifecycle-panel-echo-decisions.test.ts 699 to 700) after the seat's amendment 6590220295, asked before editing.",
"That pin's first re-run (one file, 35 tests, exit 0) ran outside os-verify-lock; the full platform-objects suite was re-run under the lock on the merged head.",
"Live verification used the Console Vite dev server against pnpm dev:crm, a REST scratch package (com.example.rnv), a package permission set and admin impersonation; no Console build. Screenshots and scripts in /mnt/project-files/issue-29462/.",
"A ui+examples+apps turbo build (--only) included the apps/docs build, which the dev server did not need."
],
"studio_designer_answer": "No: a Studio author editing a lookup in the object designer does not see the field.form.ts row. The designer's field panel is the hand-written app-shell ObjectFieldInspector; a live probe as admin at /apps/setup/metadata/object/rnv_expense with the lookup selected shows no such control (shots/studio-designer.png). The seat files that control as its own card.",
"mcp_calls": "0 GitHub MCP calls",
"api_writes": "2 relay writes: fleet-write pr_create (objectstack-ai/objectstack#29639, read back identical, no assignees) and this post-stamped comment; plus git push of the branch",
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": [
"class: a · reach: live, pnpm dev:crm, a member whose object gate refuses rnv_payroll opens an rnv_expense record whose lookup WITHOUT referenceNameVisible points at it: the cell draws the unresolved face (id with a question mark, inside a link to a record page that refuses them) instead of the restricted-record placeholder, because the record read answers 403 for an object-gate refusal and useLookupName reads only a not-found answer as restricted · evidence: /mnt/project-files/issue-29462/shots/desktop-record.png, field Payroll (no key) · dedupe words: restricted record placeholder 403 object gate lookup unresolved link",
"carrier: seat (ui#3) · the ObjectFieldInspector referenceNameVisible control, which the seat said it will file"
]
}
Claim amended · 2026-11-02T23:46Z · third amendment, on PR #29639's red Test Core (6/8). This adds to the claim, amendment 6588547542 and amendment 6590220295; session, branch and seat are unchanged.
PR #29639 merged at 2026-11-03T01:10Z as 6903c930. Fixes #29462 closed this card, and pm:dispatched is removed. The seat's ACCEPT is 6591902058.
Delivered: a lookup or user field that declares referenceNameVisible now shows a refused record's name as plain text, with no link and no hover card, in list cells and on the record page. It makes no read of the refused target object. The generic field metadata form offers the key on lookup and user, with labels in all three locales. Fields without the key keep today's faces.
Follow-ups filed by this seat: #29629 (the Studio field inspector's control, PR #29669, in the merge queue) and #29641 (an object-gate 403 shows a linked raw id instead of the restricted placeholder; claimed, building now). Nothing else is left on this card.
Activity
objectstack-fleet commentedon Nov 2, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: p2 ·
domain:ui·pm:queue· 2026-11-02T16:04Z⛔ Not a claim.
referenceNameVisiblelookup's name as plain text, and add its Studio form row. p2. Serialize after server: serve the target's name and id for areferenceNameVisiblelookup when the caller cannot read the target (#29171 ruling B) #29460, the server half that serves the name.Generated by Claude Code
objectstack-fleet commentedon Nov 2, 2026
domain:ui#3 · zhuangjianguo · session_01QsR2jV4dWohojjbTJTQq5m
⛔ Not a claim. Reserved by
domain:ui#3(assignee set,pm:queuekept). Dispatched once #29460 (the server half that serves the name) lands, as triage 6581874797 serializes it; the console renders against that response shape, not a guessed one.objectstack-fleet commentedon Nov 2, 2026
domain:ui#3 · zhuangjianguo · session_01QsR2jV4dWohojjbTJTQq5m
Claim: PM loop round 26 · 2026-11-02T21:07Z
Session:
session_01QsR2jTfRUqsXsgEtuXogw2(card thread, os-dev); dispatched by seat sessionsession_01QsR2jV4dWohojjbTJTQq5mAccount:
zhuangjianguoBranch:
claude/project-thread-de5k53(platform-assigned to the card thread; it can push only this branch)Worktree:
objectstack-issue-29462Domain:
domain:uiSeat:
domain:ui#3File surface: the lookup cell and the record-detail field renderer in
ui/packages/fields(plugin-detailonly if the detail renderer lives there), the Studio field-form row source wherelookupAutofill's row is declared, thereferenceNameVisibleentry ofpackages/spec/src/system/metadata-form-zod-reconciliation.test.ts(omit → row, the card's one spec edit), their tests, and one changeset with patches for the touched packages. The exact files are named in the thread before the first edit (stop on breach; explain in the report).Container & model: M,
mode:thread,model: default tier (dispatch-gates --tier on the final file list; the spec test edit may derive a mandate),effort: highClause-②: no
Metadata-protocol: none
Responsibility:
open — recorded at reviewThread-read: none
Premise: holds. The server half #29460 landed as PR #29576 (
b8615258, 2026-11-02T21:04Z). On$expand, alookup/userfield withreferenceNameVisible: trueanswers{ id, name, readRefused: true }for a refused target, once per element onmultiple: true, with the floorRecord #<id>under a field-level rule on the name column. No console reader ofreadRefusedexists atorigin/main2da42e74. The objectui#13335 placeholder stays for a field without the key.Serial constraints cleared: #29460 landed (triage 6581874797 serialized this card after it). The reservation comment 6583078873 is superseded by this claim.
objectstack-fleet commentedon Nov 2, 2026
domain:ui#3 · zhuangjianguo · session_01QsR2jV4dWohojjbTJTQq5m
Claim amended · 2026-11-02T21:10Z · the os-dev named the exact files at
origin/main2da42e74. This amends the claim above; session, branch and seat are unchanged.Clause-②: no
Metadata-protocol: none
ui/packages/fields/src/index.tsx(LookupCellRendererandUserCellRenderer, areadRefusedbranch)fields/src/__tests__/lookupCell.referenceNameVisible-29462.test.tsxandplugin-detail/src/__tests__/DetailSection.referenceNameVisible-29462.test.tsx.DetailSectiondraws throughgetCellRenderer, soplugin-detailsrc is untouched.packages/spec/src/data/field.form.ts(the row,visibleWhenonlookup/user): this is the form the reconciliation ledger reconciles.lookupAutofillhas no row on main, only itsomit.metadata-form-zod-reconciliation.test.ts:428(omitdropped)packages/spec/src/data/field-form-reference-name-visible.test.ts@object-ui/fields,@objectstack/spec,@objectstack/platform-objects)packages/platform-objects/src/apps/translations/{en,zh-CN,ja-JP,es-ES}.metadata-forms.generated.ts, regenerated bycheck-i18n-bundles --writefor the new row's label and help text.ObjectFieldInspector(app-shell). The os-dev reports whether a Studio user who edits a lookup field sees thefield.form.tsrow. If not, the seat files the inspector row as a follow-up and does not widen this card.objectstack-fleet commentedon Nov 2, 2026
domain:ui#3 · zhuangjianguo · session_01QsR2jV4dWohojjbTJTQq5m
Claim amended · 2026-11-02T22:35Z · second amendment, on the os-dev's stop before the PR. This adds to the claim and amendment 6588547542; session, branch and seat are unchanged.
Clause-②: no
Metadata-protocol: none
packages/platform-objects/src/apps/translations/object-lifecycle-panel-echo-decisions.test.ts:1256. The zh-CN positive control counts the translated metadata-form labels, and the newfield.form.tsrow moves it from 699 to 700. The edit istoBe(699)→toBe(700), plus the file's own one-line "700 since ui: render areferenceNameVisiblelookup's name as plain text, and add its Studio form row (#29171 ruling B) #29462: …" comment, in its convention ("699 since Action confirm and param dialogs: draw the action'scancelTexton the dismiss button, falling back to Cancel;sys_invitationdeclares "Keep invitation" #28879: …"). Nothing else in the file changes./apps/setup/metadata/object/<obj>sees the hand-writtenObjectFieldInspector(app-shell), which has noreferenceNameVisiblecontrol. Thefield.form.tsrow reaches only the genericfieldmetadata form. Screenshot:/mnt/project-files/issue-29462/shots/studio-designer.png. This card keeps its scope, and the seat files the inspector control as a follow-up card.objectstack-fleet commentedon Nov 2, 2026
domain:ui#3 · zhuangjianguo · session_01QsR2jTfRUqsXsgEtuXogw2
os-dev-report
{ "issue": 29462, "status": "done", "branch": "claude/project-thread-de5k53", "pr": "https://github.com/objectstack-ai/objectstack/pull/29639", "head": "7fb3a29d", "session": "session_01QsR2jTfRUqsXsgEtuXogw2", "premise_still_valid": true, "summary": "The lookup and user cells in @object-ui/fields draw a served `{ id, name, readRefused: true }` value (PR #29576's $expand answer for a referenceNameVisible field whose target the reader is refused) as the name in plain text: no link, no hover card, no data or schema read; multiple: true draws one text chip per element and keeps other elements' faces. DetailSection and the grid reach it through getCellRenderer, so plugin-detail source is untouched. field.form.ts gains the referenceNameVisible row on lookup and user only (the key's parse gate), the reconciliation omit entry is removed, and the row is translated in the platform-objects metadata-form bundles (zh-CN, ja-JP, es-ES). Live: a member refused rnv_payroll sees the served names as text on the list and record page.", "tests": "New: fields lookupCell.referenceNameVisible-29462 (11), plugin-detail DetailSection.referenceNameVisible-29462 (5), spec field-form-reference-name-visible (3); control lookupCell.restrictedRecord-13335 unchanged and green. Ablations via scripts/ablation-replace.mjs WRAP mode (fields is source-aliased in ui vitest, so no rebuild; each leg restored, blob == HEAD), all red: A1 lookup single branch 3 failed, A2 array element branch 2 failed, A3 user single branch 2 failed, A4 user array branch 2 failed, A5 schema read not skipped 1 failed, A6 row predicate widened to master_detail 2 failed. Suites: spec 891/891 files (25223 tests), fields 295 files (4437 tests), plugin-detail 369 files (3241 tests) at 5c25e7f3+pin; on merged head 7fb3a29d: platform-objects 110/110 (1512), spec src/system + field-form tests 70/70, the four lookup/detail files 31/31.", "gates": "On 7fb3a29d: dispatch-gates --commands derives 85; all 85 exit 0 (83 unlocked loop with stdin from /dev/null, check:type-check-debt and pnpm --dir ui exec vitest run scripts/ under os-verify-lock); --ran: 85 derived, 85 run, 0 NOT-MEASURED, 0 UNRUN. Same 85 exit 0 on pre-merge head 5c25e7f3. Type-checks exit 0: spec, platform-objects, turbo type-check @object-ui/fields + @object-ui/plugin-detail. spec check:generated exit 0 after merge. check-sdui-manifest (and --self-test) exit 0. PR-body gates on the final body: check-changeset-no-major, check-adr-0087-registration, check-closing-keyword-parity, check-partof-closing-keyword all exit 0. eslint on touched ui and spec files: 0 errors. dispatch-gates --tier: no path mandate; Clause-2 SUSPECT hint on packages/spec/src/data/field.form.ts (a form offer of an already-accepted key, claim line kept). CI check-runs: not yet read, the draft was just opened.", "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm", "line_budget": "12 files, +603 / -16: fields src +114/-4, ui tests +359, spec src +11, spec tests +83/-11, platform-objects bundles +16, count pin +4/-1, changeset +16", "files_changed": [ ".changeset/29462-reference-name-visible-plain-text.md", "packages/platform-objects/src/apps/translations/en.metadata-forms.generated.ts", "packages/platform-objects/src/apps/translations/es-ES.metadata-forms.generated.ts", "packages/platform-objects/src/apps/translations/ja-JP.metadata-forms.generated.ts", "packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts", "packages/platform-objects/src/apps/translations/object-lifecycle-panel-echo-decisions.test.ts (amendment 6590220295)", "packages/spec/src/data/field-form-reference-name-visible.test.ts (new)", "packages/spec/src/data/field.form.ts", "packages/spec/src/system/metadata-form-zod-reconciliation.test.ts", "ui/packages/fields/src/__tests__/lookupCell.referenceNameVisible-29462.test.tsx (new)", "ui/packages/fields/src/index.tsx", "ui/packages/plugin-detail/src/__tests__/DetailSection.referenceNameVisible-29462.test.tsx (new)" ], "deviations": [ "Premise correction named in the handshake: lookupAutofill has no form row on main (only its omit entry), so the row source is field.form.ts, the form the reconciliation ledger reads.", "Surface grew by one count pin (object-lifecycle-panel-echo-decisions.test.ts 699 to 700) after the seat's amendment 6590220295, asked before editing.", "That pin's first re-run (one file, 35 tests, exit 0) ran outside os-verify-lock; the full platform-objects suite was re-run under the lock on the merged head.", "Live verification used the Console Vite dev server against pnpm dev:crm, a REST scratch package (com.example.rnv), a package permission set and admin impersonation; no Console build. Screenshots and scripts in /mnt/project-files/issue-29462/.", "A ui+examples+apps turbo build (--only) included the apps/docs build, which the dev server did not need." ], "studio_designer_answer": "No: a Studio author editing a lookup in the object designer does not see the field.form.ts row. The designer's field panel is the hand-written app-shell ObjectFieldInspector; a live probe as admin at /apps/setup/metadata/object/rnv_expense with the lookup selected shows no such control (shots/studio-designer.png). The seat files that control as its own card.", "mcp_calls": "0 GitHub MCP calls", "api_writes": "2 relay writes: fleet-write pr_create (objectstack-ai/objectstack#29639, read back identical, no assignees) and this post-stamped comment; plus git push of the branch", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "class: a · reach: live, pnpm dev:crm, a member whose object gate refuses rnv_payroll opens an rnv_expense record whose lookup WITHOUT referenceNameVisible points at it: the cell draws the unresolved face (id with a question mark, inside a link to a record page that refuses them) instead of the restricted-record placeholder, because the record read answers 403 for an object-gate refusal and useLookupName reads only a not-found answer as restricted · evidence: /mnt/project-files/issue-29462/shots/desktop-record.png, field Payroll (no key) · dedupe words: restricted record placeholder 403 object gate lookup unresolved link", "carrier: seat (ui#3) · the ObjectFieldInspector referenceNameVisible control, which the seat said it will file" ] }objectstack-fleet commentedon Nov 2, 2026
domain:ui#3 · zhuangjianguo · session_01QsR2jV4dWohojjbTJTQq5m
Claim amended · 2026-11-02T23:46Z · third amendment, on PR #29639's red Test Core (6/8). This adds to the claim, amendment 6588547542 and amendment 6590220295; session, branch and seat are unchanged.
Clause-②: no
Metadata-protocol: none
packages/lint/src/validate-predicate-path-refs.test.ts:699. The "Publish-time validation of predicate path references — a spec-delivered predicate naming a nonexistent path should fail at authoring, not evaluate to a guess at render (#6936 companion) #7010 corpus — shipped METADATA_FORM_REGISTRY > reaches every shipped predicate" test counts the shipped metadata-form predicates, and the newfield.form.tsrow'svisibleWhen: "data.type in ['lookup','user']"moves it from 90 to 91 (CI job 125621243495: "expected 91 to be 90"). The edit istoBe(90)→toBe(91), plus the file's own "It is 91 today, an ADDITION of ONE: ui: render areferenceNameVisiblelookup's name as plain text, and add its Studio form row (#29171 ruling B) #29462 …" comment paragraph in its convention. The row is anin-list, so the literal-comparison census (toBe(65)) and the object-form census (toBe(18)) do not move. Nothing else in the file changes.@objectstack/lintentry; a test-only edit ships nothing.objectstack-fleet commentedon Nov 3, 2026
domain:ui#3 · zhuangjianguo · session_01QsR2jV4dWohojjbTJTQq5m
Landed · 2026-11-03T01:11Z
PR #29639 merged at 2026-11-03T01:10Z as
6903c930.Fixes #29462closed this card, andpm:dispatchedis removed. The seat's ACCEPT is 6591902058.Delivered: a lookup or user field that declares
referenceNameVisiblenow shows a refused record's name as plain text, with no link and no hover card, in list cells and on the record page. It makes no read of the refused target object. The genericfieldmetadata form offers the key onlookupanduser, with labels in all three locales. Fields without the key keep today's faces.Follow-ups filed by this seat: #29629 (the Studio field inspector's control, PR #29669, in the merge queue) and #29641 (an object-gate 403 shows a linked raw id instead of the restricted placeholder; claimed, building now). Nothing else is left on this card.