dsh-vision-router 2.3.0 → 3.0.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.md +12 -3
- package/README.zh.md +12 -3
- package/docs/architecture/3.0-architecture-plan.md +252 -0
- package/docs/architecture/3.0-r0-contract-ledger.md +137 -0
- package/docs/architecture/3.0-r1-source-artifact-boundary.md +98 -0
- package/docs/architecture/3.0-r10-final-correctness-closure.md +207 -0
- package/docs/architecture/3.0-r11-adversarial-review.md +441 -0
- package/docs/architecture/3.0-r5-browser-go-no-go.md +165 -0
- package/docs/architecture/3.0-r5-browser-typescript-gate.md +105 -0
- package/docs/architecture/3.0-r6-compat-retirement.md +203 -0
- package/docs/architecture/3.0-r7-public-api.md +151 -0
- package/docs/architecture/3.0-r8-ci-release.md +248 -0
- package/docs/architecture/3.0-r9-final-audit.md +370 -0
- package/docs/architecture/dsh-support-window.md +5 -3
- package/docs/releases/v3.0.0.md +85 -0
- package/entry.js +1 -1
- package/index.js +108 -71
- package/lib/agent-request-route-authority.js +1 -20
- package/lib/core-apply-lifecycle.js +37 -43
- package/lib/core-cache.js +87 -0
- package/lib/core-primitives.js +3 -143
- package/lib/core-vision-surface-domain.js +63 -0
- package/lib/core-vision-surface.js +11 -77
- package/lib/delegated-call-config.js +15 -24
- package/lib/doctor-cli.js +0 -0
- package/lib/doctor-runtime.js +4 -1
- package/lib/dsh-contract-compat.js +26 -230
- package/lib/dsh-host-capabilities.js +3 -9
- package/lib/dsh-settings-017-compat.js +17 -10
- package/lib/file-logger.js +8 -3
- package/lib/grounding-coordinate-runtime.js +1 -2
- package/lib/http-body-limit.js +97 -79
- package/lib/image-offload-compat.js +30 -21
- package/lib/image-resource-governor.js +210 -228
- package/lib/legacy-global-proxy-boundary.js +46 -3
- package/lib/live-model-client-prelude.js +12 -4
- package/lib/live-model-discovery.js +134 -43
- package/lib/local-vision-stabilizer.js +31 -17
- package/lib/maintenance-routes.js +1 -3
- package/lib/native-image-coexistence.js +15 -3
- package/lib/ollama-cold-start.js +87 -23
- package/lib/pi-ai-bridge-wire-compat.js +3 -2
- package/lib/proxy-dispatcher-pool.js +151 -92
- package/lib/proxy-routing.js +75 -51
- package/lib/proxy-url-compat.js +3 -10
- package/lib/public-config.js +23 -44
- package/lib/public-entry.d.ts +148 -0
- package/lib/public-entry.js +17 -4
- package/lib/replay-delegation.js +12 -7
- package/lib/replay-envelope-v2-compat.js +12 -7
- package/lib/runtime-composition.js +22 -4
- package/lib/screenshot-source-boundary.js +2 -2
- package/lib/session-affinity-runtime.js +113 -97
- package/lib/session-affinity.js +89 -76
- package/lib/session-event-history-compat.js +30 -0
- package/lib/session-query-readers.js +263 -0
- package/lib/session-surface-compat.js +30 -31
- package/lib/session-surface-policy-domain.js +85 -0
- package/lib/session-surface-policy.js +2 -111
- package/lib/session-turn-resolver.js +2 -6
- package/lib/session-vision-attachment-index.js +143 -0
- package/lib/session-vision-delegation-boundary.js +34 -0
- package/lib/session-vision-delegation.js +22 -0
- package/lib/session-vision-index.js +25 -107
- package/lib/session-vision-mode-authority.js +229 -192
- package/lib/session-vision-mode-boundary.js +65 -22
- package/lib/session-vision-policy-domain.js +304 -0
- package/lib/session-vision-policy.js +104 -0
- package/lib/session-vision-state.js +368 -378
- package/lib/settings-client-017-compat.js +9 -7
- package/lib/structured-flow-hardening.js +22 -4
- package/lib/tesseract-exec-compat.js +9 -1
- package/lib/turn-budget-context.js +47 -41
- package/lib/update-check.js +11 -2
- package/lib/vision-attachment-handle-runtime.js +176 -156
- package/lib/vision-backend-runtime-policy.js +16 -0
- package/lib/vision-background-benchmark.js +41 -4
- package/lib/vision-background-failure-policy.js +41 -41
- package/lib/vision-background-stop-store-core.js +217 -0
- package/lib/vision-background-stop-store.js +8 -179
- package/lib/vision-capability-benchmark.js +11 -61
- package/lib/vision-capability-evidence.js +35 -0
- package/lib/vision-capability-fingerprint.js +72 -0
- package/lib/vision-capability-identity.js +116 -61
- package/lib/vision-capability-router.js +13 -33
- package/lib/vision-chunk-assembler.js +95 -0
- package/lib/vision-diagnostics-routes.js +34 -4
- package/lib/vision-execution-order-apply.js +45 -55
- package/lib/vision-execution-order.js +19 -19
- package/lib/vision-execution-policy.js +12 -7
- package/lib/vision-model-registry.js +30 -17
- package/lib/vision-provider-transport.js +137 -147
- package/lib/vision-routing-authority.js +47 -48
- package/lib/vision-routing-product.js +26 -29
- package/lib/vision-routing-settings-prelude.js +8 -3
- package/lib/vision-runtime-performance-store.js +166 -0
- package/lib/vision-runtime-performance.js +13 -142
- package/lib/vision-tool-runtime-boundary.js +99 -30
- package/lib/web/dsh-settings-017-root-transport.js +27 -12
- package/lib/web/remote-settings-client.js +4 -7
- package/lib/web-capability-boundary.js +17 -7
- package/lib/wrapper-directory.js +14 -23
- package/package.json +37 -11
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
# DVR 3.0 R9 — Final architecture audit
|
|
2
|
+
|
|
3
|
+
Status: **complete**
|
|
4
|
+
|
|
5
|
+
Implementation checkpoint audited:
|
|
6
|
+
|
|
7
|
+
- branch: `3.0`
|
|
8
|
+
- runtime/source HEAD: `1e331b1b8f8ea74a5cd38a1347f4e0bd13ef9ef9`
|
|
9
|
+
- package version at audit: `2.3.0`
|
|
10
|
+
- 3.0 PR: none
|
|
11
|
+
- 3.0 release/tag: none
|
|
12
|
+
|
|
13
|
+
R9 is the final architecture audit for the 3.0 typed-architecture consolidation. It
|
|
14
|
+
re-runs the ownership, lifecycle, dependency-cycle, browser, compatibility, package,
|
|
15
|
+
Node 22/24, supported-DSH, Desktop, adversarial, property, resource and release gates
|
|
16
|
+
defined by the 3.0 plan.
|
|
17
|
+
|
|
18
|
+
The result is a closure, not a repository-wide TypeScript conversion.
|
|
19
|
+
|
|
20
|
+
## Final architecture shape
|
|
21
|
+
|
|
22
|
+
3.0 ends with the same core principle with which it started:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
DSH public contracts
|
|
26
|
+
|
|
|
27
|
+
v
|
|
28
|
+
narrow runtime-validated Host boundaries
|
|
29
|
+
|
|
|
30
|
+
v
|
|
31
|
+
typed DVR semantic owners
|
|
32
|
+
|
|
|
33
|
+
v
|
|
34
|
+
Authority -> Evidence -> Planner -> Execution
|
|
35
|
+
| |
|
|
36
|
+
+------ composition ----+
|
|
37
|
+
|
|
|
38
|
+
v
|
|
39
|
+
mature Core
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
TypeScript was used where it reduces concrete ownership, lifecycle or contract drift
|
|
43
|
+
risk. Mature algorithmic JavaScript and the browser client remain JavaScript where a
|
|
44
|
+
language conversion would add build/declaration complexity without moving an
|
|
45
|
+
architectural boundary.
|
|
46
|
+
|
|
47
|
+
## Final source/package checkpoint
|
|
48
|
+
|
|
49
|
+
At the audited implementation HEAD:
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
canonical runtime TS owners 38
|
|
53
|
+
canonical public declarations 1
|
|
54
|
+
canonical package artifacts 182
|
|
55
|
+
tracked generated artifacts 0
|
|
56
|
+
|
|
57
|
+
browser client bytes 261672
|
|
58
|
+
browser hard gate 262144
|
|
59
|
+
browser headroom 472
|
|
60
|
+
|
|
61
|
+
package-root runtime exports 12
|
|
62
|
+
runtime-composition.js lines 483
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
The final source-to-artifact evidence digest is:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
1949633432f7e284eec19fab4bd4e75a303e33bfe60f375ddf958c3a2343d48a
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The validation checkout was clean.
|
|
72
|
+
|
|
73
|
+
## R9 findings and repairs
|
|
74
|
+
|
|
75
|
+
R9 was not a ceremonial re-run. It found several integration defects that ordinary
|
|
76
|
+
unit/CI coverage did not expose and repaired them before closure.
|
|
77
|
+
|
|
78
|
+
### 1. Frozen Host Dispatcher Proxy invariant
|
|
79
|
+
|
|
80
|
+
The typed provider transport correctly moved DVR toward the public Undici Dispatcher
|
|
81
|
+
contract, but the per-hop wrapper originally used the borrowed Host dispatcher itself as
|
|
82
|
+
a JavaScript Proxy target.
|
|
83
|
+
|
|
84
|
+
A Host dispatcher may expose `dispatch` as a frozen/non-configurable own property. A
|
|
85
|
+
Proxy `get` trap that substitutes another dispatch function then violates ECMAScript
|
|
86
|
+
Proxy invariants and throws before network dispatch.
|
|
87
|
+
|
|
88
|
+
R9 changed the wrapper to use a neutral shell with the same prototype while forwarding
|
|
89
|
+
all non-dispatch reads/method calls to the borrowed fallback dispatcher.
|
|
90
|
+
|
|
91
|
+
Result:
|
|
92
|
+
|
|
93
|
+
- DVR still does not own or close the borrowed fallback;
|
|
94
|
+
- full Dispatcher method/event surface remains available;
|
|
95
|
+
- prototype/instance-style compatibility is preserved;
|
|
96
|
+
- the wrapper can safely override only the dispatch routing seam.
|
|
97
|
+
|
|
98
|
+
The transport regression suite passes after the repair.
|
|
99
|
+
|
|
100
|
+
### 2. Cross-repository Host workflows still assumed tracked artifacts
|
|
101
|
+
|
|
102
|
+
R1 removed `entry.js`, `index.js` and `lib/**` from Git. Several real-Host and exact
|
|
103
|
+
source workflows still checked DVR out under `dvr/` and immediately handed that checkout
|
|
104
|
+
to DSH as if generated package artifacts were tracked.
|
|
105
|
+
|
|
106
|
+
This caused exact-source failures such as:
|
|
107
|
+
|
|
108
|
+
```text
|
|
109
|
+
Cannot find .../dvr/lib/dsh-contract-compat.js
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
and real Host/browser failures where the package topology was incomplete.
|
|
113
|
+
|
|
114
|
+
R9 updated every current cross-repository DVR checkout workflow to materialize the
|
|
115
|
+
package explicitly:
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
pnpm install --frozen-lockfile --ignore-scripts
|
|
119
|
+
pnpm build
|
|
120
|
+
pnpm build:check
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
before DSH consumes the package.
|
|
124
|
+
|
|
125
|
+
A permanent architecture gate now requires one explicit materialization step per current
|
|
126
|
+
`path: dvr` checkout job.
|
|
127
|
+
|
|
128
|
+
### 3. Peer-admission gate had a stale hard-coded DSH peer list
|
|
129
|
+
|
|
130
|
+
The Host admission evaluator assumed DVR declared only two DSH peers. 3.0 legitimately
|
|
131
|
+
uses the public `@deepseek-ai/dsh-storage-domain` type contract for the optional durable
|
|
132
|
+
Session policy sidecar, so the hard-coded peer list drifted from the package manifest.
|
|
133
|
+
|
|
134
|
+
R9 changed admission verification to derive the complete DSH peer set from
|
|
135
|
+
`package.json` rather than silently maintaining a second list.
|
|
136
|
+
|
|
137
|
+
This does not broaden admission. The same compatibility expression is still evaluated for
|
|
138
|
+
every declared DSH peer.
|
|
139
|
+
|
|
140
|
+
### 4. Optional Cordis capabilities were read as direct service properties
|
|
141
|
+
|
|
142
|
+
Real DSH Host/Desktop runs exposed an important Cordis lifecycle rule that ordinary object
|
|
143
|
+
fixtures did not model: directly reading an undeclared optional service property can turn
|
|
144
|
+
capability detection into a hard pending dependency.
|
|
145
|
+
|
|
146
|
+
R9 repaired three seams:
|
|
147
|
+
|
|
148
|
+
- Session projection lookup now uses `Context#get('sessionProjections')`;
|
|
149
|
+
- optional storage-domain lookup now uses `Context#get('storageDomain')`;
|
|
150
|
+
- Agent delegation binding now enters through
|
|
151
|
+
`ctx.inject(['agents'], agentsCtx => ...)`.
|
|
152
|
+
|
|
153
|
+
Regression fixtures now deliberately throw on direct optional service-property reads so a
|
|
154
|
+
future refactor cannot accidentally recreate the hard dependency.
|
|
155
|
+
|
|
156
|
+
This preserves the intended ownership model:
|
|
157
|
+
|
|
158
|
+
```text
|
|
159
|
+
optional capability
|
|
160
|
+
-> capability-safe Host lookup / explicit lifecycle child
|
|
161
|
+
-> narrow DVR boundary
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
instead of:
|
|
165
|
+
|
|
166
|
+
```text
|
|
167
|
+
optional capability
|
|
168
|
+
-> implicit Cordis dependency
|
|
169
|
+
-> plugin remains pending
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Local final-audit matrix
|
|
173
|
+
|
|
174
|
+
All final local evidence below was re-run at
|
|
175
|
+
`1e331b1b8f8ea74a5cd38a1347f4e0bd13ef9ef9`.
|
|
176
|
+
|
|
177
|
+
### Build / source ownership
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
build success
|
|
181
|
+
build:check 182/182 artifacts in sync
|
|
182
|
+
source ownership lint success
|
|
183
|
+
source -> artifact evidence success
|
|
184
|
+
Host typecheck success
|
|
185
|
+
Client typecheck success
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Full runtime suite
|
|
189
|
+
|
|
190
|
+
```text
|
|
191
|
+
main suite 1588 tests / 1587 pass / 0 fail / 1 skip
|
|
192
|
+
backend suite 9 tests / 9 pass / 0 fail
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Architecture / composition / transport
|
|
196
|
+
|
|
197
|
+
```text
|
|
198
|
+
87 / 87 pass
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Coverage includes ownership closure, dependency-cycle audit, composition, Session runtime
|
|
202
|
+
parity, execution-order wiring, Core surface projection and provider transport.
|
|
203
|
+
|
|
204
|
+
### Browser
|
|
205
|
+
|
|
206
|
+
```text
|
|
207
|
+
166 / 166 pass
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
The 256 KiB single-file gate remains unchanged.
|
|
211
|
+
|
|
212
|
+
### Compatibility
|
|
213
|
+
|
|
214
|
+
```text
|
|
215
|
+
118 / 118 pass
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Resource / lifecycle
|
|
219
|
+
|
|
220
|
+
```text
|
|
221
|
+
35 / 35 pass
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Property fuzz
|
|
225
|
+
|
|
226
|
+
```text
|
|
227
|
+
5 / 5 pass
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Adversarial fuzz
|
|
231
|
+
|
|
232
|
+
```text
|
|
233
|
+
500 cases passed
|
|
234
|
+
seed = 1592639710
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Main CI
|
|
238
|
+
|
|
239
|
+
Current implementation HEAD CI:
|
|
240
|
+
|
|
241
|
+
```text
|
|
242
|
+
run 36863198103
|
|
243
|
+
HEAD 1e331b1b8f8ea74a5cd38a1347f4e0bd13ef9ef9
|
|
244
|
+
conclusion: success
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
This includes the 3.0 packed-public-API gate together with Node 22/24 and native package
|
|
248
|
+
coverage.
|
|
249
|
+
|
|
250
|
+
## Supported DSH exact-source matrix
|
|
251
|
+
|
|
252
|
+
Final R9 run:
|
|
253
|
+
|
|
254
|
+
```text
|
|
255
|
+
DSH exact source contract
|
|
256
|
+
run 36864403940
|
|
257
|
+
HEAD 1e331b1b8f8ea74a5cd38a1347f4e0bd13ef9ef9
|
|
258
|
+
conclusion: success
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
The matrix covers the admitted 0.1.5/0.1.7 source trains across Ubuntu, macOS and Windows.
|
|
262
|
+
|
|
263
|
+
The public Host floor therefore remains evidence-backed; R9 found no reason to raise it.
|
|
264
|
+
|
|
265
|
+
## DSH 0.1.7 real Host/Desktop
|
|
266
|
+
|
|
267
|
+
Final R9 run:
|
|
268
|
+
|
|
269
|
+
```text
|
|
270
|
+
DSH 0.1.7 real Host smoke
|
|
271
|
+
run 36864412738
|
|
272
|
+
HEAD 1e331b1b8f8ea74a5cd38a1347f4e0bd13ef9ef9
|
|
273
|
+
conclusion: success
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Passed:
|
|
277
|
+
|
|
278
|
+
- real Host + Chromium;
|
|
279
|
+
- macOS real Desktop renderer;
|
|
280
|
+
- Windows Desktop Host / Node 22.19.0;
|
|
281
|
+
- Windows Desktop Host / Node 24.21.0.
|
|
282
|
+
|
|
283
|
+
## DSH 0.2.0-rc.2 real Host/Desktop
|
|
284
|
+
|
|
285
|
+
Final R9 run:
|
|
286
|
+
|
|
287
|
+
```text
|
|
288
|
+
DSH 0.2.0-rc.2 validation
|
|
289
|
+
run 36864396216
|
|
290
|
+
HEAD 1e331b1b8f8ea74a5cd38a1347f4e0bd13ef9ef9
|
|
291
|
+
conclusion: success
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
Passed:
|
|
295
|
+
|
|
296
|
+
- real Host + Chromium;
|
|
297
|
+
- Windows Desktop Host / Node 22.19.0;
|
|
298
|
+
- Windows Desktop Host / Node 24.21.0;
|
|
299
|
+
- exact source / Ubuntu;
|
|
300
|
+
- exact source / Windows;
|
|
301
|
+
- exact source / macOS including real Desktop lifecycle.
|
|
302
|
+
|
|
303
|
+
## Negative architecture audit
|
|
304
|
+
|
|
305
|
+
R9 explicitly rechecked the 3.0 non-goals.
|
|
306
|
+
|
|
307
|
+
Production source contains no introduced:
|
|
308
|
+
|
|
309
|
+
- `DvrContext`;
|
|
310
|
+
- giant `HostFacade`;
|
|
311
|
+
- generic service locator / DI container;
|
|
312
|
+
- global current owner / registry;
|
|
313
|
+
- `Object.create(core)` facade;
|
|
314
|
+
- private DSH `/src/` production import;
|
|
315
|
+
- `@ts-ignore` or `@ts-nocheck` suppression.
|
|
316
|
+
|
|
317
|
+
`runtime-composition.js` remains a composition root rather than becoming a second Core.
|
|
318
|
+
|
|
319
|
+
R9 did not:
|
|
320
|
+
|
|
321
|
+
- convert mature Core merely for TypeScript percentage;
|
|
322
|
+
- raise the browser size gate;
|
|
323
|
+
- introduce a browser bundler/minifier as an architecture fix;
|
|
324
|
+
- delete runtime validation;
|
|
325
|
+
- collapse Host and Client compiler worlds;
|
|
326
|
+
- narrow historical durable-data compatibility;
|
|
327
|
+
- raise the DSH Host floor without evidence.
|
|
328
|
+
|
|
329
|
+
## Roadmap result
|
|
330
|
+
|
|
331
|
+
```text
|
|
332
|
+
R0 baseline / contract ledger complete
|
|
333
|
+
R1 source / artifact boundary complete
|
|
334
|
+
R2 type infrastructure / Host boundaries complete
|
|
335
|
+
R3 DVR domain types complete
|
|
336
|
+
R4 composition / mature Core complete
|
|
337
|
+
R5 Browser Client complete / production TS switch No-Go
|
|
338
|
+
R6 compatibility retirement / Host floor complete
|
|
339
|
+
R7 public API complete
|
|
340
|
+
R8 CI / release complete
|
|
341
|
+
R9 final architecture audit complete
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
The R4 result does not mean every mature-Core file became TypeScript. It means the
|
|
345
|
+
high-value composition/lifecycle seams were consolidated without creating the forbidden
|
|
346
|
+
declaration/facade graph; low-value algorithmic conversion was intentionally left out.
|
|
347
|
+
|
|
348
|
+
## Final 3.0 architecture verdict
|
|
349
|
+
|
|
350
|
+
The architecture work described by the 3.0 plan is complete.
|
|
351
|
+
|
|
352
|
+
3.0 now has:
|
|
353
|
+
|
|
354
|
+
- one canonical source tree;
|
|
355
|
+
- explicit generated package artifacts;
|
|
356
|
+
- strict, separate Host and Client compiler worlds;
|
|
357
|
+
- typed high-value lifecycle/domain owners;
|
|
358
|
+
- runtime validation at dynamic boundaries;
|
|
359
|
+
- explicit provider/resource/Session ownership;
|
|
360
|
+
- an intentionally narrow package-root runtime/type API;
|
|
361
|
+
- evidence-based compatibility retention/retirement;
|
|
362
|
+
- a deliberate Browser TypeScript No-Go rather than a weakened size/build contract;
|
|
363
|
+
- release and packed-package gates aligned with canonical source ownership;
|
|
364
|
+
- real Host/Desktop evidence across the supported DSH window.
|
|
365
|
+
|
|
366
|
+
The next work should therefore be release preparation or bug-driven follow-up, not another
|
|
367
|
+
architecture migration pass.
|
|
368
|
+
|
|
369
|
+
No PR, merge to `main`, 3.0 version bump, tag or formal 3.0 release is performed by
|
|
370
|
+
this R9 closure.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# DSH Host support window
|
|
2
2
|
|
|
3
|
-
Status: normative for the current DVR
|
|
3
|
+
Status: normative for the current DVR 3.x compatibility program.
|
|
4
4
|
|
|
5
5
|
## Public support policy
|
|
6
6
|
|
|
@@ -9,7 +9,8 @@ The public support policy contains only released Host semantics. Preview/canary
|
|
|
9
9
|
| DVR train | Minimum Supported Host | Current Stable Host | Ordinary development Host |
|
|
10
10
|
|---|---|---|---|
|
|
11
11
|
| `2.2.x` | `0.1.0-rc.8` | `0.1.5-rc.3` | historical 2.2 development baseline |
|
|
12
|
-
| `2.3.x` | **DSH `0.1.5` train** | `0.1.5-rc.3` |
|
|
12
|
+
| `2.3.x` | **DSH `0.1.5` train** | `0.1.5-rc.3` | historical 2.3 baseline |
|
|
13
|
+
| `3.0.x` | **DSH `0.1.5` train** | `0.1.5-rc.3` | **exact `0.2.0-rc.2`** |
|
|
13
14
|
|
|
14
15
|
DVR `2.2.x` keeps `0.1.0-rc.8` as its historical public floor.
|
|
15
16
|
|
|
@@ -54,9 +55,10 @@ DVR 2.0.x minimum: DSH 0.1.0-rc.6
|
|
|
54
55
|
DVR 2.1.x minimum: DSH 0.1.0-rc.8
|
|
55
56
|
DVR 2.2.x minimum: DSH 0.1.0-rc.8
|
|
56
57
|
DVR 2.3.x minimum: DSH 0.1.5 train (earliest admitted release: 0.1.5-rc.1)
|
|
58
|
+
DVR 3.0.x minimum: DSH 0.1.5 train (unchanged from 2.3.x; earliest admitted release: 0.1.5-rc.1)
|
|
57
59
|
```
|
|
58
60
|
|
|
59
|
-
Users on DSH trains older than `0.1.5` must upgrade DSH before upgrading to DVR 2.3.x.
|
|
61
|
+
Users on DSH trains older than `0.1.5` must upgrade DSH before upgrading to DVR 2.3.x or 3.0.x.
|
|
60
62
|
|
|
61
63
|
The 2.3 floor increase authorizes a fresh deletion audit for Host-version compatibility whose only purpose was keeping pre-`0.1.5` Hosts running. It does **not** authorize deleting compatibility for durable data merely because the Host that originally produced that data is no longer supported. Session logs, replay envelopes, persisted settings and other long-lived inputs require separate reachability evidence on supported Hosts.
|
|
62
64
|
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# v3.0.0
|
|
2
|
+
|
|
3
|
+
DSH Vision Router 3.0.0 is the ownership release. Vision authority now belongs to a
|
|
4
|
+
durable, explicitly owned Session policy instead of ambient session state; the
|
|
5
|
+
package root is a deliberate, typed public API instead of a monolithic
|
|
6
|
+
implementation file; and the runtime installation is grouped into explicit
|
|
7
|
+
composition phases with an explicitly passed provider transport. It also closes the
|
|
8
|
+
R10 correctness work, the R11 adversarial final audit, and hardens the release
|
|
9
|
+
pipeline itself.
|
|
10
|
+
|
|
11
|
+
## Highlights
|
|
12
|
+
|
|
13
|
+
- **Session Vision policy has a durable owner.** A scoped policy store, backed by
|
|
14
|
+
the Host storage domain, owns Vision authority per Session: it hydrates before a
|
|
15
|
+
child session publishes, carries into direct Vision checks, and binds delegation
|
|
16
|
+
to the Host Agent lifecycle instead of re-deriving authority from ambient state. A
|
|
17
|
+
scoped volatile backend keeps hosts without durable storage working.
|
|
18
|
+
- **Deliberate package root.** The monolithic `index.js` entry is replaced by a
|
|
19
|
+
curated public entry with its own declaration file, and `exports["."]` now carries
|
|
20
|
+
`types`. The packed public-API contract executes that entry, checks its lifecycle
|
|
21
|
+
preconditions and arity, and type-checks a consumer sample against the shipped
|
|
22
|
+
declarations.
|
|
23
|
+
- **Explicit composition and transport ownership.** Runtime installation is grouped
|
|
24
|
+
into explicit phases; router-owned provider HTTP receives its
|
|
25
|
+
`VisionProviderTransport` explicitly, and Core no longer installs a process-wide
|
|
26
|
+
proxy fetch. Provider probes — live model discovery and the settings connection
|
|
27
|
+
check — run inside the same configured-pair proxy scope as vision turns, taking the
|
|
28
|
+
transport the proxy boundary owns rather than reading the process global at call
|
|
29
|
+
time.
|
|
30
|
+
- **R11 adversarial final audit.** Twenty findings closed, each recorded together
|
|
31
|
+
with the artifact that guards it, plus the mechanical gates that keep the defect
|
|
32
|
+
classes from returning: source-ownership lint rules, the bundle-patch activation
|
|
33
|
+
shim contract, the offline release state machine, and boundary tests against a real
|
|
34
|
+
Host.
|
|
35
|
+
- **Release-pipeline integrity.** The release state machine is refusal-first and
|
|
36
|
+
draft-safe; registry identity and package content are compared before and after
|
|
37
|
+
publishing; the README announcement bars and the release notes are hard gates; the
|
|
38
|
+
pnpm-free Windows runtime smoke now receives built artifacts instead of installing
|
|
39
|
+
a package manager.
|
|
40
|
+
|
|
41
|
+
## Breaking change: a new required peer
|
|
42
|
+
|
|
43
|
+
3.0.0 adds one required peer dependency:
|
|
44
|
+
|
|
45
|
+
- `@deepseek-ai/dsh-storage-domain` `>=0.1.5-rc.1 <0.2.0-0 || >=0.2.0-rc.2 <0.3.0-0`
|
|
46
|
+
|
|
47
|
+
It backs the durable Session Vision policy layer. A Host that cannot provide the
|
|
48
|
+
storage domain cannot persist the policy and therefore must be upgraded first.
|
|
49
|
+
Existing Vision Router settings, profiles and historical Session data keep working:
|
|
50
|
+
the policy store is additive and hydrates from the Session when no durable entry
|
|
51
|
+
exists yet.
|
|
52
|
+
|
|
53
|
+
## Host support window
|
|
54
|
+
|
|
55
|
+
Unchanged from 2.3.x:
|
|
56
|
+
|
|
57
|
+
- DSH 0.1.x: `>=0.1.5-rc.1 <0.2.0-0`
|
|
58
|
+
- DSH 0.2.x: `>=0.2.0-rc.2 <0.3.0-0`
|
|
59
|
+
- ordinary development Host: exact `0.2.0-rc.2`
|
|
60
|
+
|
|
61
|
+
## Validation
|
|
62
|
+
|
|
63
|
+
- the full gate battery on the exact release commit: install, build, build:check,
|
|
64
|
+
source-ownership lint, source→artifact evidence, reproducible clean build,
|
|
65
|
+
typecheck, the test suite, client-source synchronization, the Host support-window
|
|
66
|
+
contract, and the packed public-API contract;
|
|
67
|
+
- the real-Host compatibility matrix, adversarial compatibility/fuzz gates and the
|
|
68
|
+
resource-stress gates;
|
|
69
|
+
- consumer verification of the installed package on both targets (a `dsh web`
|
|
70
|
+
profile installed from the repository, and a real Desktop shell): a real image turn
|
|
71
|
+
reaches the provider with the image and the configured credential attached, live
|
|
72
|
+
model discovery reports the live models, and the Vision Router settings surface
|
|
73
|
+
renders.
|
|
74
|
+
|
|
75
|
+
The audit and its evidence index are recorded in
|
|
76
|
+
`docs/architecture/3.0-r11-adversarial-review.md`.
|
|
77
|
+
|
|
78
|
+
## Upgrade
|
|
79
|
+
|
|
80
|
+
Users on 2.3.0 with a supported Host can upgrade in place; Vision Router settings and
|
|
81
|
+
existing Session data are read as before, and the durable policy store starts empty
|
|
82
|
+
and hydrates from the Session. On a Host that predates the storage domain, upgrade
|
|
83
|
+
DSH first. Remote Settings keeps its existing product contract: its confirmation is
|
|
84
|
+
an acknowledgement, not an authorization credential, and mutation stays bounded by
|
|
85
|
+
the explicit allow-list and local-only fields.
|
package/entry.js
CHANGED
|
@@ -14,7 +14,7 @@ export { SETTINGS_CONTRACT_REVISION }
|
|
|
14
14
|
|
|
15
15
|
export const Config = composePublicVisionConfig(core.Config)
|
|
16
16
|
|
|
17
|
-
export
|
|
17
|
+
export { inject, name } from './index.js'
|
|
18
18
|
export { sessionSurfaceReplacementIntent } from './lib/session-surface-compat.js'
|
|
19
19
|
export {
|
|
20
20
|
ensureVisionAttachmentAdmissionPolicy,
|