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.
Files changed (103) hide show
  1. package/README.md +12 -3
  2. package/README.zh.md +12 -3
  3. package/docs/architecture/3.0-architecture-plan.md +252 -0
  4. package/docs/architecture/3.0-r0-contract-ledger.md +137 -0
  5. package/docs/architecture/3.0-r1-source-artifact-boundary.md +98 -0
  6. package/docs/architecture/3.0-r10-final-correctness-closure.md +207 -0
  7. package/docs/architecture/3.0-r11-adversarial-review.md +441 -0
  8. package/docs/architecture/3.0-r5-browser-go-no-go.md +165 -0
  9. package/docs/architecture/3.0-r5-browser-typescript-gate.md +105 -0
  10. package/docs/architecture/3.0-r6-compat-retirement.md +203 -0
  11. package/docs/architecture/3.0-r7-public-api.md +151 -0
  12. package/docs/architecture/3.0-r8-ci-release.md +248 -0
  13. package/docs/architecture/3.0-r9-final-audit.md +370 -0
  14. package/docs/architecture/dsh-support-window.md +5 -3
  15. package/docs/releases/v3.0.0.md +85 -0
  16. package/entry.js +1 -1
  17. package/index.js +108 -71
  18. package/lib/agent-request-route-authority.js +1 -20
  19. package/lib/core-apply-lifecycle.js +37 -43
  20. package/lib/core-cache.js +87 -0
  21. package/lib/core-primitives.js +3 -143
  22. package/lib/core-vision-surface-domain.js +63 -0
  23. package/lib/core-vision-surface.js +11 -77
  24. package/lib/delegated-call-config.js +15 -24
  25. package/lib/doctor-cli.js +0 -0
  26. package/lib/doctor-runtime.js +4 -1
  27. package/lib/dsh-contract-compat.js +26 -230
  28. package/lib/dsh-host-capabilities.js +3 -9
  29. package/lib/dsh-settings-017-compat.js +17 -10
  30. package/lib/file-logger.js +8 -3
  31. package/lib/grounding-coordinate-runtime.js +1 -2
  32. package/lib/http-body-limit.js +97 -79
  33. package/lib/image-offload-compat.js +30 -21
  34. package/lib/image-resource-governor.js +210 -228
  35. package/lib/legacy-global-proxy-boundary.js +46 -3
  36. package/lib/live-model-client-prelude.js +12 -4
  37. package/lib/live-model-discovery.js +134 -43
  38. package/lib/local-vision-stabilizer.js +31 -17
  39. package/lib/maintenance-routes.js +1 -3
  40. package/lib/native-image-coexistence.js +15 -3
  41. package/lib/ollama-cold-start.js +87 -23
  42. package/lib/pi-ai-bridge-wire-compat.js +3 -2
  43. package/lib/proxy-dispatcher-pool.js +151 -92
  44. package/lib/proxy-routing.js +75 -51
  45. package/lib/proxy-url-compat.js +3 -10
  46. package/lib/public-config.js +23 -44
  47. package/lib/public-entry.d.ts +148 -0
  48. package/lib/public-entry.js +17 -4
  49. package/lib/replay-delegation.js +12 -7
  50. package/lib/replay-envelope-v2-compat.js +12 -7
  51. package/lib/runtime-composition.js +22 -4
  52. package/lib/screenshot-source-boundary.js +2 -2
  53. package/lib/session-affinity-runtime.js +113 -97
  54. package/lib/session-affinity.js +89 -76
  55. package/lib/session-event-history-compat.js +30 -0
  56. package/lib/session-query-readers.js +263 -0
  57. package/lib/session-surface-compat.js +30 -31
  58. package/lib/session-surface-policy-domain.js +85 -0
  59. package/lib/session-surface-policy.js +2 -111
  60. package/lib/session-turn-resolver.js +2 -6
  61. package/lib/session-vision-attachment-index.js +143 -0
  62. package/lib/session-vision-delegation-boundary.js +34 -0
  63. package/lib/session-vision-delegation.js +22 -0
  64. package/lib/session-vision-index.js +25 -107
  65. package/lib/session-vision-mode-authority.js +229 -192
  66. package/lib/session-vision-mode-boundary.js +65 -22
  67. package/lib/session-vision-policy-domain.js +304 -0
  68. package/lib/session-vision-policy.js +104 -0
  69. package/lib/session-vision-state.js +368 -378
  70. package/lib/settings-client-017-compat.js +9 -7
  71. package/lib/structured-flow-hardening.js +22 -4
  72. package/lib/tesseract-exec-compat.js +9 -1
  73. package/lib/turn-budget-context.js +47 -41
  74. package/lib/update-check.js +11 -2
  75. package/lib/vision-attachment-handle-runtime.js +176 -156
  76. package/lib/vision-backend-runtime-policy.js +16 -0
  77. package/lib/vision-background-benchmark.js +41 -4
  78. package/lib/vision-background-failure-policy.js +41 -41
  79. package/lib/vision-background-stop-store-core.js +217 -0
  80. package/lib/vision-background-stop-store.js +8 -179
  81. package/lib/vision-capability-benchmark.js +11 -61
  82. package/lib/vision-capability-evidence.js +35 -0
  83. package/lib/vision-capability-fingerprint.js +72 -0
  84. package/lib/vision-capability-identity.js +116 -61
  85. package/lib/vision-capability-router.js +13 -33
  86. package/lib/vision-chunk-assembler.js +95 -0
  87. package/lib/vision-diagnostics-routes.js +34 -4
  88. package/lib/vision-execution-order-apply.js +45 -55
  89. package/lib/vision-execution-order.js +19 -19
  90. package/lib/vision-execution-policy.js +12 -7
  91. package/lib/vision-model-registry.js +30 -17
  92. package/lib/vision-provider-transport.js +137 -147
  93. package/lib/vision-routing-authority.js +47 -48
  94. package/lib/vision-routing-product.js +26 -29
  95. package/lib/vision-routing-settings-prelude.js +8 -3
  96. package/lib/vision-runtime-performance-store.js +166 -0
  97. package/lib/vision-runtime-performance.js +13 -142
  98. package/lib/vision-tool-runtime-boundary.js +99 -30
  99. package/lib/web/dsh-settings-017-root-transport.js +27 -12
  100. package/lib/web/remote-settings-client.js +4 -7
  101. package/lib/web-capability-boundary.js +17 -7
  102. package/lib/wrapper-directory.js +14 -23
  103. 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 2.x compatibility program.
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` | **exact `0.2.0-rc.2`** |
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 * from './index.js'
17
+ export { inject, name } from './index.js'
18
18
  export { sessionSurfaceReplacementIntent } from './lib/session-surface-compat.js'
19
19
  export {
20
20
  ensureVisionAttachmentAdmissionPolicy,