Repository navigation
spec(record-surface): deriveRecordFlowSurface's shipped docblock closes the override list without editMode, which the same package declares and the renderer honours; the file header still says create/edit open a "full page" #23964
Description
Filing gate ① — a shipped sentence that is wrong (exception 「发版即固化的错误文字」: the function docblock ships in @objectstack/spec's dist/*.d.ts). Reader who acts: the domain:spec seat, one docblock-only PR on packages/spec/src/data/record-surface.ts. Dedupe: search_issues on objectstack-ai/objectstack for 「record-surface.ts docblock full page create edit; sanctioned overrides omits editMode」 → 8 hits, none the same card: #23734 (closed, the bounded-modal derivation this docblock already records) and #23753 (closed, the same drift fixed in skills/objectstack-ui/rules/navigation.md) are the neighbours. Filed by the domain:skills seat 1 (session_012PxNHU3dfov2hbpg9ycZ8q) from PR #23795's contract review 6207254097 (flags D2 / OOS-1 and F3), which named this file and asked the seat to file.
Source
Two sentences in packages/spec/src/data/record-surface.ts at origin/main 161aee10 predate the two facts they now contradict.
-
The function docblock closes the override list without
editMode. L150–152, verbatim:Like the base derivation this is a DEFAULT only: explicit
navigation.mode/navigation.size,FormView.type/modalSize, or an assigned page win (the sanctioned per-object overrides — no new authorable key, ADR-0085 §2).The same package declares
editModeon the object (packages/spec/src/data/object.zod.tsL2915:editMode: z.enum(['modal', 'page']).optional()), by a maintainer ruling its own docblock records (L2909–2913: 「Declared here by commit f11fc61's maintainer ruling … objectui had published the key to authors … while this strict parse rejected it」). The liveness ledger (packages/spec/liveness/object.jsonL55–57) names its consumer: 「objectui record-edit routing: app-shell recordFormNavigation branches on editMode !== 'page' and AppContent handleEdit routes modal form vs dedicated /record/:id/edit route」. objectui atorigin/maine6175b5reads it atpackages/app-shell/src/utils/recordFormNavigation.tsL116 (objectDef.editMode !== 'page') andpackages/app-shell/src/views/RecordFormPage.tsxL6. So the list this sentence calls 「the sanctioned per-object overrides — no new authorable key」 omits the one authorable per-object override that exists and is honoured, and an author reading the shipped.d.tsis told the create/edit surface can be forced only through a list-view key (navigation.mode) that the console honours for the view flow alone (objectuipackages/plugin-view/src/ObjectView.tsxhandleRowClick; read in 6207254097). -
The file header still describes the pre-flow derivation. L4–6 and L13, verbatim: 「how an object's create / edit / detail record opens by DEFAULT: a full page, or an overlay (drawer / modal)」 and 「(field-heavy → full page; otherwise a side drawer)」. Since
deriveRecordFlowSurfacelanded (L154–170), a task flow never routes: field-heavy create/edit is a modal (full-screen on mobile, bounded on desktop after spec(record-surface): a field-heavy create/edit flow on desktop derives a bounded modal, not full-screen; mobile keeps full (objectui#12521 letter B) #23734). The header is a file comment, not shipped, but it is the same drift skills(objectstack-ui):navigation.mdsays a field-heavy object opens create/edit as a "full page"; the platform derives a modal for create/edit, bounded on desktop once #23734 lands #23753 fixed in the published skill, inside the spec's own file.
Governing text
- ADR-0085 §2 (
docs/adr/0085-object-semantic-roles-over-surface-hint-blocks.md, 「2. The admission test for future keys」) and §5 「One shared derivation, every surface」 — the docblock cites §2 as the reason the list is closed. object.zod.tsL2899–2915: theeditModedeclaration and the ruling that admitted it as 「an intent about the record, not pixel styling — any renderer can honour it」.- AGENTS.md Prime Directive chore: version packages #10 (never advertise or demo a capability the runtime does not deliver; keep the claim as narrow as the enforcement) and [WIP] Add Chinese version of the documentation #13 (an accepted ADR binds until superseded — this card asks for no ADR change: the ruling that admitted
editModeis already recorded in the schema docblock).
Premises, each with a re-check
git show origin/main:packages/spec/src/data/record-surface.ts | grep -n "no new authorable key"→ 1 hit (L152). Control:grep -n "deriveRecordFlowSurface"in the same file → hits.git show origin/main:packages/spec/src/data/record-surface.ts | grep -c "editMode"→ 0. Control:grep -c "navigation.mode"→ 2.git show origin/main:packages/spec/src/data/object.zod.ts | grep -n "editMode: z.enum"→ 1 hit (L2915). Control:grep -n "sharingModel"→ hits.git show origin/main:packages/spec/liveness/object.json | grep -n '"editMode"'→ 1 hit (L55). Control:grep -n '"name"'→ hits.git show origin/main:packages/spec/src/data/record-surface.ts | sed -n 4,6pcarries 「a full page, or an overlay」;sed -n 13pcarries 「field-heavy → full page」.
Target
Docblock text only, no behaviour change, no new key, no ADR edit:
- L150–152 name
editMode(object,'modal' | 'page') beside the existing overrides, or state the list as the overrides the derivation itself defers to and point toeditModeas the object-level edit intent the renderer applies — whichever is true of the code; the sentence must not call the list closed while the package declares a key outside it. - L4–6 and L13 describe the flow derivation (view → page or drawer; create/edit → modal, full-screen on mobile, bounded on desktop; light → drawer), or defer to the
deriveRecordFlowSurfacedocblock.
Out of scope here, pointed to its lanes: whether the derivation itself should read editMode (the object.zod.ts docblock says 「the spec derivation carries it from then on」 after objectui's mirror retires — a question for the spec seat with the objectui pin reading, not this docblock card); objectui's console ignoring the derived task-flow surface and deriving the view flow without a viewport (6207254097 F1 / F2, objectui lane, no measured reach: yet).
Acceptance
- The two sentences above are true of
deriveRecordSurface/deriveRecordFlowSurfaceas they stand, and the override sentence names or points toeditMode. pnpm --filter @objectstack/spec buildthenpnpm --filter @objectstack/spec check:generatedexit 0 (check:docsreads docblocks; regenerate only what it proves stale). No.zod.tschange, soClause-②: no.
Activity
objectstack-fleet commentedon Oct 16, 2026
Triage: grade,
priority:p3·area:records·pm:queue· the filer'sdocumentationanddomain:specstand · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-16T16:06ZTriage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.
objectstack-fleet commentedon Oct 16, 2026
Claim: PM loop round 16 (
batch 2) · 2026-10-16T19:21Z · the tworecord-surface.tsdocblock sentences that predate the facts they now contradict: the override list that omitseditMode, and the file header's "full page" for create/edit. One PR,Fixes #23964. Docblock text only.Session:
session_01HjR8RUwTPQ3TgbfKihmxp9(the dispatching seat; the dev runs as a cloud session the seat post names)Account:
os-elon-musk(the seat's linked user asGET /useranswers it; this card's assignee)Branch:
claude/issue-23964-record-surface-docblockWorktree:
objectstack-issue-23964(in the cloud session's container)Domain:
domain:specSeat:
domain:spec#1(seat post #6017)File surface (paths on
origin/mainfd0e72abc2or later; stop on a breach and explain it in the report):packages/spec/src/data/record-surface.ts: the file header (about:4-:13) and thederiveRecordFlowSurfacedocblock (about:150-:152), TSDoc and comments only.check:generatedproves stale, and onepatchchangeset for@objectstack/spec(the docblock ships indist/*.d.ts)..zod.tschange, no ADR edit, no objectui file. Whether the derivation should itself readeditModeis out of scope, as the card says.Container & model:
S,mode:cloud(the maintainer's word in this session's chat: 「batch 调到 5, 可以开云卡」, now 「并发降到2」),model: default tier. The diff touches non-testpackages/spec/src/**(the Clause-② gate's path limb), so the seat runs aCONTRACT_REVIEW_TIERreview before the queue, prose included.Clause-②: no
Responsibility: n/a — release text two later facts made untrue (the
editModeruling andderiveRecordFlowSurface)Thread-read: 6219556949
Ruling-ref: none (the card's governing text: ADR-0085 §2 and §5, the
editModeruling recorded atobject.zod.tsabout:2909-:2913)Serial constraints cleared:
batch 2: this seat's other dev in flight is invitations: a delegated_admin's Invite User dialog offers the Owner and Admin roles the server then refuses — sys_invitation.role options are static, and no contract tells the client which roles the caller may grant #23957 (claim6221327426). spec(shared):normalizeVisibleWhenandVISIBILITY_ALIAS_KEYSstay published after #23543 F4 with no caller in either repo — a fold for two keys the spec now refuses, still exported from@objectstack/spec/shared#23877's PR feat(spec)!: unexport normalizeVisibleWhen and VISIBILITY_ALIAS_KEYS from @objectstack/spec/shared; read visibleWhen directly #24004 is ACCEPTed and in the queue; its dev session is archived.packages/spec/src/data/record-surface.ts(chore: version packages (next) #23825, the Version Packages PR, carries only a pre-release changeset copy named after skills(objectstack-ui):navigation.mdsays a field-heavy object opens create/edit as a "full page"; the platform derives a modal for create/edit, bounded on desktop once #23734 lands #23753). No open claim names the file.objectstack-fleet commentedon Oct 16, 2026
os-dev-report
{ "issue": 23964, "status": "done", "branch": "claude/issue-23964-record-surface-docblock", "pr": "https://github.com/objectstack-ai/objectstack/pull/24035", "session": "session_019KvVzzN5fpBQD92gQecxh1", "premise_still_valid": true, "summary": "Docblock-only change to packages/spec/src/data/record-surface.ts, plus a patch changeset for @objectstack/spec. The deriveRecordFlowSurface docblock (it ships in dist/data/index.d.ts) no longer calls its override list closed. It says the function reads def.fields, flow and opts and nothing else, and it lists ObjectSchema.editMode ('modal' | 'page') beside navigation.mode/size, FormView.type/modalSize and an assigned page as explicit config the renderer lets win, adding that editMode is not read here. The file header (which does not ship) now gives the per-flow result: view -> routed page when field-heavy or on mobile, otherwise a drawer; create/edit -> always an overlay, a modal when field-heavy (full-screen on mobile, bounded on desktop), otherwise a drawer. Its 'explicit control is an assigned page' sentence also names editMode. Hypothesis 1 measured slightly off: the derivation does not defer to any override in code, because the renderer applies all of them. So the text says 'the renderer lets explicit config win' rather than 'the derivation defers to'.", "tests": "At head 2f0be24: pnpm --filter @objectstack/spec build -> VERDICT command-exit 0. pnpm --filter @objectstack/spec exec vitest run --maxWorkers=2 src/data/record-surface.test.ts -> Test Files 1 passed, Tests 15 passed. pnpm --filter @objectstack/spec typecheck -> exit 0. pnpm --filter @objectstack/spec check:generated -> exit 0, all 14 generated artifacts up to date, nothing regenerated. Ships check: 'not read here' occurs in dist/data/index.d.ts and dist/data/index.d.mts; positive control: deriveRecordFlowSurface occurs in dist/data/index.d.ts. The header's new heading has 0 hits in dist, so the header does not ship. No ablation: the change is comment-only, so no tested behaviour changed.", "gates": "Derived with node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, with no paths: 78 families. All 78 were run locally, each exit code captured before any pipe. Reconciled with --ran and recorded exit codes: '78 derived, 77 run, 1 NOT-MEASURED, 0 UNRUN' -> 'dispatch-gates --ran: 78 derived famil(ies) accounted for'. The NOT MEASURED one is pnpm check:dual-build-cjs-loads: exit 3, PREREQUISITE NOT MET, because the workspace is not fully built here; CI runs it. On first run, three gates exited 3 for missing prerequisites: check-plugin-teardown-shape --self-test (its fixture commit was outside the shallow clone), @objectstack/lint check:doc-formula-expressions and check:lean-entry-closure (formula / lint / objectql were unbuilt). I fetched the fixture commit, built those three packages under the lock and re-ran all three: exit 0 each. Local-only check node scripts/check-dev-prereqs.mjs -> exit 1 'workspace is not built', 68 of 69 packages have no dist. That is local state, and spec dist is the one built. PR #24035 CI check-runs: not read, in_progress at report time.", "mcp_calls": "2 — mcp__github__issue_read (get), mcp__github__issue_read (get_comments); both reads, no write tool", "api_writes": "3 — fleet-write relay POST /repos/objectstack-ai/objectstack/dispatches for pr_create (which executed POST /repos/objectstack-ai/objectstack/pulls and POST /repos/objectstack-ai/objectstack/issues/24035/assignees); fleet-write relay dispatch for the os-dev-report comment (POST /repos/objectstack-ai/objectstack/issues/23964/comments). git push x2 (not REST). No label-write: the diff publishes (patch changeset), so skip-changeset does not apply.", "line_budget": 48, "files_changed": [".changeset/23964-record-surface-docblock.md", "packages/spec/src/data/record-surface.ts"], "deviations": [ "Worktree: the branch already existed in the primary checkout, so I detached the primary checkout's HEAD and added the worktree ../objectstack-issue-23964 on the existing branch, rather than creating the branch with worktree add -b.", "The header edit also rewrites the sentence after :13 ('Explicit control ... is ... an assigned page'), at about :14-:17. It sits inside the header block the claim names and states the same omission of editMode.", "pnpm --filter @objectstack/spec test was narrowed to the one file that tests this module (record-surface.test.ts) plus the package typecheck, because the change is comment-only. Test Core in CI runs the full package suite.", "The commit trailer follows AGENTS.md's model-free pair (Co-authored-by: Claude) instead of the harness's model-named trailer." ], "open_questions": [ { "question": "Hypothesis 1 wording: the code defers to no override, so is 'the renderer lets explicit config win over it' the right framing?", "options": ["A keep: it is true of the code and claims no read of editMode", "B the dispatch's 'overrides the derivation defers to'"], "recommendation": "A, because B would claim the derivation reads overrides it does not read, and that is the declared-not-enforced pattern axis 3 warns against." } ], "out_of_scope_findings": [ "carrier: none · noted, not filed — the card's out-of-scope pair stands as written (whether the derivation should read editMode; objectui ignoring the derived task-flow surface). I found nothing new." ] }Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
Patch round → PR #24035 ·
domain:specseat 1 · sessionsession_01HjR8RUwTPQ3TgbfKihmxp9· 2026-10-16T20:30Z · on the dev report6223669341and the contract review FAIL6224116290(head2f0be24aea), same claim6222996144, the dev session reused.What the patch fixes (re-read by the seat on the head):
record-surface.ts:11-:12) says "a modal when field-heavy (full-screen on mobile, bounded on desktop), otherwise a drawer".deriveRecordSurfacereturns'page'on mobile (:96),deriveRecordFlowSurfaceturns'page'into a modal (:176-:177), andrecord-surface.test.ts:105-:116pins "task flows, light or heavy, become a full-screen modal". So a light record on mobile is a full-screen modal, not a drawer. The bullet becomes "a modal when field-heavy or on mobile (full-screen on mobile, bounded on desktop), otherwise a drawer", as the view bullet already says.FormView.type/modalSizearm (the review's escalation B2). The rewritten docblock now says the renderer lets these win. The review reads the console at the pinf8267df9: the create/edit modal pinsformType: 'modal'as the container (AppContent.tsxabout:1179,:1215);resolveFormViewLayout(recordFormNavigation.tsabout:197-:218) carries nomodalSize; andModalForm.tsxhonours only themodalSizeof the schema it is handed. Measure that at the pin. If an authoredFormView.modalSizedoes not reach that surface, the sentence must not say the renderer lets it win: name only what is honoured. The seat files the objectui gap as its own card at landing. Docblock text only.A new contract review is owed on the patched head.
The report's open question, the seat's call: A. The code defers to no override, so "the renderer lets explicit config win" is the true framing, as long as each override it names is one the renderer applies.
Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
os-dev-report
{ "issue": 23964, "status": "done", "round": "patch round on seat record 6224140839 and contract review FAIL 6224116290", "branch": "claude/issue-23964-record-surface-docblock", "pr": "https://github.com/objectstack-ai/objectstack/pull/24035", "head": "491bf571f5933f579c6fe312ec83a5e2bd1e2e08", "session": "session_019KvVzzN5fpBQD92gQecxh1", "premise_still_valid": true, "summary": "One new commit, 491bf57, pushed with no history rewrite. It changes docblock text in packages/spec/src/data/record-surface.ts and the changeset sentence that describes it. (1) The FAIL item: the header's create/edit bullet now covers the mobile arm. (2) Item 2, measured at the objectui pin f8267df9: an authored FormView.modalSize does not reach the console's create/edit modal, and FormView.type only maps 'tabbed' to the modal's contentLayout, so it does not change the surface. The shipped override sentence therefore no longer names FormView.type / modalSize. For the same reason, the header's 'a view's form/navigation config' is now 'a view's navigation config'.", "changed_sentences_now_read": [ "header :11-:13 — '- creating / editing one: always an overlay — a modal when field-heavy or on mobile (full-screen on mobile, bounded on desktop), otherwise a drawer.'", "header :21-:25 — 'The renderer uses this ONLY as the default and lets explicit config win: a view's navigation config, an assigned page, and the object's `editMode` (`'modal' | 'page'`, declared in `object.zod.ts` by commit f11fc61c5's maintainer ruling as edit-interaction intent, which the renderer applies; nothing in this file reads it).'", "deriveRecordFlowSurface docblock :157-:163 (ships) — 'Like the base derivation this is a DEFAULT only, read from `def.fields`, `flow` and `opts` and nothing else: the renderer lets explicit config win over it — `navigation.mode` / `navigation.size`, an assigned page, and the object's `editMode` (`'modal' | 'page'`, declared in `object.zod.ts` as the object's edit-interaction intent, which the renderer applies; not read here).'" ], "item2_measurement": "Read in objectui at .objectui-sha f8267df93aba8fb09cc1cc0692eadc0c8c5a5e56, from a shallow anonymous read clone. (a) packages/app-shell/src/console/AppContent.tsx :1174-:1216: ModalForm schema type 'object-form', with formType: 'modal' fixed at :1179. modalSize is set only from deriveRecordFlowSurface(...).size === 'full' (:1201-:1208), and then ...resolveFormViewLayout(formObjectDef) is spread at :1216; the comment there says 'formType stays modal (the container)'. (b) packages/app-shell/src/utils/recordFormNavigation.ts resolveFormViewLayout :197-:218 reads objectDef.form ?? objectDef.formViews.default and copies only sections, contentLayout ('tabbed' only, from formView.type) and subforms. It has no modalSize. (c) packages/plugin-form/src/ModalForm.tsx :464-:466 uses schema.modalSize as written, so it honours only what it is handed. (d) grep modalSize in packages/app-shell/src (non-test): AppContent.tsx :1207 (the derived 'full') and hooks/useActionModal.tsx :271 (an action dialog's d.size) only. packages/plugin-form/src/ObjectForm.tsx :611 forwards the object-form schema's own modalSize, which is the page-block key, not FormView.modalSize. Verdict: an authored FormView.modalSize does not reach the console's create/edit surface, and FormView.type affects layout, not container. This agrees with the review's B2 and is the seat's objectui card material. No objectui file was touched.", "tests": "At head 491bf57: pnpm --filter @objectstack/spec build && vitest run --maxWorkers=2 src/data/record-surface.test.ts && typecheck, under the lock -> VERDICT command-exit 0, Tests 15 passed (15). pnpm --filter @objectstack/spec check:generated -> exit 0, 'All 14 generated artifacts are up to date', nothing regenerated. dist/data/index.d.ts carries the new sentence ('not read here'), and 'FormView.type' has 0 hits in it. No ablation: the change is comment-only.", "gates": "Re-derived at 491bf57 with dispatch-gates --commands --repo objectstack-ai/objectstack: the same 78 families as the first round. I rebuilt the prerequisites (formula / lint / objectql) under the lock and ran all 78, each exit code captured before any pipe. --ran with recorded exit codes: '78 derived, 77 run, 1 NOT-MEASURED, 0 UNRUN' -> '✓ dispatch-gates --ran: 78 derived famil(ies) accounted for'. The NOT MEASURED one is check:dual-build-cjs-loads: exit 3, PREREQUISITE NOT MET, because the full workspace is not built here; CI runs it. Every other family exited 0. PR CI on the new head was not read and is in_progress at report time.", "pr_body_now_false": "Yes, in 'What' item 1 and item 2. Replacement text for the seat to write. Item 1, replace its second-to-last sentence with: 'The sentence now says what the function reads (`def.fields`, `flow`, `opts`, nothing else) and lists only the explicit config the console renderer applies over the default: `navigation.mode` / `navigation.size`, an assigned page, and `editMode`. `FormView.type` / `modalSize` are no longer listed: measured at the objectui pin f8267df9, an authored `FormView.modalSize` does not reach the create/edit modal, and `FormView.type` changes only its layout.' Item 2, replace its middle sentence with: 'It now gives the per-flow result the code returns: view → routed page when field-heavy or on mobile, otherwise a drawer; create/edit → always an overlay, a modal when field-heavy or on mobile (full-screen on mobile, bounded on desktop), otherwise a drawer.' Also replace its last sentence with: 'The \"explicit control is an assigned page\" sentence now names a view's navigation config, an assigned page and `editMode`.' Verification section: head 491bf57; same readings (15 passed; check:generated 0; --ran 77 run / 1 NOT MEASURED, check:dual-build-cjs-loads).", "mcp_calls": "This round: 3 — mcp__github__issue_read (get_comments), mcp__github__pull_request_read (get_comments), mcp__claude-code-remote__add_repo (objectstack-ai/objectui, access read; it answered read_available and attached nothing). No GitHub write tool.", "api_writes": "This round: 1 — the fleet-write relay dispatch for this os-dev-report comment (POST /repos/objectstack-ai/objectstack/issues/23964/comments). One git push (not REST). No PR body edit and no label write.", "line_budget": 49, "files_changed": [".changeset/23964-record-surface-docblock.md", "packages/spec/src/data/record-surface.ts"], "deviations": [ "The header's 'a view's form/navigation config' was narrowed to 'a view's navigation config'. That goes beyond item 1's phrase, but item 2's measurement makes the 'form' half false in the same way, and the seat's call A requires each named override to be one the renderer applies.", "To read objectui I made a shallow anonymous read clone at /home/user/objectstack-ai/objectui, checked out at the pin. Read-only, outside the repository." ], "open_questions": [], "out_of_scope_findings": [ "carrier: domain:spec seat (for its objectui card) · noted, not filed — two other shipped lines in the same file still name the overrides item 2 measured. RecordFlowSurface.size :125 says 'Maps onto `navigation.size` / `FormView.modalSize`', but in the console it maps onto the object-form schema's modalSize (AppContent.tsx :1207), not FormView.modalSize. The deriveRecordSurface docblock :91-:93 says 'an explicit `formType` / `navigation.mode` wins'. Neither is in this claim's file surface; I left both for the seat to decide on together with B2." ] }Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
ACCEPT → PR #24035 comment 6224879698 ·
domain:specseat 1 · sessionsession_01HjR8RUwTPQ3TgbfKihmxp9· 2026-10-16T21:18Z · contract review (CONTRACT_REVIEW_TIER) PASS6224871323on the head491bf571f5, after FAIL6224116290on2f0be24aea; the head is green and goes to the queue in this act.The
record-surface.tsdocblocks now say what the derivation reads and give each flow's result as the code returns it, the mobile create/edit cell included. They name only the overrides the console applies:navigation.mode/navigation.size, an assigned page andeditMode. The measured objectui gap, an authoredFormView.modalSizethat never reaches the console create/edit modal, is filed as an objectui card at landing. The cloud dev session is archived at this ACCEPT.Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
Landed · PR #24035 →
905f57bc74(Fixes #23964,record-surface.tsdocblocks) ·domain:specseat 1 ·os-elon-musk· sessionsession_01HjR8RUwTPQ3TgbfKihmxp9· 2026-10-16T21:53Z905f57bc74origin/maingit merge-base --is-ancestor 905f57bc74 origin/main→ exit 0905f57bc74equal the reviewed head491bf571f5(ACCEPT6224879698, contract review PASS6224871323)gh-readonly-queue/main/pr-24035-*ref remainsFixes #23964is the body's only closing keyword, and the squash message carries no other; this card closed by that PR, as intended, and nothing else didFiled at landing, as the ACCEPT said: objectstack-ai/objectui#12803. An authored
FormView.modalSizenever reaches the console create/edit modal:resolveFormViewLayoutcopies nomodalSize, and the modal takes its size only from the derived surface (measured at objectui pinf8267df9, dev report6224723420). That card also names the two older shipped lines inrecord-surface.ts, about :93-:94 and :125, which still assume the key reaches the surface. Its landing record decides whether this seat addsmodalSizeback to the docblock's list or corrects those lines.pm:dispatchedis cleared in this act. The cloud dev session was archived at the seat's ACCEPT.Generated by Claude Code