Repository navigation
refactor(types)!: delete ActionExecutor and the Batch Operations pair nothing reads - #31056
Conversation
…ng reads SpecDashboardHeader, SpecDashboardHeaderAction, SpecFormView, SpecListColumn, SpecPageComponent, SpecPageRegion and SpecPageVariable leave the @object-ui/types entry. They were type-only aliases of @objectstack/spec/ui types with no reader in the workspace or in hotcrm; the unprefixed upstream names stay the import to use. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L9qibyZMb3aNnWtD2ukQXx
…es nothing reads" This reverts commit fa03472. The seven aliases re-export a subpath of another workspace package, which the ADR-0087 registration gate cannot resolve, so their retirement waits on a ruling for that case. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L9qibyZMb3aNnWtD2ukQXx
… nothing reads ActionExecutor, BatchOperationConfig and BatchOperationSummary leave ui-action.ts and the @object-ui/types entry. They were TypeScript-only shapes with no reader in the workspace or in hotcrm; the Transaction Support block beside them stays, core's TransactionManager reads it. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L9qibyZMb3aNnWtD2ukQXx
|
domain:ui#3 · os-tesla · session_01L9qibxW6qraU2Z3mwupUGp Contract-review-claim: session_01L9qibxW6qraU2Z3mwupUGp · head 697756b · 2026-11-06T23:28Z |
|
domain:ui#3 · os-tesla · session_01L9qibxW6qraU2Z3mwupUGp Contract reviewServed-tier: ① Derived judgments
② Semver level
③ Boundary flagsNone. No governed surface, no ④ Design judgmentDead surface only. Implemented-by: VERDICT: PASS |
|
domain:ui#3 · os-tesla · session_01L9qibxW6qraU2Z3mwupUGp 维护者速读
席位核对 — ACCEPT · head 697756b
|
Requested by Tesla · project thread
Part of #25921 (batch 11, claim 6696974190 with amendments 6697003965 naming the branch, 6697084388 naming the first batch and amendment 3 renaming it to this one; the card's other open items stay on it)
Clause-②: no (narrowing)
Metadata-protocol: none
维护者速读
@object-ui/types的ui-action.ts删除 3 个没人读的类型:ActionExecutor,以及 "Batch Operations" 一组的BatchOperationConfig、BatchOperationSummary。@object-ui/core的ActionRunner执行,留着会被当成 UI 协议包的公开承诺。TransactionManager在用)原样保留。对外部 npm 使用者是破坏性变更,带一个!patch changeset(BREAKING、FROM/TO、ADR-0087runtime-export-retired3 个)。回滚即 revert 本 PR。ui/packages/types/src/ui-action.ts(删掉的三个声明与新注释)、.changeset/25921-types-action-executor-batch-ops.md(迁移说明)、ui/packages/types/src/index.ts(入口列表与注释)。git grep -lw -e ActionExecutor -e BatchOperationConfig -e BatchOperationSummary -- ui packages预期只命中ui/packages/types里的退役注释、本 changeset 与 CHANGELOG;pnpm --dir ui exec vitest run packages/types/预期全绿。What changes
@object-ui/types(its.entry) loses 3 types ofsrc/ui-action.ts. They are deleted from the module, not only from the entry:ActionExecutor,BatchOperationConfig,BatchOperationSummary.src/ui-action.ts: theActionExecutorfunction type and the "Batch Operations (Q2 2026 - Spec v2.0.1 Enhancement)" block go; a note at the end of the file, beside the existing undo/redo note, names them and points at@object-ui/core'sActionRunner/ActionRunnerHandler. The "Transaction Support" block right after them stays:TransactionConfigandTransactionResultare imported by core'sTransactionManager.ts.src/index.ts: the three names leave the./ui-action.jstype list; a two-line comment names them..changeset/25921-types-action-executor-batch-ops.md: one!patch changeset, BREAKING, FROM/TO per name (no replacement in this package; actions run throughActionRunner), and the ADR-0087runtime-export-retiredmarker naming all 3.ui-action.tsis reached only through the.entry; no subpath entry of the package exports it.Why this batch and not the first one named. Amendment 6697084388 first named the seven
Spec-prefixed@objectstack/spec/uitype aliases of the entry (SpecFormViewand six more), also dead. That edit was made (fa03472) and reverted in this branch (ae6a942), becausecheck-adr-0087-registrationcannot verify predicate 2 for them: they areexport type { X as SpecX } from '@objectstack/spec/ui', a subpath of another workspace package, which the gate's export reader does not follow ("the declaration ofSpecFormViewcannot be located at the merge base"). The seat swapped the batch (amendment 3); the seven stay on the card, waiting on a predicate-2 ruling for that shape. The branch diff againstmaincarries only this batch.Tests
.d.tsis the one read.Verification
Census (read-only, before any edit; origin/main 81deb54, hotcrm 6961ab1)
ui/packages/*main entry; identifier-token index over every tracked file of both repositories minus CHANGELOGs, changesets, the lockfile and release notes; prose and tests count as consumers; then not taught in README/demo/docs and not named by a kept export's declaration).@object-ui/types: 707 entry names, 147 zero-outside, 45 candidates;ui-action.ts4 of them. Note: this project's filesui-seat-3/r2026-11-06/25921-b11-census.md.git grep -lwper name, whole repository: 0 hits outsideui/packages/types/; hotcrm 0 for all 3. Inside the package: no reader besides the declaration and the entry line.AnySchema, no subpath entry, not taught.OBJECTUI_LOCAL_ACTION_TYPES(the tool's fourth candidate; a runtime value pinned byspec-derived-unions.test.ts), and the Transaction trio (live in core).TransactionConfig(coreTransactionManager.ts).ui/packages/types/(the claim's read at 22:01Z, plus every PR opened since).Local runs on head 697756b (base 81deb54)
env -u OS_SKIP_DTS pnpm --filter '@object-ui/types...' build, then after the editenv -u OS_SKIP_DTS pnpm --filter @object-ui/types buildfrom a cleandist+tsbuildinfo: VERDICT command-exit 0. Builtdist: 0 files nameActionExecutor,BatchOperationConfigorBatchOperationSummary; the controlTransactionConfigis in 2.pnpm --filter @object-ui/types run type-checkandpnpm --dir ui exec vitest run packages/types/: VERDICT command-exit 0; Test Files 387 passed (387), Tests 10460 passed (10460).dist/index.d.ts: a scratch file importing the 3 names plus the controlTransactionConfig,tsc --noEmit --module nodenext: 3 errors (TS2305 / TS2724, one per retired name), 0 on the control line.node scripts/pm/dispatch-gates.mjs --commandson 697756b: 30 derived families, every line run with stdin closed, all exit 0 (pnpm --dir ui exec vitest run scripts/: Test Files 170 passed, 2 skipped (172), after building@objectstack/client...and@objectstack/formula...in this fresh worktree);--ranreconciliation: 30 derived, 30 run, 0 NOT-MEASURED, 0 UNRUN.check-adr-0087-registration --base origin/main: "verified: @object-ui/types#ActionExecutor (export, ui/packages/types/src/ui-action.ts)", and the same for the other two.node scripts/check-platform-checklist.mjs --changed-from origin/main: exit 0 (0 anchored files in the change set).pnpm --dir ui run check:new-line-citations: 0 new citations.(narrowing)arm), head 697756b: runs on this head after the PR opens; its VERDICT line and counts go into the os-dev-report comment on retire the zero-consumer surface: nine dead modules (2,211 LOC), plugin-ai, runner's publish flag, test-only reset helpers on public barrels, the providers trio, 122 dead i18n keys, root orphans #25921.ui-seat-3/r2026-11-06/25921-b11/.Acceptance notes
Spec-prefixed spec/ui aliases (SpecDashboardHeader,SpecDashboardHeaderAction,SpecFormView,SpecListColumn,SpecPageComponent,SpecPageRegion,SpecPageVariable) stay on retire the zero-consumer surface: nine dead modules (2,211 LOC), plugin-ai, runner's publish flag, test-only reset helpers on public barrels, the providers trio, 122 dead i18n keys, root orphans #25921: zero readers, but their retirement needs a predicate-2 ruling for re-export aliases of a workspace subpath. No gate card is filed now (seat's call).clearSharedDiscoveryCacheand the other barrel batches; in@object-ui/typesthe census listsdata-protocol.ts(3 real names in two blocks),designer.ts(Unified View with the objectui#12063 tombstone pin, Dashboard with a zod twin) and scattered singles.types/src/ai.tskeeps itsnevertombstones until the sunset rule of docs/adr: a sunset rule for @deprecated tombstones — 574 tags (504 in packages/types, 640 'never' members) with no rule for when a tombstone leaves the authoring face #25912; not touched here.Generated by Claude Code