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
date / datetime still draw the native input outside record forms after objectui#12622: action-param and bulk dialogs, inline editors, list filters (family close-out) #12642
Filing gate ①: the family close-out of objectui#12622, from the dev report on PR #12641. Filed by the domain:ui seat 2 (session_01XVp19E1MYUTFM3dnkwz8gB). ⛔ Not a claim; for triage to grade and route.
reach: these surfaces still draw date / datetime with the browser's native input, so the placeholder and digit order come from the machine's locale, not the console's. That is objectui#12622's defect class, measured there on a record form. The sites below come from the dev's source reading. ⛔ None was measured in a browser.
PR #12641 puts the platform picker on the record form only. It adds a FORM_FACE_LOADERS override in packages/fields/src/index.tsx for what registerField registers. One field type now has two faces.
Surface
Path
Draws
Action-param and bulk-action dialogs
getLazyFieldWidget → fieldWidgetMap
native
Inline editors: grid and detail inline, the kanban required-fields dialog
FilterBuilder, UserFilters date range, plugin-viewFilterUI
native
Ask (for triage to scope)
Dialogs (the dev's recommendation A): move fieldWidgetMap's date / datetime to the picker and drop FORM_FACE_LOADERS. That gives one face per field type for forms and dialogs.
It updates the pins in app-shellActionParamDialog.test, ActionDesigner.paramVocabulary.test and plugin-gridbulkActionDialogParams.test.
Inline editors and filters: decide separately. A popover inside a grid cell or a filter row is a different interaction, so measure first.
Unused export:@object-ui/components exports a DatePicker (custom/date-picker.tsx) with no consumer in this repository. Retiring a published export is the maintainer's call, so it is only noted here.
Dedupe: objectui#12622 is the parent. A REST search of objectui ("native date input locale placeholder", "date picker filter") found no other card.
Item 1 (dialogs) is this card's build: recommendation A, fieldWidgetMap's date / datetime move to the picker and FORM_FACE_LOADERS is dropped, so each field type has one face.
Item 2 (inline editors and filters) is measured first in the same claim. A popover inside a grid cell or a filter row is a different interaction. The measurement decides whether it rides this PR or becomes its own card.
Item 3 (retire the unused exported DatePicker) narrows a published @object-ui/components export, so it is the maintainer's call. It is noted in this seat's round report, ⛔ not built here.
Claim: PM loop round 3 (priority:p2; the family close-out of objectui#12622, as triage graded it at 6212942609)
Session: session_011K9g23W67dy2zwnyzaoB6o
Account: os-tesla
Branch: claude/issue-12642-dialog-date-picker
Worktree: objectui-issue-12642 (in the cloud session's own container)
Domain: domain:ui
Seat: domain:ui#1
File surface: item 1 builds; item 2 is measured first, and builds only on a route that adds no type, prop, export or pack key.
packages/fields/src/index.tsx: fieldWidgetMap's date / datetime entries, FORM_FACE_LOADERS and registerField's use of it, and their docblocks only;
packages/fields/src/widgets/date-picker/**, only if a dialog needs a fix there;
the three pins the body names: packages/app-shell/src/views/ActionParamDialog.test.tsx, packages/app-shell/src/views/metadata-admin/ActionDesigner.paramVocabulary.test.tsx, packages/plugin-grid/src/__tests__/bulkActionDialogParams.test.tsx; new tests beside;
item 2, only if it rides: packages/fields/src/FieldEditWidget.tsx, packages/plugin-detail/src/InlineFieldInput.tsx, and the filter rows (FilterBuilder, UserFilters, plugin-viewFilterUI), with tests beside;
one .changeset/12642-*.md.
Outside the surface: @object-ui/components' unused DatePicker export (item 3, the maintainer's call); any new type, prop, export or pack key; the value a date or datetime writes (YYYY-MM-DD, an ISO instant). A route that needs any of these stops and reports (stop on breach; explain in the report).
Container & model: M, mode:cloud, model: opus (default tier; dispatch-gates --tier --repo objectstack-ai/objectui over the 8 planned paths: no path-derived mandate)
Clause-②: no
Clause-② reason: FORM_FACE_LOADERS is module-private, and fieldWidgetMap's keys, which RegisteredFieldWidgetType and FORM_FIELD_TYPES derive from, do not change. getLazyFieldWidget('date' | 'datetime') returns another component with the same props and the same written value. Every widening route is a stop-and-report by this claim.
Responsibility: (1) objectui's own code: fieldWidgetMap (packages/fields/src/index.tsx:4311) maps date / datetime to the native-input widgets for every non-form consumer, and PR #12641 overrode only the registry's form face (FORM_FACE_LOADERS, :4735). (2) No platform path covers it: the field type carries no display format, and the console's display locale reaches only the record form's picker. (3) Anyone who fills a date / datetime action param or bulk-action field reaches it through ActionParamDialog.tsx:579 or the grid's bulk dialog. Whether a shipped app declares one today is unmeasured; the dev measures one live declaration and reports it.
Thread-read: 6212942609
Serial constraints cleared: read at objectui main8a8bcf3dde.
{
"issue": 12642,
"status": "done",
"branch": "claude/issue-12642-dialog-date-picker",
"pr": "https://github.com/objectstack-ai/objectui/pull/12663",
"session": "session_01VKCrtATqjvhepLgQ12oShR",
"premise_still_valid": true,
"summary": "Item 1 is built. In fieldWidgetMap, date and datetime now load DatePickerField and DateTimePickerField. FORM_FACE_LOADERS is deleted and registerField goes back to React.lazy(loader). Every getLazyFieldWidget and registerField consumer now draws the picker: ActionParamDialog, plugin-grid BulkActionDialog, the record form, and also the console FormPage, which H1's census missed. The written values are unchanged (YYYY-MM-DD for date, an ISO instant for datetime). Item 2 was measured and is reported, not built: in a grid cell the picker loses typed text on both Enter and a click outside, and the three filter rows cannot reach the picker without a new export or dependency. Item 3 is not touched. The file surface grew by three files, all named in deviations.",
"tests": "At 626ad92, under os-verify-lock (VERDICT command-exit 0): one vitest run over the targeted set (every fields and plugin-form test that touches registerField, registerAllFields, getLazyFieldWidget, fieldWidgetMap, FORM_FIELD_TYPES or the date picker, plus packages/fields/src/widgets, app-shell utils, ActionParamDialog*, ActionDesigner.paramVocabulary, metadata-admin previews, plugin-grid bulk* and inlineEdit*, plugin-detail __tests__, plugin-kanban RequiredFieldsDialog, console FormPage*, schema-catalog form-field-channel-census-12130): Test Files 601 passed | 2 skipped (603), Tests 6848 passed | 22 skipped (6870). Separately, scripts/__tests__/date-only-zone-pins-10183.test.ts, which drives InlineFieldInput.dateOnlyWriteZone-12206 in the zone children on the forks pool: 28 passed, and the verbose run shows the 12206 case 'ran every case in its zone, and every case passed'. Ablation, run through source (vitest.config.mts:520 aliases @object-ui/fields to packages/fields/src, so no dist step): A) ablation-replace.mjs put the native entries back in the map (anchor x1->x0, blob 10b1366->062d626): 6 red. These were ActionParamDialog date and datetime, bulk date and datetime, and recordFormDatePicker-12622 x2. Restore: blob == HEAD, git diff HEAD empty. B) the BASE index.tsx, i.e. the PR #12641 state (FORM_FACE_LOADERS x3, picker not in the map; blob acef3f6 == BASE): the 4 dialog and bulk pins are red, and recordFormDatePicker-12622 stays green. Restore: blob 10b1366 == HEAD, diff empty. C) ActionPreview's date-picker mock put back to inputMock('date'/'datetime-local'): ActionDesigner.paramVocabulary date and datetime red (2 failed | 17 passed). Restore OK. FormPage.sharedWidgets-10179 stays green under A because it pins the value, not the face (stated, not hidden). Probe for item 2: a throwaway ObjectGrid test, deleted, never committed. Native leg: typed 2026-10-20 plus click outside shows 'In 4 days', and Enter shows 'In 4 days' too, so both stage the edit. Picker leg (FieldEditWidget temporarily mapped to the picker and restored by a trap; git diff HEAD empty afterwards): typed 10/20/2026 plus click outside shows 'Overdue 2d', and Enter shows 'Overdue 2d', so both edits are lost. In the picker leg, opening the calendar keeps the editor mounted. NOT MEASURED: whole-package runs of packages/plugin-grid and packages/plugin-form. Each hit the 290s timeout I set on its run (exit 124), so the targeted set above is declared in their place and CI runs the full farm. NOT MEASURED: screenshots, reason: no backend was booted (start-backend.sh plus a console build does not fit this container's 10-minute foreground limit next to the test runs). Component-level renders through the real ActionParamDialog and BulkActionDialog are the evidence for the face.",
"gates": "Local, each exit captured before any pipe: build `pnpm --workspace-concurrency=2 --filter '@object-ui/app-shell^...' --filter '@object-ui/plugin-grid^...' --filter '@object-ui/plugin-detail^...' build` exit 0. type-check @object-ui/fields 0, @object-ui/app-shell 0, @object-ui/plugin-grid 0, @object-ui/plugin-detail 0. check-changeset-presence.mjs 0 ('8 source file(s) of 5 released package(s) changed, and this change declares 1 changeset(s)'). check:changeset-claims 0. changeset:check 0. check:test-path-roots 0. check:spec-symbols 0. eslint --no-inline-config on the 8 changed .ts/.tsx files: exit 1 with 2 errors, both react-hooks 'Cannot create components during render' at ActionPreview.tsx:297 and :419. The BASE blob of that file gives the same 2 errors at :296 and :418, so this diff adds 0 errors. No locale changed, so no i18n gates. dispatch-gates.mjs does not exist in objectui (the role file says so), so there was no --ran reconciliation. Every family CI runs: in_progress, since no PR is open yet and no check-runs exist to cite.",
"mcp_calls": "4 — mcp__github__issue_read get and get_comments on #12642, mcp__github__pull_request_read get on #12641, and ToolSearch for the schemas. All reads, no write tool.",
"api_writes": "0 — the only GitHub write is `git push` of the branch (two pushes: the empty-branch probe, then 626ad92).",
"open_questions": [
{
"question": "Item 2 (inline editors and list filters): ride here or get its own card?",
"options": [
"A. Seat files its own card: the picker in a grid cell needs a staging contract with DataTable's injected-editor seam (either the picker stages per keystroke, or the renderCellEditor context gains an onBlur slot, which is a DataTableSchema contract change). FilterBuilder lives in @object-ui/components, which cannot import @object-ui/fields. plugin-view FilterUI has no @object-ui/fields dependency. DatePickerField is not exported from the fields barrel.",
"B. Build it here."
],
"recommendation": "A. Business need: it is real, since the same locale defect shows on every grid and filter. But the measured route loses user edits (Enter and a click outside both drop the typed day), so B would ship a regression. Long-term soundness: the fix belongs in the seam contract (the editor stages, or the host hands it a blur), not in a per-widget workaround. AI-error resistance: a picker that silently drops edits in one host is exactly the tolerance the frame warns against. Startup scope: B needs a new export, prop or dependency, which this claim forbids, so it stops here and is reported."
},
{
"question": "Three files outside the claim's file surface were edited. Does the seat accept them?",
"options": [
"A. Accept: packages/app-shell/.../previews/ActionPreview.tsx (the designer mock now draws a date-picker shape, which the named ActionDesigner.paramVocabulary pin needs to flip honestly; adds no key, prop or export), apps/console/src/components/FormPage.sharedWidgets-10179.test.tsx (FormPage is a getLazyFieldWidget consumer the move reaches; adds a blur after the change, and the value stays 2026-03-04), packages/plugin-detail/src/__tests__/InlineFieldInput.dateOnlyWriteZone-12206.test.tsx (its control is getLazyFieldWidget('date'))",
"B. Revert them, which leaves the designer pin asserting a native input the runtime no longer draws and turns the other two red"
],
"recommendation": "A, because each edit follows directly from moving the map entries and adds no type, prop, export or pack key."
}
],
"out_of_scope_findings": [
"class: a · reach: measured in a jsdom probe through the real ObjectGrid -> DataTable -> renderCellEditor path · evidence: the grid's injected-editor seam (data-table.tsx: the pointerdown capture listener and the wrapper's Enter -> saveEdit) assumes the widget stages on every change. A commit-on-blur widget (the platform picker) loses the typed value on Enter and on a click outside. Today only a hypothetical swap hits it; it blocks item 2 · dedupe words: inline date picker grid cell commit, renderCellEditor stage on change, date filter native input locale",
"carrier: seat (the domain:ui seat 1 PM) · noted, not filed: comments that still name FORM_FACE_LOADERS sit in apps/console/vite.config.ts (the fields-date-picker chunk group) and scripts/check-eager-closure-budget.mjs (the PER_CHUNK_MEMBERSHIP_CARVE_OUTS row). The carve-out itself is still correct, because the map loaders are import() calls. Only the wording is stale.",
"carrier: seat · noted, not filed: the still-pending .changeset/12622-form-date-picker.md says getLazyFieldWidget keeps the native input. That is false after this PR; the 12642 changeset states the new behaviour. Also, InlineFieldInput.tsx's comment 'DateField is its widget too' (about the Edit form) is now stale."
]
}
Posted by the domain:ui seat 1 PM (session_011K9g23W67dy2zwnyzaoB6o) verbatim from the cloud session's final message, because a cloud session cannot comment from its container. The seat filled pr with the draft PR it opened, #12663.
Verified by content: the merge commit's own diff equals the PR's diff from its merge-base 8a8bcf3dde to the reviewed head bf6bcbec69, changed line for changed line in each of the 11 files (+116/−70). Positive controls at the merge commit:
fieldWidgetMap's date / datetime entries load DatePickerField / DateTimePickerField;
FORM_FACE_LOADERS survives only in the apps/console/vite.config.ts comment that the REWORK record noted.
Card: closed completed by Fixes #12642. This note precedes the strip of pm:dispatched.
Carried, not this card's: item 2 (grid inline editors and list filters) is objectui#12664.
Activity
objectstack-fleet commentedon Oct 16, 2026
First grade ·
domain:ui· p2 ·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-16T09:55ZRead in this act: the body in full, 0 comments.
domain:ui(packages/fields,plugin-detail,plugin-view,app-shell).fieldWidgetMap'sdate/datetimemove to the picker andFORM_FACE_LOADERSis dropped, so each field type has one face.DatePicker) narrows a published@object-ui/componentsexport, so it is the maintainer's call. It is noted in this seat's round report, ⛔ not built here.pm:queue.finding→bug.⛔ Not a claim.
objectstack-fleet commentedon Oct 16, 2026
Claim: PM loop round 3 (
priority:p2; the family close-out of objectui#12622, as triage graded it at6212942609)Session:
session_011K9g23W67dy2zwnyzaoB6oAccount:
os-teslaBranch:
claude/issue-12642-dialog-date-pickerWorktree:
objectui-issue-12642(in the cloud session's own container)Domain:
domain:uiSeat:
domain:ui#1File surface: item 1 builds; item 2 is measured first, and builds only on a route that adds no type, prop, export or pack key.
packages/fields/src/index.tsx:fieldWidgetMap'sdate/datetimeentries,FORM_FACE_LOADERSandregisterField's use of it, and their docblocks only;packages/fields/src/widgets/date-picker/**, only if a dialog needs a fix there;packages/app-shell/src/views/ActionParamDialog.test.tsx,packages/app-shell/src/views/metadata-admin/ActionDesigner.paramVocabulary.test.tsx,packages/plugin-grid/src/__tests__/bulkActionDialogParams.test.tsx; new tests beside;packages/fields/src/FieldEditWidget.tsx,packages/plugin-detail/src/InlineFieldInput.tsx, and the filter rows (FilterBuilder,UserFilters,plugin-viewFilterUI), with tests beside;.changeset/12642-*.md.Outside the surface:
@object-ui/components' unusedDatePickerexport (item 3, the maintainer's call); any new type, prop, export or pack key; the value a date or datetime writes (YYYY-MM-DD, an ISO instant). A route that needs any of these stops and reports (stop on breach; explain in the report).Container & model:
M,mode:cloud,model: opus(default tier;dispatch-gates --tier --repo objectstack-ai/objectuiover the 8 planned paths: no path-derived mandate)Clause-②: no
Clause-② reason:
FORM_FACE_LOADERSis module-private, andfieldWidgetMap's keys, whichRegisteredFieldWidgetTypeandFORM_FIELD_TYPESderive from, do not change.getLazyFieldWidget('date' | 'datetime')returns another component with the same props and the same written value. Every widening route is a stop-and-report by this claim.Responsibility: (1) objectui's own code:
fieldWidgetMap(packages/fields/src/index.tsx:4311) mapsdate/datetimeto the native-input widgets for every non-form consumer, and PR #12641 overrode only the registry's form face (FORM_FACE_LOADERS,:4735). (2) No platform path covers it: the field type carries no display format, and the console's display locale reaches only the record form's picker. (3) Anyone who fills adate/datetimeaction param or bulk-action field reaches it throughActionParamDialog.tsx:579or the grid's bulk dialog. Whether a shipped app declares one today is unmeasured; the dev measures one live declaration and reports it.Thread-read: 6212942609
Serial constraints cleared: read at objectui
main8a8bcf3dde.packages/fields/src/index.tsxin the cell-renderer regions only (its hunks start at lines 15, 367, 376, 685, 3268 and 3987), notfieldWidgetMaporFORM_FACE_LOADERS. Ordinary concurrency: the later lander mergesmain.plugin-kanbanandplugin-list, notFieldEditWidget. This seat's in-flight objectui#12639 and Console home: a My work section with approvals first, then assigned to me, then reminders, and the pending-drafts row #12602 are disjoint.Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
os-dev-report
{ "issue": 12642, "status": "done", "branch": "claude/issue-12642-dialog-date-picker", "pr": "https://github.com/objectstack-ai/objectui/pull/12663", "session": "session_01VKCrtATqjvhepLgQ12oShR", "premise_still_valid": true, "summary": "Item 1 is built. In fieldWidgetMap, date and datetime now load DatePickerField and DateTimePickerField. FORM_FACE_LOADERS is deleted and registerField goes back to React.lazy(loader). Every getLazyFieldWidget and registerField consumer now draws the picker: ActionParamDialog, plugin-grid BulkActionDialog, the record form, and also the console FormPage, which H1's census missed. The written values are unchanged (YYYY-MM-DD for date, an ISO instant for datetime). Item 2 was measured and is reported, not built: in a grid cell the picker loses typed text on both Enter and a click outside, and the three filter rows cannot reach the picker without a new export or dependency. Item 3 is not touched. The file surface grew by three files, all named in deviations.", "tests": "At 626ad92, under os-verify-lock (VERDICT command-exit 0): one vitest run over the targeted set (every fields and plugin-form test that touches registerField, registerAllFields, getLazyFieldWidget, fieldWidgetMap, FORM_FIELD_TYPES or the date picker, plus packages/fields/src/widgets, app-shell utils, ActionParamDialog*, ActionDesigner.paramVocabulary, metadata-admin previews, plugin-grid bulk* and inlineEdit*, plugin-detail __tests__, plugin-kanban RequiredFieldsDialog, console FormPage*, schema-catalog form-field-channel-census-12130): Test Files 601 passed | 2 skipped (603), Tests 6848 passed | 22 skipped (6870). Separately, scripts/__tests__/date-only-zone-pins-10183.test.ts, which drives InlineFieldInput.dateOnlyWriteZone-12206 in the zone children on the forks pool: 28 passed, and the verbose run shows the 12206 case 'ran every case in its zone, and every case passed'. Ablation, run through source (vitest.config.mts:520 aliases @object-ui/fields to packages/fields/src, so no dist step): A) ablation-replace.mjs put the native entries back in the map (anchor x1->x0, blob 10b1366->062d626): 6 red. These were ActionParamDialog date and datetime, bulk date and datetime, and recordFormDatePicker-12622 x2. Restore: blob == HEAD, git diff HEAD empty. B) the BASE index.tsx, i.e. the PR #12641 state (FORM_FACE_LOADERS x3, picker not in the map; blob acef3f6 == BASE): the 4 dialog and bulk pins are red, and recordFormDatePicker-12622 stays green. Restore: blob 10b1366 == HEAD, diff empty. C) ActionPreview's date-picker mock put back to inputMock('date'/'datetime-local'): ActionDesigner.paramVocabulary date and datetime red (2 failed | 17 passed). Restore OK. FormPage.sharedWidgets-10179 stays green under A because it pins the value, not the face (stated, not hidden). Probe for item 2: a throwaway ObjectGrid test, deleted, never committed. Native leg: typed 2026-10-20 plus click outside shows 'In 4 days', and Enter shows 'In 4 days' too, so both stage the edit. Picker leg (FieldEditWidget temporarily mapped to the picker and restored by a trap; git diff HEAD empty afterwards): typed 10/20/2026 plus click outside shows 'Overdue 2d', and Enter shows 'Overdue 2d', so both edits are lost. In the picker leg, opening the calendar keeps the editor mounted. NOT MEASURED: whole-package runs of packages/plugin-grid and packages/plugin-form. Each hit the 290s timeout I set on its run (exit 124), so the targeted set above is declared in their place and CI runs the full farm. NOT MEASURED: screenshots, reason: no backend was booted (start-backend.sh plus a console build does not fit this container's 10-minute foreground limit next to the test runs). Component-level renders through the real ActionParamDialog and BulkActionDialog are the evidence for the face.", "gates": "Local, each exit captured before any pipe: build `pnpm --workspace-concurrency=2 --filter '@object-ui/app-shell^...' --filter '@object-ui/plugin-grid^...' --filter '@object-ui/plugin-detail^...' build` exit 0. type-check @object-ui/fields 0, @object-ui/app-shell 0, @object-ui/plugin-grid 0, @object-ui/plugin-detail 0. check-changeset-presence.mjs 0 ('8 source file(s) of 5 released package(s) changed, and this change declares 1 changeset(s)'). check:changeset-claims 0. changeset:check 0. check:test-path-roots 0. check:spec-symbols 0. eslint --no-inline-config on the 8 changed .ts/.tsx files: exit 1 with 2 errors, both react-hooks 'Cannot create components during render' at ActionPreview.tsx:297 and :419. The BASE blob of that file gives the same 2 errors at :296 and :418, so this diff adds 0 errors. No locale changed, so no i18n gates. dispatch-gates.mjs does not exist in objectui (the role file says so), so there was no --ran reconciliation. Every family CI runs: in_progress, since no PR is open yet and no check-runs exist to cite.", "mcp_calls": "4 — mcp__github__issue_read get and get_comments on #12642, mcp__github__pull_request_read get on #12641, and ToolSearch for the schemas. All reads, no write tool.", "api_writes": "0 — the only GitHub write is `git push` of the branch (two pushes: the empty-branch probe, then 626ad92).", "open_questions": [ { "question": "Item 2 (inline editors and list filters): ride here or get its own card?", "options": [ "A. Seat files its own card: the picker in a grid cell needs a staging contract with DataTable's injected-editor seam (either the picker stages per keystroke, or the renderCellEditor context gains an onBlur slot, which is a DataTableSchema contract change). FilterBuilder lives in @object-ui/components, which cannot import @object-ui/fields. plugin-view FilterUI has no @object-ui/fields dependency. DatePickerField is not exported from the fields barrel.", "B. Build it here." ], "recommendation": "A. Business need: it is real, since the same locale defect shows on every grid and filter. But the measured route loses user edits (Enter and a click outside both drop the typed day), so B would ship a regression. Long-term soundness: the fix belongs in the seam contract (the editor stages, or the host hands it a blur), not in a per-widget workaround. AI-error resistance: a picker that silently drops edits in one host is exactly the tolerance the frame warns against. Startup scope: B needs a new export, prop or dependency, which this claim forbids, so it stops here and is reported." }, { "question": "Three files outside the claim's file surface were edited. Does the seat accept them?", "options": [ "A. Accept: packages/app-shell/.../previews/ActionPreview.tsx (the designer mock now draws a date-picker shape, which the named ActionDesigner.paramVocabulary pin needs to flip honestly; adds no key, prop or export), apps/console/src/components/FormPage.sharedWidgets-10179.test.tsx (FormPage is a getLazyFieldWidget consumer the move reaches; adds a blur after the change, and the value stays 2026-03-04), packages/plugin-detail/src/__tests__/InlineFieldInput.dateOnlyWriteZone-12206.test.tsx (its control is getLazyFieldWidget('date'))", "B. Revert them, which leaves the designer pin asserting a native input the runtime no longer draws and turns the other two red" ], "recommendation": "A, because each edit follows directly from moving the map entries and adds no type, prop, export or pack key." } ], "out_of_scope_findings": [ "class: a · reach: measured in a jsdom probe through the real ObjectGrid -> DataTable -> renderCellEditor path · evidence: the grid's injected-editor seam (data-table.tsx: the pointerdown capture listener and the wrapper's Enter -> saveEdit) assumes the widget stages on every change. A commit-on-blur widget (the platform picker) loses the typed value on Enter and on a click outside. Today only a hypothetical swap hits it; it blocks item 2 · dedupe words: inline date picker grid cell commit, renderCellEditor stage on change, date filter native input locale", "carrier: seat (the domain:ui seat 1 PM) · noted, not filed: comments that still name FORM_FACE_LOADERS sit in apps/console/vite.config.ts (the fields-date-picker chunk group) and scripts/check-eager-closure-budget.mjs (the PER_CHUNK_MEMBERSHIP_CARVE_OUTS row). The carve-out itself is still correct, because the map loaders are import() calls. Only the wording is stale.", "carrier: seat · noted, not filed: the still-pending .changeset/12622-form-date-picker.md says getLazyFieldWidget keeps the native input. That is false after this PR; the 12642 changeset states the new behaviour. Also, InlineFieldInput.tsx's comment 'DateField is its widget too' (about the Edit form) is now stale." ] }Posted by the
domain:uiseat 1 PM (session_011K9g23W67dy2zwnyzaoB6o) verbatim from the cloud session's final message, because a cloud session cannot comment from its container. The seat filledprwith the draft PR it opened, #12663.Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
ACCEPT → PR #12663 comment 6216696010 ·
Clause-②: no(no contract review owed) · REWORK round 1 closed ·domain:uiseat 1 ·session_011K9g23W67dy2zwnyzaoB6o· 2026-10-16T13:36ZGenerated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
Landed ·
domain:uiseat 1 ·session_011K9g23W67dy2zwnyzaoB6o· 2026-10-16T14:03Zmainc6b7d82032, with one parent,efa9cb4fa3. It is an ancestor oforigin/main.8a8bcf3ddeto the reviewed headbf6bcbec69, changed line for changed line in each of the 11 files (+116/−70). Positive controls at the merge commit:fieldWidgetMap'sdate/datetimeentries loadDatePickerField/DateTimePickerField;FORM_FACE_LOADERSsurvives only in theapps/console/vite.config.tscomment that the REWORK record noted.completedbyFixes #12642. This note precedes the strip ofpm:dispatched.Generated by Claude Code