dsh-deeppilot 0.9.13 → 0.9.15

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.
@@ -1,7 +1,186 @@
1
1
  # DSH release compatibility memory
2
2
 
3
- > This is the durable audit record for DeepPilot's public DSH plugin. Re-audit
4
- > the next DSH release instead of assuming that an rc upgrade is runtime-safe.
3
+ > This is the durable audit record for DeepPilot's public DSH plugin. Since
4
+ > 2026-10-30 the declaration is a rolling range: audit a release when it would
5
+ > move the lower bound, at each `0.x` minor boundary, or when a host inside the
6
+ > range breaks at runtime.
7
+
8
+ ## UI integration check — native settings controls (2026-11-05)
9
+
10
+ - **Runtime surface:** `@deepseek-ai/dsh-client-ui-primitives` is an implicit
11
+ browser baseline module. The installed frontend bundles for the supported
12
+ floor `0.2.1-rc.5` and local host `0.2.2-rc.1` both seed the module and export
13
+ `Switch`; the general settings page uses the same component.
14
+ - **Decision:** four DeepPilot settings switches use the host component with
15
+ `checked`, `disabled`, `label`, and `onChange(next)`. No switch CSS override,
16
+ runtime dependency, or explicit client injection is added. The exact floor
17
+ version is a development-only type/fixture dependency; the production bundle
18
+ keeps its host-module require. Compatibility declarations stay unchanged.
19
+ - **Scope:** frontend-only. Host activation metadata, production dependencies,
20
+ and the phone protocol are unchanged; this source/module-table check does
21
+ not claim phone integration or a published release.
22
+ - **Switch migration verification:** typecheck and build pass; the production bundle requires
23
+ the host primitives module. Unit tests: 721 pass, zero fail, one skip, one
24
+ existing TODO (a first run hit an unrelated push-test temporary-directory
25
+ cleanup race; the full rerun passed). Browser E2E: 21 pass, including official
26
+ switch style comparison, keyboard/mouse changes, disabled states, and config
27
+ writes. The real `0.2.2-rc.1` host at `127.0.0.1:3080` was reloaded: DeepPilot
28
+ renders the same switch/thumb classes as general settings, with a 36×20px
29
+ track and 16px thumb, and no custom pseudo-elements. Live network switches
30
+ were inspected without changing their values.
31
+ - **Add phone follow-up:** the same module supplies `Button` on both audited
32
+ frontend versions. The pairing toggle now uses `variant: 'outline'` and
33
+ `size: 'sm'` with a leading SVG icon; only its wrapper aligns it to the right.
34
+ Plugin button, font, focus, and touch-size overrides do not reach this native
35
+ control. Typecheck/build and unit tests pass (721 pass, zero fail, one skip,
36
+ one existing TODO); 22 browser E2E tests pass, including native button style
37
+ comparison and Enter/Space pairing toggles. The reloaded real rc.1 host
38
+ renders the official button/outline/sm classes at H28/R8 with 12px text.
39
+ No real pairing grant was issued during visual inspection.
40
+
41
+ ## Audit record — `dsh-v0.2.2-rc.1` (rebuild of alpha.3, no runtime change)
42
+
43
+ - **Release (2026-11-04):** `dsh-v0.2.2-rc.1`, now npm `next`; `latest` stays
44
+ `0.2.1-rc.5`, `alpha` stays `0.2.2-alpha.3`. Inside the rolling range, so **no
45
+ declaration change**. The release notes summarize everything since
46
+ `0.2.1-rc.5`, so most listed items already shipped in `0.2.2-alpha.2/3`.
47
+ - **Tree vs `0.2.2-alpha.3`:** 330 shared packages, zero manifest structural
48
+ changes after normalizing version strings, and only four non-manifest files
49
+ differ (`dsh-client-modules` build commit, three client bundles' version
50
+ strings). `cordis 4.0.6-alpha.2 → 4.1.0` and `schemastery 3.18.6-alpha.2 →
51
+ 3.19.0` change only `package.json` (version and `cosmokit`/`cordis-plugin-*`
52
+ ranges); code is byte-identical. The evaluator `dsh-app-boot/lib/index.js` is
53
+ byte-identical (sha256 `346f8322…`), so every alpha.3 finding — including the
54
+ schedule host-adapter requirement — carries over unchanged.
55
+ - **Gate (real rc.1 evaluator):** worktree `0.9.14` accepted on `0.2.2-rc.1`,
56
+ `0.2.2-alpha.3`, `0.2.1-rc.5`, `0.2.2`; refused on `0.3.0-rc.1`. Published
57
+ `0.9.13` (eight-release list) is refused on every one of them — `next`-channel
58
+ users need `0.9.14` published before the plugin activates.
59
+ - **Boot:** isolated `DSH_HOME` with the rc.1 CLI: `--dump-config` exit 0, empty
60
+ stderr, 7 `deeppilot` hits; `/phone/health` 200 (`protocolVersion` 2,
61
+ `serverVersion` 0.9.14, `dataPlane` active); `deeppilot/host-id` and
62
+ `lan-tls/` created.
63
+ - **Vendor peers (install-time only), decided 2026-11-05:** the previous
64
+ `@deepseek-ai/cordis` / `@deepseek-ai/schemastery` peers did not admit the
65
+ vendored `4.1.0` / `3.19.0`. Both are optional peers the evaluator ignores
66
+ (`engines.dsh` decides), so activation was never affected. `0.9.14` appends
67
+ `~4.1.0` / `~3.19.0` (append, not replace: earlier hosts still vendor the
68
+ older pairs); `tests/compatibility-metadata.test.ts` pins both.
69
+ - **Not covered:** no real-device pairing, Funnel end-to-end, model turn, or
70
+ `npm install` from the registry via the host's plugin manager.
71
+
72
+ ## Audit record — `dsh-v0.2.2-alpha.3` (runtime break inside the range)
73
+
74
+ - **Release (2026-11-03):** `dsh-v0.2.2-alpha.3` on the npm `alpha` channel
75
+ (published 2026-11-03T07:48:26Z); `latest` and `next` remain `0.2.1-rc.5`. It
76
+ is inside the rolling range, so **no declaration change** was needed. The real
77
+ `0.2.2-alpha.3` evaluator accepted the worktree `0.9.14` manifest with zero
78
+ requirements and refused the published `0.9.13` (eight-release list) with a
79
+ single `engines.dsh` requirement — alpha-channel users must upgrade the plugin
80
+ before it activates.
81
+ - **Gate and install surface:** 18 candidate versions were scored with the
82
+ published evaluator and an independent semver recomputation with zero
83
+ disagreements (`0.3.0-0`, `0.3.0-rc.1`, `0.3.0`, `1.0.0` stay refused). The
84
+ host vendors `cordis 4.0.6-alpha.2` / `schemastery 3.18.6-alpha.2`, both
85
+ inside this plugin's peer ranges; its `engines.node` is `>=24.9.0`.
86
+ - **One runtime break, confined to schedule.** `0.2.2-alpha.3` moved automation
87
+ to host-level task management and rewrote `dsh-schedule`: `update` and
88
+ `delete` are gone (`edit({ id, action: 'update' | 'delete', patch,
89
+ expectedUpdatedAt })` replaces them), `list` returns
90
+ `{ items, shown, total, limit, offset }` instead of an array, `create` takes
91
+ `(request, actorSessionId, signal)`, and the request body uses `timing` /
92
+ `target` instead of `at` / `after_seconds` / …. The four bridge call sites
93
+ (`src/dsh-api-proxy.ts:216/232/236/248`) still speak the `0.2.2-alpha.2`
94
+ contract, so the phone's schedule list, create, edit and delete fail while
95
+ `schedule.history` keeps working. The `schedules` capability bit stays `true`
96
+ because it probes service presence only, so the break is silent (each action
97
+ returns an internal error) instead of hiding the feature. No other contract
98
+ changed: 24 of the 25 audited interfaces are identical or compatibly changed
99
+ and the client face is untouched.
100
+ - **Runtime verification:** an isolated `0.2.2-alpha.3` host composed and started
101
+ the `0.9.14` worktree (`--dump-config` exit 0, no skipped bundle, 199 composed
102
+ entries), `/phone/health` returned 200 with `protocolVersion` 2 and
103
+ `serverVersion` `0.9.14`, and the live 3080 host on the same build serves the
104
+ same plugin from its linked worktree. The config schema projection accepts
105
+ every `deeppilot` option, and `NODE_DEBUG=esm` proves the plugin's
106
+ `@deepseek-ai/*` imports resolve to the alpha.3 installation tree rather than
107
+ the pinned dev copies.
108
+ - **Decision:** keep the rolling range; ship `0.9.14` so alpha-channel users get
109
+ a host-activatable plugin. The schedule adapter now serves both contracts
110
+ (shape-detected `legacy` / `host` adapters, additive protocol v2 capability
111
+ `schedulesHost`, host-level frames, legacy frames projected onto host-level
112
+ tasks, iOS mirror); the wire contract lives in `PROTOCOL.md` section "Schedule
113
+ 宿主级任务扩展". The public contract consequence is recorded in
114
+ `COMPATIBILITY.md`.
115
+ - **Evidence:** `.alpha3-verify/AUDIT.md`, `CHANGE_SURFACE.md`, `CLIENT_FACE.md`,
116
+ `HOST-BOOT.md` and `logs/` in this repository; `.alpha3-verify/gate-matrix.mjs`
117
+ reproduces every activation verdict.
118
+
119
+ ## Current decision — rolling range from `dsh-v0.2.1-rc.5`
120
+
121
+ - **Decision (2026-10-30):** the compatibility declaration is one rolling range,
122
+ `>=0.2.1-rc.5 <0.3.0-0`, in `engines.dsh` and all ten `@deepseek-ai/dsh*`
123
+ peers, replacing the eight-release closed list. The lower bound is the newest
124
+ `rc` release (`0.2.1-rc.5`, published 2026-10-29T14:15:23Z); the current
125
+ `alpha` release `0.2.2-alpha.2` sorts above it and needs no second clause.
126
+ `<0.3.0-0` keeps the `0.3.0` audit gate. Dev packages move to the exact
127
+ `0.2.1-rc.5` baseline with vendored `cordis 4.0.5` / `schemastery 3.18.5`.
128
+ Release `0.9.14`. Recorded in `docs/adr/0001-dsh-compatibility-policy.md`
129
+ section 8.
130
+ - **Trigger:** `latest` and `next` both moved to `0.2.1-rc.5`; the closed list
131
+ (ending `0.2.2-alpha.2`) refused to activate on it, and every DSH release
132
+ required eleven declaration edits plus a lockfile, test, and doc pass.
133
+ - **Audit of `dsh-v0.2.1-rc.5` against `dsh-v0.2.1-rc.4` (`.rc5-verify/`):**
134
+ **no runtime break, `src/` unchanged.** 307 = 307 packages; 42,731 shared
135
+ files: 42,421 byte-identical, 310 differing (296 `package.json` + 14
136
+ non-manifest files in 7 packages), plus one file new in rc.5 only
137
+ (`dsh-client-ui-chat/lib/types/client/reasoning-text.d.ts`, 363 B). The rc.4
138
+ tree fingerprint reproduced the previous audit's value. All 307 manifests have
139
+ zero structural changes across the full 11,099-leaf union; 3,706 dependency
140
+ specs are mechanical `0.2.1-rc.4 → 0.2.1-rc.5` replacements. The evaluator
141
+ `dsh-app-boot/lib/index.js` is byte-identical to rc.4 (sha256 `5135179a…`,
142
+ same as rc.3). `dsh-web-app/cordis.patch.yml` is byte-identical, so the
143
+ `id: directory-picker` patch anchor is untouched. The four client faces are
144
+ byte-identical. 3,271 `lib/` modules and 681 entry modules show zero export
145
+ deltas. The 15 non-manifest files (14 changed, 1 added) live in
146
+ `dsh-client-ui-chat` (the internal `conversation.chat.reasoning.body` Slot
147
+ gains `rawText`, reasoning text strips its `<signature>` wrapper before
148
+ display, plus types and READMEs), `dsh-cordis-client-runner` (embedded Slot
149
+ registry metadata), `dsh-experimental-client-ui-cot-translation` (JSDoc/type
150
+ comments only), `dsh-client-modules` (build-commit constant), and three
151
+ settings/sidebar client bundles (version strings, same byte size). A machine
152
+ check over the 7 packages reports `allOutsideDeclarationSurface`; none is in
153
+ the declaration surface (10 peers + 4 client injects + vendored
154
+ cordis/schemastery) or the plugin call surface.
155
+ - **Matrix (rc.5 evaluator, `includePrerelease: true`):** before → `0.2.1-rc.5`
156
+ rejected; after → `0.2.1-rc.5`, `0.2.2-alpha.2`, `0.2.1`, later rc/alpha/GA
157
+ admitted — 12 candidates newly admitted, exactly the seven former list members
158
+ newly refused — while `0.3.0-rc.1`, `0.3.0`, `0.3.0-0`, and `1.0.0` stay
159
+ rejected. Every verdict matched an independent semver calculation, and dropping
160
+ `engines.dsh` to exercise the peer path yields the same accepted set. The range
161
+ also admits unaudited prereleases above the bound by construction
162
+ (`0.2.2-alpha.1`, `0.2.2-alpha.2.1`, `0.2.2-ALPHA.2`, `0.2.2-0`); this is
163
+ pinned as a known admission surface in `tests/compatibility-metadata.test.ts`.
164
+ - **Positive load (isolated `DSH_HOME`, `.rc5-verify/HOST-BOOT.md`):** with a
165
+ projected manifest carrying only the new range, the rc.5 host composes the
166
+ plugin (`--dump-config` exit 0, no `skipping profile bundle` line, 7
167
+ `deeppilot` hits), starts it, and the plugin's own LAN port answers
168
+ `/phone/health` with 200 (`ok`, `enabled`, `protocolVersion` 2, `dataPlane`
169
+ active). Both the committed 0.9.13 artifacts (`serverVersion` 0.9.13) and the
170
+ in-flight 0.9.14 worktree (`serverVersion` 0.9.14) load. The isolated home
171
+ received `deeppilot/host-id` and `deeppilot/lan-tls/`.
172
+ - **Verification:** `npm test` 681 (679 pass, 1 pre-existing todo, 1 skipped),
173
+ `typecheck`, `build`, `check:config-schema` against the `0.2.1-rc.5` CLI,
174
+ `smoke:helper`, `go test ./...`, `bin/SHA256SUMS` 6/6.
175
+ - **Evidence:** `.rc5-verify/AUDIT.md`, `CHANGE_SURFACE.md`, `HOST-BOOT.md`,
176
+ `tree-compare.out.json`, `matrix.out.json`, `evaluator-repro.out.json`,
177
+ `patch-anchor-check.out.json`, `export-symbol-diff.out.json`,
178
+ `pkg-manifest-delta.out.json`, `vendor-check.out.json`, `diffs/`, `logs/`.
179
+ - **Honest boundary:** `dsh-client-ui-slots` has no artifact in either tree (as
180
+ in the rc.4 round), so it was not byte-compared; `react` and the npm
181
+ install-time resolution were not checked; no real-device pairing, Funnel
182
+ end-to-end, or model turn was run; `0.9.14` is prepared locally, not
183
+ published.
5
184
 
