Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

台账燃尽批次 7/8 · 单发长尾 9 包,14 符号(objectstack#4115) #3161

Closed

Description

@os-zhuang

objectstack#4115 债务台账燃尽第 7 批:每包只剩 1–2 条的长尾,一次清完,让台账里的包数从 19 收敛到只剩大头。动工前必读:守卫文件头与 objectstack#4115 的跟踪评论。

本批符号(14 条)

@object-ui/fields(2):FieldWidgetProps, isFileIdToken
@object-ui/layout(2):Page, PageHeaderProps
@object-ui/plugin-detail(2):FeedFilterMode, ObjectFieldLike
@object-ui/plugin-grid(2):ColumnSummaryConfig, isMultiValueField
@object-ui/collaboration(1):RealtimeConfig
@object-ui/plugin-charts(1):ChartConfig
@object-ui/plugin-form(1):FormSection
@object-ui/providers(1):Theme
@object-ui/runner(1):App
@object-ui/sdui-parser(1):ValidationResult

跨包已定名字(必须沿用,勿另起)

  • PageHeaderProps → @object-ui/app-shell 在批次 3(objectui#3169)已定名为 PageHeaderComponentProps。若 layout 这个是同一概念(React 组件 props),沿用同名,避免同一概念分裂成两套方言。
  • Theme 与 types(批次 2)、ValidationResult 与 core(批次 4)各有同名条目——沿用先行批次的判决,不另起炉灶。

其他情报

  • Page(layout)与 App(runner)是 React 组件与 spec 元数据类型撞名的典型,预计走改名或 ALLOW。
  • isFileIdToken/isMultiValueField 是函数:若语义与 spec 同名工具函数一致则改为 re-export(按引用同一性——批次 3 证实过,一个逐行相同的副本能通过所有行为测试,只有引用同一性能区分 re-export 与 fork),否则改名。

每条三选一

派生(spec 引用必须落在结构位)/ 改名(新名字必须先跑守卫——批次 3 一轮撞掉三个候选名,它们本身都是 spec 导出;配 tripwire 测试;禁止全局替换)/ ALLOW(理由 + parity 守卫)。

完成定义

台账移除并 --ledger diff 验证(removed 恰为本批、added 为空、其他包字节相同)、守卫/type-check/全量测试绿、变异测试、PR 引用本 issue 与 objectstack#4115、PR 合入后再更新跟踪评论并关闭本 issue。

Activity

  1. os-zhuang commented on Aug 2, 2026

    @os-zhuang
    ContributorAuthor

    PM 分诊(第 4 轮排期):本批与 #3160 必须串行,理由与本批 plugin-detail 条目的一处收敛。

    1. 与 #3160 串行(不同批派发)

    账本不是分散的:DEBT 块与 ALLOW 表都在同一个文件 scripts/check-spec-symbol-derivation.mjs 里。两批都要改它,而且各自的完成定义都要求 --ledger diff 验证「removed 恰为本批、added 为空、其他包字节相同」——并发跑必然文件冲突,且两边的验收断言会互相判负。#3160(批次 6)先行,本批随后。

    2. FeedFilterMode 的现场情报(#3206 已收敛进本批)

    本批 @object-ui/plugin-detail 的 FeedFilterMode 与 #3206 是同一条,#3206 已作为重复关闭并指向这里。它今天在 #3165 / #3205 的实施过程中被独立发现,附带的现场情报值得带上:


    Generated by Claude Code

  2. self-assigned this
    on Aug 2, 2026
  3. os-zhuang commented on Aug 2, 2026

    @os-zhuang
    ContributorAuthor

    认领:PM 循环第 5 轮(分片:objectui 整仓)
    会话:session_01PRJtkgUAaVG11FsJQbvZWA
    分支:claude/issue-3161-spec-symbol-batch7
    Worktree:objectui-issue-3161

    串行约束已解除:#3160(批次 6)已合入(PR #3220),账本文件空出。账本现状 17 条 / 11 包,本批清 14 条。

    批次 6 换来的四条经验,施工时按此办:

    1. 「已知情报」逐符号对读,不整簇采信 —— 批次 6 的预判只中一半(DroppedFieldsEvent 是手抄件,SecurityPolicy 与 spec 一个键都不重合)。本批正文点名的 PageHeaderProps → PageHeaderComponentProps(批次 3 已定名)属必须沿用,但其余"预计走改名/ALLOW"的判断仍要逐条实测。
    2. 手抄件的危害是它注销了一个检查 —— 批次 6 三份分别用「拓宽成 string」「与 string 求并」「[k: string]: unknown」关掉了编译期检查,其中索引签名那种只有守卫抓得住、parity 测试原理上抓不到。发现同类写法要在 PR 里点名。
    3. 派生优先取 input 侧 —— ViewTab 因三个 .default() 键在 output 侧变必填,用 output 会让授权侧形状不可表达。本批的 FormSection / ChartConfig / RealtimeConfig 若带 .default(),同一陷阱。
    4. 改名不动线上契约 —— 按标识符边界替换,字符串字面量(错误 name、事件名、CSS 类等)一个都不能动。

    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