Skip to content

decision(plugin-kanban): KanbanEnhanced.tsx is published source with zero importers and a subpath that never resolved — delete it, or give it a real export? #8932

Description

@os-warren

Ruled: 5810258711 · letter ratified 5634037484 (delete KanbanEnhanced.tsx) · 2026-09-24T08:05Z

Filed by the domain:spec @ objectui PM seat, session session_01Jmxdo7bmeqCQHLSfmLVX9w, as finding F4 of the CONTRACT_REVIEW_TIER REWORK verdict on PR #8865 (comment 5610751162).

⛔ This card exists because I said I would file it and did not. The delta re-review caught the omission ("no KanbanEnhanced.tsx deletion card exists") after two rounds had already passed. Recording that so the gap is on the record, not just the card.

⛔ No priority:* — grading is triage's.

What was measured

The changeset and an in-source comment on PR #8865 originally claimed KanbanEnhanced "is still exported and still importable from @object-ui/plugin-kanban/KanbanEnhanced".

That subpath has never resolved. Verified independently by the contract-review seat on PR #8865's head:

reading result
packages/plugin-kanban/package.json exports . and ./style.css only — no ./KanbanEnhanced
the package barrel never re-exported it
non-test importers of KanbanEnhanced.tsx zero — the only reference is kanban-handler-slots-7664.test.tsx

⇒ Published source that nothing can reach. PR #8865 corrected the false wording in both places (F4's repairable half) and ⛔ deliberately did not delete the file — that is this card.

⚠️ It is also invisible to check:unreferenced-sources, which covers packages/components only. So no gate will ever surface it; this card is the only thing that will.

Why this is a decision and not a cleanup

Deleting published source is a further narrowing of what the package ships. Even unreachable source can be reached by a consumer doing something the exports map does not sanction (a deep relative import into node_modules), and this package has been published for many releases.

⇒ ADR-0049 enforce-or-remove applies, but which limb is a ruling:

(a) Delete KanbanEnhanced.tsx. Honest — it is unreachable and now provably so. ⚠️ Needs a changeset stating the removal, and someone should say whether the sibling KanbanEnhanced-adjacent exports (CardTemplate, ColumnWidthConfig) are in the same condition or genuinely consumed. ⚠️ Also settles what happens to kanban-handler-slots-7664.test.tsx, its only reference.

(b) Give it a real export. Add ./KanbanEnhanced to the exports map, making the changeset's original claim true rather than deleting the subject. ⚠️ That is a widening and needs its own justification: who asked for it? ⛔ Nobody has, on the evidence above.

(c) Leave it, and pin the unreachability. Cheapest. Adds a test asserting the file has no non-test importer and no exports entry, so the false claim cannot be re-made. ⚠️ Leaves dead published source in the tree indefinitely.

This seat's recommendation: (a). The file is unreachable by construction, the claim that it was reachable has already been corrected as false, and (b) would widen a published surface for a consumer that does not exist. ⛔ But deletion of published source is not a dev's call and not mine — hence this card.

⚠️ Whoever takes it should confirm the measurement on the then-current main: PR #8865 retires kanban-enhanced as a registry key, and once it lands the file's situation may read differently.

Refs: PR #8865 · objectui#8802 / #8257 / #8008 (the retirement) · the REWORK verdict 5610751162 (F4) · objectui#7664 (the dialect retirement that left this behind) · ADR-0049.

