upstream-radar 0.22.1 → 0.24.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 CHANGED
@@ -188,6 +188,16 @@ The command fails unless DSH proves all four facts:
188
188
 
189
189
  This proof runs in CI on Node.js 22. See the executable [showcase contract](examples/dsh/README.md) and its checked-in [result](examples/dsh/reports/headless-smoke.json). Run `pnpm run try:dsh:live` to include a current OSV and npm poll before the DSH handoff.
190
190
 
191
+ ## Validate the compatibility rules
192
+
193
+ Before wiring a project into a compatibility gate, run the offline rule benchmark:
194
+
195
+ ```bash
196
+ pnpm dlx --package=upstream-radar@0.24.0 upstream-radar benchmark compatibility
197
+ ```
198
+
199
+ It covers six contracts: a safe patch, a change that only needs project analysis, an incompatible DSH peer, a publisher-declared breaking release, a vulnerable candidate dependency, and an incomplete candidate graph. The command does not access the network, install a package, load a plugin, or start DSH. It checks the behavior of Radar's deterministic rules and the `breaking`/`any` gates; it is not a runtime compatibility proof.
200
+
191
201
  ## Run it in GitHub Actions
192
202
 
193
203
  If your team wants a scheduled CI gate before wiring a machine to a live DSH profile, commit the reviewed `upstream-radar.config.json` and copy [the example workflow](examples/github-actions/upstream-radar.yml). The reusable Action keeps the workflow to two meaningful steps:
@@ -195,19 +205,22 @@ If your team wants a scheduled CI gate before wiring a machine to a live DSH pro
195
205
  ```yaml
196
206
  steps:
197
207
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
198
- - uses: MicroMilo/upstream-radar@v0.22.1
208
+ - uses: MicroMilo/upstream-radar@v0.24.0
199
209
  with:
200
210
  config: upstream-radar.config.json
201
211
  fail-on: high
212
+ # Optional: also fail on deterministic DSH/plugin compatibility breaks.
213
+ fail-on-compatibility: breaking
202
214
  ```
203
215
 
204
- The Action is a thin wrapper around `radar check --frozen --state :memory: --fail-on high --json`. `--frozen` is deliberate: it uses the graph in the reviewed config and does not try to read a developer's local DSH profile. Each run is independent, exits `2` when an active vulnerability meets the threshold, and exits `1` for an operational or source error. It does not deliver a DSH Agent task or modify a branch; the native DSH bundle remains the always-on analysis path. Pin the Action to a release tag such as `v0.22.1`, and pin the checkout Action in your workflow according to your repository's policy.
216
+ The Action is a thin wrapper around `radar check --frozen --state :memory: --fail-on high --json`; when the optional compatibility input is enabled, it also passes `--fail-on-compatibility breaking` or `any`. `--frozen` is deliberate: it uses the graph in the reviewed config and does not try to read a developer's local DSH profile. Each run is independent, exits `2` when an active vulnerability or opted-in compatibility change meets its threshold, and exits `1` for an operational or source error. `breaking` catches confirmed or strong incompatibility signals; `any` catches every active compatibility event. The default is `never`, so vulnerability-only behavior stays unchanged. The Action does not deliver a DSH Agent task or modify a branch; the native DSH bundle remains the always-on analysis path. Pin the Action to a release tag such as `v0.24.0`, and pin the checkout Action in your workflow according to your repository's policy.
205
217
 
206
218
  The Action requires the caller to check out the repository first. It does not install the project's dependencies or run their lifecycle scripts; it only reads the committed graph and queries the configured upstream sources. For a fully explicit, lower-level invocation, the equivalent command is:
207
219
 
208
220
  ```bash
209
- pnpm dlx --package=upstream-radar@0.22.1 upstream-radar radar check \
210
- ./upstream-radar.config.json --frozen --state :memory: --fail-on high --json
221
+ pnpm dlx --package=upstream-radar@0.24.0 upstream-radar radar check \
222
+ ./upstream-radar.config.json --frozen --state :memory: --fail-on high \
223
+ --fail-on-compatibility breaking --json
211
224
  ```
212
225
 
213
226
  For a runnable consumer example using the real [`dsh-cloudflare-browser-run@0.1.1`](examples/github-actions/consumer/upstream-radar.config.json) graph, see the [consumer smoke README](examples/github-actions/consumer/README.md) and its [copyable workflow](examples/github-actions/consumer/upstream-radar.yml).
@@ -218,7 +231,7 @@ Run the same released Action locally from this repository with:
218
231
  pnpm run try:consumer
219
232
  ```
220
233
 
221
- For a local or self-hosted DSH machine, omit `--frozen` so Radar refreshes the selected profile before each cycle. Use `--fail-on` only with `radar check`, `radar status`, or `radar watch --once`; a long-running watch should continue routing incidents instead of terminating on the first one.
234
+ For a local or self-hosted DSH machine, omit `--frozen` so Radar refreshes the selected profile before each cycle. Use `--fail-on` or `--fail-on-compatibility` only with `radar check`, `radar status`, or `radar watch --once`; a long-running watch should continue routing incidents instead of terminating on the first one.
222
235
 
223
236
  ## How the loop works
224
237
 
@@ -236,7 +249,7 @@ For a local process or a scheduled runner, the same loop is available as:
236
249
  pnpm dlx --package=upstream-radar@latest upstream-radar radar watch ./upstream-radar.config.json --interval 1800
237
250
  ```
238
251
 
239
- Use `radar check --frozen --state :memory: --fail-on high --json` for a machine-enforced CI check against a reviewed graph. The local DSH path continues to use `radar watch`, which refreshes the selected profile before each cycle.
252
+ Use `radar check --frozen --state :memory: --fail-on high --fail-on-compatibility breaking --json` for a machine-enforced CI check against a reviewed graph. The local DSH path continues to use `radar watch`, which refreshes the selected profile before each cycle.
240
253
 
241
254
  The handoff uses `ctx.agents.roots()[0].followup(...)` with:
242
255
 
@@ -319,6 +332,8 @@ Advisories, release notes, links, package names, and repository strings remain u
319
332
  - an actionable, network-free `radar status` summary with exact active paths, candidate signals, and next steps;
320
333
  - a network-free `doctor` command that checks local DSH registration, overlay/config alignment, state readability, and dependency coverage;
321
334
  - compatibility signals for Node.js, peers, exports, entrypoints, bundle paths, dependencies, and version boundaries;
335
+ - an opt-in CI gate for confirmed/strong (`breaking`) or all (`any`) active compatibility changes;
336
+ - an offline `benchmark compatibility` command that locks the deterministic rule and gate behavior into six reviewable contracts;
322
337
  - network-free Radar and real DSH runtime showcases.
323
338
 
324
339
  The bounded pre-install scanner remains available as a supporting collector:
@@ -333,6 +348,7 @@ pnpm dlx --package=upstream-radar@latest upstream-radar inspect npm:dsh-cloudfla
333
348
  - `init` discovers the only DSH profile with third-party bundles when `--profile` is omitted; multiple candidates still require an explicit profile. By default it follows the installed DSH `node_modules` tree, so pnpm overrides and local resolution choices are included. `--dsh-patch <path>` writes an explicit DSH overlay so first startup needs no environment variables and preserves an explicitly selected registry. A native pnpm lockfile parser for pre-install/CI inspection is still deferred.
