Repository navigation
object-kanban: retire ObjectKanbanSchema.onQuickAdd too: after objectui#8285 the slot still reaches the board on object-kanban and is never called (ruling B, companion slot) #11234
Description
Activity
- addedbugSomething isn't workingSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatobjectui ui stream: fix lands on the published library or apps — objectui execution seatand removed
on Sep 30, 2026 objectstack-fleet commented
on Sep 30, 2026 ContributorAuthorMore actionsClaim: PM loop round 11 —
domain:uiexecution seat 2
Session:session_011p7ikEivgXefNDaE5S5Uec
Account:os-support-ai(the seat's linked user asGET /useranswers it; the card's assignee)
Branch:claude/issue-11234-kanban-onquickadd-retire
Worktree:objectui-issue-11234
Domain:domain:ui
Seat:domain:ui#2
File surface (the card's direction, option A of the PR objectui#11231 dev, adopted by seat 1; ruling B5583979207):packages/types/src/objectql.tsandpackages/types/src/zod/objectql.zod.ts:ObjectKanbanSchema.onQuickAddbecomes?: neveron the TS face, and its zod disposition becomesretired.packages/plugin-kanban/src/: theobject-kanbanpath renders an internal board component, in its own module, that takes the quick-add pair as explicit props. The exportedKanbanRendererkeepsschema.quickAdd/schema.onQuickAddbyte-identical: that is the host pair ruling B keeps.- The ledger rows and pins that move with it: the objectui#7804, objectui#7664 and objectui#6124 rows,
zod-mirror-parity.test.tsif the mirror census asks, andcheck-handler-key-read-sites's census if it asks. - The docs passages in
content/docs/plugins/plugin-kanban.mdxandcontent/docs/api/schema-reference.md, and one changeset. - ⛔ No inline creation path, and ⛔ no change to
KanbanRenderer's host pair.
Stop on breach; explain in the report.
Container & model:M,mode:subagent,model: opus(TIER_DEFAULT;dispatch-gateshas no objectui derivation, so there is no path-derived mandate; objectstack41dcf118)
Clause-②: no (narrowing)
Why narrowing: a published TypeScript face narrows (onQuickAddbecomesneveronObjectKanbanSchema), and the JSON face already refuses the key by name as a runtime slot. Nothing widens. objectui's rule makes a narrowingminoron@object-ui/types.
Thread-read: none
Serial constraints cleared: read 2026-09-30T19:01Z at objectuiorigin/mainae0b9d390. PR objectui#11248 (objectui#10859 batch 3, seat 1) heldobjectql.zod.tsandzod-mirror-parity.test.ts, and landed asae0b9d390. PR objectui#11231 (objectui#8285, thequickAddhalf) landed earlier. No open PR namespackages/plugin-kanban/**,objectql.tsorobjectql.zod.ts. PR objectui#11233 holdsimported-defaults-8317.test.ts, which this card does not need.
Generated by Claude Code
objectstack-fleet commented
on Sep 30, 2026 ContributorAuthorMore actionsos-dev-report
{ "issue": 11234, "status": "done", "branch": "claude/issue-11234-kanban-onquickadd-retire", "pr": "https://github.com/objectstack-ai/objectui/pull/11269", "session": "session_011p7ikEivgXefNDaE5S5Uec — subagent of the PM session (Claude-Session trailer on every commit)", "premise_still_valid": true, "summary": "ObjectKanbanSchema.onQuickAdd is now `?: never` on the TS face and handlerKeyRefusal('onQuickAdd', 'retired', …) on the zod mirror. The object-kanban path now reads nothing it could call. ObjectKanban renders a new internal module, packages/plugin-kanban/src/KanbanBoardCore.tsx, which takes the Quick Add pair only as explicit props. ObjectKanban passes neither half, and the module is not exported from the index.tsx barrel. The public KanbanRenderer now renders the same board and passes schema.quickAdd / schema.onQuickAdd; its props interface and host behaviour are byte-identical. check:handler-key-reads stays green: its object-kanban census holds one row, onCardClick [runtime-slot], read in KanbanBoardCore.tsx. The ledgers moved with the key: 6124 goes to 60 runtime slots + 22 retired; zod-mirror-parity goes from 87 to 86 KnownDrift keys; 7340 goes to 29 retired members; the 7804 and 7664 legs flip; the gate test drops onQuickAdd from the census. So did plugin-kanban.mdx, schema-reference.md, and one changeset (types minor, plugin-kanban patch). Premise verified on origin/main ae0b9d390. Measured producers of onQuickAdd on object-kanban: 0 in objectui (lit control: 7 non-test files produce object-kanban nodes) and 0 in objectstack origin/main 4d0b9cd54 (docs, comments and messages only; lit control: quickAdd hits 17 files including spec component.zod.ts).", "tests": "All runs under os-verify-lock (slot issue-11234), NODE_OPTIONS=--max-old-space-size=4096, from the worktree root; counts read from vitest summaries. (1) pnpm exec vitest run --reporter=verbose packages/plugin-kanban/src/ @611112e0e: VERDICT command-exit 0, Test Files 64 passed (64), Tests 421 passed (421). (2) 8 named pins (types 11234/6124/zod-mirror-parity/7340/8285, sdui-parser kanban-quick-add-8285, react 9357, scripts check-handler-key-read-sites) @611112e0e: exit 0, 8 passed (8), 487 passed (487); the new 11234 file ran 7 tests. (3) pnpm exec vitest run packages/types/ + 14 non-types/scripts test files importing plugin-kanban @e2bf34b97: exit 0, 308 passed (308), 8232 passed (8232). The first types run, @611112e0e, had read 1 failed | 293 passed: object-kanban-allow-collapse-retired-8801 quoted KanbanRenderer's old signature as the object-kanban schema-channel end. It was re-pointed to KanbanBoardCore in e2bf34b97, then green. (4) pnpm exec vitest run scripts/__tests__/ (whole root suite, owed for docs edits) @e2bf34b97: exit 0, 177 passed | 2 skipped (179); 5371 passed | 2 skipped (5373). This run finished before the usage-limit stop and was not re-run. (5) pnpm --filter @object-ui/types type-check @e2bf34b97: exit 0; tsconfig.test.json lists 294 test files including the 11234 pin (--listFilesOnly). (6) pnpm --workspace-concurrency=2 --filter '@object-ui/plugin-kanban^...' build (13 pkgs): BUILD_EXIT=0. Then pnpm --filter @object-ui/plugin-kanban type-check (tsc --noEmit && tsc -p tsconfig.test.json): exit 0, 0 'error TS'. The lock printed batch-last-exit 0 because the parts were ';'-joined, so each part's exit was read on its own. The rebuilt types dist/objectql.d.ts carries 'onQuickAdd?: never'. (7) node scripts/check-handler-key-read-sites.mjs: exit 0, 56 reads judged, 2 exempted by ledger. (8) check-changeset-presence 0 (15 source files of 3 released packages, 1 changeset); check-changeset-no-major 0; check-control-bytes 0 (9671 files); check-new-cross-file-line-citations 0 (0 new); check-i18n-call-site-keys 0, check-i18n-en-drift 0, check-i18n-dead-keys 0; markdown-test-inputs --audit 0 (107 adjudicated, 78 entries present); check-governed-queue-guard --test: NOT GOVERNED (19 paths); control-byte self-scan of the changed files: 0 hits. (9) eslint --format json on the 16 changed code files: 0 errors, 96 warnings. Every one of the 14 pre-existing files has the same count as its base version linted via stdin, and the 2 new files have 0. Narrowing declared: the population is eslint.config.js files ['**/*.{ts,tsx}']; the file count of 16 is read from the JSON; the config has no projectService / parserOptions.project, so linting is not type-aware and untouched files' verdicts cannot move. Repo-wide pnpm lint and the full pnpm test farm are CI's. ABLATION @e2bf34b97 (committed first), via objectstack scripts/ablation-replace.mjs WRAP mode plus a script-level trap restore on absolute paths, under the lock (VERDICT command-exit 0). The prediction was written first. Zod leg: 'retired' becomes 'runtime-slot'. Anchor x1 to x0, blob c106c73cb1ec to 6b9fc742c9d5. The 11234 pin + 6124 read 2 failed | 341 passed: exactly the 11234 retired-disposition leg and the 6124 guidance-wording leg. TS leg: 'onQuickAdd?: never;' becomes the callable. Anchor x1 to x0, blob dde43cddfea1 to afedc0cab24b. tsc -p packages/types/tsconfig.test.json exited 2 with 5 errors: 11234 pin TS2344 x2 + TS2578 unused @ts-expect-error, 6124 RetiredIsNever TS2344, and zod-mirror-parity TS2322. The last one was not in the written prediction; it is in the right direction. Restore proof: git diff HEAD 0 bytes, both blob hashes == HEAD, porcelain 0. No dist involved: the types tests import src, and vitest aliases @object-ui/types to src.", "mcp_calls": "0 — no MCP GitHub tool was called (reads were REST GETs via curl; writes via scripts/pm)", "api_writes": "3 — (1) pr_create through the fleet relay (POST /repos/objectstack-ai/objectstack/dispatches, which ran POST /repos/objectstack-ai/objectui/pulls; relay run 36776154478 success); (2) PR assignee through scripts/pm/label-write.mjs via the relay (POST /repos/objectstack-ai/objectui/issues/11269/assignees; relay run 36776224288 success, read back matches, no label written); (3) this os-dev-report comment via scripts/pm/post-stamped.mjs (POST /repos/objectstack-ai/objectui/issues/11234/comments). git push of the branch is not a REST write.", "open_questions": [], "out_of_scope_findings": [ "carrier: PR objectui#11269 (the seat) · noted, not filed — .changeset/8285-object-kanban-quick-add-retired.md is still pending and closes with an 'Unchanged' note: onQuickAdd stays a runtime slot. That note is false once this lands in the same release. It is not edited here because it is outside the claim's file surface. The new changeset states the supersession, and amending the 8285 sentence in-branch is a one-line edit if the seat prefers.", "carrier: 承接者:无 · noted, not filed — the objectui#6124 ledger's RetiredIsNever type block has no ObjectKanbanSchema['onCardMove'] row; that key's never is pinned only by a source-text read (7804 suite 3). In PR Acceptance notes only.", "carrier: 承接者:无 · noted, not filed — several comments still say KanbanRenderer's lazy boundary, and tests' pre-warm comments say their '../KanbanImpl' specifier matches index's. The lazy import now lives in KanbanBoardCore.tsx and resolves to the same module, so the pre-warm imports still hit. The comments on lines this change touched were fixed; the rest are left for opportunistic repair (AGENTS.md #11 spirit). In PR Acceptance notes only." ], "gates": { "head": "e2bf34b97", "local": "all green, per the tests field; ablation both legs red as predicted, restore proven", "ci": "in_progress — one read of check-runs on e2bf34b971dd after PR creation: 42 runs, 22 success, 3 skipped, 17 in_progress, 0 failing; not waited on (CI convergence is the PM's)" }, "line_budget": "n/a — no skills/** or governed surface touched (check-governed-queue-guard: NOT GOVERNED)", "deviations": [ "Removed ObjectKanban's `quickAdd: undefined` line on effectiveSchema. After the cut moved into KanbanBoardCore, nothing on the object-kanban path reads schema.quickAdd, so the line was dead and its comment ('the line that stops forwarding it') was false. A comment in its place names where the cut now is. Behaviour is unchanged; quickAddRetiredNotForwarded-8285 rows 1 and 2 are green.", "Edited three source-reading pins outside the named pin list, because they quote text this change moved: packages/react …/navigationOverlayConsumers.onRowClickArity-9357.test.ts (the index.tsx hop is now the hand-off to KanbanBoardCore); packages/plugin-kanban …/kanbanEnhancedRetired-8932.test.ts (the firing control finds the lazy KanbanImpl import in KanbanBoardCore.tsx); packages/types …/object-kanban-allow-collapse-retired-8801.test.ts (the schema-channel end is KanbanBoardCore). The packages/react file is outside the claim's listed file surface. It is test-only and ships nothing.", "Changeset bump for @object-ui/plugin-kanban is `patch`: the order left it open ('plus whatever plugin-kanban publishes'), and no public props moved. @object-ui/types is `minor`, as ordered.", "The plugin-kanban dir run and the 8 named pins ran at 611112e0e, not at the final head. The final commit e2bf34b97 touched one packages/types test file only, and the types dir, importers and scripts suite ran at e2bf34b97.", "Attribution: the harness reminder asked for a model-named Co-Authored-By trailer and a different PR footer. Per the role file and AGENTS.md, every commit carries the model-free pair (Claude-Session + 'Co-authored-by: Claude'), and the PR body ends with the session-URL footer. No model identifier was written anywhere.", "The card body says `Clause-②: yes`; the PM claim says `no (narrowing)`. The PR body copies the claim's line, as the order directs." ], "files_changed": [ ".changeset/11234-object-kanban-onquickadd-retired.md", "content/docs/api/schema-reference.md", "content/docs/plugins/plugin-kanban.mdx", "packages/plugin-kanban/src/KanbanBoardCore.tsx", "packages/plugin-kanban/src/ObjectKanban.tsx", "packages/plugin-kanban/src/__tests__/handlerKeyDispositionsMeasured-7804.test.tsx", "packages/plugin-kanban/src/__tests__/kanban-handler-slots-7664.test.tsx", "packages/plugin-kanban/src/__tests__/kanbanEnhancedRetired-8932.test.ts", "packages/plugin-kanban/src/__tests__/quickAddRetiredNotForwarded-8285.test.tsx", "packages/plugin-kanban/src/index.tsx", "packages/react/src/hooks/__tests__/navigationOverlayConsumers.onRowClickArity-9357.test.ts", "packages/types/src/__tests__/component-docs-retired-handler-keys-7340.test.ts", "packages/types/src/__tests__/handler-keys-json-refusal-6124.test.ts", "packages/types/src/__tests__/object-kanban-allow-collapse-retired-8801.test.ts", "packages/types/src/__tests__/object-kanban-on-quick-add-retired-11234.test.ts", "packages/types/src/__tests__/zod-mirror-parity.test.ts", "packages/types/src/objectql.ts", "packages/types/src/zod/objectql.zod.ts", "scripts/__tests__/check-handler-key-read-sites.test.ts" ], "cleanup": "worktree /home/user/objectui-issue-11234 removed (node_modules deleted first; clean and fully pushed at e2bf34b97, no --force); no background process left running" }
Generated by Claude Code
objectstack-fleet commented
on Sep 30, 2026 ContributorAuthorMore actionsos-dev-report
{ "issue": 11234, "status": "done", "follow_up_of": "os-dev-report comment 5919636549 (the seat took out_of_scope_findings[0] into this PR)", "branch": "claude/issue-11234-kanban-onquickadd-retire", "pr": "https://github.com/objectstack-ai/objectui/pull/11269", "session": "session_011p7ikEivgXefNDaE5S5Uec", "head": "34757623fa86916ff6875b920bb34bb50c123b2e", "change": "One commit, 34757623f, a fast-forward on e2bf34b97 with no force-push or rebase. It is changeset text only. (1) .changeset/8285-object-kanban-quick-add-retired.md: the closing 'Unchanged: … onQuickAdd stays a runtime slot …' paragraph now reads: '`ObjectKanbanSchema.onQuickAdd` is retired on `object-kanban` too, by objectui#11234 in the same release: on that element it was never called, because its partner is gone. The Quick Add pair on `KanbanRenderer` is unchanged.' That is one hunk; the rest of the file is byte-identical, and a diff of the first 5 lines against HEAD shows the frontmatter identical. (2) .changeset/11234-object-kanban-onquickadd-retired.md: its last paragraph ('This supersedes the closing \"Unchanged\" note …') became false with (1), so it now reads: 'The objectui#8285 entry's closing note, which said `onQuickAdd` stayed a runtime slot on `object-kanban`, is amended in this change to match.' This file is in the claim's surface.", "gates": "All at 34757623f. node scripts/check-changeset-presence.mjs EXIT=0 (15 source files of 3 released packages, 1 changeset); pnpm changeset:check EXIT=0 (check-changeset-fixed + check-changeset-no-major); pnpm check:changeset-claims EXIT=0 (report-only: 0 born-false line addresses; no declared package negated; 62 pending changesets name a file this change touches, read below); pnpm check:pending-changeset-literals EXIT=0 (no test source names a pending changeset); check-governed-queue-guard --test over the 20 paths: NOT GOVERNED; control-byte self-scan of both changesets: 0 hits. No code or test file moved, so the earlier test and type-check runs at e2bf34b97 stand.", "pr_body_replacements": [ "Verification section, first paragraph: replace 'Final head is `e2bf34b97`.' with 'Final head is `34757623f`; its one commit over `e2bf34b97` is changeset text only, and the four changeset gates pass on it (`check-changeset-presence`, `changeset:check`, `check:changeset-claims`, `check:pending-changeset-literals`, all exit 0).'", "Acceptance notes, first bullet: replace the whole bullet with '- The pending `.changeset/8285-object-kanban-quick-add-retired.md` closed with an \"Unchanged\" note saying `onQuickAdd` stays a runtime slot on `object-kanban`. That would ship false in the same release, so its closing paragraph is amended in this PR (the rest of the file, frontmatter included, is byte-identical), and this change's own changeset says so.'", "What changed, Changeset bullet: append ' It also amends the closing note of the pending objectui#8285 changeset, which said `onQuickAdd` stays a runtime slot.'" ], "out_of_scope_findings": [ "carrier: PR objectui#11269 (the seat) · noted, not edited — check:changeset-claims read. Two more pending changesets state in the present tense that `onQuickAdd` is a runtime slot on object-kanban, which this PR falsifies in the same release. (a) .changeset/7804-object-kanban-handler-keys-judged.md, first paragraph: '`onCardClick` and `onQuickAdd` are declared as objectui#6124 RUNTIME SLOTS — callable on the TypeScript face'. (b) .changeset/8285-kanban-quickadd-html-diagnostic.md: '`onQuickAdd` is a runtime slot — a function — that no parsed page can write'. The same one-sentence amendment shape applies if the seat wants them. The other onQuickAdd mentions I read still hold: the two 7664 entries describe the retired `kanban` arm, and the 8802 entry says KanbanRenderer still forwards both halves." ], "mcp_calls": "0", "api_writes": "1 in this follow-up — this comment (POST /repos/objectstack-ai/objectui/issues/11234/comments via scripts/pm/post-stamped.mjs, relay), written on the seat's instruction beyond the original four-write budget. git push of 34757623f is not a REST write. The PR body was not edited.", "deviations": [] }
Generated by Claude Code
objectstack-fleet commented
on Sep 30, 2026 ContributorAuthorMore actionsos-dev-report
{ "issue": 11234, "status": "done", "follow_up_of": "os-dev-report comments 5919636549 and 5919687375 (the seat took the second out-of-scope note into this PR)", "branch": "claude/issue-11234-kanban-onquickadd-retire", "pr": "https://github.com/objectstack-ai/objectui/pull/11269", "session": "session_011p7ikEivgXefNDaE5S5Uec", "head": "b1e88910fab5d5137e221e54363aa65d87a3b66f", "change": "One commit, b1e88910f, a fast-forward on 34757623f with no force-push or rebase. It is changeset text only, one hunk per file; frontmatter is identical (first 3 lines diffed against HEAD) and every other byte is unchanged. (a) .changeset/7804-object-kanban-handler-keys-judged.md, first paragraph: '`onCardClick` and `onQuickAdd` are declared as objectui#6124 RUNTIME SLOTS — …' now reads '`onCardClick` is declared as an objectui#6124 RUNTIME SLOT — callable on the TypeScript face, refused BY NAME in the zod mirror because JSON has no function value — and the message points at the node-type spelling an author can write instead. `onQuickAdd` was declared the same way here; objectui#11234 retires it on `object-kanban` in the same release, so it is `?: never` on the TypeScript face and refused BY NAME as RETIRED.' (b) .changeset/8285-kanban-quickadd-html-diagnostic.md: '`onQuickAdd` is a runtime slot — a function — that no parsed page can write and that `ObjectKanban` supplies none of its own for.' now reads '`onQuickAdd` takes a function, which no parsed page can write and which `ObjectKanban` supplies none of its own for. objectui#11234 retires `onQuickAdd` on `object-kanban` in the same release; it remains a host-supplied prop on `KanbanRenderer`'s `schema`.' The parsed-page point still holds and is kept.", "gates": "All at b1e88910f. node scripts/check-changeset-presence.mjs EXIT=0; pnpm changeset:check EXIT=0; pnpm check:changeset-claims EXIT=0 (report-only; 4 changesets added or modified, every declared package not negated in its own prose); pnpm check:pending-changeset-literals EXIT=0; check-governed-queue-guard --test over the 22 paths: NOT GOVERNED; control-byte self-scan of both files: 0 hits. A sweep of pending changesets for onQuickAdd plus runtime-slot / by-identity wording leaves no false present-tense claim: the objectui#7664 entries describe the retired `kanban` arm, and the objectui#8802 entry says KanbanRenderer still forwards both halves.", "pr_body_replacements": [ "R1 (What changed, the '**Changeset**:' bullet): replace the whole bullet with '- **Changesets**: `.changeset/11234-object-kanban-onquickadd-retired.md`, with `minor` on `@object-ui/types` (a narrowing, breaking semantics stated in the body) and `patch` on `@object-ui/plugin-kanban` (no public props moved). Three pending entries that this release would otherwise ship with a false sentence are amended, one sentence each, with every other byte and the frontmatter unchanged: `8285-object-kanban-quick-add-retired.md` (its closing note said `onQuickAdd` stays a runtime slot), `7804-object-kanban-handler-keys-judged.md` (it said `onCardClick` and `onQuickAdd` are both runtime slots) and `8285-kanban-quickadd-html-diagnostic.md` (it said `onQuickAdd` is a runtime slot).'", "R2 (Verification, first paragraph): replace 'Final head is `e2bf34b97`.' with 'Final head is `b1e88910f`. Its two commits over `e2bf34b97` are changeset text only, so the test and type-check runs below at `e2bf34b97` stand; the changeset gates were re-run at `b1e88910f` (last table row).'", "R3 (Verification table): append a last row '| `check-changeset-presence`, `changeset:check`, `check:changeset-claims`, `check:pending-changeset-literals`, `check-governed-queue-guard --test` over the 22 paths | `b1e88910f` | all exit 0; NOT GOVERNED |'", "R4 (Acceptance notes, first bullet): replace the whole bullet with '- Three pending changesets said `onQuickAdd` is, or stays, a runtime slot on `object-kanban`, which would ship false in the same release: `8285-object-kanban-quick-add-retired.md`, `7804-object-kanban-handler-keys-judged.md` and `8285-kanban-quickadd-html-diagnostic.md`. Each false sentence is amended in this PR, and the rest of each file, frontmatter included, is byte-identical. The seat added the three files to the claim's file surface.'", "These four replace the three given in 5919687375. Every other sentence of the body is true at b1e88910f; its rows read at e2bf34b97 stay true for that head." ], "out_of_scope_findings": [], "mcp_calls": "0", "api_writes": "1 in this follow-up — this comment (POST /repos/objectstack-ai/objectui/issues/11234/comments via scripts/pm/post-stamped.mjs, relay), on the seat's instruction. git push of b1e88910f is not a REST write. The PR body was not edited.", "deviations": [] }
Generated by Claude Code
objectstack-fleet commented
on Sep 30, 2026 ContributorAuthorMore actions✅ ACCEPT: PR objectui#11269 at
b1e88910f(p3,Fixes). Ready and auto-merge follow this ACCEPTdomain:uiseat 2,session_011p7ikEivgXefNDaE5S5Uec. Checked against the diff and the head's check-runs, not against the reports' own account.- Claim
5917775317. - Dev reports
5919636549,5919687375and5919732925. - Contract review
5919982380: PASS on this head.
Implemented-by: claude/issue-11234-kanban-onquickadd-retire Reviewed-by: session_011p7ikEivgXefNDaE5S5Uecitem reading retirement ObjectKanbanSchema.onQuickAddis?: neveron the TS face, andhandlerKeyRefusal('onQuickAdd', 'retired', …)on the zod mirrorinternal board the object-kanbanpath rendersKanbanBoardCore(its own module, not exported from the barrel), which takes the Quick Add pair only as explicit props.ObjectKanbanpasses neither half.KanbanRenderer's props and host behaviour are unchanged (ruling B's host pair)gate check:handler-key-readsstays green: theobject-kanbancensus holds one row,onCardClickledgers 6124 (60 runtime slots + 22 retired), zod-mirror-parity (86 KnownDrift), 7340 (29 retired), and the 7804 / 7664 legs flip producers 0 on object-kanbanin both repos, with lit controls. The PR body's file count was stale (5, where the final head has 7); the seat relay-corrected it, and it read back identicalablation the zod leg and the TS leg, each red as predicted; restores proven changesets @object-ui/typesminor(the narrowing) and@object-ui/plugin-kanbanpatch. Three pending entries that this release would otherwise ship false are amended, one sentence each, with frontmatter unchanged:8285-object-kanban-quick-add-retired.md,7804-object-kanban-handler-keys-judged.mdand8285-kanban-quickadd-html-diagnostic.mdClause-②no (narrowing), from the claim. The card's Direction paragraph saysyes, written before the arm spelling was applied; a narrowing-only change isno (narrowing), and review ② confirms it. The claim bindsCI head b1e88910f: 43 check-runs, 40 success, 3 skipped by design (Test (coverage), its matrix row,dependabot), 0 failedclosing keywords Fixes #11234governed none File surface, supplemented: the three amended pending changesets; the
packages/reactsource-reading pin (navigationOverlayConsumers.onRowClickArity-9357.test.ts); and thekanbanEnhancedRetired-8932andobject-kanban-allow-collapse-retired-8801pins, which quote the moved text.Out of scope, Acceptance notes:
- The objectui#6124
RetiredIsNeverblock has noObjectKanbanSchema['onCardMove']row. This is pre-existing; that key'sneveris read off source by 7804 suite 3. It is a one-row addition for the next claim that edits that ledger. - Stale "lazy boundary" comments. The lazy import moved to
KanbanBoardCore.tsxand resolves to the same module, so they are left for opportunistic repair.
domain:uiseat 2 · ACCEPT · 2026-09-30T21:25Z
Generated by Claude Code
- Claim
- added a commit that references this issue
on Oct 7, 2026
This card carries the
onQuickAddhalf of ruling B onobject-kanban; the parent objectui#8285 kept thequickAddhalf (PR objectui#11231) and closes with it.Filing-gate category: ① a derived item of an in-flight card, filed by the claiming seat
domain:uiseat 1 (session_0122Knsowci76D2rBWReCzzZ), which inherits the parent'sdomain:uiandpriority:p3. It goes straight topm:queueunder the meta-rule that a near-identical branch reuses the parent ruling (SKILL.md 〈升级与决策〉 ①: a silently inert declaration joins the existing refusal set). It is not a new decision.Dedup: none needed for a derived item; the parent's thread is the record (
objectui#8285: ruling5583979207, the PR objectui#11231 dev report5914966376open_questions[0], its at-tier review5915151567③).The ruling it completes
Ruling B (director decision batch #91,
5583979207), verbatim: "The board does not grow an inline record-creation write path" · "Reversal path: a named consumer that wants inline creation reopens this as A with the puller stated;kanban-uikeeps the pair meanwhile." Withkanban-uiretired (objectui#8257), the pair now lives only on the exportedKanbanRenderercomponent, where a host supplies the function.What remains after PR objectui#11231
ObjectKanbanSchema.quickAddis?: never(TS) and aretirementTombstone(zod), andObjectKanbanwritesquickAdd: undefinedafter the...schemaspread, so noobject-kanbanentry can draw the control.ObjectKanbanSchema.onQuickAddstays a runtime slot. It reaches the board by identity (the 7804 / 7664 pins), and onobject-kanbanit is never called. A TypeScript host, or an AI, writingonQuickAddon anobject-kanbannode compiles and gets nothing. The JSON face already refuses it by name as a runtime slot.content/docs/plugins/plugin-kanban.mdxstate that the slot arrives and is never called: an honest declaration of an inert capability, which is the shape ruling B and "declared = enforced" retire.Direction (the PR objectui#11231 dev's option A, adopted by the seat)
ObjectKanbanSchema.onQuickAddbecomes?: neveron the TS face, and its zod disposition becomesretired.check:handler-key-readsrefuses aretireddisposition while a renderer still reads the key off the document. So theobject-kanbanpath must render an internal board component that takes the pair as explicit props, and the publicKanbanRenderermust keepschema.quickAdd/schema.onQuickAddbyte-identical (the host pair ruling B keeps). That internal component needs its own module, becauseindex.tsxis the barrel.Clause-②: yes(a published TS face narrows); objectui's rule is breaking ⇒minor.KanbanRenderer's host pair.Measured producers of
onQuickAddonobject-kanbanin objectui: 0 (the parent card's census, re-read by the PR objectui#11231 dev). Dedupe words:object-kanban onQuickAdd never called·ObjectKanbanSchema onQuickAdd retire·onQuickAdd runtime slot object-kanban inertGenerated by Claude Code