upstream-radar 0.40.0 → 0.41.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 (48) hide show
  1. package/README.md +123 -225
  2. package/dist/src/cli.js +11 -2
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/dsh-compatibility-ir.d.ts +98 -0
  5. package/dist/src/dsh-compatibility-ir.d.ts.map +1 -0
  6. package/dist/src/dsh-compatibility-ir.js +389 -0
  7. package/dist/src/dsh-compatibility-ir.js.map +1 -0
  8. package/dist/src/dsh-compatibility-issues.d.ts +44 -0
  9. package/dist/src/dsh-compatibility-issues.d.ts.map +1 -0
  10. package/dist/src/dsh-compatibility-issues.js +185 -0
  11. package/dist/src/dsh-compatibility-issues.js.map +1 -0
  12. package/dist/src/dsh-compatibility-ledger.d.ts +150 -0
  13. package/dist/src/dsh-compatibility-ledger.d.ts.map +1 -0
  14. package/dist/src/dsh-compatibility-ledger.js +645 -0
  15. package/dist/src/dsh-compatibility-ledger.js.map +1 -0
  16. package/dist/src/dsh-install-observation.d.ts +88 -1
  17. package/dist/src/dsh-install-observation.d.ts.map +1 -1
  18. package/dist/src/dsh-install-observation.js +579 -6
  19. package/dist/src/dsh-install-observation.js.map +1 -1
  20. package/dist/src/dsh-install-plan.d.ts +16 -6
  21. package/dist/src/dsh-install-plan.d.ts.map +1 -1
  22. package/dist/src/dsh-install-plan.js +272 -46
  23. package/dist/src/dsh-install-plan.js.map +1 -1
  24. package/dist/src/dsh-plugin.d.ts.map +1 -1
  25. package/dist/src/dsh-plugin.js +6 -2
  26. package/dist/src/dsh-plugin.js.map +1 -1
  27. package/dist/src/dsh-runtime.d.ts +6 -0
  28. package/dist/src/dsh-runtime.d.ts.map +1 -1
  29. package/dist/src/dsh-runtime.js +38 -0
  30. package/dist/src/dsh-runtime.js.map +1 -1
  31. package/dist/src/index.d.ts +7 -4
  32. package/dist/src/index.d.ts.map +1 -1
  33. package/dist/src/index.js +4 -1
  34. package/dist/src/index.js.map +1 -1
  35. package/dist/src/installed-graph.d.ts.map +1 -1
  36. package/dist/src/installed-graph.js +105 -26
  37. package/dist/src/installed-graph.js.map +1 -1
  38. package/dist/src/radar-types.d.ts +15 -0
  39. package/dist/src/radar-types.d.ts.map +1 -1
  40. package/dist/src/semver.d.ts.map +1 -1
  41. package/dist/src/semver.js +7 -1
  42. package/dist/src/semver.js.map +1 -1
  43. package/dist/src/version.d.ts +1 -1
  44. package/dist/src/version.js +1 -1
  45. package/docs/README.zh-CN.md +25 -23
  46. package/package.json +1 -1
  47. package/schemas/dsh-compatibility-ir.schema.json +89 -0
  48. package/schemas/dsh-install-observation.schema.json +135 -2