334
349
  - A graph with unresolved required dependency declarations is marked as incomplete coverage; optional packages that are not installed for the current platform remain visible but do not create a false required-dependency alert.
335
350
  - Candidate upgrade graphs are resolved only for a bounded earliest prefix. A candidate with an incomplete or unavailable graph is not recommended; later unqueried candidates remain visibly unchecked. Pass `--no-deep-candidates` to opt out of this extra registry work.
351
+ - Compatibility CI gating is opt-in: `--fail-on-compatibility breaking` fails on confirmed or strong incompatibility signals, while `any` fails on every active compatibility event; neither setting claims that a candidate is safe.
336
352
  - `radar check/watch --frozen` intentionally uses the graph committed in the config for CI; it does not prove that the installed DSH profile has not changed. Without `--frozen`, native DSH and CLI polling refresh the selected profile first.
337
353
  - `radar status` is a local snapshot only: it does not refresh OSV/npm/GitHub data, and it cannot prove that a source is current until a check has completed. Its next steps are guidance, not an automatic upgrade or safety decision.
338
354
  - `doctor` checks local wiring only; it cannot prove that a running DSH process has delivered a task to a model or that upstream feeds are current.
package/dist/src/cli.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import process from 'node:process';
3
3
  import { access, readFile } from 'node:fs/promises';
4
4
  import { resolve } from 'node:path';
5
+ import { renderCompatibilityBenchmark, runCompatibilityBenchmark } from './compatibility-benchmark.js';
5
6
  import { assessCompatibilityChange } from './compatibility.js';
6
7
  import { createAnalysisTask, renderAgentAnalysisPrompt } from './dsh-analysis.js';
7
8
  import { createDoctorReport, renderDoctorReport } from './doctor.js';
@@ -14,7 +15,7 @@ import { NpmReleaseClient } from './npm-release.js';
14
15
  import { OsvClient } from './osv.js';
15
16
  import { verdictAtLeast } from './policy.js';
16
17
  import { emptyRadarState, pollRadar } from './radar.js';
17
- import { evaluateRadarPolicy, RADAR_FAIL_THRESHOLDS, renderRadarPolicy } from './radar-policy.js';
18
+ import { evaluateRadarPolicy, RADAR_COMPATIBILITY_FAIL_THRESHOLDS, RADAR_FAIL_THRESHOLDS, renderRadarPolicy, } from './radar-policy.js';
18
19
  import { renderRadarEvents } from './radar-render.js';
19
20
  import { loadRadarState, saveRadarState } from './radar-state.js';
20
21
  import { createRadarStatus, renderRadarStatus } from './radar-status.js';
@@ -23,6 +24,7 @@ import { scanDirectory } from './scan.js';
23
24
  import { TOOL_VERSION } from './version.js';
24
25
  const VALID_THRESHOLDS = new Set(['warn', 'review', 'block', 'never']);
25
26
  const VALID_RADAR_THRESHOLDS = new Set(RADAR_FAIL_THRESHOLDS);
27
+ const VALID_RADAR_COMPATIBILITY_THRESHOLDS = new Set(RADAR_COMPATIBILITY_FAIL_THRESHOLDS);
26
28
  function safeErrorMessage(value) {
27
29
  return value.replace(/[\u0000-\u001f\u007f-\u009f]/g, character => (`\\u${character.codePointAt(0)?.toString(16).padStart(4, '0') ?? '0000'}`)).slice(0, 2_048);
28
30
  }
@@ -37,9 +39,10 @@ Usage:
37
39
  upstream-radar doctor [config.json] [options]
38
40
  upstream-radar scan <directory> [--json] [--fail-on <warn|review|block|never>]
39
41
  upstream-radar inspect npm:<package>@<exact-version> [--deep] [--json] [--fail-on <warn|review|block|never>]
40
- upstream-radar radar check <config.json> [--state <state.json>] [--frozen] [--fail-on <severity>] [--json]
41
- upstream-radar radar watch <config.json> [--state <state.json>] [--interval <seconds>] [--once] [--frozen] [--fail-on <severity>] [--json]
42
- upstream-radar radar status <config.json> [--state <state.json>] [--fail-on <severity>] [--json]
42
+ upstream-radar benchmark compatibility [--json]
43
+ upstream-radar radar check <config.json> [--state <state.json>] [--frozen] [--fail-on <severity>] [--fail-on-compatibility <never|breaking|any>] [--json]
44
+ upstream-radar radar watch <config.json> [--state <state.json>] [--interval <seconds>] [--once] [--frozen] [--fail-on <severity>] [--fail-on-compatibility <never|breaking|any>] [--json]
45
+ upstream-radar radar status <config.json> [--state <state.json>] [--fail-on <severity>] [--fail-on-compatibility <never|breaking|any>] [--json]
43
46
  upstream-radar radar compare <config.json> <before.json> <candidate.json> [--notes <release-notes.txt>] [--json]
44
47
  upstream-radar task list <state.json> [--json]
45
48
  upstream-radar task show <state.json> [task-id] [--json]
@@ -51,6 +54,7 @@ Commands:
51
54
  doctor check local Radar/DSH wiring without polling upstream sources
52
55
  scan bounded, read-only inspection of a local package directory
53
56
  inspect fetch and verify the exact npm artifact before inspecting its contents
57
+ benchmark run offline compatibility-rule contracts without network or plugin execution
54
58
  radar monitor vulnerability changes, watch continuously, inspect status, or assess a candidate compatibility change
55
59
  task inspect or acknowledge the durable DSH analysis outbox
56
60
 
@@ -64,6 +68,7 @@ Options:
64
68
  --once run one watch cycle and exit (useful for CI and demos)
65
69
  --frozen radar check/watch: use the reviewed graph in config without reading a local DSH profile
66
70
  --fail-on <value> scan/inspect verdict or radar severity: unknown|info|low|medium|high|critical|never
71
+ --fail-on-compatibility <value> CI gate: never|breaking|any (default: never)
67
72
  --notes <path> release notes used as untrusted compatibility evidence
68
73
  --profile <name> DSH profile for init or doctor (init auto-selects the only candidate when omitted)
69
74
  --output <path> init output path (default: ./upstream-radar.config.json)
@@ -161,6 +166,20 @@ async function readJson(path) {
161
166
  throw new Error(`${path} is not valid JSON`);
162
167
  }
163
168
  }
