Skip to content

退役 packages/vscode-objectstack(移出工作区)—— 维护者 2026-08-06 拍板 #5825

Closed

Description

@os-zhuang

维护者裁决(2026-08-06):同意退役,移出工作区。 devx 车道 PM 立单(会话 session_01GX3sL71LFq8m2usg6VqTSE)。

依据(四条实测证据,同向)

  1. 从未发布:VS Code Marketplace 与 Open VSX 双 404(2026-08-06 实测);.github/workflows/ 零条 vsce/vsix 发布链路——不存在装了扩展的第三方,退役外部爆炸半径为零。
  2. 核心声明从未工作且无人察觉:VS Code 扩展的 jsonValidation 指向一个不存在的文件 —— schemas/objectstack.schema.json 从未存在过,也没有任何脚本生成它 #5028 的幽灵 jsonValidation(指向从未存在的 schema 文件)静默失效整个生命周期,零用户报告。
  3. 产品主航道相反:真实 authoring 面是 AI agent(Claude Code)+ os CLI;维护者自述已长期不使用 VS Code。
  4. 持续注意力税:该包被每个全仓门禁扫描,VS Code 扩展的 os-view-grid 片段生成的 view 现在 parse 不过:list.defaultSort / list.pageSize 已被 #4001 关掉 #4917/VS Code 扩展的 jsonValidation 指向一个不存在的文件 —— schemas/objectstack.schema.json 从未存在过,也没有任何脚本生成它 #5028 两单均为 agent 在其上消耗的轮次。

三轴:业务需求零消费零拉动;长远合理性 = ADR-0049 enforce-or-remove 的包级应用(git 历史保底,未来若有非 AI 用户需求按当时 schema 重建);防 AI 犯错 = 消除休眠包的过期声明陷阱面。

执行范围

恢复路径(留档)

git 历史完整保留;若未来出现非 AI 用户的真实需求,按当时的 spec schema 重建(今天的代码届时也已过期,留着无复用价值)。

关联:#5028(被本单关闭)、#4917(该包最后一次实质修复)、ADR-0049。

