upstream-radar 0.43.4 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README-zh-CN.md +92 -77
  2. package/README.md +125 -94
  3. package/dist/src/cli.js +177 -5
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/dsh-compatibility-ledger.d.ts +2 -0
  6. package/dist/src/dsh-compatibility-ledger.d.ts.map +1 -1
  7. package/dist/src/dsh-compatibility-ledger.js +5 -0
  8. package/dist/src/dsh-compatibility-ledger.js.map +1 -1
  9. package/dist/src/dsh-directory-feed.d.ts +7 -3
  10. package/dist/src/dsh-directory-feed.d.ts.map +1 -1
  11. package/dist/src/dsh-directory-feed.js +59 -25
  12. package/dist/src/dsh-directory-feed.js.map +1 -1
  13. package/dist/src/dsh-headless-agent-plan.d.ts +7 -0
  14. package/dist/src/dsh-headless-agent-plan.d.ts.map +1 -1
  15. package/dist/src/dsh-headless-agent-plan.js +20 -1
  16. package/dist/src/dsh-headless-agent-plan.js.map +1 -1
  17. package/dist/src/dsh-install-observation.d.ts +6 -0
  18. package/dist/src/dsh-install-observation.d.ts.map +1 -1
  19. package/dist/src/dsh-install-observation.js +2 -2
  20. package/dist/src/dsh-install-observation.js.map +1 -1
  21. package/dist/src/dsh-install-plan.d.ts +7 -0
  22. package/dist/src/dsh-install-plan.d.ts.map +1 -1
  23. package/dist/src/dsh-install-plan.js +8 -2
  24. package/dist/src/dsh-install-plan.js.map +1 -1
  25. package/dist/src/dsh-surface-observation.d.ts +160 -0
  26. package/dist/src/dsh-surface-observation.d.ts.map +1 -0
  27. package/dist/src/dsh-surface-observation.js +1031 -0
  28. package/dist/src/dsh-surface-observation.js.map +1 -0
  29. package/dist/src/dsh-surface.d.ts +127 -0
  30. package/dist/src/dsh-surface.d.ts.map +1 -0
  31. package/dist/src/dsh-surface.js +667 -0
  32. package/dist/src/dsh-surface.js.map +1 -0
  33. package/dist/src/index.d.ts +2 -0
  34. package/dist/src/index.d.ts.map +1 -1
  35. package/dist/src/index.js +2 -0
  36. package/dist/src/index.js.map +1 -1
  37. package/dist/src/upstream-observer.d.ts +6 -0
  38. package/dist/src/upstream-observer.d.ts.map +1 -1
  39. package/dist/src/upstream-observer.js +206 -127
  40. package/dist/src/upstream-observer.js.map +1 -1
  41. package/dist/src/version.d.ts +1 -1
  42. package/dist/src/version.js +1 -1
  43. package/docs/README.zh-CN.md +19 -19
  44. package/package.json +1 -1
package/README-zh-CN.md CHANGED
@@ -1,118 +1,133 @@
1
1
  <h1 align="center">Upstream Radar</h1>
2
2
 
3
- <p align="center"><strong>每次 DeepSeek Harness 发布后,在用户踩坑前找出哪些插件坏了。</strong></p>
4
-
5
- <p align="center">
6
- <a href="README.md">English</a> · 简体中文
7
- </p>
3
+ <p align="center"><strong>持续验证 DeepSeek Harness 插件兼容性——覆盖 headless、Web 和 TUI。</strong></p>
8
4
 
9
5
  <p align="center">
6
+ <a href="README.md">English</a> ·
10
7
  <a href="https://github.com/MicroMilo/upstream-radar/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/MicroMilo/upstream-radar/actions/workflows/ci.yml/badge.svg"></a>
11
8
  <a href="https://www.npmjs.com/package/upstream-radar"><img alt="npm" src="https://img.shields.io/npm/v/upstream-radar"></a>
12
- <a href="https://github.com/MicroMilo/upstream-radar/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/MicroMilo/upstream-radar"></a>
9
+ <a href="https://github.com/MicroMilo/upstream-radar/stargazers"><img alt="GitHub Stars" src="https://img.shields.io/github/stars/MicroMilo/upstream-radar"></a>
13
10
  <a href="LICENSE"><img alt="Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-blue.svg"></a>
14
11
  </p>
15
12
 
