dsh-completion-guard 0.11.0 → 0.12.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/CHANGELOG.md +17 -1
- package/CHANGELOG.zh-CN.md +17 -1
- package/README.md +6 -4
- package/README.zh-CN.md +6 -4
- package/bin/dsh-completion-guard-activation.mjs +79 -13
- package/dist/domain/index.d.ts +2 -2
- package/dist/domain/index.js +2 -2
- package/dist/{domain-rozEDKXB.js → domain-DUS0V_Yv.js} +1329 -95
- package/dist/{index-ClmcMWbM.d.ts → index-B1AGTJF6.d.ts} +57 -11
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/docs/ACTIVATION_MIGRATION.md +22 -10
- package/docs/COMPATIBILITY.md +25 -1
- package/docs/DEPENDENCY_SCAN.md +30 -10
- package/docs/GETTING_STARTED.md +7 -7
- package/docs/HISTORICAL_INCIDENT_COVERAGE.md +7 -0
- package/docs/HOST_LOCK_UPGRADE.md +9 -9
- package/docs/LOCAL_ACCEPTANCE.md +4 -4
- package/manifests/desktop-distribution.v1.json +39 -0
- package/manifests/rc021-rc5-byte-audit.json +989 -0
- package/manifests/supported-host.v1.json +254 -1
- package/package.json +30 -30
package/docs/DEPENDENCY_SCAN.md
CHANGED
|
@@ -69,15 +69,15 @@ upgraded.
|
|
|
69
69
|
响模块与版本、前置条件在本仓库不可达的原因、责任方、到期日;到期后必须重新论证或
|
|
70
70
|
完成升级。
|
|
71
71
|
|
|
72
|
-
###
|
|
72
|
+
### Historical temporary risk acceptance for 0.11.0 / 0.11.0 历史临时风险接受
|
|
73
73
|
|
|
74
74
|
For the three Undici 8.11.2 findings added below, the maintainer explicitly accepted the disclosed residual risk and waived the ordinary unreachability eligibility requirement for this 0.11.0 validation. This is a specific exception to eligibility, not a finding that the whole host is unreachable or safe. The signed host remains unfixed, and a TLS 1.2 process-crash denial of service cannot be excluded. The cache and TLS-callback inspections narrow particular paths only; they do not establish whole-host isolation. Changing a development override would not repair signed-host bytes.
|
|
75
75
|
|
|
76
76
|
这次 0.11.0 验收新增的三条 Undici 8.11.2 例外,由维护者明确接受已披露的剩余风险,并对通常要求“前置条件不可达”的例外准入作一次特批。这不是“整个宿主不可达”或“已经安全”的结论。签名宿主仍未修复,TLS 1.2 导致进程崩溃的拒绝服务风险不能排除;cache 和 TLS callback 的静态检查只缩小部分路径,不能证明整个宿主隔离。修改开发依赖 override 也不会修复签名宿主中的代码。
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
The original 0.11.0 acceptance covered only scanner IDs 1243472, 1243474 and 1243477 with the exact advisory IDs and Undici version below. Its expiry was **2026-11-05 inclusive**: the exception table shipped in that release would block from **2026-11-06** if left unchanged. The separate current 0.12.0 acceptance and expiry are recorded below. Other findings, versions and release checks are not waived. The two older exceptions retain their original scope and expiry. Expiry blocks CI qualification and subsequent acceptance checks; it does not fix upstream code, disable an installed 0.11.0 instance, or withdraw a published package.
|
|
79
79
|
|
|
80
|
-
接受范围仅限 scanner ID 1243472、1243474、1243477 与下列精确公告 ID、Undici
|
|
80
|
+
原 0.11.0 接受范围仅限 scanner ID 1243472、1243474、1243477 与下列精确公告 ID、Undici 版本的组合。原有效期**包含 2026-11-05 当日**;该发布所带的例外表若保持不变,将从 **2026-11-06** 起恢复阻断。下节单独登记本次 0.12.0 的新授权和期限。其他发现、版本及发布检查不在豁免范围内;原有两条例外的范围和到期日保持不变。到期阻断的是 CI 资格和后续验收,不会自动修复上游、禁用已安装的 0.11.0 实例或撤回已发布的包。
|
|
81
81
|
|
|
82
82
|
The advisory id in the exception table is the scanner's numeric id; the GitHub
|
|
83
83
|
advisory it resolves to is recorded alongside it. Earlier drafts of this page
|
|
@@ -85,11 +85,31 @@ mistakenly wrote the numeric id as a GHSA code — the real identifiers are:
|
|
|
85
85
|
|
|
86
86
|
| Advisory (GitHub) | Scanner id | Module@version | Severity | Rationale (summary) | Owner | Expires |
|
|
87
87
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
88
|
-
| [GHSA-mrhx-c7xc-m3w5](https://github.com/advisories/GHSA-mrhx-c7xc-m3w5) | 1243066 | zod@4.4.3 | high | Dev-chain only: exact-pinned transitive dep of the pinned `@deepseek-ai` host devDependencies (test replica of the audited cohort). Nothing ships in the npm package; the advisory needs attacker-controlled oversized schema input, which offline deterministic tests never provide. The verified rc.3 host manifests still exact-pin zod 4.4.3, so upgrading the host does not lift this. Re-evaluate at the next host cohort bump that carries zod ≥4.6.6. | GreenLv | 2027-01-31 |
|
|
89
|
-
| [GHSA-xjj6-f33q-929c](https://github.com/advisories/GHSA-xjj6-f33q-929c) | 1243112 | undici@8.11.2 | high | Dev-chain only: exact-pinned transitive dep of `@deepseek-ai/dsh-http-proxy` under the pinned host devDependencies. Nothing ships in the npm package; the advisory needs an attacker-controlled server sending crafted Content-Encoding stacks, which offline tests never contact. The verified rc.3 host manifests still exact-pin undici 8.11.2, so upgrading the host does not lift this. Re-evaluate at the next host cohort bump that carries undici ≥8.12.2. | GreenLv | 2027-01-31 |
|
|
90
|
-
| [GHSA-4w7w-5xrc-9h26](https://github.com/nodejs/undici/security/advisories/GHSA-4w7w-5xrc-9h26) | 1243472 | undici@8.11.2 | high | Explicit temporary risk acceptance: cache/redirect composition was not found in the inspected factory; whole-host/plugin configurations remain unknown. 明确临时接受 cache/redirect
|
|
91
|
-
| [GHSA-2m5v-pch6-74hx](https://github.com/nodejs/undici/security/advisories/GHSA-2m5v-pch6-74hx) | 1243474 | undici@8.11.2 | high | Explicit temporary risk acceptance: application-specific TLS callbacks may be lost; the inspected factory lacks that callback, but other configurations are unknown. 明确临时接受 TLS callback
|
|
92
|
-
| [GHSA-qrxm-fqhp-jwvm](https://github.com/nodejs/undici/security/advisories/GHSA-qrxm-fqhp-jwvm) | 1243477 | undici@8.11.2 | high | Explicit temporary risk acceptance: TLS 1.2 renegotiation can crash the client; reachability cannot be excluded and the signed host is unfixed.
|
|
88
|
+
| [GHSA-mrhx-c7xc-m3w5](https://github.com/advisories/GHSA-mrhx-c7xc-m3w5) | 1243066 | zod@4.4.3 | high | Dev-chain only: exact-pinned transitive dep of the pinned `@deepseek-ai` host devDependencies (test replica of the audited cohort). Nothing ships in the npm package; the advisory needs attacker-controlled oversized schema input, which offline deterministic tests never provide. The verified rc.3 and rc.5 host manifests still exact-pin zod 4.4.3, so upgrading the host does not lift this. Re-evaluate at the next host cohort bump that carries zod ≥4.6.6. | GreenLv | 2027-01-31 |
|
|
89
|
+
| [GHSA-xjj6-f33q-929c](https://github.com/advisories/GHSA-xjj6-f33q-929c) | 1243112 | undici@8.11.2 | high | Dev-chain only: exact-pinned transitive dep of `@deepseek-ai/dsh-http-proxy` under the pinned host devDependencies. Nothing ships in the npm package; the advisory needs an attacker-controlled server sending crafted Content-Encoding stacks, which offline tests never contact. The verified rc.3 and rc.5 host manifests still exact-pin undici 8.11.2, so upgrading the host does not lift this. Re-evaluate at the next host cohort bump that carries undici ≥8.12.2. | GreenLv | 2027-01-31 |
|
|
90
|
+
| [GHSA-4w7w-5xrc-9h26](https://github.com/nodejs/undici/security/advisories/GHSA-4w7w-5xrc-9h26) | 1243472 | undici@8.11.2 | high | Explicit temporary risk acceptance, 0.11.0 validation ONLY: cache/redirect composition was not found in the inspected factory; whole-host/plugin configurations remain unknown. 明确临时接受 cache/redirect 剩余风险,仅限 0.11.0 验收,不声称全宿主不可达。 | GreenLv | 2026-11-05 (inclusive) |
|
|
91
|
+
| [GHSA-2m5v-pch6-74hx](https://github.com/nodejs/undici/security/advisories/GHSA-2m5v-pch6-74hx) | 1243474 | undici@8.11.2 | high | Explicit temporary risk acceptance, 0.11.0 validation ONLY: application-specific TLS callbacks may be lost; the inspected factory lacks that callback, but other configurations are unknown. 明确临时接受 TLS callback 检查绕过风险,仅限 0.11.0 验收,其他配置仍未知。 | GreenLv | 2026-11-05 (inclusive) |
|
|
92
|
+
| [GHSA-qrxm-fqhp-jwvm](https://github.com/nodejs/undici/security/advisories/GHSA-qrxm-fqhp-jwvm) | 1243477 | undici@8.11.2 | high | Explicit temporary risk acceptance, 0.11.0 validation ONLY: TLS 1.2 renegotiation can crash the client; reachability cannot be excluded and the signed host is unfixed. 明确临时接受可能可达的进程崩溃风险,仅限 0.11.0 验收,签名宿主未修复。 | GreenLv | 2026-11-05 (inclusive) |
|
|
93
|
+
|
|
94
|
+
### Status for the 0.12.0 candidate / 0.12.0 候选的现状
|
|
95
|
+
|
|
96
|
+
The reviewed rc.3 host also pins the same Undici and zod versions, so retaining rc.3 admission does not close the disclosed gaps.
|
|
97
|
+
|
|
98
|
+
The rc.5 cohort bump does not change this picture. The verified `0.2.1-rc.5` registry manifests and the regenerated 0.12.0 lockfile still exact-pin `undici` 8.11.2 (via `@deepseek-ai/dsh-http-proxy`) and `zod` 4.4.3 (via `@deepseek-ai/dsh-commands`), and the upstream default branch still pins the same Undici, so no gap is closed by adopting rc.5. On 2026-11-02 the maintainer explicitly and separately accepted the same three exact Undici 8.11.2 findings for 0.12.0 validation, including the disclosed residual risk and ordinary-unreachability eligibility waiver, and extended their expiry to **2026-11-30 inclusive**. Only scanner IDs 1243472, 1243474 and 1243477 with their recorded GHSA identities are covered. From **2026-12-01** the gate blocks them again unless re-justified. The signed host remains unfixed; whole-host unreachability is not established and the TLS 1.2 process-crash risk cannot be excluded. The table above preserves the first 0.11.0 authorization; the current table below and machine-readable rationales record the separately authorized 0.12.0 scope. Other findings, versions and release gates are not waived. Expiry affects later qualification; it does not automatically disable an installed instance or withdraw a published package. The two older exceptions remain within their original scope and expiry, with their rationale updated to reference the rc.5 cohort.
|
|
99
|
+
|
|
100
|
+
已审查的 rc.3 宿主也锁定相同版本的 Undici 和 zod,因此保留 rc.3 准入不会关闭已披露缺口。
|
|
101
|
+
|
|
102
|
+
rc.5 队列升级不改变上述结论:已核验的 `0.2.1-rc.5` registry manifest 与再生的 0.12.0 lockfile 仍精确锁定 `undici` 8.11.2(经 `@deepseek-ai/dsh-http-proxy`)与 `zod` 4.4.3(经 `@deepseek-ai/dsh-commands`),上游默认分支同样保留旧 Undici,因此本版没有关闭任何缺口。维护者于 2026-11-02 明确、单独接受本次 0.12.0 验收中相同三条 Undici 8.11.2 发现的已披露剩余风险,并特批通常要求前置条件不可达的例外资格,期限延至 **2026-11-30(含)**。仅覆盖 scanner ID 1243472、1243474、1243477 及其已登记 GHSA 身份。自 **2026-12-01** 起,未经重新论证的例外恢复阻断。签名宿主未修复,不能证明整个宿主不可达,也不能排除 TLS 1.2 进程崩溃风险。上表保留首次 0.11.0 授权历史,下表及机器可读 rationale 记录单独授权的当前 0.12.0 范围;其他发现、版本和发布核验不在豁免范围内。到期影响后续资格核验,不会自动禁用已安装实例或撤回已发布的包。原有两条例外保持原范围与到期日,仅将依据更新为 rc.5 队列口径。
|
|
103
|
+
|
|
104
|
+
| Current accepted advisory / 当前接受公告 | Scanner id | Module@version | Owner | Expires (inclusive) |
|
|
105
|
+
| --- | --- | --- | --- | --- |
|
|
106
|
+
| GHSA-4w7w-5xrc-9h26 | 1243472 | undici@8.11.2 | GreenLv | 2026-11-30 |
|
|
107
|
+
| GHSA-2m5v-pch6-74hx | 1243474 | undici@8.11.2 | GreenLv | 2026-11-30 |
|
|
108
|
+
| GHSA-qrxm-fqhp-jwvm | 1243477 | undici@8.11.2 | GreenLv | 2026-11-30 |
|
|
109
|
+
|
|
110
|
+
`pnpm audit` on the 0.12.0 lockfile additionally reports four moderate Undici findings (scanner IDs 1243077, 1243080, 1243480, 1243483 — EventSource unbounded memory, SRI token case bypass, WebSocket PONG buffering, decompress-interceptor exception) and four `fast-uri` moderate/low findings (1243098, 1243104, 1243101, 1243107) in the development chain. Per the policy above these are printed, non-blocking, and recorded here; they are additional signals on the same unfixed host pin, not evidence that the risk shrank.
|
|
111
|
+
|
|
112
|
+
0.12.0 lockfile 的 `pnpm audit` 另报告四条 moderate Undici 公告(scanner ID 1243077、1243080、1243480、1243483)与四条 `fast-uri` moderate/low 公告(1243098、1243104、1243101、1243107),均在开发链。按上述策略它们仅打印、不阻断,并在此记录;它们是同一未修复宿主 pin 上的新增信号,不代表风险下降。
|
|
93
113
|
|
|
94
114
|
## Recorded upgrades / 已记录的升级
|
|
95
115
|
|
|
@@ -113,10 +133,10 @@ described in the 0.11.0 change log.
|
|
|
113
133
|
## Upstream references and follow-up / 上游参考与后续更新
|
|
114
134
|
|
|
115
135
|
- [DSH public dependency discussion](https://github.com/deepseek-ai/deepseek-harness/discussions/10847) records concerns about exact-pinned vulnerable dependencies. It does not establish that DSH maintainers have responded or scheduled a repair.
|
|
116
|
-
- [Undici 8.12.2 release](https://github.com/nodejs/undici/releases/tag/v8.12.2) lists the upstream fixes for these three advisories. That release does not replace code in an already signed DSH app. The reviewed rc.3, rc.4 and alpha.2 host manifests still pin Undici 8.11.2.
|
|
136
|
+
- [Undici 8.12.2 release](https://github.com/nodejs/undici/releases/tag/v8.12.2) lists the upstream fixes for these three advisories. That release does not replace code in an already signed DSH app. The reviewed rc.3, rc.4, rc.5 and alpha.2 host manifests still pin Undici 8.11.2.
|
|
117
137
|
|
|
118
138
|
- [DSH 公开依赖讨论](https://github.com/deepseek-ai/deepseek-harness/discussions/10847)记录了精确锁定受影响依赖的担忧;不能据此声称 DSH 维护者已回应或已排期修复。
|
|
119
|
-
- [Undici 8.12.2 发布记录](https://github.com/nodejs/undici/releases/tag/v8.12.2)列出了这三条公告的上游修复,但该发布不会替换已有签名 DSH 应用内的代码。本次核对的 rc.3、rc.4 和 alpha.2 宿主 manifest 仍锁定 Undici 8.11.2。
|
|
139
|
+
- [Undici 8.12.2 发布记录](https://github.com/nodejs/undici/releases/tag/v8.12.2)列出了这三条公告的上游修复,但该发布不会替换已有签名 DSH 应用内的代码。本次核对的 rc.3、rc.4、rc.5 和 alpha.2 宿主 manifest 仍锁定 Undici 8.11.2。
|
|
120
140
|
|
|
121
141
|
Once an official compatible host carries the fixed dependency chain, recheck its actual signed/installed bytes and advisory result, validate the changed inputs, then update this disclosure and remove or reassess only the matching exceptions. Until then, the residual risk remains accepted only within the recorded scope and expiry; other acceptance gates stay in force.
|
|
122
142
|
|
package/docs/GETTING_STARTED.md
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
## Before installation
|
|
6
6
|
|
|
7
|
-
Use the profile you actually run: Web, Headless or Desktop. Stop the relevant host/session writers first. If this installation has old Guard sessions, preserve the old package and effective mode sources, then prepare a frozen inventory and migration receipt using [the migration guide](ACTIVATION_MIGRATION.md) **before replacing DSH or Guard**. Empty old sessions count too. The 0.
|
|
7
|
+
Use the profile you actually run: Web, Headless or Desktop. Stop the relevant host/session writers first. If this installation has old Guard sessions, preserve the old package and effective mode sources, then prepare a frozen inventory and migration receipt using [the migration guide](ACTIVATION_MIGRATION.md) **before replacing DSH or Guard**. Empty old sessions count too. The 0.12.0 migration toolkit can run from a separately prepared package directory while the old package stays installed.
|
|
8
8
|
|
|
9
9
|
With no old Guard sessions, there is no old-mode adoption step. Upgrade the host to DSH `>=0.2.1-rc.3` if necessary, install Guard, and complete the installation checks before startup. Requires Node.js `>=22`, pnpm `>=11` and a qualified Cordis `>=4.0.4` installation. Do not load both `dsh-context-guard` and `dsh-completion-guard` in one profile; the internal entry ID remains `context-guard`.
|
|
10
10
|
|
|
11
11
|
## 安装前
|
|
12
12
|
|
|
13
|
-
先确认实际使用的 Web、Headless 或 Desktop profile,并停止相应宿主与会话写者。如果已有旧 Guard 会话,替换 DSH 或 Guard **之前**,按[迁移指南](ACTIVATION_MIGRATION.md)保留旧包、核验有效模式来源,冻结会话库存并准备迁移收据。旧空会话也需要清点。0.
|
|
13
|
+
先确认实际使用的 Web、Headless 或 Desktop profile,并停止相应宿主与会话写者。如果已有旧 Guard 会话,替换 DSH 或 Guard **之前**,按[迁移指南](ACTIVATION_MIGRATION.md)保留旧包、核验有效模式来源,冻结会话库存并准备迁移收据。旧空会话也需要清点。0.12.0 迁移工具可以从另行准备的包目录运行,旧包此时仍留在原安装位置。
|
|
14
14
|
|
|
15
15
|
没有旧 Guard 会话时,不需要旧模式 adoption。先按需将 DSH 升级到 `>=0.2.1-rc.3`,再安装 Guard,完成安装核验后启动。需要 Node.js `>=22`、pnpm `>=11` 及通过资格验证的 Cordis `>=4.0.4`。同一 profile 不要同时加载 `dsh-context-guard` 和 `dsh-completion-guard`,内部条目 ID 仍是 `context-guard`。
|
|
16
16
|
|
|
@@ -21,7 +21,7 @@ Keep the host stopped through these steps. Substitute the actual absolute runtim
|
|
|
21
21
|
以下步骤期间保持宿主停止,将目录替换为实际绝对路径。`inject` 会把锁写入 profile 的 `cordis.patch.yml`,执行前先备份。`inspect`、`inject` 和 `verify-dump` 三条宿主锁检查都须返回 `status: "supported"`;非零退出或其他状态都不能继续启动。该状态要求不适用于 `dsh plugin add`。
|
|
22
22
|
|
|
23
23
|
```sh
|
|
24
|
-
dsh plugin --profile web add dsh-completion-guard@0.
|
|
24
|
+
dsh plugin --profile web add dsh-completion-guard@0.12.0
|
|
25
25
|
|
|
26
26
|
DSH_RUNTIME_ROOT=/absolute/path/to/.dsh-runtime
|
|
27
27
|
DSH_PROFILE_ROOT=/absolute/path/to/.dsh/profiles/web
|
|
@@ -32,9 +32,9 @@ GUARD_HOST_LOCK="$DSH_PROFILE_ROOT/node_modules/.bin/dsh-completion-guard-host-l
|
|
|
32
32
|
dsh --profile web --dump-config | "$GUARD_HOST_LOCK" verify-dump --runtime-root "$DSH_RUNTIME_ROOT" --profile-root "$DSH_PROFILE_ROOT" --dump-config -
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
The reviewed baseline is DSH `0.2.1-rc.
|
|
35
|
+
The default reviewed baseline is DSH `0.2.1-rc.5` / Cordis `4.0.5`; rc.3 uses its own reviewed cohort. A later compatible host requires `--rebind-registry` on the three lock commands; it checks official archives and qualifies changed programs before rebuilding the lock. See [compatible-version rebinding](HOST_LOCK_UPGRADE.md#rebinding-compatible-package-versions). Changes to DSH, Guard or the profile location require fresh checks. An ordinary market-only update does not require reinjection; installing or removing the Desktop market does.
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
默认审查基线为 DSH `0.2.1-rc.5` / Cordis `4.0.5`;rc.3 使用自己的审查队列。更新的兼容宿主需要在三条锁命令中添加 `--rebind-registry`,核对官方归档并验证变化的程序后重建锁,见[兼容版本重绑定](HOST_LOCK_UPGRADE.md#rebinding-compatible-package-versions)。DSH、Guard 或 profile 路径变化后需要重新检查。仅 market 的普通更新不需重新注入,Desktop 市场的安装或移除则需要。
|
|
38
38
|
|
|
39
39
|
### Windows, Headless and Desktop / 其他入口
|
|
40
40
|
|
|
@@ -105,6 +105,6 @@ Use a custom `DSH_HOME` instead of the default `.dsh` directory when configured.
|
|
|
105
105
|
|
|
106
106
|
Copyable configuration prompt / 可复制配置提示词:
|
|
107
107
|
|
|
108
|
-
> Use dsh-completion-guard 0.
|
|
108
|
+
> Use dsh-completion-guard 0.12.0's default always mode for future new root sessions while preserving old modes. Find the cordis.patch.yml for the Web, Headless or Desktop profile I actually use. First verify that old-session mode migration is complete for the authorized scope; keep exclusions and unknown sources pending. Back up the file, then remove only the activation field from the existing context-guard config, or leave it absent. Preserve bindings, all other settings and host-lock fields. Do not rewrite bindings or restart DSH. Show the path and exact diff, and report any lock or migration checks remaining before restart.
|
|
109
109
|
|
|
110
|
-
> 让后续新根会话使用 dsh-completion-guard 0.
|
|
110
|
+
> 让后续新根会话使用 dsh-completion-guard 0.12.0 的默认 always,保留旧模式。找到我实际使用的 Web、Headless 或 Desktop profile 的 cordis.patch.yml;先确认授权范围内的旧会话模式迁移已通过,排除项和来源未知项继续待处理。备份配置后,仅删除原 context-guard config 下的 activation 字段;原本没有该字段则保留不填。保留绑定、其他配置和宿主锁字段,不重写绑定,不重启 DSH。报告文件路径、精确差异,以及重启前尚缺的锁或迁移核验。
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Historical incident coverage
|
|
2
2
|
|
|
3
|
+
> Scope note (0.12.0): this document is the frozen historical record of the
|
|
4
|
+
> PUBLIC fixture subset as of its own date — it is not the current release's
|
|
5
|
+
> historical-library gate. Current candidates derive their complete inventory
|
|
6
|
+
> from the private maintained library's case registry and run the full
|
|
7
|
+
> case-by-case gate before publication; the sanitized outcome summaries live
|
|
8
|
+
> in the matching release acceptance materials, not in this file.
|
|
9
|
+
|
|
3
10
|
Verification date: 2026-09-28 (two evidence rounds). The adjudication round
|
|
4
11
|
ran its working tree on the `1e88176` lineage and the four adaptation cases it
|
|
5
12
|
introduced were first committed in `f4a9497`; the review-repair round added the
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
# Upgrading the core host lock
|
|
2
2
|
|
|
3
|
-
Version 0.
|
|
3
|
+
Version 0.12.0 requires DSH `>=0.2.1-rc.3` and qualified Cordis `>=4.0.4`. Fresh installations have no old-mode inventory to adopt; existing installations must preserve their old mode sources before any replacement. Follow this order:
|
|
4
4
|
|
|
5
5
|
1. Stop the relevant host/session writers. For an **existing installation**, preserve the old installed package and sanitized effective-mode sources, then prepare the public persistence inventory and frozen receipt with the [prepared-candidate migration toolkit](ACTIVATION_MIGRATION.md), **before replacing DSH or Guard**. Unresolved old provenance stays pending. A **fresh installation with no old Guard sessions** skips this old-mode preparation.
|
|
6
|
-
2. Upgrade DSH to `0.2.1-rc.3`
|
|
6
|
+
2. Upgrade DSH to at least `0.2.1-rc.3` if necessary, then install this Guard version, keeping writers stopped.
|
|
7
7
|
3. Rebuild the host lock for each profile with `inspect`, `inject` and `verify-dump` from the accepted package or matching prepared source. For a POSIX shell, the entry is `node /absolute/prepared-package/bin/dsh-completion-guard-host-lock.mjs`; pass the actual runtime/profile roots. A successful rebuild reads back `supported` with `audit_provenance` stating how the graph was established.
|
|
8
8
|
4. For an **existing installation**, run mode `adopt` and `verify` with its frozen old receipt while writers remain stopped, **before starting any host**. Host-lock rebuilding does not perform adoption. For a fresh installation there is no old receipt to adopt.
|
|
9
9
|
5. Start each Web/Headless/Desktop profile only after the applicable mode and host-lock checks pass. These checks do not require a running host.
|
|
10
10
|
|
|
11
|
-
0.
|
|
11
|
+
0.12.0 的全新安装没有旧模式需要采纳;已有安装必须在替换前保留旧来源。顺序为:先停相关写者,保存旧安装包和脱敏有效模式来源,以独立准备的候选工具冻结公开库存及旧收据;再按需升级低于下限的 DSH、安装 Guard、重建宿主锁;保持写者停止,在启动任何宿主前完成旧收据 `adopt` 和 `verify`;最后按需启动。全新安装跳过旧模式准备与 adoption,未知旧来源仍保持 pending,宿主锁不替代模式核验。
|
|
12
12
|
|
|
13
13
|
Failure readbacks distinguish these cases:
|
|
14
14
|
|
|
15
15
|
- `host_lock_migration_required`: the configuration lacks the policy or source roots. Supply `--runtime-root` and `--profile-root` when rebuilding the lock.
|
|
16
16
|
- `host_lock_version_below_minimum`: DSH is older than `0.2.1-rc.3`. Upgrade DSH first.
|
|
17
|
-
- `host_lock_version_mismatch`: the installed graph differs from the reviewed baseline in version or integrity. For a
|
|
17
|
+
- `host_lock_version_mismatch`: the installed graph differs from the reviewed baseline in version or integrity. For a compatible version outside the reviewed cohorts, use `--rebind-registry` to acquire and qualify the published graph. For rc.3 or rc.5, check the recorded identities for the actual launcher.
|
|
18
18
|
- `host_lock_installed_graph_drift`: installed bytes or routes changed after the audit. Inspect the change before rebuilding the lock.
|
|
19
19
|
|
|
20
20
|
The floor is `>=0.2.1-rc.3` with no upper bound. Passing the version check does not establish native validation; validated versions are recorded separately. Guard's exact DSH core is separate from optional market versions.
|
|
@@ -52,7 +52,7 @@ graph it finds there, and each session mount validates those same roots once,
|
|
|
52
52
|
with every security-sensitive entry validating them again at its own decision.
|
|
53
53
|
Injecting against the old runtime therefore writes a lock that describes a graph
|
|
54
54
|
the new runtime no longer has, and it will fail at the next mount or the next
|
|
55
|
-
protected entry. Order: stop the host, upgrade DSH and install Guard, inspect/inject/verify each profile, then start it when needed.
|
|
55
|
+
protected entry. Order: stop the host, upgrade DSH if below the floor and install Guard, inspect/inject/verify each profile, then start it when needed.
|
|
56
56
|
|
|
57
57
|
`inject` **writes to `<profile>/cordis.patch.yml`** — it replaces or adds Guard's
|
|
58
58
|
managed block in that file. Back the file up first. The same file is the one
|
|
@@ -92,7 +92,7 @@ certificate authority — completion certificates, mutation authorization,
|
|
|
92
92
|
release pre-effect decisions and Goal/Stop boundaries — validates the lock
|
|
93
93
|
freshly at the moment of its own decision.
|
|
94
94
|
|
|
95
|
-
Version 0.
|
|
95
|
+
Version 0.12.0 uses `dsh-0.2.1-rc.5-core-v1` as the default audited baseline and selects the rc.3 cohort for the rc.3 launcher; it derives graph cohorts for other compatible hosts above the version floor (see the compatibility guide). Runtime checks authenticate the mapped files and verify that each critical dependency resolves to the mapped instance. Installation imports use native Node resolution; Profile imports use the host's local-first routing and installation fallback only when no local package is selected. A nearer shadow, missing edge, wrong export target or escaped path is rejected even when the recorded versions match.
|
|
96
96
|
|
|
97
97
|
The manifest's `registry-derived-pending-native-audit` provenance and empty `auditedPlatforms` list describe its immutable source audit, which is part of the lock digest. Native acceptance belongs to each exact artifact's separate Release annexes; it does not rewrite that digest. Inspection, injection and dump verification report `audit_provenance` alongside the cohort and digest.
|
|
98
98
|
|
|
@@ -111,14 +111,14 @@ that matters for deciding whether you are migrating or just drifting:
|
|
|
111
111
|
a DSH upgrade, and both are cured by re-running inspect, inject and verify against
|
|
112
112
|
the new runtime rather than by editing the lock.
|
|
113
113
|
|
|
114
|
-
Historical requirements and session records are retained; old certificates do not become certificates for the new lock.
|
|
114
|
+
Historical requirements and session records are retained; old certificates do not become certificates for the new lock. The rc.3 graph is admitted under its own reviewed cohort; rc.2 remains below the 0.12.0 floor. Prior artifact acceptance remains bound to its original subject.
|
|
115
115
|
The shared digest-v3 encoder and its upstream fixtures are unchanged.
|
|
116
116
|
|
|
117
117
|
## Official Desktop profile
|
|
118
118
|
|
|
119
119
|
Stop the Desktop app before installing or rebuilding its lock. Use the CLI carrier shipped with that app: `Contents/Resources/runtime/cli/bin/dsh` on macOS, or `resources\runtime\cli\bin\dsh.cmd` in the Windows installation. A separately installed `dsh` CLI cannot manage the reserved Desktop profile.
|
|
120
120
|
|
|
121
|
-
For an existing installation, first preserve the old package/effective modes and freeze the inventory/receipt before replacing the carrier or Guard; after replacement, complete adoption/verification before Desktop startup. For a fresh installation there is no old-mode adoption. Install Guard through that carrier with `plugin --profile desktop add dsh-completion-guard@0.
|
|
121
|
+
For an existing installation, first preserve the old package/effective modes and freeze the inventory/receipt before replacing the carrier or Guard; after replacement, complete adoption/verification before Desktop startup. For a fresh installation there is no old-mode adoption. Install Guard through that carrier with `plugin --profile desktop add dsh-completion-guard@0.12.0`. Use the profile's own host-lock tool and the app's physical `app.asar` as `--runtime-root`. The default profile is `$DSH_HOME/profiles/desktop`, or `.dsh/profiles/desktop` under the user's home when `DSH_HOME` is unset. This POSIX example starts after installation:
|
|
122
122
|
|
|
123
123
|
```sh
|
|
124
124
|
DSH_DESKTOP_ASAR=/absolute/path/to/DeepSeek-Harness.app/Contents/Resources/app.asar
|
|
@@ -138,7 +138,7 @@ Check `supported` on inspect, inject and verify-dump. Keep Desktop stopped until
|
|
|
138
138
|
|
|
139
139
|
The official plugin market (`dshmarket`) can be installed into the same Desktop profile through the official management entry; its package name neither conflicts with the Desktop bundle tuple nor grants any trust. Installing or removing the market changes the profile's importer, so the previous Desktop lock stops matching (`host_lock_installed_graph_drift`) and must be rebuilt with the full four-step flow: `inspect`, then `inject`, then generate a NEW composed dump with `dump-desktop`, then verify that new dump with `verify-dump --dump-config <new file>`. `dump-desktop` only composes a configuration for readback; it never substitutes for `verify-dump`. Verify the dump generated after this rebuild — a dump captured before the market change no longer matches and must be discarded. Rebuild the lock on this machine; a lock or digest copied from another profile or machine is not valid evidence. Desktop restart stays unsupported regardless of coexistence.
|
|
140
140
|
|
|
141
|
-
Desktop
|
|
141
|
+
Desktop 升级顺序相同:先停止应用,必要时将宿主升级至最低要求,再用应用附带的 CLI 安装 Guard。普通外部 CLI 无法管理保留的 Desktop profile。以应用的 `app.asar` 和实际 Desktop profile 路径执行 `inspect`、`inject`、`dump-desktop`、`verify-dump`,确认三项 JSON 回读均为 `supported` 后再打开应用。`dump-desktop` 不启动宿主;配置输出可能包含私人信息,请留在本机。Guard 不修改应用归档,也不负责应用重启。官方插件市场(`dshmarket`)可以通过官方管理入口安装到同一 Desktop profile;其包名既不与 Desktop bundle 元组冲突,也不授予任何信任。安装或移除市场会改变 profile 的 importer,旧 Desktop 锁因此不再匹配(`host_lock_installed_graph_drift`),需要用完整四步流程重建:先 `inspect`,再 `inject`,然后用 `dump-desktop` 生成新的组合配置,最后用 `verify-dump --dump-config <新文件>` 校验这份新配置。`dump-desktop` 只负责生成配置供回读,不能替代 `verify-dump`。请校验本次重建后新生成的 dump——市场变化前捕获的旧 dump 已不匹配,应当丢弃。请在本机重建锁;从其他 profile 或其他机器复制的锁或摘要不构成有效证据。无论是否共存,Desktop 重启仍不受支持。
|
|
142
142
|
|
|
143
143
|
## Market and restart
|
|
144
144
|
|
package/docs/LOCAL_ACCEPTANCE.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Local Acceptance
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.12.0 / DSH 0.2.1-rc.5 candidate contract
|
|
4
4
|
|
|
5
|
-
The current source requires DSH `>=0.2.1-rc.3`, with rc.
|
|
5
|
+
The current source requires DSH `>=0.2.1-rc.3`, with rc.5 as its default audited host graph; rc.3 uses its own reviewed cohort. The task, certificate and data protocols and the existing Web/Headless and Desktop gate sets remain in force. Use `--desktop-cohort 0.2.1-rc.5` for this candidate's Desktop entry. Follow the [host-lock upgrade](HOST_LOCK_UPGRADE.md) and [old-session migration](ACTIVATION_MIGRATION.md) instructions before replacing an installation.
|
|
6
6
|
|
|
7
|
-
The
|
|
7
|
+
The rc.5 qualification and packaged metadata updates create a new package identity. Source, CI, exact tgz identity, each platform's native installation/lifecycle, real-model and GUI/performance results must name that new subject; earlier rc.2 observations remain attached to their original source and artifact. This section states the contract, not a passing execution or publication. The versioned sections below retain their historical scope, including 0.10.0's rc.2 floor and original command examples.
|
|
8
8
|
|
|
9
|
-
当前源码的 DSH
|
|
9
|
+
当前源码的 DSH 下限为 `0.2.1-rc.3`,默认审查基线为 rc.5;rc.3 使用自己的审查队列。旧会话及数据协议保持兼容,Web/Headless 与 Desktop 原有门禁不变;本候选的 Desktop 入口使用 `--desktop-cohort 0.2.1-rc.5`。候选变更产生新的包字节,源码、CI、制品、双平台原生、模型及 UI/性能证据必须分别绑定新身份。下文旧版本记录保留原范围,不改标为本候选通过。
|
|
10
10
|
|
|
11
11
|
## 0.10.0 / DSH 0.2.1-rc.2 acceptance contract
|
|
12
12
|
|
|
@@ -20,6 +20,14 @@
|
|
|
20
20
|
"asarHeaderSha256": "84140c5d09050010753077cde3c8e35fc2e050054f1ed69f761fae8b6fdd4b95",
|
|
21
21
|
"invariantCompanions": "none present in the rc.3 distribution ASAR; `files` remains the rc.2-only supplement set and is consumed only by the rc.2 rows",
|
|
22
22
|
"windows": "Windows installed carrier and retained official installer Authenticode Valid; signed ElectronAsar/Integrity equals measured header; root/runtime manifests and metadata match signed header integrity; retained installer size and SHA-512 equal official win-x64 nightly updater metadata (2026-10-26). Native Guard install/no-op/lifecycle acceptance is separate."
|
|
23
|
+
},
|
|
24
|
+
"rc5Acquisition": {
|
|
25
|
+
"observedDate": "2026-11-02",
|
|
26
|
+
"method": "official CDN zip downloaded, SHA-512 recorded, codesign --verify --deep --strict passed (TeamIdentifier NAN929V4UM, identifier com.deepseek.dsh), ASAR header recomputed and matched the independently verified local install header, desktop manifest and desktop-runtime.json extracted from the archive",
|
|
27
|
+
"zipSha512Base64": "SPXR+TMC5+7v9R544aKgA2CkDrLr2XyNL/35/NuxGBbP5nrSTEGMurNRAi+R1RSlcWZm3KNdySAt0RS8Qizv9g==",
|
|
28
|
+
"asarHeaderSha256": "77ad6299a3dcf5adc320ca215e1ee604eabd76e8d71bfc88fe264fc88bb17f65",
|
|
29
|
+
"invariantCompanions": "none present in the rc.5 distribution ASAR; `files` remains the rc.2-only supplement set and is consumed only by the rc.2 rows",
|
|
30
|
+
"windows": "Windows installed carrier and retained official installer Authenticode Valid; signed ElectronAsar/Integrity equals measured header; root/runtime manifests and metadata match signed header integrity; retained installer size 289408544 and SHA-512 equal the independently retained official win-x64 download (2026-11-02). Runtime win32/x64, Node 24.21.0, pnpm 11.28.5; no invariant companions observed in actual ASAR/runtime index scans. Native Guard install/no-op/lifecycle acceptance remains separate."
|
|
23
31
|
}
|
|
24
32
|
},
|
|
25
33
|
"files": [
|
|
@@ -158,6 +166,37 @@
|
|
|
158
166
|
"releaseUrl": "https://download.deepseek.com/dsh-desk/bin/win-x64/deepseek-harness-0.2.1-rc.3-win-x64.exe",
|
|
159
167
|
"releaseSha512": "q5IGr2Bf+TvvCpagHj49Ypn/ZrqR7kqrYpLjqXP7VfDINmddlqZQmG+YfsdL3q3EdTRMRlKz/a3jDAEzdNdDOw==",
|
|
160
168
|
"vendorPublisher": "Hangzhou DeepSeek Artificial Intelligence Co., Ltd."
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": "desktop-0.2.1-rc.5-darwin-arm64",
|
|
172
|
+
"platform": "darwin",
|
|
173
|
+
"arch": "arm64",
|
|
174
|
+
"version": "0.2.1-rc.5",
|
|
175
|
+
"runtimeVersion": "0.2.1-rc.5",
|
|
176
|
+
"pnpmVersion": "11.28.5",
|
|
177
|
+
"asarHeaderSha256": "77ad6299a3dcf5adc320ca215e1ee604eabd76e8d71bfc88fe264fc88bb17f65",
|
|
178
|
+
"desktopManifestSha256": "ee6ab2f7c6ac6a052cb2944ec5c95d9beb0145070acf58127efe40367d12dc7a",
|
|
179
|
+
"buildCommit": "d4db512a969fccf0c5cc7ec8fe38e9c1d27af916",
|
|
180
|
+
"buildDirty": false,
|
|
181
|
+
"releaseUrl": "https://download.deepseek.com/dsh-desk/bin/mac-arm64/deepseek-harness-0.2.1-rc.5-mac-arm64.zip",
|
|
182
|
+
"releaseSha512": "SPXR+TMC5+7v9R544aKgA2CkDrLr2XyNL/35/NuxGBbP5nrSTEGMurNRAi+R1RSlcWZm3KNdySAt0RS8Qizv9g==",
|
|
183
|
+
"vendorTeam": "NAN929V4UM",
|
|
184
|
+
"vendorIdentifier": "com.deepseek.dsh"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"id": "desktop-0.2.1-rc.5-win32-x64",
|
|
188
|
+
"platform": "win32",
|
|
189
|
+
"arch": "x64",
|
|
190
|
+
"version": "0.2.1-rc.5",
|
|
191
|
+
"runtimeVersion": "0.2.1-rc.5",
|
|
192
|
+
"pnpmVersion": "11.28.5",
|
|
193
|
+
"asarHeaderSha256": "69828bdcbb189485291e3901a027d46d2f665a36fc8441034052da328b173ba9",
|
|
194
|
+
"desktopManifestSha256": "ee6ab2f7c6ac6a052cb2944ec5c95d9beb0145070acf58127efe40367d12dc7a",
|
|
195
|
+
"buildCommit": "d4db512a969fccf0c5cc7ec8fe38e9c1d27af916",
|
|
196
|
+
"buildDirty": false,
|
|
197
|
+
"releaseUrl": "https://download.deepseek.com/dsh-desk/bin/win-x64/deepseek-harness-0.2.1-rc.5-win-x64.exe",
|
|
198
|
+
"releaseSha512": "gu2dH+aTr678c0P8DGAH/h4B1GaWfQIjpsPrLjl/ukLrQIh6DLVq/MhX4FZvJ8o1GCMocOhix6XbLa6KmtjXXg==",
|
|
199
|
+
"vendorPublisher": "Hangzhou DeepSeek Artificial Intelligence Co., Ltd."
|
|
161
200
|
}
|
|
162
201
|
]
|
|
163
202
|
}
|