Activity

  1. self-assigned this
    on Aug 6, 2026
  2. added
    toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    domain:devxDomain lane — seat card indexed by label:pm:seat
    on Aug 6, 2026
  3. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    ContributorAuthor

    PM 派发(devx 车道第 11 轮,会话 session_01GX3sL71LFq8m2usg6VqTSE;维护者裁决即立单正文):

    • dev 分支:claude/issue-5825-retire-vscode-extension
    • 文件面:删除 packages/vscode-objectstack/** + workspace/lockfile 痕迹 + 全仓提及清扫(⛔ content/docs/releases/ 不动)+ 门禁计数断言如有写死则更新 + changeset 按退役先例。
    • 验证要求:全仓门禁套件(ESLint job 等价的 check:* 全套)删除前后各跑一轮,后一轮必须全绿且计数收缩与删除面一致;pnpm install 后 lockfile 干净;全仓 grep vscode-objectstack 仅剩历史记录类命中(releases/changeset 历史/审计台账),逐条列白名单进报告。
    • PR 正文须写 Fixes #5825 + Closes #5028。

    Generated by Claude Code

  4. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    ContributorAuthor

    os-dev 认领(devx 车道第 11 轮)。

    • 会话:session_01GX3sL71LFq8m2usg6VqTSE
    • 分支:claude/issue-5825-retire-vscode-extension
    • worktree:/home/user/objectstack-issue-5825(基于 origin/main)
    • 文件面:删除 packages/vscode-objectstack/**;pnpm-workspace.yaml/lockfile 痕迹;全仓提及清扫(⛔ content/docs/releases/ 不动);门禁写死计数断言按实际新数更新;changeset 按 .changeset/ 退役先例处置。
    • 先跑删除前门禁基线记录计数,删除后再跑一轮做前后对账。

    Generated by Claude Code

  5. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    ContributorAuthor

    退役已实现 → PR #5834(draft),但正文一条依据不成立,牵出一个待裁决项

    会话 session_01GX3sL71LFq8m2usg6VqTSE。删除执行完毕、全仓门禁绿、计数逐项对账,细节在 PR。这里只报两件正文未预见的事。

    一、⚠️「从未发布 / 无 npm 面」不成立 —— 待裁决

    正文的四条依据里,第 1 条「从未发布」只对 VS Code Marketplace / Open VSX 成立(那里确实双 404,无 vsce/vsix 发布链路我也复核了:grep -rn vscode .github/ 零命中)。但 npm 上不是。 changeset publish 发布每个非 private 包,该包既非 private 又带 publishConfig.access: public,实测:

    $ npm view objectstack-vscode dist-tags
    { latest: '16.1.0', rc: '17.0.0-rc.3' }
    

    共 40+ 个版本,latest = 16.1.0(2026-07-22),rc = 17.0.0-rc.3(2026-08-03,即拍板前三天)。它是活跃在发布列车里的一等成员,不是休眠的未发布包。

    这不推翻退役裁决 —— 第 2/3/4 条依据都成立,且「没人装着这个扩展」的结论不受影响(npm tarball 只含 dist/README/CHANGELOG,装不成 VS Code 扩展)。但它推翻了正文据以决定 changeset 路线的那句「该包从未发布,无 npm 面」,并留下一个 我无权执行、需维护者拍板 的公共面动作:

    Q:退役后要不要 npm deprecate objectstack-vscode?

    • A. 补 deprecate(需 npm 发布凭据,维护者动作)。npm i objectstack-vscode 会打印退役提示,可指向本 issue。代价:一条命令。
    • B. 不补,静默停更。已发布版本永久留存(npm 不 unpublish),latest 永久停在 16.1.0,没有任何渠道告知 consumer 它已退役 —— 因为已删除的包无法在 changeset 里点名(changesets 对未知包名直接抛错),所以退役理由进不了任何 CHANGELOG。

    我的建议:A。 两轴都指向它 ——(1)长远合理性:ADR-0049 enforce-or-remove 的精神是「移除要留下可被发现的拒绝」,一个发布过 40+ 次、三天前还在发 rc 的包无声冻结,与「声明即强制」相反;(2)防 AI 犯错:未来 agent 检索到 objectstack-vscode@16.1.0 存在、无任何退役标记,会把它当可用依赖 —— 这正是本次退役想消灭的「过期声明陷阱」,只是搬到了 npm 上。B 的成本恰恰是本 issue 第三轴反对的东西。

    不阻塞 PR #5834 合并(PR 不改变任何已发布版本);A 可在合并后任意时刻补做。

    二、只删目录会打断整条发布链(已在 PR 修掉)

    RC 模式下 assemble-release-plan 会对 .changeset/ 里 全部 changeset(含已消费的)做包名解析,命中不在工作区的包即抛错。只删包之后:

    Error: Found changeset changelog-ships-in-tarball for package
    objectstack-vscode which is not in the workspace
    

    即:若不处理,合并后 每一次 Release 都会失败。两个 changeset 点名该包,按性质分别处置(vscode-snippets-parse-gate.md 待发布且只名该包 → 整删;changelog-ships-in-tarball.md 已消费含 60+ 包 → 只摘一行)。处置后 changeset status 退出码 0。记在这里供后续任何「包级退役」复用 —— 这一步不在正文执行范围里,但少了它退役就是把发布链焊死。

    附:两条安全 pin 变成空转(已另开 finding)

    form-data 与 undici 两条 OSV override 的唯一传递来源是 @vscode/vsce,随本次删除失去消费者,现在都不匹配任何东西。PR 里保留选择器、只更正注释(退役 PR 里顺手摘安全 pin 是降低安全姿态,应独立决定),另开 finding 记录待裁决。


    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

Labels

domain:devxDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpm:queueReady for the PM dispatch looptoolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions