Commit 2779911
维护者 2026-08-06 拍板退役:该扩展没有 vsce/vsix 发布链路(`.github/workflows/`
零命中),因此 VS Code Marketplace / Open VSX 上不存在可安装副本;#5028 的幽灵
`jsonValidation` 指向从未存在的 `./schemas/objectstack.schema.json`(本次删除前
复核:包内无 `schemas/` 目录,`files` 白名单也不含它),整个生命周期静默失效且零
用户报告;产品主航道是 AI agent + `os` CLI。git 历史保底,未来若有真实需求按当时
schema 重建。
删除面:`packages/vscode-objectstack/**`(12 个文件)。`pnpm-workspace.yaml` 用
`packages/*` glob,无需改成员列表;lockfile 随 `pnpm install` 收缩 1102 行、
125 个包(`@vscode/vsce` 整棵子树)。
## 两个 issue 正文未预见的硬约束
**一、changesets 会重读已消费的 changeset,只删目录会打断整条发布链。** RC 模式下
`changeset version` 保留每个已消费的 .md,而 `assemble-release-plan` 对目录里
**全部** changeset 做包名解析,命中不在工作区的包即抛错。只删包之后
`changeset status` 直接红:
Error: Found changeset changelog-ships-in-tarball for package
objectstack-vscode which is not in the workspace
两个 changeset 的 frontmatter 点名该包,逐个按性质处置:
- `.changeset/vscode-snippets-parse-gate.md`(**待发布**,frontmatter 只有该包一项)
—— #4917 的 changeset,始终未随任何版本发布。宿主已退役,它永远无法 release,
整文件删除。
- `.changeset/changelog-ships-in-tarball.md`(**已消费**,frontmatter 含 60+ 包)
—— 仅移除 `"objectstack-vscode": patch` 一行。其余 60+ 包的 patch 条目与正文不动,
它们的 CHANGELOG 早已落地,不受影响。
处置后 `changeset status` 退出码 0,发布计划中零 vscode 命中。
**二、该包在 npm 上是真实发布面。** issue 正文的「从未发布 / 无 npm 面」只对
VS Code Marketplace 成立:`changeset publish` 发布每个非 private 包,该包因此在
npm 上有 40+ 个版本,`latest` = 16.1.0(2026-07-22),`rc` = 17.0.0-rc.3
(2026-08-03,即三天前)。本 PR 不改变已发布版本(npm 不会 unpublish),但退役后
它将静默停更。是否补 `npm deprecate objectstack-vscode` 需要 npm 发布凭据,属维护者
动作,已在 #5825 提出待裁决,不阻塞本 PR 合并。
## 提及清扫
`README.md` 包表、`AGENTS.md` 目录树、`content/docs/plugins/packages.mdx`
(删小节 + 计数 73→72、Client/DX 5→4)、`.claude/skills/pm-dispatch/SKILL.md`
的 `domain:devx` 归属、`scripts/publish-smoke-pack.mjs` 的 EXCLUDE 条目及其注释、
`.changeset/config.json` 的 fixed 锁步组(`check-changeset-fixed.mjs` 对组内不存在
的包名会红,必须同步)。
保留(历史记录类,改动即污染记录):`RELEASE_NOTES.md`(文件自述
「This file is historical.」,v4.0.4 那张表是当时 42 包清单的快照)、
`docs/DX_ROADMAP.md`(2026-02-13 审计快照,自述基线为「14 packages」,早已与今天
无关)、`.changeset/pm-dispatch-domain-table-full-coverage.md`(已发布的 changeset
历史)、`.changeset/pre.json` 的 `initialVersions`(changesets 自管状态文件;
`assemble-release-plan` 只对工作区内的包写入/读取该表,残留键永不被查,手改状态
文件是 RC 窗口出事的典型原因)。
## 安全 overrides:保留选择器,只更正注释
`form-data` 与 `undici` 两条 OSV pin 的唯一传递来源是 `@vscode/vsce`。删除后
`form-data` 从依赖树彻底消失,`undici` 仅剩 `@ai-sdk/provider-utils` 的 7.29.0 与
jsdom 的 8.9.0 —— 两者都在 `>=7.23.0 <7.29.0` 选择器之外。即两条 pin 现在都不再
匹配任何东西。
选择器保留不动:在退役 PR 里顺手摘掉安全 pin 是降低安全姿态,应当是独立决定;
留着则未来若有传递依赖重新引入,仍会落在已修补版本上。但注释不能继续指向一个已
不存在的包,故就地记录「CONSUMER GONE (#5825)」与保留理由。`brace-expansion`
注释的 minimatch 消费者清单同理去掉 `@vscode/vsce`(`ts-morph`/eslint/
`@typescript-eslint`/glob/archiver 仍在,该 pin 依旧生效)。
## 门禁计数对账(删除前后各跑一轮全套)
| 门禁 | before | after | 差值 |
| :--- | :--- | :--- | :--- |
| check:published-files | 70 publishable / 78 members | 69 / 77 | -1 / -1 |
| check:type-check-coverage | 63/78 covered | 62/77 | -1 / -1 |
| check-changeset-fixed | 70 public packages | 69 | -1 |
| check:nul-bytes | 5687 tracked text files | 5674 | -13 |
| check:engine-double-contract | 37 pinned / 165 DEBT / 2 exempt | 同 | 0(该包无台账条目) |
| check-override-consistency | 2 covered declarations | 2 | 0 |
nul-bytes 的 -13 与本 PR 删除的文件数精确相等(12 个包内文件 + 1 个待发布
changeset)。计数全部由 glob 实时计算,无写死断言需要改。
changeset 路线:走 `skip-changeset` 标签。存活包零行为改动,而已删除的包无法在
changeset 里点名(changesets 对未知包名直接抛错),故本 PR 不 release 任何东西。
`pr-automation.yml` 的门禁文案在 #5292 明确修正过处置顺序 —— 标签是首选,
空 frontmatter changeset 是 last resort,因为它是 changesets/action 的真实输入,
全空集会让 Release 静默绿着空跑(#4898,曾卡住 17.0.0-rc.2)。
Claude-Session: https://claude.ai/code/session_01GX3sL71LFq8m2usg6VqTSE
Co-authored-by: Claude <noreply@anthropic.com>
1 parent d93080d commit 2779911
22 files changed
Lines changed: 19 additions & 2789 deletions
File tree
- .changeset
- .claude/skills/pm-dispatch
- content/docs/plugins
- packages/vscode-objectstack
- snippets
- src
- test
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
70 | 69 | | |
71 | 70 | | |
72 | 71 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
78 | | - | |
79 | 78 | | |
80 | 79 | | |
81 | 80 | | |
| |||
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
424 | 424 | | |
425 | 425 | | |
426 | 426 | | |
427 | | - | |
| 427 | + | |
428 | 428 | | |
429 | 429 | | |
430 | 430 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
302 | 302 | | |
303 | 303 | | |
304 | 304 | | |
305 | | - | |
306 | 305 | | |
307 | 306 | | |
308 | 307 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
342 | 342 | | |
343 | 343 | | |
344 | 344 | | |
345 | | - | |
346 | 345 | | |
347 | 346 | | |
348 | 347 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| |||
442 | 442 | | |
443 | 443 | | |
444 | 444 | | |
445 | | - | |
446 | | - | |
447 | | - | |
448 | | - | |
449 | | - | |
450 | | - | |
451 | | - | |
452 | | - | |
453 | 445 | | |
454 | 446 | | |
455 | 447 | | |
| |||
This file was deleted.
0 commit comments