Repository navigation
Commit b5fd350
refactor(types)!: delete ActionExecutor and the Batch Operations pair nothing reads (#31056)
<!-- claude-projects-attribution: {"github_login":"os-tesla"} -->
_Requested by **Tesla** · [project
thread](https://claude.ai/code/project/chan_01AXsQkLFKRdQCqQ3RTr6Jao?thread=cmsg_01AXsQkLFKRdQCqQ3RTr6JaoLSQNGnW5WkMBDcmSiLyjgn)_
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`。
- 为什么改:#25921 清理零消费者公开面;这 3 个名字在仓内与 hotcrm 都没有任何引用,动作实际由
`@object-ui/core` 的 `ActionRunner` 执行,留着会被当成 UI 协议包的公开承诺。
- 风险与回滚:纯类型删除,构建出的 JavaScript 不变;旁边的 "Transaction Support" 一组(core 的
`TransactionManager` 在用)原样保留。对外部 npm 使用者是破坏性变更,带一个 `!` patch
changeset(BREAKING、FROM/TO、ADR-0087 `runtime-export-retired` 3 个)。回滚即
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 of `src/ui-action.ts`.
They are deleted from the module, not only from the entry:
`ActionExecutor`, `BatchOperationConfig`, `BatchOperationSummary`.
- `src/ui-action.ts`: the `ActionExecutor` function 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`'s `ActionRunner` / `ActionRunnerHandler`.
The "Transaction Support" block right after them stays:
`TransactionConfig` and `TransactionResult` are imported by core's
`TransactionManager.ts`.
- `src/index.ts`: the three names leave the `./ui-action.js` type 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 through `ActionRunner`), and the ADR-0087
`runtime-export-retired` marker naming all 3.
`ui-action.ts` is 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/ui` type
aliases of the entry (`SpecFormView` and six more), also dead. That edit
was made (fa03472) and reverted in this branch (ae6a942), because
`check-adr-0087-registration` cannot verify predicate 2 for them: they
are `export 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 of `SpecFormView` cannot 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 against `main` carries only this batch.
## Tests
- No in-package test reads any of the 3 names, so no test changes.
- No ablation: a deletion of types with no tested behaviour behind it.
The reverse probe below is the proof that the built `.d.ts` is the one
read.
## Verification
<details><summary>Census (read-only, before any edit; origin/main
81deb54, hotcrm 6961ab1)</summary>
- Tool: the batch 8 census (TS AST of every published `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.ts` 4 of them. Note: this project's files
`ui-seat-3/r2026-11-06/25921-b11-census.md`.
- `git grep -lw` per name, whole repository: 0 hits outside
`ui/packages/types/`; hotcrm 0 for all 3. Inside the package: no reader
besides the declaration and the entry line.
- No zod twin, not an arm of `AnySchema`, no subpath entry, not taught.
- Left in the module on purpose: `OBJECTUI_LOCAL_ACTION_TYPES` (the
tool's fourth candidate; a runtime value pinned by
`spec-derived-unions.test.ts`), and the Transaction trio (live in core).
- Positive control, same module: `TransactionConfig` (core
`TransactionManager.ts`).
- No pending changeset names any of the 3; no open PR touches
`ui/packages/types/` (the claim's read at 22:01Z, plus every PR opened
since).
</details>
<details><summary>Local runs on head 697756b (base 81deb54)</summary>
- `env -u OS_SKIP_DTS pnpm --filter '@object-ui/types...' build`, then
after the edit `env -u OS_SKIP_DTS pnpm --filter @object-ui/types build`
from a clean `dist` + `tsbuildinfo`: VERDICT command-exit 0. Built
`dist`: 0 files name `ActionExecutor`, `BatchOperationConfig` or
`BatchOperationSummary`; the control `TransactionConfig` is in 2.
- `pnpm --filter @object-ui/types run type-check` and `pnpm --dir ui
exec vitest run packages/types/`: VERDICT command-exit 0; Test Files 387
passed (387), Tests 10460 passed (10460).
- Reverse probe against the built `dist/index.d.ts`: a scratch file
importing the 3 names plus the control `TransactionConfig`, `tsc
--noEmit --module nodenext`: 3 errors (TS2305 / TS2724, one per retired
name), 0 on the control line.
- `node scripts/pm/dispatch-gates.mjs --commands` on 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); `--ran`
reconciliation: 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.
- Full dogfood (owed by the `(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 #25921.
- Records: this project's files `ui-seat-3/r2026-11-06/25921-b11/`.
</details>
## Acceptance notes
- The seven `Spec`-prefixed spec/ui aliases (`SpecDashboardHeader`,
`SpecDashboardHeaderAction`, `SpecFormView`, `SpecListColumn`,
`SpecPageComponent`, `SpecPageRegion`, `SpecPageVariable`) stay on
#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).
- Still open on #25921 after this batch: `clearSharedDiscoveryCache` and
the other barrel batches; in `@object-ui/types` the census lists
`data-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.ts` keeps its `never` tombstones
until the sunset rule of #25912; not touched here.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01L9qibyZMb3aNnWtD2ukQXx)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent d959b0b commit b5fd350
3 files changed
Lines changed: 28 additions & 52 deletions
File tree
- .changeset
- ui/packages/types/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1252 | 1252 | | |
1253 | 1253 | | |
1254 | 1254 | | |
1255 | | - | |
1256 | | - | |
1257 | | - | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
1258 | 1258 | | |
1259 | 1259 | | |
1260 | 1260 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1235 | 1235 | | |
1236 | 1236 | | |
1237 | 1237 | | |
1238 | | - | |
1239 | | - | |
1240 | | - | |
1241 | | - | |
1242 | | - | |
1243 | | - | |
1244 | | - | |
1245 | | - | |
1246 | | - | |
1247 | | - | |
1248 | | - | |
1249 | | - | |
1250 | | - | |
1251 | | - | |
1252 | | - | |
1253 | | - | |
1254 | | - | |
1255 | | - | |
1256 | | - | |
1257 | | - | |
1258 | | - | |
1259 | | - | |
1260 | | - | |
1261 | | - | |
1262 | | - | |
1263 | | - | |
1264 | | - | |
1265 | | - | |
1266 | | - | |
1267 | | - | |
1268 | | - | |
1269 | | - | |
1270 | | - | |
1271 | | - | |
1272 | | - | |
1273 | | - | |
1274 | | - | |
1275 | | - | |
1276 | | - | |
1277 | | - | |
1278 | | - | |
1279 | | - | |
1280 | | - | |
1281 | | - | |
1282 | | - | |
1283 | | - | |
1284 | | - | |
1285 | | - | |
1286 | | - | |
1287 | 1238 | | |
1288 | 1239 | | |
1289 | 1240 | | |
| |||
1323 | 1274 | | |
1324 | 1275 | | |
1325 | 1276 | | |
| 1277 | + | |
| 1278 | + | |
| 1279 | + | |
| 1280 | + | |
| 1281 | + | |
1326 | 1282 | | |
1327 | 1283 | | |
1328 | 1284 | | |
| |||
0 commit comments