6
185
  ## Current decision — `dsh-v0.2.2-alpha.2`
7
186
 
@@ -2187,3 +2366,13 @@ release notes.
2187
2366
  2. 手机协议:模型当前选择投影新增 `s2c.models.changed`,受 `sessions.read` 控制;原生权限执行可附加 `expectedDefinitionId`,重读目录核对来源,旧客户端字段缺省兼容。无新增周期轮询或第二层主机时间缓存。
2188
2367
  3. 客户端:内存五分钟、磁盘最长七天,重启旧目录先展示并校验,按配对身份/主机/会话隔离;当前模型、权限和执行结果不落盘。具体约定和格式重建见[移动端目录缓存](移动端目录缓存.md)。
2189
2368
  4. 验证:插件 577 项通过、1 项原有待办,类型检查、生成产物构建和使用本机固定版本的离线配置校验通过;两端缓存单元与模拟器证据见各自文档。随 0.9.8(2026-10-18)发布;真机与系统分享仍未验收。
2369
+
2370
+ ## 2026-10-30 — 发布 `dsh-deeppilot@0.9.13`
2371
+
2372
+ - **版本收口。** `0.9.12` 的版本提交 `a5a6f59` 曾落在 `main`,但从未打 tag、上传 npm 或建 GitHub Release;本次在 `0.9.11` 之上统一收口为 `0.9.13`:八版白名单(新增 `0.2.1-rc.4` 与 `0.2.2-alpha.2`,`SessionController.inspect` 缺失时 `sessions.history` 走 `page`)、运行中排队与转向、Markdown 导出、实时流式增量、插件自更新、设置页重设计,以及 helper 上报内嵌 Tailscale 版本后的六平台 `bin/` 重建。
2373
+ - **安装面。** `engines.dsh` 与十条 `dsh-*` peer 枚举八个精确版本;vendor peer 追加 `cordis ~4.0.6-alpha.1` / `schemastery ~3.18.6-alpha.1`;无配置字段变化。审计与隔离宿主证据见 `.alpha2-verify/`、`.rc4-verify/`(`0.2.1-rc.4` 27/27、`0.2.2-alpha.2` 32/32)。
2374
+ - **本地校验(发布工作树)。** `npm ci`;`npm test` 679 项(677 通过、1 项环境门禁跳过、1 项有意 TODO、0 失败);`typecheck`;`build`(`lib/` 无变化);`check:config-schema`(0.2.0-rc.2 CLI);`smoke:helper`(darwin-arm64);`go test ./...`;`bin/SHA256SUMS` 6/6;六平台 helper 重建后 `bin/` 无漂移;`npm pack` 69 项、51,405,933 字节。
2375
+ - **发布。** 发布提交 `0107efb584be4031af7279eb9f6cdf4404189081`,附注标签 `v0.9.13`;CI `40910195877` 与 CodeQL `40910195831` 绿色。`publish.yml` 首次运行 `40911590022` 的上传与来源证明步骤成功,但末尾核对在 24 次重试后仍 404,整次运行标红;重跑 `40918429580` 在发布步骤报 `E409 Cannot publish over previously staged version "0.9.13"`,由此确认**当前可信发布者绑定只允许暂存发布**:版本进入 npm staged 区,需维护者 2FA 批准后才公开。维护者批准后,注册表 `latest = 0.9.13`。
2376
+ - **发布后核验。** 来源证明类型 `https://slsa.dev/provenance/v1`,`gitCommit` 为发布提交,工作流引用 `refs/tags/v0.9.13`,invocation 为 `40911590022`;tarball SHA1 `ca2c754e3421cddd14a795c5b4d869c5ea4b3cf9`、SHA512 与注册表一致,69 个条目、解包 131,263,175 字节。全新隔离 `DSH_HOME`(`/tmp/dsh-verify-0913`,pnpm 从 npm 安装,不是 link)在真实 `0.2.2-alpha.2` 宿主上启动,`https://127.0.0.1:3098/phone/health` 返回 200,`serverVersion` 为 `0.9.13`、`dataPlane: true`;GitHub Release 在这一步通过后才公开并标记 Latest。
2377
+ - **流程变更。** 用户决定保留暂存流程;批准步骤与「工作流末尾核对在批准前必然失败」已写入 `docs/NPM_PUBLISHING.md` 与 `AGENTS.md` 发布第 4–5 步。工作流本身未改:末尾核对在 staged 版本上仍会标红,是否改成「检测到 staged 即视为成功并输出待批准」留待下次发布前决定。
2378
+ - **局限。** 未做真机、Funnel 端到端、真实 `updateBundle`/HMR 回滚安装,也没有在 `0.2.1-rc.4` 上做真实业务回合;上述健康检查只证明插件能被宿主组合、启动并应答。
@@ -34,6 +34,12 @@
34
34
  npm 不在保存配置时验证绑定;首次发布成功才证明认证可用。
