Skip to content

sweep: dead-surface deletions — 7 zero-consumer items, one claim, one PR (findings-triage batch 2026-08-09) #3931

Description

@os-project-manager

Created by the maintainer-authorized one-off triage pass (2026-08-09, registered on objectstack#6015). Same shape as objectstack's spec sweep cards (#6486 family): one claim, one PR, N Fixes lines — the member cards stay open as finding and are ⛔ excluded from individual selection; they close when this sweep's PR merges.

Members (each verified zero-consumer by its own filing; re-verify premise at claim time)

Card Deletion
#3901 form-view.ts spec bridge's dead spec.aria read (key retired upstream, can never fire)
#3778 4 views:{objectName} cache invalidates with no cache writer — delete the dead invalidates (do NOT wire a cache nobody asked for)
#3775 second mergeViewsIntoObjects in @object-ui/core — zero consumers, drifted semantics
#3773 RecordContextValue.loading / .error — zero producers, zero consumers (if the implementing dev finds wiring them as cheap as removing, per the #3460 refresh precedent, STOP and ask — default is remove)
#3731 buildObjectDetailPageSchema — zero callers since MetadataDetailPage retired
#3740 @object-ui/plugin-report's react-dom peer declaration — never imported; keep the UMD external mapping, drop the peer row
#3736 object-detail custom widget's 60 lines of hardcoded Chinese copy — dormant code, zero callers; delete the dead widget body rather than translating dead text (AGENTS.md #-1)

Rules

  • Deletions only — no rewiring, no capability additions; any member that turns out to have a live consumer at claim time gets dropped from the PR with a comment on its card, not "fixed" speculatively.
  • Changeset per repo convention; each member's card cited in the PR body with its Fixes line.

Activity

  1. self-assigned this
    on Aug 17, 2026
  2. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    Collaborator

    认领(objectui 车道分片 PM,会话 session_01GTRjn8xBqp75dk7kFupVRt,批次 19):branch claude/issue-3931-dead-surface-sweep。按卡面规则执行:一 PR 七 Fixes(#3901/#3778/#3775/#3773/#3731/#3740/#3736),纯删除零重接线;逐成员认领时重验前提,发现活消费者的成员降出 PR 并在其卡留评论,不投机修;#3773 若接线与删除同廉价,按卡面停手问询条款回报(默认删)。


    Generated by Claude Code

  3. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    Collaborator

    前提重验:已失效 — 本卡七成员全部已处置,无 PR 可开

    批次 19 认领后按卡面规则逐成员重验零消费者前提,基线 origin/main @ 1b21b1aaa(worktree claude/issue-3931-dead-surface-sweep)。结论:七个成员卡全部已 closed,六个的删除面在我的基线之前就已落地,第七个被分诊明确裁定「不删」。删除面为空,未开 PR。

    逐成员读数

    卡 删除面当前状态 落地提交 / 处置
    #3901 spec.aria 读 已不存在(form-view.ts 仅剩记述删除的注释,:195 明写 “defaultSort (#3974) and aria (#3901) USED to be copied here”) d374cafa2 / PR #4809
    #3778 4 处 views:{objectName} invalidate 已不存在,且新增了 viewCacheInvalidation.pin.test.ts 反向钉住(:240 “no write path invalidates a `views:` key — nothing populates one”) d9d346307 / PR #4366(在另一张清扫卡 #4328 下)
    #3775 packages/core/src/utils/merge-views-into-objects.ts 文件已删,@object-ui/core 不再导出;残留引用全在 app-shell —— 即卡面要保留的那个活实现 d9d346307 / PR #4366
    #3773 RecordContextValue.loading / .error 已删,refresh 按 #3460 保留 d9d346307 / PR #4366
    #3731 apps/console/src/schemas/objectDetailPageSchema.ts 文件已删,registerObjectDetailWidgets import 已摘 275d7df13 / PR #4365
    #3736 整个 apps/console/src/components/schema/ 目录已删(按卡面「删死代码而非翻译死文本」,未翻译) 275d7df13 / PR #4365
    #3740 peer 行 仍在(package.json:43,src/ 零 import,UMD 映射在 vite.config.ts:46)—— 但卡已 closed (not planned) 分诊裁定保留,见下

    三个提交均为基线 1b21b1aaa 的祖先(git merge-base --is-ancestor 全部 YES)。

    读数控制(防止「grep 没命中」是假读数)

    宿主文件全部健在(form-view.ts 213 行、RecordContext.tsx 193 行、data-objectstack/src/index.ts 4586 行、core/src/index.ts 88 行),所以零命中是该行消失而非文件搬走;邻近词正查证明工具在咬:form-view.ts 另有 6 处 spec. 命中、data-objectstack 另有 5 处 metadataCache.invalidate(view:{objectName} / view-overrides:{objectName} 等键健在)、core/src/index.ts 仍导出 merge-filters。

    假消费者注入(编译器级证负,2 探针)

    预判方向 红。临时在 @object-ui/react 注入一个引用已删符号的文件,tsc --noEmit -p packages/react/tsconfig.json:

    error TS2305: Module '"@object-ui/core"' has no exported member 'mergeViewsIntoObjects'.
    error TS2339: Property 'loading' does not exist on type 'RecordContextValue'.
    error TS2339: Property 'error' does not exist on type 'RecordContextValue'.
    

    三条如预判全红,且该包无其他 error TS —— 删除是编译器可证的,不只是 grep 推断。探针文件已删除,工作树零 diff。

    #3740:与本卡处方冲突,需维护者裁

    这是唯一前提仍成立的成员(peer 声明存在、src/ 确实零 import),但不能按本卡处方删:#3740 已于 2026-08-10 被分诊 closed (not planned),理由是 PR #3727 的裁决刻意选择了固定组 peer 一致性而非逐包裁剪,「trimming this one peer would recreate exactly the inconsistency that ruling removed」,并三次复验维持;结语是「Reopen only if the plugin group's peer policy itself is revisited」。

    该裁决(08-10)晚于本卡创建(08-09),且 peerDependencies 是已发布包的公开契约、删除属用户可见变更。按「停手不猜」条款,我没有反转这个已作出的裁决,交回裁决权:

    建议 A,除非要重开插件组 peer 策略——那时应立一张覆盖全组的卡,而不是在死清扫卡里夹带单包改动。

    建议处置

    本卡建议 closed as not planned / superseded:六成员已由 #4328、#4365、#4809 三条线路吸收(#4328 是同族的后继清扫卡,重叠了本卡三个成员),第七成员已有独立裁决。派发前若比对成员卡 state 可省掉这一轮。


    Generated by Claude Code

  4. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    Collaborator

    PM 处置:关闭(superseded / not_planned)(批次 19,PM 会话 session_01GTRjn8xBqp75dk7kFupVRt)

    dev 前提重验(上一条评论)确认:七成员中六个已由后继清扫落地(#3778/#3775/#3773 经 #4328→PR#4366;#3731/#3736 经 PR#4365;#3901 经 PR#4809),第七个 #3740 已于 08-10 被三次复核的 not_planned 裁定收口(PR#3727 固定组 peer 一致性 > 单包裁剪)。编译级假消费者探针证实删除面确空(TS2305/TS2339 逐条命中)。

    #3740 的归属:不新开决策 —— 保留 peer 即现状,由既有裁定(#3727 + #3740 关闭语)确立;若未来要裁剪,载具是「插件组 peer 政策」整卡,不是死面清扫的搭车项。dev 的 A 建议与既有裁定一致,记录在案。

    空派记账(流程教训,记入车道):本 sweep 卡 08-09 立、08-17 派发时全部成员卡已 closed —— 选批读了本卡评论(零条)但未查成员卡状态。此后 sweep 类卡入批前,增加一步成员状态机读数(closed 成员数 = 成员总数即免派关卡)。烧掉一个批次席位换来这条纪律,记账不粉饰。


    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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions