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.
- package/README-zh-CN.md +92 -77
- package/README.md +125 -94
- package/dist/src/cli.js +177 -5
- package/dist/src/cli.js.map +1 -1
- package/dist/src/dsh-compatibility-ledger.d.ts +2 -0
- package/dist/src/dsh-compatibility-ledger.d.ts.map +1 -1
- package/dist/src/dsh-compatibility-ledger.js +5 -0
- package/dist/src/dsh-compatibility-ledger.js.map +1 -1
- package/dist/src/dsh-directory-feed.d.ts +7 -3
- package/dist/src/dsh-directory-feed.d.ts.map +1 -1
- package/dist/src/dsh-directory-feed.js +59 -25
- package/dist/src/dsh-directory-feed.js.map +1 -1
- package/dist/src/dsh-headless-agent-plan.d.ts +7 -0
- package/dist/src/dsh-headless-agent-plan.d.ts.map +1 -1
- package/dist/src/dsh-headless-agent-plan.js +20 -1
- package/dist/src/dsh-headless-agent-plan.js.map +1 -1
- package/dist/src/dsh-install-observation.d.ts +6 -0
- package/dist/src/dsh-install-observation.d.ts.map +1 -1
- package/dist/src/dsh-install-observation.js +2 -2
- package/dist/src/dsh-install-observation.js.map +1 -1
- package/dist/src/dsh-install-plan.d.ts +7 -0
- package/dist/src/dsh-install-plan.d.ts.map +1 -1
- package/dist/src/dsh-install-plan.js +8 -2
- package/dist/src/dsh-install-plan.js.map +1 -1
- package/dist/src/dsh-surface-observation.d.ts +160 -0
- package/dist/src/dsh-surface-observation.d.ts.map +1 -0
- package/dist/src/dsh-surface-observation.js +1031 -0
- package/dist/src/dsh-surface-observation.js.map +1 -0
- package/dist/src/dsh-surface.d.ts +127 -0
- package/dist/src/dsh-surface.d.ts.map +1 -0
- package/dist/src/dsh-surface.js +667 -0
- package/dist/src/dsh-surface.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/upstream-observer.d.ts +6 -0
- package/dist/src/upstream-observer.d.ts.map +1 -1
- package/dist/src/upstream-observer.js +206 -127
- package/dist/src/upstream-observer.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/docs/README.zh-CN.md +19 -19
- 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
|
|
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
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
Radar 会再次检查并关闭闭环。
|
|
13
|
+
Upstream Radar 把精确的插件发布物、DSH 宿主和运行环境绑定在一起,让 Agent 根据仓库说明和
|
|
14
|
+
已有失败证据推导受限环境,再放进一次性 GitHub VM 中实际验证。生态发生变化或证据过期后都会
|
|
15
|
+
重跑,因此它检查的是**当前版本是否仍然可用**,而不只是比较一次 diff。
|
|
20
16
|
|
|
21
|
-
|
|
17
|
+
它面向 [DeepSeek Harness(DSH)](https://github.com/deepseek-ai/deepseek-harness) 插件生态。
|
|
18
|
+
静态检查是关于发布包的证据;隔离运行检查是关于某个精确的
|
|
19
|
+
`插件 × DSH × Node/profile` 组合的证据。两者都不会被包装成永久有效的“兼容”徽章或安全证书。
|
|
22
20
|
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
28
|
-
兼容;另 2 个明确停在 Web 客户端依赖边界,没有被误报成插件坏了。
|
|
27
|
+
## 为什么需要它
|
|
29
28
|
|
|
30
|
-
|
|
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
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
|
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
|
-
|
|
60
|
-
-
|
|
61
|
-
- DSH 或插件变化后自动重新检查,而不是只生成一次报告。
|
|
62
|
-
- 同一问题持续更新;回归时重新打开;干净复测通过后自动关闭。
|
|
77
|
+
这个历史 DSH 插件版本会返回 `review / incomplete`,因为它发布的宿主依赖链指向了一个不可用的包。
|
|
78
|
+
这是可复现的发布/宿主契约问题,不是恶意行为指控。查看[完整证据报告](examples/dsh/reports/sanqi-market-plugin-dependency-resolution.md)。
|
|
63
79
|
|
|
64
|
-
|
|
80
|
+
如果要检查自己的公开仓库,而不安装它:
|
|
65
81
|
|
|
66
|
-
|
|
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
|
-
|
|
88
|
+
仓库扫描会读取源码 manifest、DSH 元数据和 lockfile;不会安装依赖、执行 lifecycle script、加载插件、启动 DSH 或调用 LLM。
|
|
71
89
|
|
|
72
|
-
|
|
73
|
-
- **开放** · [shaoshi20/dshscan#1](https://github.com/shaoshi20/dshscan/issues/1)
|
|
90
|
+
## 让它持续运行
|
|
74
91
|
|
|
75
|
-
|
|
92
|
+
把下面任意一个维护好的 workflow 复制到你的仓库:
|
|
76
93
|
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
当前维护中的 `dsh-browser` 条目也都观测为兼容,不应被列成问题。
|
|
104
|
+
当前的[100 插件兼容性 feed](feeds/dsh-plugin-compatibility.md)记录了 74 个精确 headless
|
|
105
|
+
通过、22 个仅待复核结果、0 个已复现不兼容和 4 个仅仓库条目。在真正观测所需的
|
|
106
|
+
Web/client 或仓库安装平面之前,待复核项不会被包装成插件故障。
|
|
96
107
|
|
|
97
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
110
|
-
|
|
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
|
-
|
|
113
|
-
|
|
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>
|
|
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
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
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
|
-
|
|
31
|
+
A source repository can be green while the package users install is not ready
|
|
32
|
+
for the current DSH host:
|
|
33
33
|
|
|
34
|
-
|
|
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
|
-
|
|
37
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
|
57
|
-
|
|
58
|
-
the model—establishes the result.
|
|
59
|
-
|
|
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
|
-
|
|
78
|
+
## Try a real check
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
|
|
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
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
94
|
+
To review your own public repository without installing it:
|
|
111
95
|
|
|
112
96
|
```bash
|
|
113
|
-
npx --yes upstream-radar@0.
|
|
114
|
-
|
|
115
|
-
--
|
|
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
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
the
|
|
125
|
-
|
|
126
|
-
[
|
|
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>
|