35
35
  4. 新绑定必须在 **2 天内完成首次成功发布**。因此准备好新版本后再绑定;若过期,
36
36
  删除过期绑定并重新创建。先验证可信发布成功,再按需调整原有令牌发布权限。
37
+ 5. **2026-10-29 实测:当前绑定只允许暂存发布。** `publish.yml` 里的 `npm publish`
38
+ 不再直接公开版本,而是把它送进 staged 区(命令返回成功并提示“正在处理”,
39
+ 但注册表的版本、tarball 与来源证明持续 404)。用户决定**保留暂存流程**:
40
+ 每次发版由工作流暂存,维护者用 2FA 批准后才公开(步骤见第三节)。
41
+ 若要恢复直接发布,需在包设置的 Trusted Publisher 中勾选 `Allow npm publish`
42
+ (账户强制 2FA 时可能不可用),并同步改本节、AGENTS.md 与第 4 步的核对逻辑。
37
43
 
38
44
  ## 三、每次发布
39
45
 
@@ -63,7 +69,14 @@
63
69
  压缩包发布跳过生命周期脚本(`--ignore-scripts`);测试、类型检查和构建已在前序
64
70
  步骤执行,打包仍执行 `prepack`(打包前构建)。发布后核对版本、分发标签、
65
71
  压缩包完整性和来源证明元数据。