169
+ async function runBenchmark(args) {
170
+ if (args[0] !== 'compatibility')
171
+ throw new Error('benchmark requires compatibility');
172
+ let json = false;
173
+ for (const argument of args.slice(1)) {
174
+ if (argument === '--json')
175
+ json = true;
176
+ else
177
+ throw new Error(`unknown option for benchmark: ${argument}`);
178
+ }
179
+ const report = runCompatibilityBenchmark();
180
+ process.stdout.write(json ? `${JSON.stringify(report, null, 2)}\n` : renderCompatibilityBenchmark(report));
181
+ return report.summary.failed === 0 ? 0 : 1;
182
+ }
164
183
  async function fileExists(path) {
165
184
  try {
166
185
  await access(resolve(path));
@@ -192,6 +211,7 @@ async function runRadar(args) {
192
211
  let deepCandidates = true;
193
212
  let frozen = false;
194
213
  let failOn = 'never';
214
+ let failOnCompatibility = 'never';
195
215
  for (let index = 2; index < args.length; index += 1) {
196
216
  const argument = args[index];
197
217
  if (argument === '--json') {
@@ -207,7 +227,8 @@ async function runRadar(args) {
207
227
  frozen = true;
208
228
  }
209
229
  else if (argument === '--state' || argument === '--osv-base-url' || argument === '--registry'
210
- || argument === '--notes' || argument === '--interval' || argument === '--fail-on') {
230
+ || argument === '--notes' || argument === '--interval' || argument === '--fail-on'
231
+ || argument === '--fail-on-compatibility') {
211
232
  const value = args[index + 1];
212
233
  if (value === undefined || value.startsWith('-'))
213
234
  throw new Error(`${argument} requires a value`);
@@ -225,6 +246,12 @@ async function runRadar(args) {
225
246
  }
226
247
  failOn = value;
227
248
  }
249
+ else if (argument === '--fail-on-compatibility') {
250
+ if (!VALID_RADAR_COMPATIBILITY_THRESHOLDS.has(value)) {
251
+ throw new Error(`invalid radar --fail-on-compatibility value: ${value}`);
252
+ }
253
+ failOnCompatibility = value;
254
+ }
228
255
  else {
229
256
  intervalProvided = true;
230
257
  const parsed = Number(value);
@@ -249,7 +276,7 @@ async function runRadar(args) {
249
276
  if (subcommand === 'status') {
250
277
  if (positional.length > 0 || notesPath !== undefined || once || intervalProvided
251
278
  || osvBaseUrl !== undefined || registry !== undefined || !deepCandidates || frozen || statePath === ':memory:') {
252
- throw new Error('radar status only accepts --state, --fail-on and --json options');
279
+ throw new Error('radar status only accepts --state, --fail-on, --fail-on-compatibility and --json options');
253
280
  }
254
281
  const config = await readConfig();
255
282
  const stateFile = statePath ?? `${resolve(configPath)}.state.json`;
@@ -260,14 +287,15 @@ async function runRadar(args) {
260
287
  stateFile: resolve(stateFile),
261
288
  stateExists,
262
289
  });
263
- const policy = evaluateRadarPolicy(state, failOn);
290
+ const policy = evaluateRadarPolicy(state, failOn, failOnCompatibility);
291
+ const policyEnabled = failOn !== 'never' || failOnCompatibility !== 'never';
264
292
  if (json) {
265
- process.stdout.write(failOn === 'never'
293
+ process.stdout.write(!policyEnabled
266
294
  ? `${JSON.stringify(report, null, 2)}\n`
267
295
  : `${JSON.stringify({ ...report, policy }, null, 2)}\n`);
268
296
  }
269
297
  else {
270
- process.stdout.write(`${renderRadarStatus(report)}${failOn === 'never' ? '' : renderRadarPolicy(policy)}`);
298
+ process.stdout.write(`${renderRadarStatus(report)}${policyEnabled ? renderRadarPolicy(policy) : ''}`);
271
299
  }
272
300
  if (report.monitoring === 'degraded' || report.coverage === 'incomplete')
273
301
  return 1;
@@ -293,14 +321,15 @@ async function runRadar(args) {
293
321
  return result;
294
322
  };
295
323
  const writeCheckResult = (result, compactJson = false) => {
296
- const policy = evaluateRadarPolicy(result.state, failOn);
324
+ const policy = evaluateRadarPolicy(result.state, failOn, failOnCompatibility);
325
+ const policyEnabled = failOn !== 'never' || failOnCompatibility !== 'never';
297
326
  if (json) {
298
- process.stdout.write(failOn === 'never'
327
+ process.stdout.write(!policyEnabled
299
328
  ? `${JSON.stringify(result, null, compactJson ? 0 : 2)}\n`
300
329
  : `${JSON.stringify({ ...result, policy }, null, compactJson ? 0 : 2)}\n`);
301
330
  }
302
331
  else {
303
- process.stdout.write(`${renderRadarEvents(result.events)}${result.sourceErrors.map(error => `Source warning (${error.source}): ${safeErrorMessage(error.message)}\n`).join('')}Prepared ${result.analysisTasks.length} DSH analysis task(s); queried ${result.packagesQueried} exact package versions and ${result.releasePackagesQueried} release streams.\n${failOn === 'never' ? '' : renderRadarPolicy(policy)}`);
332
+ process.stdout.write(`${renderRadarEvents(result.events)}${result.sourceErrors.map(error => `Source warning (${error.source}): ${safeErrorMessage(error.message)}\n`).join('')}Prepared ${result.analysisTasks.length} DSH analysis task(s); queried ${result.packagesQueried} exact package versions and ${result.releasePackagesQueried} release streams.\n${policyEnabled ? renderRadarPolicy(policy) : ''}`);
304
333
  }
305
334
  return policy;
306
335
  };
@@ -317,8 +346,8 @@ async function runRadar(args) {
317
346
  if (subcommand === 'watch') {
318
347
  if (positional.length > 0 || notesPath !== undefined)
319
348
  throw new Error('radar watch received unexpected arguments');
320
- if (failOn !== 'never' && !once)
321
- throw new Error('radar watch requires --once when --fail-on is used');
349
+ if ((failOn !== 'never' || failOnCompatibility !== 'never') && !once)
350
+ throw new Error('radar watch requires --once when a policy gate is used');
322
351
  let stopped = false;
323
352
  let timer;
324
353
  let wake;
@@ -364,7 +393,7 @@ async function runRadar(args) {
364
393
  }
365
394
  return 0;
366
395
  }
367
- if (statePath !== undefined || osvBaseUrl !== undefined || registry !== undefined || once || intervalProvided || !deepCandidates || frozen || failOn !== 'never') {
396
+ if (statePath !== undefined || osvBaseUrl !== undefined || registry !== undefined || once || intervalProvided || !deepCandidates || frozen || failOn !== 'never' || failOnCompatibility !== 'never') {
368
397
  throw new Error('radar compare does not accept check or watch options');
369
398
  }
370
399
  const config = await readConfig();
@@ -592,6 +621,8 @@ async function main(args) {
592
621
  return runInit(args.slice(1));
593
622
  if (command === 'doctor')
594
623
  return runDoctor(args.slice(1));
624
+ if (command === 'benchmark')
625
+ return runBenchmark(args.slice(1));
595
626
  if (command === 'radar')
596
627
  return runRadar(args.slice(1));
597
628
  if (command === 'task')
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export declare const COMPATIBILITY_BENCHMARK_SCHEMA: 'upstream-radar.compatibility-benchmark/v1alpha1';
2
+ type BenchmarkOutcome = 'pass' | 'fail';
3
+ interface BenchmarkExpected {
4
+ breaking: BenchmarkOutcome;
5
+ any: BenchmarkOutcome;
6
+ }
7
+ export interface CompatibilityBenchmarkCaseResult {
8
+ id: string;
9
+ title: string;
10
+ event: boolean;
11
+ signals: Array<{
12
+ code: string;
13
+ confidence: string;
14
+ }>;
15
+ actual: BenchmarkExpected;
16
+ expected: BenchmarkExpected;
17
+ passed: boolean;
18
+ }
19
+ export interface CompatibilityBenchmarkReport {
20
+ schema: typeof COMPATIBILITY_BENCHMARK_SCHEMA;
21
+ mode: 'offline-rules';
22
+ cases: CompatibilityBenchmarkCaseResult[];
23
+ summary: {
24
+ total: number;
25
+ passed: number;
26
+ failed: number;
27
+ };
28
+ boundary: string;
29
+ }
30
+ export declare function runCompatibilityBenchmark(): CompatibilityBenchmarkReport;
31
+ export declare function renderCompatibilityBenchmark(report: CompatibilityBenchmarkReport): string;
32
+ export {};
33
+ //# sourceMappingURL=compatibility-benchmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility-benchmark.d.ts","sourceRoot":"","sources":["../../src/compatibility-benchmark.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,8BAA8B,EAAG,iDAA0D,CAAA;AAExG,KAAK,gBAAgB,GAAG,MAAM,GAAG,MAAM,CAAA;AAEvC,UAAU,iBAAiB;IACzB,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,GAAG,EAAE,gBAAgB,CAAA;CACtB;AAYD,MAAM,WAAW,gCAAgC;IAC/C,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpD,MAAM,EAAE,iBAAiB,CAAA;IACzB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,OAAO,8BAA8B,CAAA;IAC7C,IAAI,EAAE,eAAe,CAAA;IACrB,KAAK,EAAE,gCAAgC,EAAE,CAAA;IACzC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;IACD,QAAQ,EAAE,MAAM,CAAA;CACjB;AAoHD,wBAAgB,yBAAyB,IAAI,4BAA4B,CAuCxE;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,4BAA4B,GAAG,MAAM,CAezF"}
@@ -0,0 +1,171 @@
1
+ import { assessCompatibilityChange } from './compatibility.js';
2
+ import { emptyRadarState } from './radar.js';
3
+ import { evaluateRadarPolicy } from './radar-policy.js';
4
+ export const COMPATIBILITY_BENCHMARK_SCHEMA = 'upstream-radar.compatibility-benchmark/v1alpha1';
5
+ const benchmarkInventory = {
6
+ schema: 'upstream-radar.inventory/v1alpha1',
7
+ project: {
8
+ id: 'compatibility-benchmark',
9
+ name: 'Compatibility benchmark',
10
+ channels: ['stdout'],
11
+ },
12
+ environment: { nodeVersion: '22.18.0' },
13
+ plugins: [{
14
+ package: { ecosystem: 'npm', name: 'demo-dsh-plugin', version: '1.0.0' },
15
+ graph: {
16
+ schema: 'upstream-radar.dependency-graph/v1alpha1',
17
+ rootNodeId: 'demo-dsh-plugin',
18
+ nodes: [
19
+ { id: 'demo-dsh-plugin', name: 'demo-dsh-plugin', version: '1.0.0' },
20
+ { id: 'dsh-agent', name: '@deepseek-ai/dsh-agent', version: '0.0.1-rc.5' },
21
+ { id: 'dsh-invariants', name: '@deepseek-ai/dsh-invariants', version: '0.0.1-rc.5' },
22
+ ],
23
+ edges: [
24
+ { from: 'demo-dsh-plugin', to: 'dsh-agent', kind: 'peer' },
25
+ { from: 'demo-dsh-plugin', to: 'dsh-invariants', kind: 'peer' },
26
+ ],
27
+ },
28
+ }],
29
+ };
30
+ const dependencyAdvisory = {
31
+ id: 'GHSA-benchmark-transitive',
32
+ aliases: [],
33
+ summary: 'A transitive candidate dependency is vulnerable.',
34
+ details: 'Synthetic benchmark evidence only.',
35
+ severity: 'high',
36
+ modified: '2026-08-16T00:00:00.000Z',
37
+ fixedVersions: ['3.0.0'],
38
+ references: [],
39
+ };
40
+ const cases = [
41
+ {
42
+ id: 'safe-patch',
43
+ title: 'patch with no structural change',
44
+ previous: { name: 'demo-dsh-plugin', version: '1.0.0', main: './dist/index.js' },
45
+ candidate: { name: 'demo-dsh-plugin', version: '1.0.1', main: './dist/index.js' },
46
+ expected: { breaking: 'pass', any: 'pass' },
47
+ },
48
+ {
49
+ id: 'analysis-only-entrypoint-change',
50
+ title: 'entrypoint change needs project analysis',
51
+ previous: { name: 'demo-dsh-plugin', version: '1.0.0', main: './dist/index.js' },
52
+ candidate: { name: 'demo-dsh-plugin', version: '1.1.0', main: './dist/next.js' },
53
+ expected: { breaking: 'pass', any: 'fail' },
54
+ },
55
+ {
56
+ id: 'dsh-peer-incompatible',
57
+ title: 'candidate excludes the installed DSH peer',
58
+ previous: { name: '@deepseek-ai/dsh-agent', version: '0.0.1-rc.5' },
59
+ candidate: {
60
+ name: '@deepseek-ai/dsh-agent',
61
+ version: '0.1.0-rc.6',
62
+ peerDependencies: { '@deepseek-ai/dsh-invariants': '^0.1.0-rc.6' },
63
+ },
64
+ expected: { breaking: 'fail', any: 'fail' },
65
+ },
66
+ {
67
+ id: 'publisher-breaking',
68
+ title: 'publisher explicitly declares a breaking release',
69
+ previous: { name: 'demo-dsh-plugin', version: '1.0.0', main: './dist/index.js' },
70
+ candidate: { name: 'demo-dsh-plugin', version: '1.0.1', main: './dist/index.js' },
71
+ releaseNotes: 'BREAKING CHANGE: the plugin now requires a new project session.',
72
+ expected: { breaking: 'fail', any: 'fail' },
73
+ },
74
+ {
75
+ id: 'candidate-transitive-vulnerability',
76
+ title: 'candidate graph contains a confirmed vulnerability',
77
+ previous: { name: 'demo-dsh-plugin', version: '1.0.0', main: './dist/index.js' },
78
+ candidate: { name: 'demo-dsh-plugin', version: '1.0.1', main: './dist/index.js' },
79
+ candidateDependencyCheck: {
80
+ status: 'checked',
81
+ nodeCount: 3,
82
+ unresolvedCount: 0,
83
+ findings: [{
84
+ package: { ecosystem: 'npm', name: 'parser', version: '2.9.0' },
85
+ advisory: dependencyAdvisory,
86
+ paths: [[
87
+ { ecosystem: 'npm', name: 'demo-dsh-plugin', version: '1.0.1' },
88
+ { ecosystem: 'npm', name: 'parser', version: '2.9.0' },
89
+ ]],
90
+ }],
91
+ },
92
+ expected: { breaking: 'fail', any: 'fail' },
93
+ },
94
+ {
95
+ id: 'incomplete-candidate-graph',
96
+ title: 'incomplete graph stays analysis-only under breaking gate',
97
+ previous: { name: 'demo-dsh-plugin', version: '1.0.0', main: './dist/index.js' },
98
+ candidate: { name: 'demo-dsh-plugin', version: '1.0.1', main: './dist/index.js' },
99
+ candidateDependencyCheck: {
100
+ status: 'incomplete',
101
+ nodeCount: 3,
102
+ unresolvedCount: 1,
103
+ findings: [],
104
+ },
105
+ expected: { breaking: 'pass', any: 'fail' },
106
+ },
107
+ ];
108
+ function policyOutcome(event, threshold) {
109
+ const state = emptyRadarState();
110
+ if (event !== undefined) {
111
+ state.activeCompatibility[event.incidentId] = { key: event.incidentId, event };
112
+ }
113
+ return evaluateRadarPolicy(state, 'never', threshold).status === 'fail' ? 'fail' : 'pass';
114
+ }
115
+ export function runCompatibilityBenchmark() {
116
+ const results = cases.map((item) => {
117
+ const event = assessCompatibilityChange(benchmarkInventory, {
118
+ previous: item.previous,
119
+ candidate: item.candidate,
120
+ detectedAt: '2026-08-16T00:00:00.000Z',
121
+ ...(item.releaseNotes === undefined ? {} : { releaseNotes: item.releaseNotes }),
122
+ ...(item.candidateDependencyCheck === undefined ? {} : {
123
+ candidateDependencyChecks: new Map([['npm:demo-dsh-plugin@1.0.1', item.candidateDependencyCheck]]),
124
+ candidateDependencyStatus: 'checked',
125
+ }),
126
+ });
127
+ const actual = {
128
+ breaking: policyOutcome(event, 'breaking'),
129
+ any: policyOutcome(event, 'any'),
130
+ };
131
+ const passed = actual.breaking === item.expected.breaking && actual.any === item.expected.any;
132
+ return {
133
+ id: item.id,
134
+ title: item.title,
135
+ event: event !== undefined,
136
+ signals: event?.signals.map(signal => ({ code: signal.code, confidence: signal.confidence })) ?? [],
137
+ actual,
138
+ expected: item.expected,
139
+ passed,
140
+ };
141
+ });
142
+ const passed = results.filter(item => item.passed).length;
143
+ return {
144
+ schema: COMPATIBILITY_BENCHMARK_SCHEMA,
145
+ mode: 'offline-rules',
146
+ cases: results,
147
+ summary: {
148
+ total: results.length,
149
+ passed,
150
+ failed: results.length - passed,
151
+ },
152
+ boundary: 'This checks deterministic rule and gate behavior only. It does not load a plugin, run DSH, or prove runtime compatibility.',
153
+ };
154
+ }
155
+ export function renderCompatibilityBenchmark(report) {
156
+ const lines = [
157
+ 'Compatibility benchmark (offline rules; no network or plugin execution)',
158
+ '',
159
+ ];
160
+ for (const item of report.cases) {
161
+ const mark = item.passed ? 'PASS' : 'FAIL';
162
+ lines.push(`${mark} ${item.id}: ${item.title} — breaking=${item.actual.breaking}, any=${item.actual.any}`);
163
+ if (!item.passed) {
164
+ lines.push(` expected: breaking=${item.expected.breaking}, any=${item.expected.any}`);
165
+ }
166
+ }
167
+ lines.push('', `Result: ${report.summary.passed}/${report.summary.total} benchmark contracts passed.`);
168
+ lines.push(report.boundary);
169
+ return `${lines.join('\n')}\n`;
170
+ }
171
+ //# sourceMappingURL=compatibility-benchmark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility-benchmark.js","sourceRoot":"","sources":["../../src/compatibility-benchmark.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export { MAX_CANDIDATE_GRAPHS, NpmCandidateGraphClient, type NpmCandidateGraphCl
9
9
  export { GitHubReleaseClient, type GitHubReleaseClientOptions, type ReleaseNotes, type ReleaseNotesSource } from './github-release.js';
10
10
  export { emptyRadarState, pollRadar, type AdvisorySource, type CandidateDependencySource, type RadarPollResult, type ReleaseSource, } from './radar.js';
11
11
  export { assessCompatibilityChange, assessCompatibilityChanges, type CompatibilityChangeInput } from './compatibility.js';
12
+ export { COMPATIBILITY_BENCHMARK_SCHEMA, renderCompatibilityBenchmark, runCompatibilityBenchmark, type CompatibilityBenchmarkCaseResult, type CompatibilityBenchmarkReport, } from './compatibility-benchmark.js';
12
13
  export { createAnalysisTask, renderAgentAnalysisGroupPrompt, renderAgentAnalysisPrompt, renderDshAnalysisPrompt } from './dsh-analysis.js';
13
14
  export { parsePackageManifestSnapshot, parseRadarConfig } from './inventory.js';
14
15
  export { createRadarConfigFromDshProfile, discoverDshProfiles, refreshRadarConfigFromConfiguredProfile, refreshRadarConfigFromDshProfile, resolveDshProfileDirectory, writeDshPatch, writeRadarConfig, type DshInitOptions, type InitInspector, type WriteDshPatchOptions, type WriteRadarConfigOptions, } from './init.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -9,6 +9,7 @@ export { MAX_CANDIDATE_GRAPHS, NpmCandidateGraphClient } from './npm-candidate.j
9
9
  export { GitHubReleaseClient } from './github-release.js';
10
10
  export { emptyRadarState, pollRadar, } from './radar.js';
11
11
  export { assessCompatibilityChange, assessCompatibilityChanges } from './compatibility.js';
12
+ export { COMPATIBILITY_BENCHMARK_SCHEMA, renderCompatibilityBenchmark, runCompatibilityBenchmark, } from './compatibility-benchmark.js';
12
13
  export { createAnalysisTask, renderAgentAnalysisGroupPrompt, renderAgentAnalysisPrompt, renderDshAnalysisPrompt } from './dsh-analysis.js';
13
14
  export { parsePackageManifestSnapshot, parseRadarConfig } from './inventory.js';
14
15
  export { createRadarConfigFromDshProfile, discoverDshProfiles, refreshRadarConfigFromConfiguredProfile, refreshRadarConfigFromDshProfile, resolveDshProfileDirectory, writeDshPatch, writeRadarConfig, } from './init.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,wBAAwB,GAKzB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAyB,MAAM,UAAU,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAA4F,MAAM,kBAAkB,CAAA;AAC7I,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAuC,MAAM,oBAAoB,CAAA;AACvH,OAAO,EAAE,mBAAmB,EAA+E,MAAM,qBAAqB,CAAA;AACtI,OAAO,EACL,eAAe,EACf,SAAS,GAKV,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAiC,MAAM,oBAAoB,CAAA;AACzH,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC1I,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC/E,OAAO,EACL,+BAA+B,EAC/B,mBAAmB,EACnB,uCAAuC,EACvC,gCAAgC,EAChC,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,GAKjB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GAItB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GAQpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,GAMd,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACpH,OAAO,EAAE,aAAa,EAAoB,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAyD,MAAM,UAAU,CAAA;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EACL,aAAa,GAcd,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GAkCnB,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,wBAAwB,GAKzB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAyB,MAAM,UAAU,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAA4F,MAAM,kBAAkB,CAAA;AAC7I,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAuC,MAAM,oBAAoB,CAAA;AACvH,OAAO,EAAE,mBAAmB,EAA+E,MAAM,qBAAqB,CAAA;AACtI,OAAO,EACL,eAAe,EACf,SAAS,GAKV,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAiC,MAAM,oBAAoB,CAAA;AACzH,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,yBAAyB,GAG1B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC1I,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC/E,OAAO,EACL,+BAA+B,EAC/B,mBAAmB,EACnB,uCAAuC,EACvC,gCAAgC,EAChC,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,GAKjB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GAItB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GAQpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,GAMd,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACpH,OAAO,EAAE,aAAa,EAAoB,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAyD,MAAM,UAAU,CAAA;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EACL,aAAa,GAcd,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GAkCnB,MAAM,kBAAkB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import type { RadarSeverity, RadarState, VulnerabilityEvent } from './radar-types.js';
2
2
  export type RadarFailThreshold = RadarSeverity | 'never';
3
+ export type RadarCompatibilityFailThreshold = 'never' | 'breaking' | 'any';
3
4
  export interface RadarPolicyMatch {
4
5
  incidentId: string;
5
6
  kind: VulnerabilityEvent['kind'];
@@ -8,12 +9,23 @@ export interface RadarPolicyMatch {
8
9
  package: string;
9
10
  advisory: string;
10
11
  }
12
+ export interface RadarCompatibilityPolicyMatch {
13
+ incidentId: string;
14
+ project: string;
15
+ plugin: string;
16
+ installed: string;
17
+ candidate: string;
18
+ signals: string[];
19
+ }
11
20
  export interface RadarPolicyResult {
12
21
  threshold: RadarFailThreshold;
13
22
  status: 'pass' | 'fail';
14
23
  matches: RadarPolicyMatch[];
24
+ compatibilityThreshold?: Exclude<RadarCompatibilityFailThreshold, 'never'>;
25
+ compatibilityMatches?: RadarCompatibilityPolicyMatch[];
15
26
  }
16
27
  export declare const RADAR_FAIL_THRESHOLDS: readonly RadarFailThreshold[];
17
- export declare function evaluateRadarPolicy(state: RadarState, threshold: RadarFailThreshold): RadarPolicyResult;
28
+ export declare const RADAR_COMPATIBILITY_FAIL_THRESHOLDS: readonly RadarCompatibilityFailThreshold[];
29
+ export declare function evaluateRadarPolicy(state: RadarState, threshold: RadarFailThreshold, compatibilityThreshold?: RadarCompatibilityFailThreshold): RadarPolicyResult;
18
30
  export declare function renderRadarPolicy(policy: RadarPolicyResult): string;
19
31
  //# sourceMappingURL=radar-policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"radar-policy.d.ts","sourceRoot":"","sources":["../../src/radar-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErF,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,OAAO,CAAA;AAExD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,aAAa,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,kBAAkB,CAAA;IAC7B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAC5B;AAWD,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAQ9D,CAAA;AAwBD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,GAAG,iBAAiB,CAgBvG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAUnE"}
1
+ {"version":3,"file":"radar-policy.d.ts","sourceRoot":"","sources":["../../src/radar-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,aAAa,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAEzG,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,OAAO,CAAA;AACxD,MAAM,MAAM,+BAA+B,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,CAAA;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,aAAa,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,kBAAkB,CAAA;IAC7B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,sBAAsB,CAAC,EAAE,OAAO,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAA;IAC1E,oBAAoB,CAAC,EAAE,6BAA6B,EAAE,CAAA;CACvD;AAWD,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAQ9D,CAAA;AAED,eAAO,MAAM,mCAAmC,EAAE,SAAS,+BAA+B,EAIzF,CAAA;AAuCD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,kBAAkB,EAC7B,sBAAsB,GAAE,+BAAyC,GAChE,iBAAiB,CAiCnB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CA2BnE"}
@@ -15,6 +15,11 @@ export const RADAR_FAIL_THRESHOLDS = [
15
15
  'critical',
16
16
  'never',
17
17
  ];
18
+ export const RADAR_COMPATIBILITY_FAIL_THRESHOLDS = [
19
+ 'never',
20
+ 'breaking',
21
+ 'any',
22
+ ];
18
23
  function display(value, maxLength = 512) {
19
24
  const escaped = value.replace(/[\u0000-\u001f\u007f-\u009f]/g, character => (`\\u${character.codePointAt(0)?.toString(16).padStart(4, '0') ?? '0000'}`));
20
25
  return escaped.length <= maxLength ? escaped : `${escaped.slice(0, maxLength)}…`;
@@ -32,31 +37,78 @@ function policyMatch(event) {
32
37
  advisory: display(event.advisory.id),
33
38
  };
34
39
  }
35
- export function evaluateRadarPolicy(state, threshold) {
36
- if (threshold === 'never')
37
- return { threshold, status: 'pass', matches: [] };
38
- const minimum = SEVERITY_RANK[threshold];
39
- const matches = Object.values(state.activeVulnerabilities)
40
- .map(item => policyMatch(item.event))
41
- .filter(item => SEVERITY_RANK[item.severity] >= minimum)
42
- .sort((left, right) => (SEVERITY_RANK[right.severity] - SEVERITY_RANK[left.severity]
43
- || left.project.localeCompare(right.project)
44
- || left.incidentId.localeCompare(right.incidentId)));
40
+ function compatibilityPolicyMatch(event) {
45
41
  return {
42
+ incidentId: display(event.incidentId),
43
+ project: display(event.project.name),
44
+ plugin: display(`${event.plugin.name}@${event.plugin.version}`),
45
+ installed: display(`${event.installed.name}@${event.installed.version}`),
46
+ candidate: display(`${event.candidate.name}@${event.candidate.version}`),
47
+ signals: event.signals.map(signal => display(signal.code, 128)).slice(0, 32),
48
+ };
49
+ }
50
+ function hasBreakingCompatibilitySignal(event) {
51
+ return event.signals.some(signal => signal.confidence === 'confirmed' || signal.confidence === 'strong');
52
+ }
53
+ export function evaluateRadarPolicy(state, threshold, compatibilityThreshold = 'never') {
54
+ const matches = threshold === 'never'
55
+ ? []
56
+ : Object.values(state.activeVulnerabilities)
57
+ .map(item => policyMatch(item.event))
58
+ .filter(item => SEVERITY_RANK[item.severity] >= SEVERITY_RANK[threshold])
59
+ .sort((left, right) => (SEVERITY_RANK[right.severity] - SEVERITY_RANK[left.severity]
60
+ || left.project.localeCompare(right.project)
61
+ || left.incidentId.localeCompare(right.incidentId)));
62
+ const compatibilityMatches = compatibilityThreshold === 'never'
63
+ ? []
64
+ : Object.values(state.activeCompatibility)
65
+ .map(item => item.event)
66
+ .filter(event => compatibilityThreshold === 'any' || hasBreakingCompatibilitySignal(event))
67
+ .map(compatibilityPolicyMatch)
68
+ .sort((left, right) => (left.project.localeCompare(right.project)
69
+ || left.plugin.localeCompare(right.plugin)
70
+ || left.incidentId.localeCompare(right.incidentId)));
71
+ const result = {
46
72
  threshold,
47
- status: matches.length === 0 ? 'pass' : 'fail',
73
+ status: matches.length === 0 && compatibilityMatches.length === 0 ? 'pass' : 'fail',
48
74
  matches,
49
75
  };
76
+ if (compatibilityThreshold === 'never')
77
+ return result;
78
+ return {
79
+ ...result,
80
+ compatibilityThreshold,
81
+ compatibilityMatches,
82
+ };
50
83
  }
51
84
  export function renderRadarPolicy(policy) {
52
- if (policy.threshold === 'never')
85
+ const compatibilityEnabled = policy.compatibilityThreshold !== undefined;
86
+ if (policy.threshold === 'never' && !compatibilityEnabled)
53
87
  return 'Policy: not enforced\n';
54
- if (policy.status === 'pass') {
55
- return `Policy: PASS (no active vulnerability at or above ${policy.threshold})\n`;
88
+ const lines = [];
89
+ if (policy.threshold !== 'never') {
90
+ if (policy.matches.length === 0) {
91
+ lines.push(`Policy: PASS (no active vulnerability at or above ${policy.threshold})`);
92
+ }
93
+ else {
94
+ lines.push(`Policy: FAIL (active vulnerability at or above ${policy.threshold})`);
95
+ for (const match of policy.matches) {
96
+ lines.push(` [${match.severity.toUpperCase()}] ${match.project}: ${match.package} (${match.advisory})`);
97
+ }
98
+ }
56
99
  }
57
- const lines = [`Policy: FAIL (active vulnerability at or above ${policy.threshold})`];
58
- for (const match of policy.matches) {
59
- lines.push(` [${match.severity.toUpperCase()}] ${match.project}: ${match.package} (${match.advisory})`);
100
+ if (compatibilityEnabled) {
101
+ const threshold = policy.compatibilityThreshold;
102
+ const matches = policy.compatibilityMatches ?? [];
103
+ if (matches.length === 0) {
104
+ lines.push(`Compatibility policy: PASS (no active ${threshold === 'breaking' ? 'breaking ' : ''}compatibility change)`);
105
+ }
106
+ else {
107
+ lines.push(`Compatibility policy: FAIL (active ${threshold === 'breaking' ? 'breaking ' : ''}compatibility change)`);
108
+ for (const match of matches) {
109
+ lines.push(` [${threshold === 'breaking' ? 'BREAKING' : 'CHANGE'}] ${match.project}: ${match.plugin} ${match.installed} -> ${match.candidate} (${match.signals.join(', ')})`);
110
+ }
111
+ }
60
112
  }
61
113
  return `${lines.join('\n')}\n`;
62
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"radar-policy.js","sourceRoot":"","sources":["../../src/radar-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radar-policy.js","sourceRoot":"","sources":["../../src/radar-policy.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const TOOL_VERSION = "0.22.1";
1
+ export declare const TOOL_VERSION = "0.24.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,2 +1,2 @@
1
- export const TOOL_VERSION = '0.22.1';
1
+ export const TOOL_VERSION = '0.24.0';
2
2
  //# sourceMappingURL=version.js.map
@@ -176,6 +176,16 @@ pnpm run try:dsh
176
176
 
177
177
  运行 `pnpm run try:dsh:live`,可以在 DSH 投递前加入一次当前 OSV 与 npm 数据轮询。
178
178
 
179
+ ## 验证兼容性规则
180
+
181
+ 在把项目接入兼容性门禁前,可以先运行离线规则 benchmark:
182
+
183
+ ```bash
184
+ pnpm dlx --package=upstream-radar@0.24.0 upstream-radar benchmark compatibility
185
+ ```
186
+
187
+ 它覆盖六类契约:安全补丁、只需要项目分析的变化、不兼容的 DSH peer、发布者明确声明 breaking、候选传递依赖漏洞,以及候选依赖图不完整。这个命令不会联网、安装包、加载插件或启动 DSH;它验证的是 Radar 的确定性规则以及 `breaking`/`any` 门禁行为,不是运行时兼容性证明。
188
+
179
189
  ## 在 GitHub Actions 中运行
180
190
 
181
191
  如果团队想先用定时 CI 检查,而不是马上在 runner 里安装 DSH,可以把审查过的 `upstream-radar.config.json` 提交到仓库,然后复制[示例 workflow](../examples/github-actions/upstream-radar.yml)。现在可以直接使用可复用的 GitHub Action,workflow 只需要两个关键步骤:
@@ -183,19 +193,22 @@ pnpm run try:dsh
183
193
  ```yaml
184
194
  steps:
185
195
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
186
- - uses: MicroMilo/upstream-radar@v0.22.1
196
+ - uses: MicroMilo/upstream-radar@v0.24.0
187
197
  with:
188
198
  config: upstream-radar.config.json
189
199
  fail-on: high
200
+ # 可选:把确定性的 DSH/插件兼容性破坏也作为 CI 失败条件
201
+ fail-on-compatibility: breaking
190
202
  ```
191
203
 
192
- 这个 Action 只是 `radar check --frozen --state :memory: --fail-on high --json` 的薄封装。`--frozen` 是有意的:它只使用配置文件里的依赖图,不会尝试读取 runner 上不存在的本地 DSH profile。每次运行彼此独立;达到阈值时返回 `2`,运行或漏洞源出错时返回 `1`。这个入口不会投递 DSH Agent 任务,也不会修改分支;需要持续监控和项目级分析时,仍使用原生 DSH bundle。建议把 Action 固定到类似 `v0.22.1` 的发布标签,并根据团队策略固定 checkout Action。
204
+ 这个 Action 只是 `radar check --frozen --state :memory: --fail-on high --fail-on-compatibility breaking --json` 的薄封装。`--frozen` 是有意的:它只使用配置文件里的依赖图,不会尝试读取 runner 上不存在的本地 DSH profile。每次运行彼此独立;发现达到阈值的漏洞或选择的兼容性变化时返回 `2`,运行或漏洞源出错时返回 `1`。`breaking` 只拦截有 confirmed/strong 信号的兼容性事件,`any` 会拦截所有活动兼容性事件,默认值是 `never`。这个入口不会投递 DSH Agent 任务,也不会修改分支;需要持续监控和项目级分析时,仍使用原生 DSH bundle。建议把 Action 固定到类似 `v0.24.0` 的发布标签,并根据团队策略固定 checkout Action。
193
205
 
194
206
  调用方需要先 checkout 仓库。这个 Action 不会安装项目依赖,也不会执行项目的 lifecycle script;它只读取提交到仓库的依赖图并查询配置中的上游漏洞源。如果需要完全显式的底层命令,等价写法是:
195
207
 
196
208
  ```bash
197
- pnpm dlx --package=upstream-radar@0.22.1 upstream-radar radar check \
198
- ./upstream-radar.config.json --frozen --state :memory: --fail-on high --json
209
+ pnpm dlx --package=upstream-radar@0.24.0 upstream-radar radar check \
210
+ ./upstream-radar.config.json --frozen --state :memory: --fail-on high \
211
+ --fail-on-compatibility breaking --json
199
212
  ```
200
213
 
201
214
  如果想先跑一个真实消费者样例,可以参考使用真实 [`dsh-cloudflare-browser-run@0.1.1`](../examples/github-actions/consumer/upstream-radar.config.json) 依赖图的[consumer smoke 说明](../examples/github-actions/consumer/README.md)和[可复制 workflow](../examples/github-actions/consumer/upstream-radar.yml)。
@@ -206,7 +219,7 @@ pnpm dlx --package=upstream-radar@0.22.1 upstream-radar radar check \
206
219
  pnpm run try:consumer
207
220
  ```
208
221
 
209
- 在本地或自托管 DSH 机器上不要加 `--frozen`,这样 Radar 会在每轮检查前刷新选中的 profile。`--fail-on` 适用于一次性 `radar check`、`radar status` 或 `radar watch --once`;长期运行的 watch 不应该因为第一次告警就退出。
222
+ 在本地或自托管 DSH 机器上不要加 `--frozen`,这样 Radar 会在每轮检查前刷新选中的 profile。`--fail-on` 和 `--fail-on-compatibility` 适用于一次性 `radar check`、`radar status` 或 `radar watch --once`;长期运行的 watch 不应该因为第一次告警就退出。
210
223
 
211
224
  ## 闭环如何工作
212
225
 
@@ -274,7 +287,7 @@ DSH Agent 收到的任务要求:只读分析、引用项目证据、保留不
274
287
 
275
288
  ## 当前能力与边界
276
289
 
277
- 已经支持:DSH profile 实际安装树和 npm lock 依赖图、重复版本路径、未解析依赖的覆盖提示、OSV 精确版本匹配、恶意包记录、npm release 监听(只接受高于当前安装版本的候选;npm 的 `latest` 回退不会制造 breaking 告警;最新版本有确定性阻断时会检查历史候选的 OSV 状态和最早一小段传递依赖图,并筛出第一个没有确定性阻断且没有已知漏洞路径、值得交给 DSH 分析的候选;图不完整、图解析或 OSV 失败时不推荐候选)、公开 GitHub Release 说明、OSV 故障时保留已确认状态、连续失败后的 source-health DSH notice、持久事件、DSH 原生投递,以及 Node/peer/exports/入口/bundle/版本边界检查;还包括不联网的 `doctor` 接线检查、默认可提交的相对 workspace、把审查过的图接入 CI 的可复用 GitHub Action,以及基于真实 DSH 插件的 consumer smoke。
290
+ 已经支持:DSH profile 实际安装树和 npm lock 依赖图、重复版本路径、未解析依赖的覆盖提示、OSV 精确版本匹配、恶意包记录、npm release 监听(只接受高于当前安装版本的候选;npm 的 `latest` 回退不会制造 breaking 告警;最新版本有确定性阻断时会检查历史候选的 OSV 状态和最早一小段传递依赖图,并筛出第一个没有确定性阻断且没有已知漏洞路径、值得交给 DSH 分析的候选;图不完整、图解析或 OSV 失败时不推荐候选)、公开 GitHub Release 说明、OSV 故障时保留已确认状态、连续失败后的 source-health DSH notice、持久事件、DSH 原生投递,以及 Node/peer/exports/入口/bundle/版本边界检查;还包括不联网的 `doctor` 接线检查、默认可提交的相对 workspace、把审查过的图接入 CI 的可复用 GitHub Action、可选的 breaking/any 兼容性门禁、离线的 `benchmark compatibility` 规则契约检查,以及基于真实 DSH 插件的 consumer smoke。
278
291
 
279
292
  `init` 在省略 `--profile` 时可以自动选择唯一一个含第三方 bundle 的 DSH profile;多个候选仍要求显式指定。默认读取实际安装树,因此 pnpm override 和本地解析选择会被纳入;原生解析 pnpm lockfile 以支持安装前/CI 检查仍未实现。加上 `--dsh-patch <path>` 可以生成不依赖环境变量的 DSH overlay。`radar status` 提供离线的首次运行检查、活动事件摘要和下一步提示,但不会替你刷新漏洞源,也不会自动升级插件。暂未支持 Yarn 图适配、changelog/比较 diff/迁移文档源、项目级 Session 精确路由、把 Agent 结论写回事件,以及自动创建 Issue 或 PR。
280
293
 
@@ -284,6 +297,8 @@ DSH Agent 收到的任务要求:只读分析、引用项目证据、保留不
284
297
 
285
298
  候选依赖图默认只覆盖按版本排序的有限前缀,后续未查询版本会在事件中显示为未完整检查。遇到 registry 或 OSV 不可用时,Radar 保留不确定性并发出告警,不会生成“已安全”的结论。
286
299
 
300
+ 兼容性 CI 门禁默认关闭;使用 `--fail-on-compatibility breaking` 时,只会在有 confirmed/strong 信号的兼容性事件上让 CI 失败,使用 `any` 时则拦截所有活动兼容性事件。两者都不是候选版本安全证明。
301
+
287
302
  `radar check/watch --frozen` 会有意使用提交到仓库的配置图,适合 CI,但不能证明 DSH profile 的实际安装树没有变化;不加 `--frozen` 时,原生 DSH 和 CLI 轮询会先刷新选中的 profile。
288
303
 
289
304
  Upstream Radar 目前是面向 DSH developer preview 生态的 alpha 软件,事件结构和适配边界仍可能变化。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "upstream-radar",
3
- "version": "0.22.1",
3
+ "version": "0.24.0",
4
4
  "description": "Always-on dependency security monitoring for DeepSeek Harness (DSH) plugins: find exact installed or candidate transitive vulnerable paths and breaking updates, then route evidence to a DSH Agent.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -77,6 +77,7 @@
77
77
  "showcase:admission:reports": "pnpm run build && node scripts/showcase.mjs --write-reports",
78
78
  "showcase:radar": "pnpm run build && node scripts/radar-showcase.mjs",
79
79
  "showcase:radar:reports": "pnpm run build && node scripts/radar-showcase.mjs --write-reports",
80
+ "benchmark:compatibility": "pnpm run build && node dist/src/cli.js benchmark compatibility",
80
81
  "try:consumer": "node scripts/consumer-smoke.mjs",
81
82
  "try:dsh": "pnpm run build && node scripts/dsh-headless-showcase.mjs",
82
83
  "try:dsh:live": "pnpm run build && node scripts/dsh-headless-showcase.mjs --live-feeds",