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.

台账燃尽批次 6/8 · data-objectstack + plugin-chatbot + plugin-list,12 符号(objectstack#4115) #3160

Closed

Description

@os-zhuang

objectstack#4115 债务台账燃尽第 6 批。动工前必读:守卫文件头与 objectstack#4115 的跟踪评论。

本批符号(12 条)

@object-ui/data-objectstack(5):CacheStats, DroppedFieldsEvent, MetadataSaveOptions, SecurityPolicy, ValidationError
@object-ui/plugin-chatbot(4):MessageContent, PendingActionRow, PendingActionStatus, Tool
@object-ui/plugin-list(3):ListView, UserFilters, ViewTab

已知情报:data-objectstack 是 spec 协议的直接客户端,SecurityPolicy/DroppedFieldsEvent 大概率是协议形状的手抄件,优先派生;ValidationError 与 core(批次 4)决策保持一致。plugin-chatbot 的 Tool/MessageContent 疑似与 spec AI 导出真撞名(本地是聊天 UI 概念),预计走改名。ListView 注意与 ListViewSchema(批次 1)的既有范式对齐。

每条三选一

派生(结构位)/ 改名(新名先过守卫 + tripwire;禁全局替换)/ ALLOW(理由 + parity 守卫)。

完成定义

同批次 1:台账移除并 diff 验证、守卫/type-check/全量测试绿、变异测试、PR 引用本 issue 与 objectstack#4115、更新跟踪评论后关闭本 issue。

Activity

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

    @os-zhuang
    ContributorAuthor

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

    排期说明:本批与 #3161(批次 7)串行,本批先行。原因是账本的 DEBT 块与 ALLOW 表都在同一个文件 scripts/check-spec-symbol-derivation.mjs 里,而两批的完成定义都要求 --ledger diff 验证「其他包字节相同」——并发跑会文件冲突且互相判负。#3161 待本批合入后派发。


    Generated by Claude Code

  3. os-zhuang commented on Aug 2, 2026

    @os-zhuang
    ContributorAuthor

    验收:ACCEPT → PR #3220(CI 15 项全绿,进入合并)。

    账本验收(本批的硬判据)通过:--ledger 重生成后 removed = 恰为本批 12 条、added = 0、其余 11 个包条目逐字节未变——批次 7 的 14 条一条没碰,串行约束守住了。守卫绿:11 declared dialects, 17 untriaged collisions in 11 packages(29 → 17,包数 14 → 11,三包整包出账)。五向变异测试全部报红,含第 5 向验证路径跳过的洞确实被 provenance 测试补上。

    分诊质量:issue 正文的已知情报只被采纳了对的那一半——DroppedFieldsEvent 确是手抄件,SecurityPolicy 与 spec 的那个一个键都不重合(供应链策略 vs 浏览器 CSP),MetadataSaveOptions 同理(写文件 vs HTTP 信封),两对 Extract = never 已钉住。这是"分诊颗粒度是符号不是簇"的又一次实证,与批次 5 结论一致但方向相反。

    三份手抄件各自注销掉一个本该生效的检查,这是本批最该记的收获:reason 拓宽成 string(注释自称前向兼容,而 toast 真的按 readonly_when 分支)、status: X | string(与 string 求并吸收全部字面量)、[k: string]: unknown(objectstack#4075 那个机制,只有守卫能抓、parity 测试原理上抓不到)。

    DataApiValidationError 保留运行时 name === 'ValidationError' 的判断正确:那是线上契约(normaliseClientError 与 error-message 都在嗅探),改符号只是源码改名。已加断言钉住。

    ListView / UserFilters 走 ALLOW:我复核后同意,维持已交付的方案。 判据是批次 5 的 AuthProvider 那条(而非"组件一律豁免"——同批 Field → FieldContainer 就被改了名):这两个渲染器在自己的声明处就绑住了 spec 派生类型(ListViewProps.schema / UserFiltersProps.config),没有声明任何形状,因此没有可漂移的形状;仓里也早已从另一侧消歧(SpecListView)。ALLOW 配了会过期就报红的钉扎,豁免活不过它的理由。改名的代价是重写头号导出与全部 JSX,换来零缺陷修复。若维护者更看重名字层面的无歧义,ObjectListView / UserFilterBar 两个候选名已跑过守卫,机械替换即可。

    越界发现:#3219(已在其上补了配置分歧的复核)、另两条(TabBar 家族无消费方、security.ts 陈旧注释)记在 PR 正文未单独立案——同意,都属"改了就是行为/API 变更,不该搭在符号燃尽 PR 上"。

    合入后我会更新 objectstack#4115 的跟踪评论并关闭本 issue。


    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