66
- 6. 确认 npm 包可安装,在全新 DSH 配置中完成安装验证后,再公开 GitHub 发布草稿。
72
+ 6. **批准暂存版本(暂存模式下必需)。** 工作流把版本送进 staged 区后,由维护者完成
73
+ 2FA 批准:在 npmjs.com 的 **Staged Packages** 标签找到
74
+ `dsh-deeppilot@<版本>` → Approve;或本机 `npm login` 后
75
+ `npm stage list dsh-deeppilot` → `npm stage approve <id>`。
76
+ 批准即公开该版本,并按发布命令写入分发标签(`latest` / `alpha`)。
77
+ 工作流末尾「核对发布版本、包完整性与来源证明」在批准前必然 404 失败、整次运行标红;
78
+ 这是暂存模式的预期结果,不代表上传失败,发布证据以批准后的手工核验为准。
79
+ 7. 确认 npm 包可安装,在全新 DSH 配置中完成安装验证后,再公开 GitHub 发布草稿。
67
80
  工作流不自动公开发布草稿;npm 上传和发布后的核对分别记录在步骤中。
68
81
 
69
82
  ## 四、失败处理与证据边界
@@ -156,6 +169,40 @@
156
169
  **遗留处理:** `0.9.10` 的 GitHub Release 原为 Draft,按用户决定于本轮**删除**