@@ -120,7 +120,13 @@ export function satisfiesSemverRange(versionValue, rangeValue) {
120
120
  if (version === undefined)
121
121
  return undefined;
122
122
  const normalized = rangeValue.trim().replace(/^workspace:/, '');
123
- if (normalized === '^' || normalized === '~' || normalized === '*')
123
+ // npm's bare wildcard is an explicit unconstrained range. Treating it as
124
+ // indeterminate made every resolved `peerDependencies: { name: "*" }`
125
+ // contract look like missing evidence even though any semantic version is
126
+ // a mathematical match.
127
+ if (normalized === '*')
128
+ return true;
129
+ if (normalized === '^' || normalized === '~')
124
130
  return undefined;
125
131
  let sawUnknown = false;
126
132
  for (const branch of normalized.split('||')) {
@@ -1 +1 @@
1
- {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/semver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/semver.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const TOOL_VERSION = "0.40.0";
1
+ export declare const TOOL_VERSION = "0.41.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,2 +1,2 @@
1
- export const TOOL_VERSION = '0.40.0';
1
+ export const TOOL_VERSION = '0.41.0';
2
2
  //# sourceMappingURL=version.js.map
@@ -98,7 +98,7 @@ FIRST EPSS estimated exploitation probability: 97.2% (percentile 100.0%)
98
98
  想立即检查一个真实发布的 DSH 插件,可以在空目录直接运行:
99
99
 
100
100
  ```bash
101
- npx --yes upstream-radar@0.40.0 inspect dsh-feishu-bot@0.15.8 --deep
101
+ npx --yes upstream-radar@0.41.0 inspect dsh-feishu-bot@0.15.8 --deep
102
102
  ```
103
103
 
104
104
  它会直接输出简短的准入结论、覆盖情况、依赖数量、漏洞数量和下一步,不需要先
@@ -111,7 +111,7 @@ npx --yes upstream-radar@0.40.0 inspect dsh-feishu-bot@0.15.8 --deep
111
111
  npm 解析环境中目前无法建立完整依赖图:
112
112
 
113
113
  ```bash
114
- npx --yes upstream-radar@0.40.0 inspect \
114
+ npx --yes upstream-radar@0.41.0 inspect \
115
115
  @sanqi-normal/dsh-webui-market-plugin@0.5.4 \
116
116
  --deep --fail-on never
117
117
  ```
@@ -122,7 +122,8 @@ profile、插件执行或 LLM。完整证据见[作者修复报告](../examples/
122
122
  这条案例已经闭环:维护者确认了宿主依赖约定,并提交了[修复
123
123
  `8b32828`](https://github.com/Sanqi-normal/dsh-webui-market-plugin/commit/8b328289ce5268451bd4414fa3ae41ee2f515649);
124
124
  我在该源码提交上用禁用脚本的干净解析重新验证,已经不再拉取 `dsh-compact`。
125
- npm 发布物还没有更新,所以报告仍明确区分“源码已修复”和“发布版本待跟进”。
125
+ 后续发布的 `0.5.5` 也已用精确 npm tarball 复核:严格依赖解析建立了 69 个包的
126
+ 完整必需依赖图,原 issue 已作为“发布物修复验证通过”关闭。
126
127
 
127
128
  如果你手里的是公开 DSH 插件仓库,不需要先手动 clone:
128
129
 
@@ -336,9 +337,9 @@ npm: dsh-feishu-bot@0.15.8
336
337
  会继续显示为 `incomplete`,不会被当成已经确认的故障。
337
338
 
338
339
  ```bash
339
- npx --yes upstream-radar@0.40.0 graph reverse ./plugin-reports \
340
+ npx --yes upstream-radar@0.41.0 graph reverse ./plugin-reports \
340
341
  --output ./reverse-dependency-index.json
341
- npx --yes upstream-radar@0.40.0 observe ./targets.yml \
342
+ npx --yes upstream-radar@0.41.0 observe ./targets.yml \
342
343
  --reverse-index ./reverse-dependency-index.json \
343
344
  --state ./observations.json --report ./upstream-radar-observer.md
344
345
  ```
@@ -376,7 +377,7 @@ Radar 会在三层目录内自动找到它;npm 名称和源码 manifest 不一
376
377
  想明确选择锁文件时再加 `--lockfile`:
377
378
 
378
379
  ```bash
379
- npx --yes upstream-radar@0.40.0 observe \
380
+ npx --yes upstream-radar@0.41.0 observe \
380
381
  https://github.com/PlutoKeating/dsh-lark-bot \
381
382
  --state ./observations.json --report ./upstream-radar-observer.md
382
383
  ```
@@ -399,7 +400,7 @@ workspace 边保留为未解析证据;不会安装或启动 DSH。
399
400
  会额外指定 `--package`:
400
401
 
401
402
  ```bash
402
- npx --yes upstream-radar@0.40.0 observe \
403
+ npx --yes upstream-radar@0.41.0 observe \
403
404
  https://github.com/PlutoKeating/dsh-lark-bot \
404
405
  --package dsh-feishu-bot \
405
406
  --lockfile pnpm-lock.yaml --lockfile-type pnpm \
@@ -408,8 +409,9 @@ npx --yes upstream-radar@0.40.0 observe \
408
409
 
409
410
  提交的 targets 示例还包含一个没有锁文件的真实案例
410
411
  [`Sanqi-normal/dsh-webui-market-plugin`](../examples/upstream-observer/targets.yml)。
411
- 它的 peer 修复先进入源码,npm 仍是 `0.5.4` 时 observer 不会冒充“发布物已修复”,
412
- 而是留下待处理任务;完整结果见[observer 重放报告](../examples/upstream-observer/reports/sanqi-maintainer-repair-live.md)。
412
+ 它的 peer 修复先进入源码、npm 仍是 `0.5.4` 时,observer 没有冒充“发布物已修复”,
413
+ 而是留下待处理任务;`0.5.5` 发布后又进入 maintained isolated matrix。完整时间线见
414
+ [observer 重放报告](../examples/upstream-observer/reports/sanqi-maintainer-repair-live.md)。
413
415
 
414
416
  执行一次检查:
415
417
 
@@ -677,7 +679,7 @@ cd my-dsh-plugin
677
679
  pnpm install --ignore-scripts
678
680
 
679
681
  # 把插件放进 DSH profile 前,先读取精确依赖图。
680
- pnpm dlx --package=upstream-radar@0.40.0 upstream-radar graph pnpm-lock pnpm-lock.yaml --json
682
+ pnpm dlx --package=upstream-radar@0.41.0 upstream-radar graph pnpm-lock pnpm-lock.yaml --json
681
683
  ```
682
684
 
683
685
  这棵图会保留精确的 DSH 包版本,也会把未解析的可选 peer 明确显示出来;它不会加载生成的插件,也不会运行 lifecycle script。审查后,把下面这个完整 workflow 复制到 `.github/workflows/upstream-radar.yml`:
@@ -699,7 +701,7 @@ jobs:
699
701
  runs-on: ubuntu-latest
700
702
  steps:
701
703
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
702
- - uses: MicroMilo/upstream-radar@v0.40.0
704
+ - uses: MicroMilo/upstream-radar@v0.41.0
703
705
  with:
704
706
  fail-on: high
705
707
  fail-on-compatibility: breaking
@@ -710,7 +712,7 @@ Action 会自动识别唯一的 `pnpm-lock.yaml`,检查同一棵精确依赖
710
712
  也可以直接检查一个真实发布的 DSH 包:
711
713
 
712
714
  ```bash
713
- npx --yes upstream-radar@0.40.0 inspect dsh-feishu-bot@0.15.8 --deep
715
+ npx --yes upstream-radar@0.41.0 inspect dsh-feishu-bot@0.15.8 --deep
714
716
  ```
715
717
 
716
718
  这次检查的结论是 `REVIEW`:registry 完整性、签名、provenance 和 89 个已解析包都
@@ -723,7 +725,7 @@ npx --yes upstream-radar@0.40.0 inspect dsh-feishu-bot@0.15.8 --deep
723
725
  如果不想分别执行 `inspect`、打包和 `probe`,可以用一个命令完成一次 DSH 插件审查:
724
726
 
725
727
  ```bash
726
- pnpm dlx --package=upstream-radar@0.40.0 upstream-radar review dsh-plugin \
728
+ pnpm dlx --package=upstream-radar@0.41.0 upstream-radar review dsh-plugin \
727
729
  dsh-cloudflare-browser-run@0.1.1 \
728
730
  --dsh-version 0.1.0-rc.6,0.1.0-rc.7
729
731
  ```
@@ -889,7 +891,7 @@ pnpm run try:dsh
889
891
  在把项目接入兼容性门禁前,可以先运行离线规则 benchmark:
890
892
 
891
893
  ```bash
892
- pnpm dlx --package=upstream-radar@0.40.0 upstream-radar benchmark compatibility
894
+ pnpm dlx --package=upstream-radar@0.41.0 upstream-radar benchmark compatibility
893
895
  ```
894
896
 
895
897
  它覆盖六类契约:安全补丁、只需要项目分析的变化、不兼容的 DSH peer、发布者明确声明 breaking、候选传递依赖漏洞,以及候选依赖图不完整。这个命令不会联网、安装包、加载插件或启动 DSH;它验证的是 Radar 的确定性规则以及 `breaking`/`any` 门禁行为,不是运行时兼容性证明。
@@ -902,7 +904,7 @@ pnpm dlx --package=upstream-radar@0.40.0 upstream-radar benchmark compatibility
902
904
  # 打包精确版本,并明确不运行它的 lifecycle script。
903
905
  npm pack --ignore-scripts dsh-plugin@1.2.3
904
906
 
905
- pnpm dlx --package=upstream-radar@0.40.0 upstream-radar probe dsh-load \
907
+ pnpm dlx --package=upstream-radar@0.41.0 upstream-radar probe dsh-load \
906
908
  ./dsh-plugin-1.2.3.tgz \
907
909
  --dsh-version 0.1.0-rc.6
908
910
  ```
@@ -928,7 +930,7 @@ pnpm run showcase:dsh-probe
928
930
  如果要比较多个 DSH 版本,可以使用矩阵入口:
929
931
 
930
932
  ```bash
931
- pnpm dlx --package=upstream-radar@0.40.0 upstream-radar probe dsh-matrix \
933
+ pnpm dlx --package=upstream-radar@0.41.0 upstream-radar probe dsh-matrix \
932
934
  ./dsh-plugin-1.2.3.tgz \
933
935
  --dsh-version 0.1.0-rc.3 \
934
936
  --dsh-version 0.1.0-rc.6 \
@@ -946,7 +948,7 @@ JSON 结果结构见[矩阵结果 schema](../schemas/dsh-load-matrix.schema.json
946
948
  ```yaml
947
949
  steps:
948
950
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
949
- - uses: MicroMilo/upstream-radar@v0.40.0
951
+ - uses: MicroMilo/upstream-radar@v0.41.0
950
952
  with:
951
953
  fail-on: high
952
954
  # 可选:把确定性的 DSH/插件兼容性破坏也作为 CI 失败条件
@@ -955,12 +957,12 @@ steps:
955
957
  threat-intel: true
956
958
  ```
957
959
 
958
- 这个 Action 只是 `radar check --frozen --state :memory: --fail-on high --fail-on-compatibility breaking --json` 的薄封装。`--frozen` 是有意的:它只使用配置文件里的依赖图,不会尝试读取 runner 上不存在的本地 DSH profile。`threat-intel` 默认是 `false`,这样普通 CI 门禁不会因为额外查询变重;设置为 `true` 后,Job Summary 和原始 JSON 会包含 CISA KEV 与 FIRST EPSS 的优先级证据。每次运行彼此独立;发现达到阈值的漏洞或选择的兼容性变化时返回 `2`,运行或漏洞源出错时返回 `1`。`breaking` 只拦截有 confirmed/strong 信号的兼容性事件,`any` 会拦截所有活动兼容性事件,默认值是 `never`。除了原始 JSON 日志,Action 还会把经过转义的简短摘要写入 GitHub Job Summary,定时任务失败时可以直接看到受影响的包、准确依赖路径、已经发布的修复版本(如果有)、一行优先级证据和建议的下一步。这个入口不会投递 DSH Agent 任务,也不会修改分支;需要持续监控和项目级分析时,仍使用原生 DSH bundle。建议把 Action 固定到类似 `v0.40.0` 的发布标签,并根据团队策略固定 checkout Action。
960
+ 这个 Action 只是 `radar check --frozen --state :memory: --fail-on high --fail-on-compatibility breaking --json` 的薄封装。`--frozen` 是有意的:它只使用配置文件里的依赖图,不会尝试读取 runner 上不存在的本地 DSH profile。`threat-intel` 默认是 `false`,这样普通 CI 门禁不会因为额外查询变重;设置为 `true` 后,Job Summary 和原始 JSON 会包含 CISA KEV 与 FIRST EPSS 的优先级证据。每次运行彼此独立;发现达到阈值的漏洞或选择的兼容性变化时返回 `2`,运行或漏洞源出错时返回 `1`。`breaking` 只拦截有 confirmed/strong 信号的兼容性事件,`any` 会拦截所有活动兼容性事件,默认值是 `never`。除了原始 JSON 日志,Action 还会把经过转义的简短摘要写入 GitHub Job Summary,定时任务失败时可以直接看到受影响的包、准确依赖路径、已经发布的修复版本(如果有)、一行优先级证据和建议的下一步。这个入口不会投递 DSH Agent 任务,也不会修改分支;需要持续监控和项目级分析时,仍使用原生 DSH bundle。建议把 Action 固定到类似 `v0.41.0` 的发布标签,并根据团队策略固定 checkout Action。
959
961
 
960
962
  如果仓库还没有提交 Radar 配置,最短接入方式是省略 `config`、`pnpm-lock` 和 `npm-lock`。checkout 之后,Action 会自动使用唯一存在的 `pnpm-lock.yaml` 或 `package-lock.json`,生成临时的审查清单,再执行同一个 frozen 检查:
961
963
 
962
964
  ```yaml
963
- - uses: MicroMilo/upstream-radar@v0.40.0
965
+ - uses: MicroMilo/upstream-radar@v0.41.0
964
966
  with:
965
967
  fail-on: high
966
968
  ```
@@ -970,7 +972,7 @@ steps:
970
972
  如果要在插件进入 DSH 前审查精确发布物,可以增加 `inspect-package`:
971
973
 
972
974
  ```yaml
973
- - uses: MicroMilo/upstream-radar@v0.40.0
975
+ - uses: MicroMilo/upstream-radar@v0.41.0
974
976
  with:
975
977
  inspect-package: dsh-cloudflare-browser-run@0.1.1
976
978
  # review 是安全默认值;只有允许覆盖不完整时才使用 block
@@ -982,7 +984,7 @@ steps:
982
984
  如果仓库只有 pnpm 锁文件,还没有提交 Radar 配置,可以让 Action 在同一个 job 中生成配置;可直接复制[pnpm workflow 示例](../examples/github-actions/upstream-radar-pnpm.yml):
983
985
 
984
986
  ```yaml
985
- - uses: MicroMilo/upstream-radar@v0.40.0
987
+ - uses: MicroMilo/upstream-radar@v0.41.0
986
988
  with:
987
989
  pnpm-lock: pnpm-lock.yaml
988
990
  fail-on: high
@@ -996,7 +998,7 @@ npm 项目可以改用 `npm-lock: package-lock.json`;`pnpm-lock` 和 `npm-lock
996
998
  调用方需要先 checkout 仓库。这个 Action 不会安装项目依赖,也不会执行项目的 lifecycle script;它只读取提交到仓库的依赖图并查询配置中的上游漏洞源。如果需要完全显式的底层命令,等价写法是:
997
999
 
998
1000
  ```bash
999
- pnpm dlx --package=upstream-radar@0.40.0 upstream-radar radar check \
1001
+ pnpm dlx --package=upstream-radar@0.41.0 upstream-radar radar check \
1000
1002
  ./upstream-radar.config.json --frozen --state :memory: --fail-on high \
1001
1003
  --fail-on-compatibility breaking --json
1002
1004
  ```
@@ -1004,7 +1006,7 @@ pnpm dlx --package=upstream-radar@0.40.0 upstream-radar radar check \
1004
1006
  如果还要检查一个已发布插件能否跨多个 DSH 版本加载,可以增加三个 input:
1005
1007
 
1006
1008
  ```yaml
1007
- - uses: MicroMilo/upstream-radar@v0.40.0
1009
+ - uses: MicroMilo/upstream-radar@v0.41.0
1008
1010
  id: radar
1009
1011
  with:
1010
1012
  config: upstream-radar.config.json
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "upstream-radar",
3
- "version": "0.40.0",
3
+ "version": "0.41.0",
4
4
  "description": "Always-on dependency and compatibility monitoring for DeepSeek Harness plugins, including exact paths, upstream changes, and isolated install/load evidence.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -0,0 +1,89 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/MicroMilo/upstream-radar/blob/main/schemas/dsh-compatibility-ir.schema.json",
4
+ "title": "Upstream Radar DSH compatibility IR",
5
+ "description": "Normalized direct plugin-to-DSH-host compatibility relations produced from isolated observations.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["schema", "cells", "relations"],
9
+ "properties": {
10
+ "schema": { "const": "upstream-radar.dsh-compatibility-ir/v1alpha1" },
11
+ "cells": {
12
+ "type": "array",
13
+ "maxItems": 500,
14
+ "items": {
15
+ "type": "object",
16
+ "additionalProperties": false,
17
+ "required": ["id", "caseId", "targetId", "observedAt", "result", "plugin", "runtime", "evidence"],
18
+ "properties": {
19
+ "id": { "type": "string", "minLength": 1, "maxLength": 80 },
20
+ "caseId": { "type": "string", "minLength": 1, "maxLength": 64 },
21
+ "targetId": { "type": "string", "minLength": 1, "maxLength": 64 },
22
+ "observedAt": { "type": "string", "format": "date-time" },
23
+ "result": { "enum": ["compatible", "runtime-incompatible", "peer-contract-incompatible", "install-failed", "load-failed", "unknown"] },
24
+ "plugin": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "required": ["name", "version", "staticFingerprint"],
28
+ "properties": {
29
+ "name": { "type": "string", "minLength": 1, "maxLength": 214 },
30
+ "version": { "type": "string", "minLength": 1, "maxLength": 256 },
31
+ "artifactSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
32
+ "staticFingerprint": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
33
+ }
34
+ },
35
+ "runtime": {
36
+ "type": "object",
37
+ "additionalProperties": false,
38
+ "required": ["dshVersion", "nodeMajor", "nodeVersion", "platform", "architecture", "contractFingerprint"],
39
+ "properties": {
40
+ "dshVersion": { "type": "string", "minLength": 1, "maxLength": 256 },
41
+ "nodeMajor": { "type": "integer", "minimum": 16, "maximum": 40 },
42
+ "nodeVersion": { "type": "string", "minLength": 1, "maxLength": 256 },
43
+ "platform": { "type": "string", "minLength": 1, "maxLength": 64 },
44
+ "architecture": { "type": "string", "minLength": 1, "maxLength": 64 },
45
+ "pnpmVersion": { "type": "string", "minLength": 1, "maxLength": 256 },
46
+ "contractFingerprint": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
47
+ }
48
+ },
49
+ "evidence": {
50
+ "type": "object",
51
+ "additionalProperties": false,
52
+ "properties": {
53
+ "runtimeGraphDigest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
54
+ "runtimeGraphNodes": { "type": "integer", "minimum": 0, "maximum": 100000 },
55
+ "runtimeGraphEdges": { "type": "integer", "minimum": 0, "maximum": 250000 },
56
+ "requiredUnresolved": { "type": "integer", "minimum": 0, "maximum": 250000 },
57
+ "declaredPeerContracts": { "type": "integer", "minimum": 0, "maximum": 64 }
58
+ }
59
+ }
60
+ }
61
+ }
62
+ },
63
+ "relations": {
64
+ "type": "array",
65
+ "maxItems": 32000,
66
+ "items": {
67
+ "type": "object",
68
+ "additionalProperties": false,
69
+ "required": ["id", "cellId", "dependency"],
70
+ "properties": {
71
+ "id": { "type": "string", "minLength": 1, "maxLength": 80 },
72
+ "cellId": { "type": "string", "minLength": 1, "maxLength": 80 },
73
+ "dependency": {
74
+ "type": "object",
75
+ "additionalProperties": false,
76
+ "required": ["name", "required", "status", "staticUsage"],
77
+ "properties": {
78
+ "name": { "type": "string", "minLength": 1, "maxLength": 214 },
79
+ "required": { "type": "string", "minLength": 1, "maxLength": 512 },
80
+ "status": { "enum": ["satisfied", "mismatched", "indeterminate", "missing"] },
81
+ "staticUsage": { "enum": ["runtime-import-observed", "type-only-reference-observed", "no-literal-reference-observed", "scan-incomplete"] },
82
+ "resolvedVersion": { "type": "string", "minLength": 1, "maxLength": 256 }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ }
@@ -5,7 +5,7 @@
5
5
  "description": "Bounded process, network and filesystem evidence from installing and loading one exact npm artifact under one exact DSH version in an externally supplied disposable environment.",
6
6
  "type": "object",
7
7
  "additionalProperties": false,
8
- "required": ["schema", "tool", "probe", "scope", "startedAt", "completedAt", "dshVersion", "runtime", "artifact", "stages", "observations", "filesystem", "result", "reason", "boundary"],
8
+ "required": ["schema", "tool", "probe", "scope", "startedAt", "completedAt", "dshVersion", "runtime", "artifact", "stages", "observations", "filesystem", "resolution", "result", "reason", "boundary"],
9
9
  "properties": {
10
10
  "schema": { "const": "upstream-radar.dsh-install-observation/v1alpha1" },
11
11
  "tool": {
@@ -21,6 +21,7 @@
21
21
  "scope": { "const": "install-and-load-behavior" },
22
22
  "startedAt": { "type": "string", "format": "date-time" },
23
23
  "completedAt": { "type": "string", "format": "date-time" },
24
+ "caseId": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$" },
24
25
  "dshVersion": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?$" },
25
26
  "runtime": {
26
27
  "type": "object",
@@ -73,7 +74,8 @@
73
74
  "load": { "$ref": "#/$defs/filesystemDiff" }
74
75
  }
75
76
  },
76
- "result": { "enum": ["compatible", "runtime-incompatible", "install-failed", "load-failed", "unknown"] },
77
+ "resolution": { "$ref": "#/$defs/resolution" },
78
+ "result": { "enum": ["compatible", "runtime-incompatible", "peer-contract-incompatible", "install-failed", "load-failed", "unknown"] },
77
79
  "reason": { "type": "string", "maxLength": 4096 },
78
80
  "boundary": {
79
81
  "type": "object",
@@ -118,6 +120,137 @@
118
120
  }
119
121
  }
120
122
  },
123
+ "resolution": {
124
+ "type": "object",
125
+ "additionalProperties": false,
126
+ "properties": {
127
+ "profileLockfile": {
128
+ "type": "object",
129
+ "additionalProperties": false,
130
+ "required": ["sha256", "bytes"],
131
+ "properties": {
132
+ "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
133
+ "bytes": { "type": "integer", "minimum": 0, "maximum": 16777216 },
134
+ "graphDigest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
135
+ "nodes": { "type": "integer", "minimum": 0, "maximum": 100000 },
136
+ "edges": { "type": "integer", "minimum": 0, "maximum": 250000 },
137
+ "unresolved": { "type": "integer", "minimum": 0, "maximum": 250000 },
138
+ "unresolvedDependencies": {
139
+ "type": "array",
140
+ "maxItems": 32,
141
+ "items": {
142
+ "type": "object",
143
+ "additionalProperties": false,
144
+ "required": ["from", "name", "spec", "kind"],
145
+ "properties": {
146
+ "from": { "type": "string", "minLength": 1, "maxLength": 512 },
147
+ "name": { "type": "string", "minLength": 1, "maxLength": 214 },
148
+ "spec": { "type": "string", "minLength": 1, "maxLength": 512 },
149
+ "kind": { "enum": ["runtime", "development", "optional", "peer", "host-runtime"] }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ },
155
+ "runtimeGraph": {
156
+ "type": "object",
157
+ "additionalProperties": false,
158
+ "required": ["digest", "nodes", "edges", "unresolved", "pluginPeerContracts"],
159
+ "properties": {
160
+ "digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
161
+ "nodes": { "type": "integer", "minimum": 0, "maximum": 100000 },
162
+ "edges": { "type": "integer", "minimum": 0, "maximum": 250000 },
163
+ "unresolved": { "type": "integer", "minimum": 0, "maximum": 250000 },
164
+ "unresolvedDependencies": {
165
+ "type": "array",
166
+ "maxItems": 32,
167
+ "items": {
168
+ "type": "object",
169
+ "additionalProperties": false,
170
+ "required": ["from", "name", "spec", "kind"],
171
+ "properties": {
172
+ "from": { "type": "string", "minLength": 1, "maxLength": 512 },
173
+ "name": { "type": "string", "minLength": 1, "maxLength": 214 },
174
+ "spec": { "type": "string", "minLength": 1, "maxLength": 512 },
175
+ "kind": { "enum": ["runtime", "development", "optional", "peer", "host-runtime"] }
176
+ }
177
+ }
178
+ },
179
+ "optionalUnavailable": { "type": "integer", "minimum": 0, "maximum": 250000 },
180
+ "optionalUnavailableDependencies": {
181
+ "type": "array",
182
+ "maxItems": 32,
183
+ "items": {
184
+ "type": "object",
185
+ "additionalProperties": false,
186
+ "required": ["from", "name", "spec", "kind"],
187
+ "properties": {
188
+ "from": { "type": "string", "minLength": 1, "maxLength": 512 },
189
+ "name": { "type": "string", "minLength": 1, "maxLength": 214 },
190
+ "spec": { "type": "string", "minLength": 1, "maxLength": 512 },
191
+ "kind": { "enum": ["runtime", "development", "optional", "peer", "host-runtime"] }
192
+ }
193
+ }
194
+ },
195
+ "pluginPeerContracts": {
196
+ "type": "object",
197
+ "additionalProperties": false,
198
+ "required": ["declared", "satisfied", "mismatched", "indeterminate", "missing", "relations"],
199
+ "properties": {
200
+ "declared": { "type": "integer", "minimum": 0, "maximum": 100000 },
201
+ "satisfied": { "type": "integer", "minimum": 0, "maximum": 100000 },
202
+ "mismatched": { "type": "integer", "minimum": 0, "maximum": 100000 },
203
+ "indeterminate": { "type": "integer", "minimum": 0, "maximum": 100000 },
204
+ "missing": { "type": "integer", "minimum": 0, "maximum": 100000 },
205
+ "relations": {
206
+ "type": "array",
207
+ "maxItems": 64,
208
+ "items": {
209
+ "type": "object",
210
+ "additionalProperties": false,
211
+ "required": ["name", "required", "status", "staticUsage"],
212
+ "properties": {
213
+ "name": { "type": "string", "minLength": 1, "maxLength": 214 },
214
+ "required": { "type": "string", "minLength": 1, "maxLength": 512 },
215
+ "status": { "enum": ["satisfied", "mismatched", "indeterminate", "missing"] },
216
+ "staticUsage": { "enum": ["runtime-import-observed", "type-only-reference-observed", "no-literal-reference-observed", "scan-incomplete"] },
217
+ "resolvedVersion": { "type": "string", "minLength": 1, "maxLength": 256 }
218
+ }
219
+ }
220
+ },
221
+ "issues": {
222
+ "type": "array",
223
+ "maxItems": 32,
224
+ "items": {
225
+ "type": "object",
226
+ "additionalProperties": false,
227
+ "required": ["name", "required", "status", "staticUsage"],
228
+ "properties": {
229
+ "name": { "type": "string", "minLength": 1, "maxLength": 214 },
230
+ "required": { "type": "string", "minLength": 1, "maxLength": 512 },
231
+ "status": { "enum": ["mismatched", "indeterminate", "missing"] },
232
+ "staticUsage": { "enum": ["runtime-import-observed", "type-only-reference-observed", "no-literal-reference-observed", "scan-incomplete"] },
233
+ "resolvedVersion": { "type": "string", "minLength": 1, "maxLength": 256 }
234
+ }
235
+ }
236
+ }
237
+ }
238
+ },
239
+ "hostRuntime": {
240
+ "type": "object",
241
+ "additionalProperties": false,
242
+ "required": ["source", "resolvedNodes"],
243
+ "properties": {
244
+ "source": { "enum": ["dsh-profile-fallback", "dsh-process"] },
245
+ "resolvedNodes": { "type": "integer", "minimum": 0, "maximum": 100000 },
246
+ "dshVersion": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?$" }
247
+ }
248
+ }
249
+ }
250
+ },
251
+ "runtimeGraphError": { "type": "string", "minLength": 1, "maxLength": 512 }
252
+ }
253
+ },
121
254
  "stage": {
122
255
  "type": "object",
123
256
  "additionalProperties": false,