16
- Upstream Radar 持续把一批真实插件发布物放到一次性隔离环境中,与不断变化的
17
- [DeepSeek Harness(DSH)](https://github.com/deepseek-ai/deepseek-harness)
18
- 版本重新配对测试。某个组合坏了,就生成一条可复现的 Issue;作者发布修复后,
19
- Radar 会再次检查并关闭闭环。
13
+ Upstream Radar 把精确的插件发布物、DSH 宿主和运行环境绑定在一起,让 Agent 根据仓库说明和
14
+ 已有失败证据推导受限环境,再放进一次性 GitHub VM 中实际验证。生态发生变化或证据过期后都会
15
+ 重跑,因此它检查的是**当前版本是否仍然可用**,而不只是比较一次 diff。
20
16
 
21
- **维护 100 个安装/加载目标 · 已提出 13 条 domain 报告 · 4 条已关闭 · 9 条开放或持续观察**
17
+ 它面向 [DeepSeek Harness(DSH)](https://github.com/deepseek-ai/deepseek-harness) 插件生态。
18
+ 静态检查是关于发布包的证据;隔离运行检查是关于某个精确的
19
+ `插件 × DSH × Node/profile` 组合的证据。两者都不会被包装成永久有效的“兼容”徽章或安全证书。
22
20
 
23
- [最近一次 Agent 驱动的 headless 运行](https://github.com/MicroMilo/upstream-radar/actions/runs/32684879130):
24
- **观测 96 个可执行目录插件 · 74 个兼容 · 22 个需要复核 · 0 个复现不兼容 · 4 个仅源码目标**。
25
- 需要复核的信号不会被宣传成插件故障。
21
+ > 已被 DSH 生态目录
22
+ > [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/blob/main/data/plugins/MicroMilo__upstream-radar.yml)、
23
+ > [awesome-deepseek-harness](https://github.com/0xsline/awesome-deepseek-harness) 和
24
+ > [awesome-deepseek-harness-plugins](https://github.com/imsai-sh/awesome-deepseek-harness-plugins/blob/main/catalog/plugins/micromilo--upstream-radar.json)
25
+ > 收录。
26
26
 
27
- 第一轮真实闭环从 29 个待复核插件开始。Agent 选择了 9 个受限重试,其中 7 个转为
28
- 兼容;另 2 个明确停在 Web 客户端依赖边界,没有被误报成插件坏了。
27
+ ## 为什么需要它
29
28
 
30
- 一句话:`DSH/插件变化 → Agent → 一次性 headless 虚拟机 → 精确证据 → 复测或可修复 Issue`。
29
+ 插件源码仓库看起来正常,但用户真正安装的发布物可能还没有适配当前 DSH 宿主:
31
30
 
32
- ## 为什么需要它
31
+ - README 宣传的版本根本没有发布;
32
+ - 插件实际导入了比 peer range 更新的 DSH 包;
33
+ - `package.json` 和 lockfile 描述的不是同一个版本;
34
+ - 安装阶段需要构建工具或依赖脚本,而用户环境没有;
35
+ - DSH 宿主依赖没有发布,完整依赖图无法建立。
33
36
 
34
- 仓库看起来正常,不代表用户实际安装的插件仍然可用。真实发布物必须同时适配某个
35
- DSH 版本、Node 运行时、profile 和依赖组合;其中任何一项更新,都可能让插件一夜
36
- 之间失效。
37
+ 这些是生态关系问题。分别检查两个仓库,很容易漏掉它们。
37
38
 
38
- Upstream Radar 检查的是这层真实关系,而不只是分别看两个仓库。本地发布前检查
39
- 回答“这个插件今天能不能过”;Radar 回答“生态变化后,维护中的哪些插件不再能过”。
39
+ ## Radar 做什么
40
40
 
41
- ## 完整闭环
41
+ 1. **建立统一兼容记录(IR)。** 对齐 npm 发布物、源码 commit、DSH 宿主、运行环境/profile、依赖路径和漏洞情报。
42
+ 2. **推导运行环境。** Agent 读取作者声明的安装说明和失败证据,只输出边界明确的安装计划。
43
+ 3. **验证不同执行平面。** 全新、无密钥的 runner 分别验证 headless 加载、Chromium Web 启动或真实 PTY TUI 交互。
44
+ 4. **让结果持续有效。** DSH/插件/依赖变化以及证据过期都会触发复测;确认的问题变成可修报告,干净复测后完成闭环。
42
45
 
43
46
  ```mermaid
44
47
  flowchart TB
45
- Change["定时运行 / DSH 或插件变化"] --> Agent["Agent 规划受限的 headless 重试"]
46
- Agent --> Runtime["一次性虚拟机:安装 → 注册 → 加载"]
47
- Runtime -->|"出现下一层门槛"| Agent
48
- Runtime -->|"兼容 / 超出 headless"| Evidence["发布精确证据"]
49
- Runtime -->|"复现真实失败"| Issue["创建一条可修复的 Issue"]
50
- Issue -->|"作者发布修复"| Change
48
+ Trigger["定时运行 / 上游变化 / 证据过期"] --> IR["精确 IR:插件字节 DSH ↔ 运行环境 ↔ 依赖"]
49
+ IR --> Agent["Agent 推导受限安装计划"]
50
+ Agent --> VM{"全新、无密钥的 GitHub VM"}
51
+ VM --> Headless["Headless:安装 注册 加载"]
52
+ VM --> Web["Web:Chromium → 启动交接 → 客户端包"]
53
+ VM --> TUI["TUI:PTY → 画面 → 输入 → 声明的退出方式"]
54
+ Headless --> Ledger["版本化证据账本 + 反向影响索引"]
55
+ Web --> Ledger
56
+ TUI --> Ledger
57
+ Ledger --> Decision{"能归责于插件吗?"}
58
+ Decision -->|"能"| Issue["生成一条可修复的维护者报告"]
59
+ Decision -->|"不能 / 检测器缺口"| Hold["暂扣报告并校准"]
60
+ Issue -->|"作者发布修复"| Trigger
61
+ Hold --> Trigger
51
62
  ```
52
63
 
53
- Agent 读取仓库说明和最新运行证据,决定 headless 是否重试、重试时允许哪些安装条件。
54
- 真正的结果由一次性虚拟机执行得出,而不是模型判断。模型不能凭空增加安装包、不能
55
- 进入目标虚拟机执行,也不能把缺失证据说成通过。
64
+ Agent 可以选择作者声明的构建包、profile 设置和下一次受限重试。精确指纹决定一份报告能填入
65
+ 哪个测试格子;真正的结果由一次性虚拟机执行得出,而不是模型判断。缺失证据永远不能变成通过。
66
+
67
+ ## 试试一个真实检查
68
+
69
+ 第一次检查不需要本地 DSH profile,也不会执行插件代码:
56
70
 
57
- ## 你会得到什么
71
+ ```bash
72
+ npx --yes upstream-radar@0.44.0 inspect \
73
+ @sanqi-normal/dsh-webui-market-plugin@0.5.4 \
74
+ --deep --fail-on never
75
+ ```
58
76
 
59
- - `插件版本 × DSH 版本 × Node/profile` 的精确结果,而不是永不过期的“兼容”标签。
60
- - 把 Agent 规划的后续动作,与真实发布物的安装、注册、加载结果放在一起判断。
61
- - DSH 或插件变化后自动重新检查,而不是只生成一次报告。
62
- - 同一问题持续更新;回归时重新打开;干净复测通过后自动关闭。
77
+ 这个历史 DSH 插件版本会返回 `review / incomplete`,因为它发布的宿主依赖链指向了一个不可用的包。
78
+ 这是可复现的发布/宿主契约问题,不是恶意行为指控。查看[完整证据报告](examples/dsh/reports/sanqi-market-plugin-dependency-resolution.md)。
63
79
 
64
- ## 我们闭环中提出的 domain 报告
80
+ 如果要检查自己的公开仓库,而不安装它:
65
81
 
66
- 以下是 Upstream Radar 提出的 13 条面向维护者的报告。它们不全都表示
67
- “插件坏了”:第一组是运行时兼容性,第二组是精确发布物/安装边界,第三组是
68
- 持续监控所依赖的依赖图是否可信。
82
+ ```bash
83
+ npx --yes upstream-radar@0.44.0 scan \
84
+ https://github.com/owner/dsh-plugin \
85
+ --fail-on never
86
+ ```
69
87
 
70
- ### DSH 宿主/插件契约 · 2
88
+ 仓库扫描会读取源码 manifest、DSH 元数据和 lockfile;不会安装依赖、执行 lifecycle script、加载插件、启动 DSH 或调用 LLM。
71
89
 
72
- - **已关闭** · [Sanqi-normal/dsh-webui-market-plugin#5](https://github.com/Sanqi-normal/dsh-webui-market-plugin/issues/5)
73
- - **开放** · [shaoshi20/dshscan#1](https://github.com/shaoshi20/dshscan/issues/1)
90
+ ## 让它持续运行
74
91
 
75
- ### 发布物与安装契约 · 7 条
92
+ 把下面任意一个维护好的 workflow 复制到你的仓库:
76
93
 
77
- - **已关闭** · [1na-ko/dsh-hdc-bridge#3](https://github.com/1na-ko/dsh-hdc-bridge/issues/3)
78
- - **已关闭** · [6Mikao9/dsh-wsl-workspace#6](https://github.com/6Mikao9/dsh-wsl-workspace/issues/6)
79
- - **已关闭** · [3274375092/dsh-voice#2](https://github.com/3274375092/dsh-voice/issues/2)
80
- - **开放** · [AmeKrance/anan-thermal-monitor#1](https://github.com/AmeKrance/anan-thermal-monitor/issues/1)
81
- - **开放** · [AbcdefgXW/dsh-msg-hub#3](https://github.com/AbcdefgXW/dsh-msg-hub/issues/3)
82
- - **开放** · [030611/dsh-verification-receipt#3](https://github.com/030611/dsh-verification-receipt/issues/3)
83
- - **开放** · [0xsline/dsh-spotlight#5](https://github.com/0xsline/dsh-spotlight/issues/5)
94
+ - [跨多个 DSH 版本检查一个精确插件](examples/github-actions/dsh-plugin-review-minimal.yml):手动触发,得到发布物证据和隔离加载矩阵。
95
+ - [每天观察一个插件仓库](examples/github-actions/upstream-observer-minimal.yml):比较 commit、发布版本、manifest 和依赖图,只有发生重要变化才唤起 Agent。
96
+ - [在 CI 中运行依赖门禁](examples/github-actions/upstream-radar.yml):在合并前检查 lockfile 或审查过的 Radar 配置。
84
97
 
85
- ### 依赖图与源码/发布版本对齐 · 4 条
98
+ 隔离的 [headless](.github/workflows/observe-dsh-plugin-install.yml)
99
+ [Web/TUI](.github/workflows/observe-dsh-plugin-surface.yml) workflow 都使用全新的 GitHub 托管 runner。
100
+ 它们不是你的电脑,也不会接收项目或模型密钥。
86
101
 
87
- - **开放** · [lninghaha/dsh-coding-subscription-oauth#14](https://github.com/lninghaha/dsh-coding-subscription-oauth/issues/14)
88
- - **开放** · [AbcdefgXW/dsh-msg-hub#1](https://github.com/AbcdefgXW/dsh-msg-hub/issues/1)
89
- - **开放** · [AbcdefgXW/dsh-toolbox-web#1](https://github.com/AbcdefgXW/dsh-toolbox-web/issues/1)
90
- - **开放** · [13071301808/dsh-composer-expand#1](https://github.com/13071301808/dsh-composer-expand/issues/1)
102
+ ## 来自真实生态的结果
91
103
 
92
- 你记得的 browser/web 案例——[`dsh-web-ui#35`](https://github.com/zhu1090093659/dsh-web-ui/issues/35)
93
- [`dsh-web-ui#71`](https://github.com/zhu1090093659/dsh-web-ui/issues/71)——是有价值的历史兼容性
94
- 对照,且目前已关闭;但它们不是 Upstream Radar 提出的报告,所以不计入上面的 13 条。
95
- 当前维护中的 `dsh-browser` 条目也都观测为兼容,不应被列成问题。
104
+ 当前的[100 插件兼容性 feed](feeds/dsh-plugin-compatibility.md)记录了 74 个精确 headless
105
+ 通过、22 个仅待复核结果、0 个已复现不兼容和 4 个仅仓库条目。在真正观测所需的
106
+ Web/client 或仓库安装平面之前,待复核项不会被包装成插件故障。
96
107
 
97
- 查看[完整分类与证据索引](docs/domain-reports.md),其中区分了动态复现、源码/发布物证据,
98
- 以及仍需维护者确认的弱结论。
108
+ 首批非 headless 测试已经在 GitHub 托管 VM 中跑通:
99
109
 
100
- ## 检查一个插件
110
+ | 精确测试格子 | 实际证据 | 结果 |
111
+ | --- | --- | --- |
112
+ | [`dsh-univer-office@0.2.9 × DSH 0.1.1-rc.2 × Web`](https://github.com/MicroMilo/upstream-radar/actions/runs/32823035297/job/97726205358) | HTTP 200、DSH 启动完成交接、客户端下载成功、浏览器和页面无错误 | **兼容** |
113
+ | [`@deepseek-harness-tui/dsh-tui@0.9.2 × DSH 0.1.1-rc.2 × TUI`](https://github.com/MicroMilo/upstream-radar/actions/runs/32823035297/job/97726205289) | 真实 PTY 画面、键盘输入、按文档双击 Ctrl-C 后以 code 0 退出 | **兼容** |
114
+ | [`@linxin666/dsh-web-all@0.3.3 × DSH 0.1.1-rc.2 × Web`](https://github.com/MicroMilo/upstream-radar/actions/runs/32828788296/job/97742850608) | Agent 批准 4 个依赖构建;聚合客户端包返回 200;启动清单、应用挂载和插件实体相互吻合 | **兼容** |
101
115
 
102
- ```bash
103
- npx --yes upstream-radar@0.43.4 review dsh-plugin \
104
- <包名>@<版本> \
105
- --dsh-version <DSH版本>
106
- ```
116
+ 两次首次测试都被 Radar 暂扣,没有提交给作者:TUI 检测器只发送了一次 Ctrl-C,而插件文档要求
117
+ 连按两次;Web 检测器把 Cordis 内部加载行误当成公开 npm 模块 ID。我们修正两份测试契约,并用
118
+ 相同精确发布物复测。聚合 Web 案例仍如实保留一个非阻塞的 `/status` 探测 404,但不会把这条可选
119
+ 请求误判为插件启动失败。
120
+
121
+ 截至 2026-08-25,Radar 共向维护者提交了 13 条报告。比数量更重要的是处理结果:
107
122
 
108
- 需要执行插件代码时,请使用仓库维护的
109
- [隔离观察工作流](.github/workflows/observe-dsh-plugin-install.yml):每个组合都会获得
110
- 一台全新的、无密钥的 GitHub 托管虚拟机和受限容器。
123
+ | 结果 | 报告 |
124
+ | --- | --- |
125
+ | **已发布修复并复核(5)** | [Sanqi #5](https://github.com/Sanqi-normal/dsh-webui-market-plugin/issues/5)(`0.5.5`)、[HDC #3](https://github.com/1na-ko/dsh-hdc-bridge/issues/3)(`0.7.3`)、[Voice #2](https://github.com/3274375092/dsh-voice/issues/2)(`0.2.6`)、[Msg Hub #1](https://github.com/AbcdefgXW/dsh-msg-hub/issues/1)、[Toolbox Web #1](https://github.com/AbcdefgXW/dsh-toolbox-web/issues/1) |
126
+ | **维护者复核或补充契约(3)** | [Msg Hub #3](https://github.com/AbcdefgXW/dsh-msg-hub/issues/3)、[Spotlight #5 / PR #7](https://github.com/0xsline/dsh-spotlight/pull/7)、[WSL Workspace #6](https://github.com/6Mikao9/dsh-wsl-workspace/issues/6)——均已关闭,但不冒充运行时修复 |
127
+ | **仍开放(5)** | [Anan #1](https://github.com/AmeKrance/anan-thermal-monitor/issues/1)、[Verification Receipt #3](https://github.com/030611/dsh-verification-receipt/issues/3)、[dshscan #1](https://github.com/shaoshi20/dshscan/issues/1)、[OAuth #14](https://github.com/lninghaha/dsh-coding-subscription-oauth/issues/14)、[Composer Expand #1](https://github.com/13071301808/dsh-composer-expand/issues/1) |
111
128
 
112
- 你还可以查看[实时兼容性矩阵](examples/dsh/install-observer/README.md)
113
- [可供目录消费的兼容性结果](feeds/dsh-plugin-compatibility.md)、
114
- [第一批 50 个插件](examples/dsh/first-batch/README.md)和
115
- [架构说明](docs/architecture.md)。
129
+ “关闭”不自动等于“修复”。[完整的 domain 报告索引](docs/domain-reports.md)逐条保留了证据、
130
+ 验证等级、PR 覆盖和剩余边界。
116
131
 
117
132
  <p align="center">
118
133
  <strong>如果 Upstream Radar 对 DSH 生态有帮助,欢迎<a href="https://github.com/MicroMilo/upstream-radar">点一个 Star</a> ⭐</strong>
package/README.md CHANGED
@@ -1,129 +1,160 @@
1
1
  <h1 align="center">Upstream Radar</h1>
2
2
 
3
- <p align="center"><strong>Know which DeepSeek Harness plugins break after every release—before users do.</strong></p>
4
-
5
- <p align="center">
6
- English · <a href="README-zh-CN.md">简体中文</a>
7
- </p>
3
+ <p align="center"><strong>Always-on compatibility testing for DeepSeek Harness plugins—across headless, Web, and TUI.</strong></p>
8
4
 
9
5
  <p align="center">
6
+ <a href="README-zh-CN.md">简体中文</a> ·
10
7
  <a href="https://github.com/MicroMilo/upstream-radar/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/MicroMilo/upstream-radar/actions/workflows/ci.yml/badge.svg"></a>
11
8
  <a href="https://www.npmjs.com/package/upstream-radar"><img alt="npm" src="https://img.shields.io/npm/v/upstream-radar"></a>
12
9
  <a href="https://github.com/MicroMilo/upstream-radar/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/MicroMilo/upstream-radar"></a>
13
10
  <a href="LICENSE"><img alt="Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-blue.svg"></a>
14
11
  </p>
15
12
 
16
- Upstream Radar continuously retests a maintained fleet of exact published
17
- plugins against changing
18
- [DeepSeek Harness (DSH)](https://github.com/deepseek-ai/deepseek-harness)
19
- releases in disposable runners. When a pair breaks, it produces a reproducible
20
- issue; when the author ships a fix, it retests and closes the loop.
13
+ Upstream Radar binds exact plugin bytes to an exact DSH host and runtime, lets an
14
+ Agent derive a bounded environment from repository instructions and prior
15
+ evidence, then proves the relationship in disposable GitHub VMs. It runs again
16
+ when the ecosystem changes **or evidence expires**, so it tests the current
17
+ version—not only the diff.
21
18
 
22
- **100 maintained install/load targets · 13 domain reports filed · 4 closed · 9 open or under watch**
19
+ It is built for the [DeepSeek Harness (DSH)](https://github.com/deepseek-ai/deepseek-harness)
20
+ plugin ecosystem. A static review is evidence about a package; an isolated
21
+ runtime review is evidence about one exact `plugin × DSH × Node/profile` pair.
22
+ Neither is presented as a timeless compatibility badge or a security certificate.
23
23
 
24
- [Latest Agent-driven headless run](https://github.com/MicroMilo/upstream-radar/actions/runs/32684879130):
25
- **96 executable catalog cells observed · 74 compatible · 22 need review · 0 reproduced incompatibilities · 4 source-only**.
26
- Review signals are never advertised as plugin failures.
24
+ > Listed by the DSH ecosystem in
25
+ > [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/blob/main/data/plugins/MicroMilo__upstream-radar.yml),
26
+ > [awesome-deepseek-harness](https://github.com/0xsline/awesome-deepseek-harness), and
27
+ > [awesome-deepseek-harness-plugins](https://github.com/imsai-sh/awesome-deepseek-harness-plugins/blob/main/catalog/plugins/micromilo--upstream-radar.json).
27
28
 
28
- The first live loop started with 29 review cells. The Agent selected nine
29
- bounded retries; seven became compatible, while two stopped at an explicit Web
30
- client dependency boundary instead of being mislabeled as broken.
29
+ ## The problem
31
30
 
32
- In one line: `DSH/plugin change Agent disposable headless VM exact evidence → retest or fixable issue`.
31
+ A source repository can be green while the package users install is not ready
32
+ for the current DSH host:
33
33
 
34
- ## Why it exists
34
+ - the README advertises a version that was never published;
35
+ - a plugin imports a newer DSH package than its peer range allows;
36
+ - `package.json` and the lockfile describe different releases;
37
+ - an install-time build or dependency script needs tools the user does not have;
38
+ - a DSH host dependency is missing, so the dependency graph cannot be completed.
35
39
 
36
- A healthy repository does not prove that its published plugin still works.
37
- The artifact users install must resolve against a specific DSH host, Node
38
- runtime, profile, and dependency set—and any of them can change overnight.
40
+ These are ecosystem relationship problems. They are easy to miss when the two
41
+ repositories are checked separately.
39
42
 
40
- Upstream Radar checks the relationship, not just the two repositories. A local
41
- pre-publish check asks, “does this plugin pass today?” Radar asks, “which
42
- maintained plugins stopped passing after the ecosystem changed?”
43
+ ## What Radar does
43
44
 
44
- ## The loop
45
+ 1. **Build one exact compatibility record (IR).** Align the npm artifact,
46
+ source commit, DSH host, runtime/profile, dependency paths, and advisories.
47
+ 2. **Derive the environment.** An Agent reads declared installation guidance
48
+ and failed evidence, then emits only a bounded install plan.
49
+ 3. **Prove each execution plane.** Fresh, secret-free runners exercise headless
50
+ load, Chromium Web boot, or a real PTY TUI interaction.
51
+ 4. **Keep the result alive.** DSH/plugin/dependency changes and evidence expiry
52
+ trigger retests; confirmed failures become fixable reports and clean retests
53
+ close the loop.
45
54
 
46
55
  ```mermaid
47
56
  flowchart TB
48
- Change["Schedule / DSH or plugin change"] --> Agent["Agent plans a bounded headless retry"]
49
- Agent --> Runtime["Disposable VM: install register → load"]
50
- Runtime -->|"next observed gate"| Agent
51
- Runtime -->|"compatible / outside headless"| Evidence["Publish exact evidence"]
52
- Runtime -->|"reproduced failure"| Issue["Open one fixable issue"]
53
- Issue -->|"author ships a fix"| Change
57
+ Trigger["Schedule / upstream change / evidence expiry"] --> IR["Exact IR: plugin bytes DSH ↔ runtime ↔ dependencies"]
58
+ IR --> Agent["Agent derives a bounded install plan"]
59
+ Agent --> VM{"Fresh secret-free GitHub VM"}
60
+ VM --> Headless["Headless: install register load"]
61
+ VM --> Web["Web: Chromium boot handoff → client bundle"]
62
+ VM --> TUI["TUI: PTY frame → input → declared shutdown"]
63
+ Headless --> Ledger["Versioned evidence ledger + reverse impact index"]
64
+ Web --> Ledger
65
+ TUI --> Ledger
66
+ Ledger --> Decision{"Plugin-attributable failure?"}
67
+ Decision -->|"yes"| Issue["Produce one fixable maintainer report"]
68
+ Decision -->|"no / detector gap"| Hold["Hold the report and calibrate"]
69
+ Issue -->|"author ships a fix"| Trigger
70
+ Hold --> Trigger
54
71
  ```
55
72
 
56
- The Agent interprets repository instructions and the latest runtime evidence,
57
- then chooses whether and how headless should retry. The disposable runner—not
58
- the model—establishes the result. A model cannot invent a build package, execute
59
- inside the target VM, or turn missing evidence into a pass.
60
-
61
- ## What you get
62
-
63
- - An exact result for `plugin version × DSH version × Node/profile`, not a
64
- timeless “compatible” badge.
65
- - Agent-planned follow-ups joined with real install/register/load evidence from
66
- the published artifact.
67
- - A maintained result that is retested when DSH or the plugin changes.
68
- - One managed issue that is updated on repeat failures, reopened on regression,
69
- and closed after a clean retest.
70
-
71
- ## Domain reports from our loop
72
-
73
- These are the 13 maintainer-facing reports filed by Upstream Radar. They are
74
- not all “the plugin is broken”: the first group is runtime compatibility, the
75
- second is the exact package/install boundary, and the third is whether a
76
- dependency graph can be trusted for continuous monitoring.
73
+ The Agent may choose declared build packages, profile setup, and the next bounded
74
+ retry. Exact fingerprints decide which cell a report can satisfy, and the
75
+ disposable runner—not the model—establishes the result. Missing evidence can
76
+ never become a pass.
77
77
 
78
- ### DSH host/plugin contract · 2
78
+ ## Try a real check
79
79
 
80
- - **closed** · [Sanqi-normal/dsh-webui-market-plugin#5](https://github.com/Sanqi-normal/dsh-webui-market-plugin/issues/5)
81
- - **open** · [shaoshi20/dshscan#1](https://github.com/shaoshi20/dshscan/issues/1)
80
+ No local DSH profile is needed for this first check. It reviews one exact
81
+ published artifact without executing plugin code:
82
82
 
83
- ### Published artifact and install contract · 7
84
-
85
- - **closed** · [1na-ko/dsh-hdc-bridge#3](https://github.com/1na-ko/dsh-hdc-bridge/issues/3)
86
- - **closed** · [6Mikao9/dsh-wsl-workspace#6](https://github.com/6Mikao9/dsh-wsl-workspace/issues/6)
87
- - **closed** · [3274375092/dsh-voice#2](https://github.com/3274375092/dsh-voice/issues/2)
88
- - **open** · [AmeKrance/anan-thermal-monitor#1](https://github.com/AmeKrance/anan-thermal-monitor/issues/1)
89
- - **open** · [AbcdefgXW/dsh-msg-hub#3](https://github.com/AbcdefgXW/dsh-msg-hub/issues/3)
90
- - **open** · [030611/dsh-verification-receipt#3](https://github.com/030611/dsh-verification-receipt/issues/3)
91
- - **open** · [0xsline/dsh-spotlight#5](https://github.com/0xsline/dsh-spotlight/issues/5)
92
-
93
- ### Dependency graph and source/release alignment · 4
94
-
95
- - **open** · [lninghaha/dsh-coding-subscription-oauth#14](https://github.com/lninghaha/dsh-coding-subscription-oauth/issues/14)
96
- - **open** · [AbcdefgXW/dsh-msg-hub#1](https://github.com/AbcdefgXW/dsh-msg-hub/issues/1)
97
- - **open** · [AbcdefgXW/dsh-toolbox-web#1](https://github.com/AbcdefgXW/dsh-toolbox-web/issues/1)
98
- - **open** · [13071301808/dsh-composer-expand#1](https://github.com/13071301808/dsh-composer-expand/issues/1)
99
-
100
- The browser/web cases you may remember—[`dsh-web-ui#35`](https://github.com/zhu1090093659/dsh-web-ui/issues/35)
101
- and [`dsh-web-ui#71`](https://github.com/zhu1090093659/dsh-web-ui/issues/71)—are
102
- useful historical compatibility references and are closed, but they were not
103
- filed by Upstream Radar and are therefore not counted above. The maintained
104
- `dsh-browser` entries currently observed compatible are also not findings.
83
+ ```bash
84
+ npx --yes upstream-radar@0.44.0 inspect \
85
+ @sanqi-normal/dsh-webui-market-plugin@0.5.4 \
86
+ --deep --fail-on never
87
+ ```
105
88
 
106
- See the [full classification and evidence index](docs/domain-reports.md) for
107
- validation level, impact, and the boundary between a confirmed runtime issue
108
- and a report that only needs maintainer confirmation.
89
+ This historical DSH plugin release returns `review / incomplete` because its
90
+ published host dependency chain reaches an unavailable package. That is a
91
+ useful, reproducible release/host-contract report—not a claim of malicious
92
+ behavior. See the [full evidence report](examples/dsh/reports/sanqi-market-plugin-dependency-resolution.md).
109
93
 
110
- ## Run one check
94
+ To review your own public repository without installing it:
111
95
 
112
96
  ```bash
113
- npx --yes upstream-radar@0.43.4 review dsh-plugin \
114
- <package>@<version> \
115
- --dsh-version <dsh-version>
97
+ npx --yes upstream-radar@0.44.0 scan \
98
+ https://github.com/owner/dsh-plugin \
99
+ --fail-on never
116
100
  ```
117
101
 
118
- For code-executing checks, use the maintained
119
- [isolated observer workflow](.github/workflows/observe-dsh-plugin-install.yml):
120
- each pair receives a fresh, secret-free GitHub-hosted VM and restricted
121
- container.
122
-
123
- Inspect the [live compatibility matrix](examples/dsh/install-observer/README.md),
124
- the [directory-consumable evidence feed](feeds/dsh-plugin-compatibility.md),
125
- the [first 50-plugin corpus](examples/dsh/first-batch/README.md), or the
126
- [architecture notes](docs/architecture.md).
102
+ The repository scan reads source manifests, DSH metadata, and lockfiles. It does
103
+ not install dependencies, run lifecycle scripts, load the plugin, start DSH, or
104
+ call an LLM.
105
+
106
+ ## Run it on every change
107
+
108
+ Copy one of the maintained workflows into your repository:
109
+
110
+ - [Review one exact plugin across DSH versions](examples/github-actions/dsh-plugin-review-minimal.yml)
111
+ — a manual check with artifact evidence and an isolated load matrix.
112
+ - [Observe one plugin repository every day](examples/github-actions/upstream-observer-minimal.yml)
113
+ — compares commits, published versions, manifests, and dependency graphs, then
114
+ wakes an Agent only when there is a meaningful change.
115
+ - [Run the dependency gate in CI](examples/github-actions/upstream-radar.yml)
116
+ — checks the lockfile or reviewed Radar configuration before merge.
117
+
118
+ The isolated [headless](.github/workflows/observe-dsh-plugin-install.yml) and
119
+ [Web/TUI](.github/workflows/observe-dsh-plugin-surface.yml) observers use fresh
120
+ GitHub-hosted runners. They are not your workstation and receive no project or
121
+ model secrets.
122
+
123
+ ## Evidence from the ecosystem
124
+
125
+ The current [100-plugin compatibility feed](feeds/dsh-plugin-compatibility.md)
126
+ records 74 exact headless passes, 22 review-only results, zero reproduced
127
+ incompatibilities, and four repository-only entries. The review-only group is
128
+ kept separate from failures until the required Web/client or repository install
129
+ plane is actually observed.
130
+
131
+ The first non-headless cells now run in GitHub-hosted VMs:
132
+
133
+ | Exact cell | Observed proof | Result |
134
+ | --- | --- | --- |
135
+ | [`dsh-univer-office@0.2.9 × DSH 0.1.1-rc.2 × Web`](https://github.com/MicroMilo/upstream-radar/actions/runs/32823035297/job/97726205358) | HTTP 200, DSH boot handoff, declared client bundle fetched, no browser/page errors | **Compatible** |
136
+ | [`@deepseek-harness-tui/dsh-tui@0.9.2 × DSH 0.1.1-rc.2 × TUI`](https://github.com/MicroMilo/upstream-radar/actions/runs/32823035297/job/97726205289) | Real PTY frame, keyboard input, documented double-Ctrl-C exit, code 0 | **Compatible** |
137
+ | [`@linxin666/dsh-web-all@0.3.3 × DSH 0.1.1-rc.2 × Web`](https://github.com/MicroMilo/upstream-radar/actions/runs/32828788296/job/97742850608) | Agent-approved four dependency builds; aggregate client bundle returned 200; boot manifest, app mount, and plugin materialization matched | **Compatible** |
138
+
139
+ Two first attempts were held by Radar rather than reported to authors. The TUI
140
+ observer sent one Ctrl-C while the plugin documents a double press. The Web
141
+ observer confused an internal Cordis loader row with the public npm module ID.
142
+ Radar corrected both contracts and reran the same exact artifacts. The aggregate
143
+ Web case still records a non-blocking `/status` probe returning 404, without
144
+ mistaking that optional request for a failed plugin boot.
145
+
146
+ As of 2026-08-25, Radar has filed 13 maintainer-facing reports. The outcome is
147
+ more useful than the raw count:
148
+
149
+ | Outcome | Reports |
150
+ | --- | --- |
151
+ | **Fix shipped and rechecked (5)** | [Sanqi #5](https://github.com/Sanqi-normal/dsh-webui-market-plugin/issues/5) (`0.5.5`), [HDC #3](https://github.com/1na-ko/dsh-hdc-bridge/issues/3) (`0.7.3`), [Voice #2](https://github.com/3274375092/dsh-voice/issues/2) (`0.2.6`), [Msg Hub #1](https://github.com/AbcdefgXW/dsh-msg-hub/issues/1), [Toolbox Web #1](https://github.com/AbcdefgXW/dsh-toolbox-web/issues/1) |
152
+ | **Boundary reviewed or documented (3)** | [Msg Hub #3](https://github.com/AbcdefgXW/dsh-msg-hub/issues/3), [Spotlight #5 / PR #7](https://github.com/0xsline/dsh-spotlight/pull/7), [WSL Workspace #6](https://github.com/6Mikao9/dsh-wsl-workspace/issues/6) — closed without claiming a runtime fix |
153
+ | **Still open (5)** | [Anan #1](https://github.com/AmeKrance/anan-thermal-monitor/issues/1), [Verification Receipt #3](https://github.com/030611/dsh-verification-receipt/issues/3), [dshscan #1](https://github.com/shaoshi20/dshscan/issues/1), [OAuth #14](https://github.com/lninghaha/dsh-coding-subscription-oauth/issues/14), [Composer Expand #1](https://github.com/13071301808/dsh-composer-expand/issues/1) |
154
+
155
+ “Closed” is not automatically “fixed.” The [full domain report index](docs/domain-reports.md)
156
+ records the evidence, validation level, PR coverage, and remaining boundary for
157
+ every report.
127
158
 
128
159
  <p align="center">
129
160
  <strong>If Upstream Radar helps the DSH ecosystem stay compatible, <a href="https://github.com/MicroMilo/upstream-radar">please give it a Star</a> ⭐</strong>