157
170
  (远端标签 `v0.9.10` 与 npm 上的 `0.9.10` 包均保留,未做任何版本删除或回撤)。
158
171
 
172
+ 11. `0.9.13` 的实际发布结果(2026-10-29/30):附注标签 `v0.9.13` 指向
173
+ `0107efb584be4031af7279eb9f6cdf4404189081`,该提交的 CI(运行号
174
+ `40910195877`,7 分 27 秒)与 CodeQL(运行号 `40910195831`)均绿。
175
+ `publish.yml` 首次运行 `40911590022` 的上传与来源证明步骤成功,但末尾核对在
176
+ 24 次重试后仍抛 `读取 npm 发布信息失败(dsh-deeppilot/0.9.13,HTTP 404)`,
177
+ 整次运行标红;重跑 `40918429580` 在发布步骤报
178
+ `E409 Cannot publish over previously staged version "0.9.13"`。由此确认
179
+ **当前绑定只允许暂存发布**,版本进入 staged 区后需维护者 2FA 批准(见第二节
180
+ 第 5 条与第三节第 6 步)。批准后注册表 `latest = 0.9.13`;来源证明类型为
181
+ `https://slsa.dev/provenance/v1`、`gitCommit` 为该提交、工作流引用
182
+ `refs/tags/v0.9.13`、invocation 为 `40911590022`;tarball SHA1
183
+ `ca2c754e3421cddd14a795c5b4d869c5ea4b3cf9` 与 SHA512 同注册表一致,共 69 个
184
+ 条目、解包 131,263,175 字节。随后在全新隔离 `DSH_HOME` 中从 npm 安装
185
+ `dsh-deeppilot@0.9.13`(pnpm 安装,不是 link),用真实 `0.2.2-alpha.2` 宿主
186
+ 启动,插件自有端口 3098 的 `/phone/health` 返回 200,`serverVersion` 为
187
+ `0.9.13`、`dataPlane: true`;GitHub Release 在这一步通过后才公开并标记 Latest。
188
+ 暂存流程与批准步骤已写入第二、三节与 `AGENTS.md`;工作流末尾核对在暂存模式下
189
+ 的标红问题本轮未改,留待下次发布前决定是否检测 staged 后按成功处理。
190
+
191
+ 12. `0.9.14` 的实际发布结果(2026-11-05):`release/0.9.14` 快进推到 `main`
192
+ (`40fe063..9ff31ba`),该提交的 CI(运行号 `41953217573`)与 CodeQL
193
+ (`41953216405`)均绿;附注标签 `v0.9.14` 指向
194
+ `9ff31ba16a50a7707d8de18e0a72cc166fb03f61`。`publish.yml` 运行 `41953700019`
195
+ (`latest`)**整次为绿**:末尾核对重试 12 次(约 3.5 分钟)后,暂存版本在此期间
196
+ 获批,核对通过——批准落在重试窗口内时不会标红,批准晚于窗口仍会按第 11 条标红。
197
+ 注册表 `latest = 0.9.14`;来源证明类型为 `https://slsa.dev/provenance/v1`、
198
+ `gitCommit` 为该提交、工作流引用 `refs/tags/v0.9.14`;69 个条目、解包
199
+ 131,580,166 字节,与本地 `npm pack --dry-run` 一致(压缩包 SHA1 因在 CI 重新打包
200
+ 而与本地预演不同)。随后在全新隔离 `DSH_HOME` 中从 npm 安装
201
+ `dsh-deeppilot@0.9.14`(真实目录,不是 link,无 peer 警告),用真实
202
+ `0.2.2-rc.1` 宿主启动:`--dump-config` 退出码 0、无跳过,插件自有端口
203
+ `/phone/health` 返回 200,`serverVersion` 为 `0.9.14`、`protocolVersion` 2、
204
+ `dataPlane: true`;GitHub Release 在这一步通过后才公开并标记 Latest。
205
+
159
206
  ## 五、官方资料
160
207
 
161
208
  1. [npm 可信发布配置与限制](https://docs.npmjs.com/trusted-publishers/)