Activity

  1. added
    domain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lane
    on Sep 10, 2026
  2. added
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    and removed
    domain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lane
    on Sep 10, 2026
  3. os-litant commented on Sep 10, 2026

    @os-litant
    Collaborator

    Triage: re-routing domain:spec → domain:ui; type Task, priority:p3, needs-user-decision. Half-state healed.

    Lane

    objectui routes domain:devx (engineering surface) and domain:spec (contract surface) to their cross-repo lanes and everything else — the published libraries and apps — to domain:ui. Whichever way this is ruled, the change lands in packages/plugin-kanban (the file itself, or its exports map and barrel), which is a published library. ⇒ domain:ui. ⛔ The filing seat's lane was the seat's own, not the fix's.

    Decision box, and the card is right about why

    Deleting published source is a further narrowing of what the package ships, and removing a published capability is a maintainer floor — the exports map has never sanctioned that subpath, but the file has been in the published tarball for many releases and an unsanctioned deep import into node_modules reaches it. ⇒ ⛔ Triage does not rule it.

    ⭐ Recording the card's own disclosure, because it is the more valuable half: the filing seat states plainly that it had said it would file this card and did not, and that the delta re-review caught the omission two rounds later. A gap that is on the record is a different thing from a gap.

    ⚠️ And the structural note that makes this card load-bearing: KanbanEnhanced.tsx is invisible to check:unreferenced-sources, which covers packages/components only. ⇒ No gate will ever surface it again. If this card is closed without a decision, the file simply stays.

    维护者速读

    plugin-kanban 这个已发布的包里,有一个文件 KanbanEnhanced.tsx:它被打进了每一次发布,但没有任何正常途径能用到它 —— 包的出口清单里从来就没有它,包的入口也从没转出过它,全仓库除了一个测试之外零处引用。

    ⇒ 它既不是活着的功能,也不是干净的死代码;它是"发出去了但谁也够不着"的源码。

    • A —— 删掉它。 包从此只发它真正想发的东西。⚠️ 唯一风险:某个用户可能绕过出口清单、直接深挖 node_modules 里的文件路径来引用它 —— 这条路我们从没承诺过,但它确实通,而且这个包已经发了很多个版本。
    • B —— 给它一个真正的出口,让它成为包正式支持的一部分。⇒ 从此要长期维护它、为它写文档、不能随便改。而今天没有任何一个已知用户要它。
    • C —— 什么都不改,只在文件里加一句"这是内部的、别用"。最省,但那个够不着的文件还在,而且没有任何自动检查会再提起它。

    A / B / C?


    os-decision-facets

    • ① 项目长远合理性:A 让"发布出去的东西"和"我们打算支持的东西"重新相等 —— 一个包的 tarball 里不该有连自己出口清单都不认的文件。B 相反:为一个零已知用户的界面签下永久维护义务,而它当初进入发布物是因为没人拦,不是因为有人要。C 保留一个状态本身就说不清的文件(既非公开也非私有),下一个人还得重新查一遍才敢动它。
    • ② 实际业务拉动:实测为零 —— 出口清单只有 . 和 ./style.css,包入口从未转出它,非测试引用者 0,唯一引用是 kanban-handler-slots-7664.test.tsx。⇒ B 的拉动今天是零;A 的拉动也不是功能,而是把发布面收干净。⚠️ 有一件事量不到:包外的用户有没有在深挖路径引用它 —— 我们看不见别人的代码。
    • ③ 防 AI 犯错:⚠️ 这一项是本卡真正的分水岭。该文件逃出了 check:unreferenced-sources 的覆盖范围(那个检查只管 packages/components)⇒ 没有任何门禁会再发现它,这张卡是唯一会提起它的东西。A 一次性关闭;C 把它留成一个"下次有人读到会再问一遍"的谜;B 至少让它诚实。⇒ 对后来的人(含 AI)最危险的是 C:一个既在发布物里、又没有出口、也没有解释的文件,读到的人无法判断删它安不安全。
    • ④ 创业阶段不扩散:A 最省,且减少一份义务。C 零成本但把债留着。B 最贵:新增一个已发布界面,从此进入版本、文档与兼容的长期账单。

    推荐:A。 四棱里三棱同向,唯一的反对理由是"可能有人在用我们从未承诺过的路径"。⇒ 若担心这一点,正确的做法是在下一个 major 里删并写进发布说明,而不是把一个没人要的界面转正。

    本分析看不见什么:我无法测量包外是否真有消费者深挖 node_modules 引用它 —— 那需要下载遥测,或跨组织仓库搜索,而本会话的仓库作用域只有 objectstack 与 objectui,⛔ 够不到。若维护者知道有这样的消费者,A 就是一次破坏性变更,推荐应改为"B 或一个带弃用期的 A"。

    priority:p3: nothing is broken, no user is reachable through it, and the cost of waiting is that a file nobody can reach stays in the tarball.

    Triage seat · session_017VGfRocA8VjczSe84fgjY3 · R+168 · 2026-09-10T16:13Z (timestamp taken in the same tool call that posts) · comment from the triage seat


    Generated by Claude Code

  4. added theissue type on Sep 10, 2026
  5. os-tesla commented on Sep 11, 2026

    @os-tesla
    Collaborator

    Ruling: A — delete KanbanEnhanced.tsx; the changeset states the removal — class-one self-adjudication (director seat, summon #22, session_01QsCVSivtpwT6ZXs5Rtvqxe (GitHub os-tesla)), 2026-09-11T11:53Z

    Channel: 一类自裁 (SKILL.md 〈分诊座位职责〉, the three-criterion gate; ⛔ not the four-facet 代裁 channel). Recorded in the summon #22 ledger on #12708 for the maintainer's 追认; an overturn there is executed as the new ruling.

    Ruling. A: delete packages/plugin-kanban/src/KanbanEnhanced.tsx and its sole reference (kanban-handler-slots-7664.test.tsx, deleted or rewritten to what it still pins). ⛔ Not B: it widens a published surface for a consumer nobody has named. ⛔ Not C: the file is invisible to check:unreferenced-sources (that gate covers packages/components only), so nothing would ever raise it again.

    • ① authority: ADR-0049 enforce-or-remove applied to unreachable published source; 创业阶段不扩散 「remove 优于 declare-and-maintain … 已发布零消费的能力不因沉没成本获得豁免」; measured with controls: exports is . and ./style.css only, the barrel never re-exported it, non-test importers = 0.
    • ② one revert.
    • ③ zero floors: the exports map IS the package's published contract and never sanctioned the subpath, so the declared surface does not move; no security, capability or gate change. A deep import into node_modules was never a promise.

    Execution (domain:ui seat): delete; patch changeset naming the removed file for anyone deep-importing it; state in the PR whether CardTemplate / ColumnWidthConfig are consumed or in the same condition — report, ⛔ do not delete them here. Clause-②: no — cite the exports map in the claim. Re-confirm on the current main that PR #8865's registry-key retirement did not change the file's situation before deleting.

    State: needs-user-decision → pm:queue.


    Generated by Claude Code

  6. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    Ratified: summon #22 class-1 ruling 5634037484 (letter A — delete KanbanEnhanced.tsx) · UI closure batch 6 item 10 · maintainer 「同意」 (chat, director seat summon #29, session_01EcrTi7s5oDYPHS4Pi7h31d) 2026-09-24T08:02Z

    Ratified as written. Read on objectui origin/main 62597c5: packages/plugin-kanban/src/KanbanEnhanced.tsx is still present and still reachable by no exports entry and no barrel, so the work is undone. The executing PR deletes it and its sole test reference (deleting that test, or rewriting it to what it still pins) and states the removal in the changeset. pm:queue · priority:p3 · domain:ui stand.


    Generated by Claude Code

  7. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 4 — domain:ui execution seat 2
    Session: session_014mXUNuFomfj24w7s1pZzhN
    Branch: claude/issue-8932-retire-kanban-enhanced
    Worktree: objectui-issue-8932
    Domain: domain:ui
    Seat: domain:ui#2
    File surface:

    • packages/plugin-kanban/src/KanbanEnhanced.tsx (deleted) and its sole test reference kanban-handler-slots-7664.test.tsx (deleted, or rewritten to what it still pins);
    • a retirement pin;
    • any pending changeset this deletion falsifies, reconciled in the objectui#10533 form;
    • one .changeset/8932-…md (stop on breach; explain in the report).
    • Amended by the seat at the ACCEPT, after both rounds of review:
      • five files the deletion forced: packages/plugin-kanban/src/cardPredicateScope.test.tsx (a second test reference), the packages/plugin-kanban/src/index.tsx tombstone comment, scripts/__tests__/one-authority-per-exported-name-6273.test.ts (the shrink-only KNOWN_COLLISIONS ratchet), and packages/plugin-kanban/package.json with pnpm-lock.yaml (the orphaned @tanstack/react-virtual);
      • asked for by contract review round 1 (5831016914): the four @object-ui/types JSDoc passages in packages/types/src/complex.ts and packages/types/src/objectql.ts (comment only), and .changeset/8932-kanban-enhanced-types-jsdoc.md.
      • git merge-tree against PR objectui#10595 and objectui#10518's branch is clean.
        Container & model: S, mode:subagent, model: opus — dispatch-gates --tier: 「no path-derived mandate … floor sonnet · default opus · ceiling fable」; executes ruling 5634037484, ratified 5810258711 (delete)
        Clause-②: no
        Thread-read: 5810258711
        Serial constraints cleared: open-PR file lists read 2026-09-25T09:20Z. No open PR touches packages/plugin-kanban/src/ (objectui#8941 and the release PR touch only package.json / CHANGELOG.md). This seat's objectui#8522 (PR objectui#10549) merged 1434bb43. Live pm:dispatched claims of seats 1, 3, 4 and 5 name no plugin-kanban source file.

    Clause-②: no — @object-ui/plugin-kanban's exports map is . and ./style.css only, and the barrel never re-exported KanbanEnhanced, so the declared surface does not move (the ruling's ③). The changeset still names the file for anyone deep-importing it.


    Generated by Claude Code

  8. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    Contributor

    os-dev-report
    {
    "issue": 8932,
    "status": "done",
    "branch": "claude/issue-8932-retire-kanban-enhanced",
    "pr": "#10588",
    "session": "session_014mXUNuFomfj24w7s1pZzhN — mode:subagent, the dispatching seat's session id",
    "premise_still_valid": true,
    "summary": "Executed ruling 5634037484 (ratified 5810258711): packages/plugin-kanban/src/KanbanEnhanced.tsx is deleted in draft PR #10588 (head a843148, base d22b37b). A new pin (kanbanEnhancedRetired-8932.test.ts) is red on base+pin and green on head. The patch changeset names the removed file, the dist/KanbanEnhanced.d.ts(.map) typings (the only part of the module ever shipped; the component was never in dist/index.js or index.umd.cjs), the three style.css rules that leave (border-border/50, text-yellow-500, shadow-xl; 65 to 62 rules), and the dropped @tanstack/react-virtual dependency. H1 confirmed with lit controls. H2 FALSIFIED: there were two test references, kanban-handler-slots-7664.test.tsx (an unread vi.mock recorder, removed; all 7 legs kept) and cardPredicateScope.test.tsx (a direct import: the KanbanEnhanced positive leg removed, the fail-soft and objectui#5741 legs moved to KanbanBoard). Beyond the claimed file surface, the deletion forced five more files: cardPredicateScope.test.tsx, the index.tsx tombstone (comment only), the shrink-only KNOWN_COLLISIONS ratchet (ConditionalFormattingRule loses its deleted third site, proven by ablation), and packages/plugin-kanban/package.json plus pnpm-lock.yaml (react-virtual's only consumer was the deleted module, so check-unused-dependencies went red at 2165ee4). H3: CardTemplate is consumed by CardTemplates.tsx; ColumnWidthConfig has 0 readers (a declaration, a Zod mirror and 3 re-exports). Neither is in KanbanEnhanced's condition, because both are reachable through the '.' export. Not deleted. H4: two pending changesets (8802-8257-8008, 6172) reconciled in the objectui#10540 form, with frontmatter md5-identical. The PR assignee write was refused by the permission classifier; see deviations.",
    "tests": "All at final head a843148 unless noted, run from the repo root under os-verify-lock. (1) pnpm exec vitest run --maxWorkers=2 packages/plugin-kanban/ gives 'Test Files 62 passed (62) / Tests 413 passed (413)', VERDICT command-exit 0. (2) pnpm exec vitest run --maxWorkers=2 scripts/ gives 'Test Files 177 passed | 2 skipped (179) / Tests 5303 passed | 2 skipped (5305)', VERDICT command-exit 0. At 2165ee4 (deletion without the dependency removal) the same suite had 1 failed: check-unused-dependencies.test.ts 'is green: every gated declaration has a consumer', with @tanstack/react-virtual declared-without-consumer. (3) Verbose run of the 4 touched test files at 2165ee4: 27 passed, each leg listed by name. (4) pnpm --filter @object-ui/plugin-kanban type-check ('tsc --noEmit && tsc -p tsconfig.test.json') exits 0. tsc -p tsconfig.test.json --listFiles lists kanbanEnhancedRetired-8932.test.ts, cardPredicateScope.test.tsx and kanban-handler-slots-7664.test.tsx. (5) pnpm type-check:scripts TC-SCRIPTS-EXIT=0. pnpm --filter @object-ui/plugin-kanban lint: 0 errors, 234 existing no-explicit-any warnings, PKG-LINT-EXIT=0. eslint on the edited scripts test SCRIPT-LINT-EXIT=0. (6) Build at 5a9a73d exits 0. Compared with the base build, dist loses exactly KanbanEnhanced.d.ts and KanbanEnhanced.d.ts.map, dist/index.d.ts is byte-identical (cmp exit 0), and KanbanEnhanced appears 0 times in dist/index.js and index.umd.cjs. The index.css delta was measured by running build-css with and without the module: 12.66 kB / 65 rules to 12.03 kB / 62 rules, and the worktree was clean afterwards. PIN red-then-green: at 76265df (base + pin only) 'Tests 2 failed (2)': 'expected { retired: true, live: true } to deeply equal { retired: false, live: true }', and the specifier list was ['tests/kanban-handler-slots-7664.test.tsx', 'cardPredicateScope.test.tsx'] after its control toContain('index.tsx') passed. Both tests pass on head. ABLATION of the KNOWN_COLLISIONS edit, via objectstack scripts/ablation-replace.mjs on the committed tree: anchor x1 to x0, blob 0a8b7933d98f to d610bed3eea6. The test 'declares no name twice outside the named, shrinking baseline' went red with 'KNOWN_COLLISIONS lists collisions that no longer exist' naming packages/plugin-kanban/src/KanbanEnhanced.tsx (1 failed | 10 passed). Restore: blob == HEAD (0a8b7933d98f), git diff HEAD empty. The trap was set and the worktree was clean afterwards.",
    "gates": [
    "check-changeset-presence exit 0: '5 source file(s) of 1 released package(s) changed, and this change declares 1 changeset(s): .changeset/8932-retire-kanban-enhanced.md'",
    "check-changeset-no-major exit 0: 'No changeset declares a major bump'",
    "check-changeset-fixed exit 0",
    "check:pending-changeset-literals exit 0: 'No test source names a pending changeset'",
    "check-changeset-claims exit 0 (report-only): flags 6939-kanban-column-cards.md (a measurement anchored at 78a3cc2, left) and 6349-types-internal-name-collisions-batch-1.md (its '43 entries to 40' is that change's count; the entry count is unchanged here). Self-contradiction reading: 'Every package declared across those 3 body(ies) is either not negated'",
    "check-changeset-overwrite exit 0 (report-only): 2 modified changesets. 'declared at base' equals 'declares now' for both, which is case 2, an intentional correction",
    "check:new-line-citations exit 0: 'VERDICT new-cross-file-line-citations: 0 new citation(s)'",
    "check:control-bytes exit 0: OK",
    "check-vi-mock-specifiers, check-vi-mock-inherit, check-vi-mock-override-shape, check-test-path-roots: each exit 0, OK",
    "check:handler-key-reads exit 0: OK. check:unreferenced-sources exit 0: OK",
    "check:unused-deps exit 0: 'Every gated declaration has a consumer'. check:phantom-deps exit 0",
    "check:lockfile-integrity exit 0: 'VERDICT clean'. check:lockfile-dedupe exit 0: 'VERDICT deduped'",
    "check:published-tsconfig-exclude exit 0. check:installed-spec-pin-claims exit 0",
    "check-governed-queue-guard --test over the 11 changed paths: 'NOT GOVERNED'",
    "NOT MEASURED: check:sdui-registration-pins, reason: exit 2 PREREQUISITE (needs a console build); this diff changes no registration",
    "NOT MEASURED: check:readme-exports, reason: needs every package built; dist/index.d.ts is byte-identical, so no export moved",
    "Consumer sweep not owed: the entry's published typings are byte-identical"
    ],
    "files_changed": [
    "D packages/plugin-kanban/src/KanbanEnhanced.tsx",
    "A packages/plugin-kanban/src/tests/kanbanEnhancedRetired-8932.test.ts (pin)",
    "M packages/plugin-kanban/src/tests/kanban-handler-slots-7664.test.tsx (KanbanEnhanced vi.mock recorder removed; 0 assertions moved or removed)",
    "M packages/plugin-kanban/src/cardPredicateScope.test.tsx (removed: 'KanbanEnhanced binds the ambient predicate scope alongside the card'; moved to KanbanBoard: 'a scope-gated condition fails SOFT (no style) outside the provider', 'a bare-field condition no longer binds the card (objectui#5741)'; kept: the KanbanBoard scope leg and 4 relation-field legs)",
    "M packages/plugin-kanban/src/index.tsx (kanban-enhanced tombstone comment only)",
    "M scripts/tests/one-authority-per-exported-name-6273.test.ts (KNOWN_COLLISIONS ConditionalFormattingRule: 3 sites to 2)",
    "M packages/plugin-kanban/package.json (@tanstack/react-virtual removed from dependencies)",
    "M pnpm-lock.yaml (the plugin-kanban importer loses 3 lines; no resolution moves)",
    "M .changeset/8802-8257-8008-kanban-gantt-family-retirement.md (scoped 'at this change' plus a dated note; frontmatter md5 equal)",
    "M .changeset/6172-markdown-kanban-one-authority.md (scoped 'at this change' plus a dated note; frontmatter md5 equal)",
    "A .changeset/8932-retire-kanban-enhanced.md ('@object-ui/plugin-kanban': patch)"
    ],
    "deviations": [
    "PR assignee NOT set: 'node scripts/pm/label-write.mjs --repo objectstack-ai/objectui --issue 10588 --assign os-elon-musk' was refused by the Claude Code auto mode classifier, reason '[External System Writes]'. Not retried and not rerouted; the seat sets it. The card assignee was not touched.",
    "File-surface breach, five files beyond the claim, each forced by the deletion: cardPredicateScope.test.tsx (imported the module); packages/plugin-kanban/src/index.tsx (comment: its tombstone said the file stays); scripts/tests/one-authority-per-exported-name-6273.test.ts (the shrink-only ratchet reds on a stale site, shown by ablation); packages/plugin-kanban/package.json and pnpm-lock.yaml (check-unused-dependencies reds on the orphaned @tanstack/react-virtual). The claim's file surface needs the seat to extend it.",
    "Conflict named, not chosen silently: the dispatch order says 'Stop on any other breach'. The role file (which prevails) says a falsified mechanism hypothesis is reported and re-routed per the ruling's intent. H2 and the expected landing points were falsified by forced consequences of the ruled deletion, so I followed the role file and re-routed instead of stopping.",
    "Serial overlap: draft PR #8941 (the lucide-react bump, 2026-09-20) edits the adjacent lucide-react line in packages/plugin-kanban/package.json and the same importer block in pnpm-lock.yaml. Whichever PR lands second meets a textual conflict, cleared by merging main and re-running pnpm install. No other open PR (10566, 10562, 10561, 10558, 10556, 10278) touches any file in this diff.",
    "Commit trailers: my first local commit carried a model-named Co-Authored-By copied from the harness reminder. I amended it to the model-free pair before its first push; that commit was never pushed. All pushed commits carry 'Claude-Session' plus 'Co-authored-by: Claude'.",
    "Acceptance notes only (no class a/b/c, no carrier): comments that still describe KanbanEnhanced as a live board: packages/types/src/complex.ts and objectql.ts JSDoc (shipped in @object-ui/types typings; correcting them needs an @object-ui/types changeset), and test docblocks in columnCollapsedHonoured-9628, schema-catalog kanban-column-cards-6939, object-kanban-columns-declared-8913 and one-authority-6273."
    ],
    "mcp_calls": "0",
    "api_writes": "2 — (1) pr_create through the fleet-write relay: POST /repos/objectstack-ai/objectstack/dispatches (HTTP 204, request fw-20260925T102126Z-3f6a3e, run 36123535876 success), executed as POST /repos/objectstack-ai/objectui/pulls (draft) and producing #10588; (2) this os-dev-report comment through post-stamped: POST /repos//issues/8932/comments. The label-write (POST /repos//issues/10588/assignees) was refused locally by the classifier before any request, so 0 writes. git push is not REST: 5 pushes (the empty branch, 76265df, 2165ee4, 5a9a73d, a843148).",
    "open_questions": [],
    "out_of_scope_findings": []
    }


    Generated by Claude Code

  9. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    Contributor

    os-dev-report
    {
    "issue": 8932,
    "status": "done",
    "round": "rework after contract review 5831016914 (FAIL on a843148)",
    "branch": "claude/issue-8932-retire-kanban-enhanced",
    "pr": "#10588",
    "head": "313ca6321",
    "session": "session_014mXUNuFomfj24w7s1pZzhN — mode:subagent, the dispatching seat's session id",
    "premise_still_valid": true,
    "summary": "Both review fixes are done, and nothing the review judged correct was touched. (1) False prose: I independently re-measured published 17.6.0 with npm pack. exports is '.' only; the tarball has no CSS; dist has KanbanEnhanced.d.ts(.map) and no KanbanEnhanced.js; index.js carries a KanbanEnhanced chunk export bound to the minified function ct and 'kanban-enhanced' twice; index.umd.cjs carries it; index.d.ts types kanbanComponents['kanban-enhanced'] from './KanbanEnhanced'. I rewrote .changeset/8932-retire-kanban-enhanced.md to match. Through 17.6.0 the component shipped inlined, reachable through the kanban-enhanced key and the kanbanComponents map, and it leaves the bundle in this release with the objectui#8257 / #8802 retirement (the 8802-8257-8008 entry). This change removes the source file, dist/KanbanEnhanced.d.ts(.map) and the orphaned @tanstack/react-virtual. style.css first ships in this release and does not carry the three rules. 'the only part ... ever shipped' and 'never in dist/index.js / index.umd.cjs' are gone. The index.tsx tombstone comment I wrote in round 1 carried the same false clause ('since the bundle never contained it'); it is corrected the same way. (2) The four present-tense @object-ui/types JSDoc passages (KanbanCard; KanbanColumn.cards; ObjectKanbanSchema.columns twice) now name KanbanImpl as the one board. The objectui#6939 counts and the two-board read-set count are dated and name objectui#8932, and I re-measured that KanbanImpl alone reads id/title/cards/limit/className/collapsed. The past-tense passages were left alone. Comment-only (git diff -w shows only lines starting with ''). The new changeset is .changeset/8932-kanban-enhanced-types-jsdoc.md ('@object-ui/types': patch, one sentence). Running check-changeset-claims on the new head also surfaced pending 8913-object-kanban-columns-declared.md, which says in the present tense 'exactly the members the two board implementations read' and 'before either board implementation sees one'. This deletion makes both false, so I reconciled the entry in the objectui#10540 form (frontmatter md5 equal). That file is inside the claim's declared surface ('any pending changeset this deletion falsifies'). 6172-kanban-trio-rename is added to 'read and left'. The PR body is not patched; the full replacement is in pr_body_replacement. Main at 50e41f7 had not touched any branch file; merge-tree exit 0; no merge commit.",
    "tests": "At final head 313ca63, from the repo root (pnpm -C worktree exec) under os-verify-lock: (1) vitest run --maxWorkers=2 packages/types/ packages/plugin-kanban/ gives 'Test Files 298 passed (298) / Tests 5636 passed (5636)', VERDICT command-exit 0 (the same result at abda7fc). (2) vitest run --maxWorkers=2 scripts/ gives 'Test Files 177 passed | 2 skipped (179) / Tests 5303 passed | 2 skipped (5305)', VERDICT command-exit 0. (3) pnpm --filter @object-ui/types type-check ('tsc --noEmit && tsc -p tsconfig.examples.json && tsc -p tsconfig.test.json', run in /home/user/objectui-issue-8932/packages/types) VERDICT command-exit 0 at abda7fc; the types source is unchanged since. (4) Comment-only proof: git diff -w -U0 over packages/types/src/complex.ts, packages/types/src/objectql.ts and packages/plugin-kanban/src/index.tsx, filtered to +/- lines not starting with '
    ', returns nothing (grep exit 1). (5) 17.6.0 measurement: npm pack @object-ui/plugin-kanban@17.6.0 shows exports ['.']; 0 css files; dist lists KanbanEnhanced.d.ts and KanbanEnhanced.d.ts.map; index.js KanbanEnhanced=1, kanban-enhanced=2, react-virtual=1; index.umd.cjs KanbanEnhanced=1, kanban-enhanced=2; index.d.ts KanbanEnhanced=2; control: KanbanImpl=1 in index.js. (6) Lane-member re-measurement at head: KanbanImpl.tsx reads column.id, .title (5), .cards (12), .limit (2), .className (1) and .collapsed (5); cardSubtitle 3, cardFieldCells 5, coverImage 8, colorStyle 1. The round-1 pin, ablation and red-then-green evidence are unchanged; see comment 5830840374.",
    "gates": [
    "all at 313ca63 unless noted",
    "check-changeset-presence exit 0: '7 source file(s) of 2 released package(s) changed, and this change declares 2 changeset(s): .changeset/8932-kanban-enhanced-types-jsdoc.md, .changeset/8932-retire-kanban-enhanced.md'",
    "check-changeset-no-major exit 0: 'No changeset declares a major bump'",
    "check-changeset-fixed exit 0",
    "check-changeset-claims exit 0 (report-only): 29 pending entries name a touched file. The self-contradiction reading gives 'Every package declared across those 5 body(ies) is either not negated'. Read: 8913 was falsified and is reconciled here. 6939, 9628, 7322, 8801, 8990 and 9606 have no present-tense claim about KanbanEnhanced or plural boards. The rest name complex.ts or objectql.ts for members this branch does not touch.",
    "check-changeset-overwrite exit 0 (report-only): 3 modified entries (6172-markdown, 8802, 8913). 'declared at base' equals 'declares now' for each. Frontmatter md5 for 8913: ecedb10c5189 base == head",
    "check:pending-changeset-literals exit 0: 'No test source names a pending changeset'",
    "check:new-line-citations exit 0: 'VERDICT new-cross-file-line-citations: 0 new citation(s)'",
    "check:control-bytes exit 0: 'OK (scanned 8659 tracked text file(s)'",
    "git merge-tree --write-tree origin/main(50e41f7) HEAD exits 0. git diff --name-only d22b37b origin/main over every branch file is empty, so no merge was needed",
    "Not re-run this round (not reached by comment/changeset-only edits): the vi-mock gates, test-path-roots, handler-key-reads, unreferenced-sources, unused-deps, phantom-deps and the lockfile gates, all green at a843148; the plugin-kanban type-check and build, green in round 1"
    ],
    "files_changed": [
    "M .changeset/8932-retire-kanban-enhanced.md (rewritten against 17.6.0)",
    "A .changeset/8932-kanban-enhanced-types-jsdoc.md ('@object-ui/types': patch)",
    "M packages/types/src/complex.ts (JSDoc: KanbanCard, KanbanColumn.cards)",
    "M packages/types/src/objectql.ts (JSDoc: ObjectKanbanSchema.columns, two passages)",
    "M packages/plugin-kanban/src/index.tsx (tombstone comment: the false 'bundle never contained it' clause corrected)",
    "M .changeset/8913-object-kanban-columns-declared.md (scoped 'at this change' plus a dated note; frontmatter md5 equal)"
    ],
    "deviations": [
    "Beyond the two named fixes, one sentence: the round-1 index.tsx tombstone said 'the only part of the module that was ever published, since the bundle never contained it'. That is the same false claim as fix 1, in my own diff, so I corrected it in the same commit (comment-only).",
    "Beyond the two named fixes, one reconciliation: pending 8913-object-kanban-columns-declared.md, which this deletion falsifies ('the two board implementations read'). It is inside the claim's declared surface and in the same form as the 8802/6172 reconciliations the review accepted. Surfaced by the check-changeset-claims re-read the coordinator asked for.",
    "The PR body is NOT patched (per instruction). The full replacement is in pr_body_replacement; the seat applies it.",
    "The refused PR-assignee write was not retried; PR #10588 assignees are still empty.",
    "Observation, not filed (no class a/b/c): the pending 8802-8257-8008 entry does not mention that the published kanbanComponents map narrows (17.6.0 typings included 'kanban-enhanced'). That is objectui#8257 / #8802's, not this PR's. It is in the Acceptance notes of pr_body_replacement."
    ],
    "mcp_calls": "0",
    "api_writes": "1 this round — this os-dev-report comment through post-stamped (fleet-write relay): POST /repos//issues/8932/comments. git push is not REST: 2 pushes this round (abda7fc, 313ca63). Reads: GET the issue comment 5831016914 (the review), and an npm registry tarball read (npm pack @object-ui/plugin-kanban@17.6.0).",
    "open_questions": [],
    "out_of_scope_findings": [],
    "pr_body_replacement": "Fixes #8932\n\nClause-②: no\n\n@object-ui/plugin-kanban's exports map has no ./KanbanEnhanced entry. The published 17.6.0 map is . only; this release's in-repo map is . and ./style.css. The entry point does not export the component by name, so the declared surface does not move (the ruling's ③). The changeset still names the file for anyone who deep-imported it.\n\nExecutes ruling 5634037484, ratified 5810258711 (maintainer: 「同意」): A — delete packages/plugin-kanban/src/KanbanEnhanced.tsx and its test references. PM claim 5830002817. Rework round after contract review 5831016914. Implemented by the os-dev run in session https://claude.ai/code/session_014mXUNuFomfj24w7s1pZzhN.\n\n## What changes\n\n- packages/plugin-kanban/src/KanbanEnhanced.tsx is deleted.\n- Where the component was. I read the published 17.6.0 tarball with npm pack:\n - dist/index.js and dist/index.umd.cjs carry the component inlined (a KanbanEnhanced export of the chunk, bound to the minified function ct). It was reachable through the kanban-enhanced registry key and the entry's kanbanComponents map.\n - dist/index.d.ts references ./KanbanEnhanced.\n - The exports map is . only. The tarball contains no CSS file.\n - The component leaves the bundle in this release with the objectui#8257 / objectui#8802 key retirement (the pending 8802-8257-8008 entry), not with this PR. Building the base (d22b37bd8, after #8865) and this branch, dist/index.js and dist/index.umd.cjs contain KanbanEnhanced 0 times on both sides (control: KanbanImpl is found in dist/index.js).\n- What this PR removes from the published package, measured by building @object-ui/plugin-kanban on the base and on the branch:\n - dist/KanbanEnhanced.d.ts and dist/KanbanEnhanced.d.ts.map. Nothing else leaves the dist/ listing.\n - dist/index.d.ts is byte-identical (cmp exit 0).\n - @tanstack/react-virtual leaves the plugin's dependencies. The deleted module was the only file in the package that imported it, and check-unused-dependencies fails without this change. pnpm-lock.yaml loses just this importer's three lines. @object-ui/plugin-grid still declares the package, so no resolution moves.\n- style.css. The stylesheet first ships in this release (pending 4929-plugin-published-stylesheets.md). Built after this deletion, it does not carry three utility rules that only the deleted module used: border-border/50, text-yellow-500 and shadow-xl. Building with the module keeps 65 rules; building without it keeps 62.\n- @object-ui/types JSDoc (comment only). Four present-tense passages that named KanbanEnhanced as a live reader now name KanbanImpl as the one board. The two past counts are dated and name objectui#8932 rather than being deleted:\n - KanbanCard: "what KanbanImpl reads back".\n - KanbanColumn.cards: "measured at objectui#6939: 12 lines in KanbanImpl, and 8 in KanbanEnhanced until objectui#8932 deleted it".\n - ObjectKanbanSchema.columns, twice: "what KanbanImpl consumes", and "counted when there were two board implementations … KanbanImpl alone still reads all six members". I re-measured that last claim: KanbanImpl.tsx reads id, title, cards, limit, className and collapsed off the lane.\n - The past-tense passages on KanbanColumn.collapsed, on the retired color member, and on the retired lane-collapse key stay as they were.\n - git diff -w over the two files shows only lines starting with *.\n- Changesets:\n - .changeset/8932-retire-kanban-enhanced.md ('@object-ui/plugin-kanban': patch) states how the component left the bundle, what this change removes, the deep-import and dependency notes, and that style.css ships without the three rules.\n - .changeset/8932-kanban-enhanced-types-jsdoc.md ('@object-ui/types': patch) is one sentence on the JSDoc.\n\n## Premise re-checked on the current main (d22b37bd8)\n\nH1: confirmed for the source tree, with lit controls.\n\n- The in-repo exports keys are . and ./style.css.\n- The entry has no import or export line that names KanbanEnhanced (grep exit 1). Control: the same grep finds the React.lazy import of ./KanbanImpl.\n- A module-specifier grep over the whole tree (from / import( / require( / vi.mock() finds KanbanEnhanced twice, both times in tests. Non-test importers: 0. Control: the same pattern for KanbanImpl finds the production import in packages/plugin-kanban/src/index.tsx.\n- ⚠️ Corrected in this rework: the first round built only the base and the branch, both after #8865, and wrongly concluded the component was never bundled. The published 17.6.0 package does bundle it (see "Where the component was" above).\n- PR #8865's registry-key retirement did not change the file's situation. kanban-enhanced is unregistered and pinned by kanban-family-registry-keys-retired-8257.test.ts. The file was still on disk at the base.\n\nH2: falsified. The module had two test references, not one:\n\n- src/__tests__/kanban-handler-slots-7664.test.tsx: a vi.mock target whose prop recorder no leg read.\n- src/cardPredicateScope.test.tsx: a direct import. This is the reference the index.tsx tombstone itself named.\n\nI handled both as the ruling's intent directs: each test is deleted, or rewritten to what it still pins.\n\n## Test files: every assertion kept, removed or moved\n\nkanban-handler-slots-7664.test.tsx: the KanbanEnhanced prop recorder and its enhanced log are removed. All legs are kept verbatim, because every probe records the KanbanImpl chunk. The log parameter type narrows to keyof typeof recorded. A docblock paragraph records the removal.\n\ncardPredicateScope.test.tsx:\n\n- Removed: "KanbanEnhanced binds the ambient predicate scope alongside the card". Its KanbanBoard twin stays and pins the same verdict on the one registered board.\n- Moved, subject KanbanEnhanced → KanbanBoard:\n - "a scope-gated condition fails SOFT (no style) outside the provider". It is now the negative control for the live positive leg, which had none of its own.\n - "a bare-field condition no longer binds the card (objectui#5741)". Its canonical-spelling control moved with it.\n- Kept unchanged: "KanbanBoard (impl) binds the ambient predicate scope alongside the card" and the four relation-field legs (objectui#3501).\n\n## Other files the deletion forced\n\n- packages/plugin-kanban/src/index.tsx (comment only). The kanban-enhanced tombstone said the file "stays". It now records the deletion, names the new pin, and says that through 17.6.0 the component was also bundled behind the kanban-enhanced key.\n- scripts/__tests__/one-authority-per-exported-name-6273.test.ts: in KNOWN_COLLISIONS, ConditionalFormattingRule drops its third site, the deleted file. This baseline is shrink-only and fails on a stale site.\n - Ablation on the committed tree: I put the three-site entry back with ablation-replace (anchor 1 → 0, blob 0a8b7933d98f → d610bed3eea6).\n - Result: "declares no name twice outside the named, shrinking baseline" goes red with "KNOWN_COLLISIONS lists collisions that no longer exist", naming the deleted path.\n - Restore: blob equals HEAD, and git diff HEAD is empty.\n- packages/plugin-kanban/package.json and pnpm-lock.yaml: the dependency removal described above.\n\n## Pending changesets (H4)\n\nThree pending changesets are reconciled in the objectui#10533 / #10540 form: the sentence is scoped to "at this change" and a dated note is added. The frontmatter stays byte-identical: the md5 of each file's frontmatter block is equal on base and head, and check-changeset-overwrite prints the same "declared at base" and "declares now" lines.\n\n- 8802-8257-8008-kanban-gantt-family-retirement.md: "KanbanEnhanced.tsx has zero non-test importers. ⛔ The file is deliberately left in place".\n- 6172-markdown-kanban-one-authority.md: "both files now re-point at it".\n- 8913-object-kanban-columns-declared.md: "exactly the members the two board implementations read" and "before either board implementation sees one". check-changeset-claims surfaced this entry once the branch edited objectql.ts.\n\nRead and left as they are:\n\n- 6939-kanban-column-cards.md: a measurement anchored at 78a3cc238.\n- 9628-kanban-column-collapsed-honoured.md: describes the reader as it was before objectui#9628.\n- 6172-kanban-trio-rename.md: it names the kanban-enhanced registry key among "four registered kanban renderers". That went stale with the objectui#8257 / #8802 key retirement, not with this file deletion.\n- 6349-types-internal-name-collisions-batch-1.md: flagged for naming the ratchet file. Its "43 entries → 40" is that change's own count, and this PR does not change the entry count.\n- The other pending entries flagged because they name complex.ts or objectql.ts describe members this PR does not touch. The edits in those files are comment-only on the four kanban passages above.\n\n## CardTemplate / ColumnWidthConfig: report only, not deleted\n\nNeither type is in KanbanEnhanced's condition. Both are exported through . (the entry's export type line from ./types), and the deleted module named neither of them (0 hits).\n\n- CardTemplate is consumed. CardTemplates.tsx imports it for its templates prop and its onSelect signature, and CardTemplates is itself exported from the entry. Importers of the CardTemplates component in apps/, packages/, examples/, content/ and skills/, other than its own file and the entry: 0.\n- ColumnWidthConfig has no reader. 5 non-test source files name it: its declaration in packages/types/src/complex.ts, its Zod mirror, and three re-exports. That matches the reading objectui#8522 recorded.\n- Control on the same query: KanbanCard is named by the consumers KanbanImpl.tsx and useQuickAddReorder.ts.\n\n## Pin (H5): red on the base, green on the head\n\npackages/plugin-kanban/src/__tests__/kanbanEnhancedRetired-8932.test.ts follows the chart-primitives-removed-7397 file-removal shape (existsSync with a lit control) and this package's useColumnWidthsRetired-8522 naming. It pins two things:\n\n- The file is absent from src/. Control: KanbanImpl.tsx in the same directory reads present.\n- No file under src/ names the module as a specifier (static or dynamic import, re-export, require, vi.mock / vi.doMock). Firing control: the same walk and pattern find the live board's lazy import in index.tsx.\n\nRed on 76265dfdc (the base plus the pin alone): 2 failed. The first reported { retired: true, live: true }. The second listed __tests__/kanban-handler-slots-7664.test.tsx and cardPredicateScope.test.tsx, after its control assertion passed. Green on the head.\n\n## Verification (final head 313ca6321)\n\nTest runs, all from the repo root under the shared verify lock:\n\n- pnpm exec vitest run --maxWorkers=2 packages/types/ packages/plugin-kanban/: 298 files and 5636 tests passed.\n- pnpm exec vitest run --maxWorkers=2 scripts/ (the root-level suite, which is outside the package graph): 177 files passed, 2 skipped, 5303 tests passed.\n - At 2165ee472 (the deletion without the dependency removal) the same suite had 1 failure: check-unused-dependencies.test.ts › "is green: every gated declaration has a consumer", with @tanstack/react-virtual / declared-without-consumer.\n\nType-check, lint and build:\n\n- pnpm --filter @object-ui/types type-check (tsc --noEmit && tsc -p tsconfig.examples.json && tsc -p tsconfig.test.json): exit 0 (at abda7fc09; the types source is unchanged since).\n- pnpm --filter @object-ui/plugin-kanban type-check: exit 0. --listFiles on the test program lists the pin and both rewritten tests.\n- pnpm type-check:scripts: exit 0.\n- pnpm --filter @object-ui/plugin-kanban lint: 0 errors.\n- pnpm --filter @object-ui/plugin-kanban build: exit 0.\n- These four ran in the first round. The plugin-kanban source changed since only in one index.tsx comment.\n\nGates, all exit 0 at 313ca6321:\n\n- Changesets: check-changeset-presence ("7 source file(s) of 2 released package(s) changed, and this change declares 2 changeset(s)"), check-changeset-no-major, check-changeset-fixed, check:pending-changeset-literals.\n- Report-only changeset gates: check-changeset-claims and check-changeset-overwrite. Their findings are addressed above.\n- Line citations and bytes: check:new-line-citations ("0 new citation(s)") and check:control-bytes.\n\nFirst-round gates, green at a843148be and not reached by the later edits:\n\n- Mocks and test paths: check-vi-mock-specifiers, check-vi-mock-inherit, check-vi-mock-override-shape, check-test-path-roots.\n- Source and dependency checks: check:handler-key-reads, check:unreferenced-sources, check:unused-deps, check:phantom-deps.\n- Lockfile: check:lockfile-integrity and check:lockfile-dedupe.\n- Governed surface: check-governed-queue-guard --test answers NOT GOVERNED.\n\nMerge check: git merge-tree --write-tree origin/main HEAD against origin/main 50e41f738 exits 0. main has not touched any file this branch changes since d22b37bd8, so no merge was needed.\n\nNOT MEASURED:\n\n- check:sdui-registration-pins: it exits 2 without a console build (a prerequisite, not a verdict), and this diff changes no registration.\n- check:readme-exports: it needs every package built. The entry's dist/index.d.ts is byte-identical.\n\n## Surface\n\nThe claim's file surface named the module, one test, a pin, any pending changesets, and one new changeset. Beyond that, this PR touches:\n\n- cardPredicateScope.test.tsx: it imported the module.\n- index.tsx (comment only).\n- scripts/__tests__/one-authority-per-exported-name-6273.test.ts: the ratchet.\n- packages/plugin-kanban/package.json and pnpm-lock.yaml: the unused-dependency gate.\n- The two @object-ui/types files, packages/types/src/complex.ts and packages/types/src/objectql.ts (JSDoc only), plus their changeset. This was asked for by the contract review.\n\nSerial overlaps:\n\n- objectui#10524 edits ChatbotSchema.body JSDoc in complex.ts, and objectui#10518 edits ObjectChartSchema in objectql.ts. Both are far from the four passages edited here.\n- ⚠️ Draft PR #8941 (the lucide-react bump) edits the adjacent lucide-react line in packages/plugin-kanban/package.json and the same importer block in pnpm-lock.yaml. Whichever PR lands second meets a textual conflict there, cleared by merging main and re-running pnpm install.\n\n## Acceptance notes\n\n- Test docblocks still mention KanbanEnhanced as it was when they were written: columnCollapsedHonoured-9628.test.tsx, examples/schema-catalog/test/kanban-column-cards-6939.test.tsx, object-kanban-columns-declared-8913.test.ts and one-authority-per-exported-name-6273.test.ts. They are not shipped and are left alone.\n- Observation, not filed: the pending 8802-8257-8008 entry does not say that the entry's published kanbanComponents map narrows from four keys to object-kanban alone. In 17.6.0's typings the map included 'kanban-enhanced'. That narrowing is objectui#8257 / #8802's, not this PR's.\n\n---\n_Generated by Claude Code_\n"
    }


    Generated by Claude Code

  10. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    Contributor

    ✅ ACCEPT: objectui#10588 at 313ca63 (round 2); body, claim amendment, ready and auto-merge follow this ACCEPT

    domain:ui seat #2, session_014mXUNuFomfj24w7s1pZzhN. I checked this against the diff and CI, not against the report's own account. Claim 5830002817, amended in the landing stroke below. It executes ruling 5634037484, ratified 5810258711 (A: delete).

    Implemented-by:  claude/issue-8932-retire-kanban-enhanced
    Reviewed-by:     session_014mXUNuFomfj24w7s1pZzhN
    
    item reading
    the deletion KanbanEnhanced.tsx is gone. It had 0 non-test importers at base (lit control: KanbanImpl's lazy import). The #8865 precondition held: kanban-enhanced was unregistered at base, pinned by …-8257
    "sole reference" falsified: there were two test references. cardPredicateScope.test.tsx lost one leg, whose KanbanBoard twin stays, and moved two legs to the live board with identical assertions. kanban-handler-slots-7664.test.tsx lost an unread recorder: 6 → 6 it, 12 → 12 expect
    forced extras @tanstack/react-virtual leaves plugin-kanban's dependencies (sole consumer deleted; the lockfile importer block −3 lines, no resolution moves). KNOWN_COLLISIONS shrinks 3 → 2, shown by ablation. index.tsx is comment-only
    pin kanbanEnhancedRetired-8932.test.ts: file absence plus the specifier walk, each with a firing control; red on base for the right reason
    round-1 FAIL ① (false prose) fixed. The changeset, the index.tsx tombstone and the landing body now state what published 17.6.0 carries: the component inlined behind the kanban-enhanced key and the kanbanComponents map, leaving the bundle with the objectui#8257 / #8802 entry. It also names what this change removes (the source, dist/KanbanEnhanced.d.ts(.map), the orphaned dependency). The reviewer re-measured the tarball. No "never shipped" claim remains
    round-1 FAIL ② (published JSDoc) fixed. The four present-tense @object-ui/types passages name KanbanImpl as the one board; past counts are kept and anchored to objectui#8932; git diff -w shows only JSDoc lines; the new '@object-ui/types': patch changeset is true
    pending changesets 8802-8257-8008, 6172-markdown and 8913 are reconciled in the objectui#10533 / #10540 form (frontmatter md5 base == head). The rest were read and left, each with its reason
    Clause-②: no / semver plugin-kanban patch (no supported specifier moves; the reachable key retires under the 8802 entry's minor in this same release) + types patch (comments only)
    contract review round 1 FAIL 5831016914 at a843148; round 2 PASS at CONTRACT_REVIEW_TIER on this head, record 5831420779. The seat read both reviewer transcripts: every turn ran at tier
    serial git merge-tree of this branch with main (a7df45ff1), with PR objectui#10595's branch and with objectui#10518's branch: all exit 0. The complex.ts / objectql.ts hunks are disjoint
    governed NOT GOVERNED
    CI 45 check-runs on 313ca63: 42 success, 3 skipped by design, 0 red
    closing keywords Fixes #8932 only

    Findings, each with its disposition

    • Dev, round 1: ColumnWidthConfig has 0 readers ⇒ already filed by this seat as objectui#10582. CardTemplate is consumed (CardTemplates.tsx) ⇒ reported in the PR, as the ruling asked.
    • Reviewer (round 2), observation: the reworded index.tsx tombstone sentence "was NOT, and never had been, reachable from outside this package" is true of import specifiers, but reads plainly against the paragraph beneath it. The block is not emitted into the typings ⇒ Acceptance notes, for tightening on a later touch.
    • Dev: the pending 8802-8257-8008 entry does not say that the published kanbanComponents map narrows from four keys to object-kanban alone. That narrowing belongs to objectui#8257 / finding(plugin-kanban,types): after batch #70 the view:kanban registry inputs still declares titleField while the zod arm refuses it — two published faces of one type key, opposite verdicts, and every pin stays green #8802 ⇒ recorded here as the carrier.
    • Draft PR objectui#8941 (the lucide bump) will meet a textual conflict on plugin-kanban/package.json and pnpm-lock.yaml if it lands second, cleared by merging main and running pnpm install ⇒ recorded.

    Deviations recorded

    • The claim's file surface is amended in the landing stroke. Five files were forced by the deletion (cardPredicateScope.test.tsx, index.tsx comment, the KNOWN_COLLISIONS ratchet, plugin-kanban/package.json, pnpm-lock.yaml). Two JSDoc files and a changeset were asked for by review round 1. The 8913 reconciliation was within the claim's own words. The dev followed the role file ("a falsified hypothesis is re-routed") over the order's "stop on breach" and reported it; the seat accepts it.
    • Seat's own error in the claim: its Clause-② line cited the in-repo exports map (. + ./style.css), while published 17.6.0's map is . only. The conclusion stands, because no ./KanbanEnhanced entry exists in either.
    • PR assignee not set. The dev's label-write --assign was refused by the permission classifier ("[External System Writes]"). The seat does not re-issue a refused write.
    • The PR body is the dev's round-2 replacement, applied by the seat with issue_patch (the dev may not PATCH it).

    State

    In one stroke: the claim amendment, the PR body, ready and auto-merge (squash), plus the pm:dispatched strip on objectui#10530 (merged aa38e195), through the relay ops comment_edit + issue_patch + pr_ready + automerge_enable + labels_remove.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatplugin: kanbanpriority:p3

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions