Repository navigation
Closed
Labels
domain:devxDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchDispatched to a dev agent by /pm-dispatchpm:queueReady for the PM dispatch loopReady for the PM dispatch looptoolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surfaceFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
Description
维护者裁决(2026-08-06):同意退役,移出工作区。 devx 车道 PM 立单(会话 session_01GX3sL71LFq8m2usg6VqTSE)。
依据(四条实测证据,同向)
- 从未发布:VS Code Marketplace 与 Open VSX 双 404(2026-08-06 实测);
.github/workflows/零条 vsce/vsix 发布链路——不存在装了扩展的第三方,退役外部爆炸半径为零。 - 核心声明从未工作且无人察觉:VS Code 扩展的
jsonValidation指向一个不存在的文件 ——schemas/objectstack.schema.json从未存在过,也没有任何脚本生成它 #5028 的幽灵jsonValidation(指向从未存在的 schema 文件)静默失效整个生命周期,零用户报告。 - 产品主航道相反:真实 authoring 面是 AI agent(Claude Code)+
osCLI;维护者自述已长期不使用 VS Code。 - 持续注意力税:该包被每个全仓门禁扫描,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 犯错 = 消除休眠包的过期声明陷阱面。
执行范围
- 从 pnpm workspace 移除
packages/vscode-objectstack目录(连同其在pnpm-workspace.yaml/lockfile 的痕迹); - 全仓清扫对该扩展的提及(README、content/docs、AGENTS/skills 如有)——⛔
content/docs/releases/除外(历史页不改); - 各全仓门禁的计数随扫描面自动收缩(check:published-files 的 77 成员数、nul-bytes 文件数等)——如有门禁把成员数写死为断言,按实际数更新并在 PR 说明;
- changeset:按退役记录先例处置(该包从未发布,无 npm 面;沿 把 pm-dispatch 泛化为正式发布的 skill——任何 ObjectStack 项目(hotcrm、客户项目)可装即用,含平台问题上报规程 #4607「Releases nothing」式空 frontmatter 记退役理由,或 skip-changeset——dev 按
.changeset/内退役类先例定,报告说明); - Closes VS Code 扩展的
jsonValidation指向一个不存在的文件 ——schemas/objectstack.schema.json从未存在过,也没有任何脚本生成它 #5028(幽灵声明随宿主消失;VS Code 扩展的jsonValidation指向一个不存在的文件 ——schemas/objectstack.schema.json从未存在过,也没有任何脚本生成它 #5028 的 pm:on-hold 裁决锚点作废,由本单裁决取代)。
恢复路径(留档)
git 历史完整保留;若未来出现非 AI 用户的真实需求,按当时的 spec schema 重建(今天的代码届时也已过期,留着无复用价值)。
Metadata
Metadata
Assignees
Labels
domain:devxDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchDispatched to a dev agent by /pm-dispatchpm:queueReady for the PM dispatch loopReady for the PM dispatch looptoolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surfaceFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
Activity
os-zhuang commentedon Aug 6, 2026
PM 派发(devx 车道第 11 轮,会话
session_01GX3sL71LFq8m2usg6VqTSE;维护者裁决即立单正文):claude/issue-5825-retire-vscode-extensionpackages/vscode-objectstack/**+ workspace/lockfile 痕迹 + 全仓提及清扫(⛔content/docs/releases/不动)+ 门禁计数断言如有写死则更新 + changeset 按退役先例。pnpm install后 lockfile 干净;全仓 grepvscode-objectstack仅剩历史记录类命中(releases/changeset 历史/审计台账),逐条列白名单进报告。Fixes #5825+Closes #5028。Generated by Claude Code
os-zhuang commentedon Aug 6, 2026
os-dev 认领(devx 车道第 11 轮)。
session_01GX3sL71LFq8m2usg6VqTSEclaude/issue-5825-retire-vscode-extension/home/user/objectstack-issue-5825(基于origin/main)packages/vscode-objectstack/**;pnpm-workspace.yaml/lockfile 痕迹;全仓提及清扫(⛔content/docs/releases/不动);门禁写死计数断言按实际新数更新;changeset 按.changeset/退役先例处置。Generated by Claude Code
os-zhuang commentedon Aug 6, 2026
退役已实现 → 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,实测:共 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?npm i objectstack-vscode会打印退役提示,可指向本 issue。代价:一条命令。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(含已消费的)做包名解析,命中不在工作区的包即抛错。只删包之后:即:若不处理,合并后 每一次 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