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
Grid inline new row and board quick-create offer every option of a state_machine field that declares initialStates #27976
Filing gate: ③ triage-directed. Found by the #27763 card thread (report 6515887379, out_of_scope_findings). PR #27969 narrows a create FORM's state-machine select to its initialStates through gateFormFields, which is every form layout. Two create surfaces outside forms were not covered.
Reach: any object with a blocking state_machine validation that declares initialStates (the showcase project_status_flow, initialStates: ['planned']), created from the list grid's inline new row or from a board's quick-create.
Reader who acts: domain:ui (plugin-grid, plugin-kanban).
Duplicate search: search_issues "grid inline new row kanban quick create state machine initialStates options" → #25933 (closed; the edit form and board moves) and #3433 (closed; seed replay). Neither covers this.
Observed
The grid's inline new row offers every option of the state field. A board's quick-create creates a record in the column's state, whatever that state is. On a column whose state is not in initialStates, the server refuses the insert with invalid_initial_state, after the user has typed the record.
Wanted
Both surfaces read stateMachineInitialValues (@object-ui/core, added by PR #27969 beside stateMachineNextValues):
The inline new row's select offers only the initial states.
A board offers quick-create only on columns whose state is an initial state, or says why not. ⛔ No second reading of the rule.
Claim: PM loop round 1
Session: session_01Utp6CaJoinvGQSbHeDaWBe
Account: os-bill
Branch: claude/project-thread-lktki7 (the card thread's designated push branch, the recorded platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-27976
Domain: domain:ui
Seat: domain:ui#3
File surface: ui/packages/plugin-grid/src/** (inline new row), ui/packages/plugin-kanban/src/** (quick-create), tests beside, root .changeset/ (stop on breach; explain in the report)
Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier on 178b5238: no path-derived mandate), effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: ui code produces the defect | no platform path covers it | every Studio / console author reaches it today
Thread-read: none
Premise: holds
Serial constraints cleared: PR #27969 (#27763, the stateMachineInitialValues helper), ACCEPTed and in the merge queue; work starts on the merged main
Dispatched 2026-10-30T06:14Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.
Reported 2026-10-30T06:17Z for #27976. No PR: the premise does not hold on origin/main.
{
"issue": 27976,
"status": "done",
"branch": "claude/project-thread-lktki7",
"pr": null,
"session": "session_01Utp6CXrWceEPniJG5qnv3R",
"premise_still_valid": false,
"summary": "Neither create surface the card names exists on main 5f6dc96c. Grid: there is no inline new row. The only add affordance is DataTable's add-record-row, whose click calls schema.onAddRecord, and every host wires that to the create FORM (objectViewListRenderer passes actions.create, plugin-view ObjectView passes handleCreate which opens the form in create mode or navigates to the new-record page, ListViewBlock binds handlers.onCreate). That form is the gateFormFields path PR #27969 narrows, so it already offers only initialStates. Board: the object-bound board draws no quick-create. ObjectKanban renders KanbanBoardCore and passes neither quickAdd nor onQuickAdd (both retired on object-kanban by objectui#8285 / objectui#11234, tombstones on the zod face). The Quick Add control lives only on the exported KanbanRenderer for a React host that supplies its own columns and handler, holds no object schema, and has zero non-test consumers in ui/apps or ui/packages. Nothing on either surface creates a record of a state-machine object, so nothing to narrow.",
"tests": "Reading only, no code. Tree: objectstack-ai/objectstack origin/main 5f6dc96c (PR #27969 head b589c185 changes no file under ui/packages/plugin-grid, plugin-kanban or components: git diff --stat empty). Readings: data-table.tsx has one add path, the add-record-row whose onClick is schema.onAddRecord; git grep of .create( under plugin-grid/src, plugin-kanban/src and data-table.tsx: 1 hit, ImportWizard (not a named surface); git grep quickAdd|onQuickAdd|InlineQuickAdd in ui/apps and ui/packages outside plugin-kanban and types: CHANGELOG and test files only, 0 source consumers; ObjectKanban.tsx: 2 hits, both comments stating the cut. Existing pins on main, cited not re-run: plugin-kanban quickAddRetiredNotForwarded-8285.test.tsx, plugin-grid addRowCreatePermissionGate.test.tsx. Not measured: a live click on the showcase project list and board, reason: the code reading leaves no path to measure.",
"gates": "n/a — no diff, so dispatch-gates --commands derives nothing and check-sdui-manifest has nothing to read.",
"dogfood_battery": "n/a — no PR",
"line_budget": "0 — no diff",
"files_changed": [],
"deviations": [
"Report delivered before PR #27969 merged (it was in the merge queue). The reading does not depend on it: #27969 touches no grid, board or data-table file.",
"No worktree created and no pnpm install: no edit was made."
],
"mcp_calls": "0",
"api_writes": "1 — this report comment via post-stamped",
"open_questions": [],
"out_of_scope_findings": [
"carrier: none · noted, not filed: if a host ever wires KanbanRenderer quickAdd to an object with an initialStates machine, the host owns the column-to-state mapping and must judge it; no such host exists today"
]
}
Closing as not planned · 2026-10-30T06:21Z. The premise doesn't hold on main. The seat filed this from #27763's report without measuring it, and the card thread measured it (report 6516361166):
Board: an object-bound board draws no quick-create. ObjectKanban passes neither quickAdd nor onQuickAdd; both were retired by objectui#8285 and objectui#11234. The exported KanbanRenderer Quick Add holds no object schema and has no non-test consumer.
Neither surface creates a record of a state-machine object, so there is nothing to narrow. PR #27969 covers the create path that exists.
Activity
objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe
Claim: PM loop round 1
Session:
session_01Utp6CaJoinvGQSbHeDaWBeAccount:
os-billBranch:
claude/project-thread-lktki7(the card thread's designated push branch, the recorded platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-27976Domain:
domain:uiSeat:
domain:ui#3File surface:
ui/packages/plugin-grid/src/**(inline new row),ui/packages/plugin-kanban/src/**(quick-create), tests beside, root.changeset/(stop on breach; explain in the report)Container & model:
M,mode:thread,model: TIER_DEFAULT(dispatch-gates --tieron178b5238: no path-derived mandate),effort: highClause-②: no
Metadata-protocol: none
Responsibility: ui code produces the defect | no platform path covers it | every Studio / console author reaches it today
Thread-read: none
Premise: holds
Serial constraints cleared: PR #27969 (#27763, the
stateMachineInitialValueshelper), ACCEPTed and in the merge queue; work starts on the merged mainDispatched 2026-10-30T06:14Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.
Generated by Claude Code
objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-bill · session_01Utp6CXrWceEPniJG5qnv3R
os-dev-report
Reported 2026-10-30T06:17Z for #27976. No PR: the premise does not hold on
origin/main.{ "issue": 27976, "status": "done", "branch": "claude/project-thread-lktki7", "pr": null, "session": "session_01Utp6CXrWceEPniJG5qnv3R", "premise_still_valid": false, "summary": "Neither create surface the card names exists on main 5f6dc96c. Grid: there is no inline new row. The only add affordance is DataTable's add-record-row, whose click calls schema.onAddRecord, and every host wires that to the create FORM (objectViewListRenderer passes actions.create, plugin-view ObjectView passes handleCreate which opens the form in create mode or navigates to the new-record page, ListViewBlock binds handlers.onCreate). That form is the gateFormFields path PR #27969 narrows, so it already offers only initialStates. Board: the object-bound board draws no quick-create. ObjectKanban renders KanbanBoardCore and passes neither quickAdd nor onQuickAdd (both retired on object-kanban by objectui#8285 / objectui#11234, tombstones on the zod face). The Quick Add control lives only on the exported KanbanRenderer for a React host that supplies its own columns and handler, holds no object schema, and has zero non-test consumers in ui/apps or ui/packages. Nothing on either surface creates a record of a state-machine object, so nothing to narrow.", "tests": "Reading only, no code. Tree: objectstack-ai/objectstack origin/main 5f6dc96c (PR #27969 head b589c185 changes no file under ui/packages/plugin-grid, plugin-kanban or components: git diff --stat empty). Readings: data-table.tsx has one add path, the add-record-row whose onClick is schema.onAddRecord; git grep of .create( under plugin-grid/src, plugin-kanban/src and data-table.tsx: 1 hit, ImportWizard (not a named surface); git grep quickAdd|onQuickAdd|InlineQuickAdd in ui/apps and ui/packages outside plugin-kanban and types: CHANGELOG and test files only, 0 source consumers; ObjectKanban.tsx: 2 hits, both comments stating the cut. Existing pins on main, cited not re-run: plugin-kanban quickAddRetiredNotForwarded-8285.test.tsx, plugin-grid addRowCreatePermissionGate.test.tsx. Not measured: a live click on the showcase project list and board, reason: the code reading leaves no path to measure.", "gates": "n/a — no diff, so dispatch-gates --commands derives nothing and check-sdui-manifest has nothing to read.", "dogfood_battery": "n/a — no PR", "line_budget": "0 — no diff", "files_changed": [], "deviations": [ "Report delivered before PR #27969 merged (it was in the merge queue). The reading does not depend on it: #27969 touches no grid, board or data-table file.", "No worktree created and no pnpm install: no edit was made." ], "mcp_calls": "0", "api_writes": "1 — this report comment via post-stamped", "open_questions": [], "out_of_scope_findings": [ "carrier: none · noted, not filed: if a host ever wires KanbanRenderer quickAdd to an object with an initialStates machine, the host owns the column-to-state mapping and must judge it; no such host exists today" ] }Dedupe words: grid add-record-row create form, kanban quick add retired object-kanban, initialStates create surfaces.
objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe
Closing as not planned · 2026-10-30T06:21Z. The premise doesn't hold on
main. The seat filed this from #27763's report without measuring it, and the card thread measured it (report 6516361166):DataTable's add-record-row (schema.onAddRecord), and every host wires it to the create form. That form is thegateFormFieldspath PR fix(plugin-form): a create form offers a state_machine select only its initialStates #27969 narrows toinitialStates.ObjectKanbanpasses neitherquickAddnoronQuickAdd; both were retired by objectui#8285 and objectui#11234. The exportedKanbanRendererQuick Add holds no object schema and has no non-test consumer.Neither surface creates a record of a state-machine object, so there is nothing to narrow. PR #27969 covers the create path that exists.
Generated by Claude Code