@openmixer/plugin-qualify 0.4.1 → 0.5.1
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 +6 -3
- package/dist/clap-qualify.d.ts +12 -2
- package/dist/clap-qualify.js +23 -14
- package/dist/clap-qualify.js.map +1 -1
- package/dist/hosting-codes.d.ts +3 -0
- package/dist/hosting-codes.js +4 -0
- package/dist/hosting-codes.js.map +1 -1
- package/dist/measurement/format.d.ts +39 -3
- package/dist/measurement/format.js +62 -2
- package/dist/measurement/format.js.map +1 -1
- package/dist/measurement/merge.d.ts +10 -1
- package/dist/measurement/merge.js +39 -5
- package/dist/measurement/merge.js.map +1 -1
- package/dist/measurement/sweep-jsonl.js +3 -1
- package/dist/measurement/sweep-jsonl.js.map +1 -1
- package/dist/measurement/vocabulary.js +6 -0
- package/dist/measurement/vocabulary.js.map +1 -1
- package/dist/qualify-declarations.d.ts +11 -1
- package/dist/qualify-declarations.js +11 -1
- package/dist/qualify-declarations.js.map +1 -1
- package/dist/tool-paths.d.ts +2 -0
- package/dist/tool-paths.js +12 -2
- package/dist/tool-paths.js.map +1 -1
- package/package.json +1 -1
- package/src/clap-qualify.ts +39 -12
- package/src/hosting-codes.ts +4 -0
- package/src/measurement/format.ts +96 -2
- package/src/measurement/merge.ts +52 -6
- package/src/measurement/sweep-jsonl.ts +3 -1
- package/src/measurement/vocabulary.ts +7 -0
- package/src/qualify-declarations.ts +13 -1
- package/src/tool-paths.ts +15 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/measurement/merge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/measurement/merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* soak held, whether a count is a measurement at all — those are the consumer's rules, and a
|
|
21
21
|
* reader that decided them would be a second classifier ahead of the real one.
|
|
22
22
|
*/
|
|
23
|
-
import { readLifecycle, readSoakAtRate, readThreads } from "./format.js";
|
|
23
|
+
import { readIntegrity, readLifecycle, readSoakAtRate, readThreads } from "./format.js";
|
|
24
24
|
import { booleanValue, finiteNumber, isRecord, mapArray, nonEmptyString, optional, positiveNumber } from "./guards.js";
|
|
25
25
|
/** A process exit status that IS a signal death, as the signal's name. Anything else is not a
|
|
26
26
|
* crash this reader can name — a timeout (124) or an early refusal is the run failing, not the
|
|
@@ -131,6 +131,7 @@ export function measuredPluginsFromSweep(passes) {
|
|
|
131
131
|
continue;
|
|
132
132
|
out.push({
|
|
133
133
|
uri,
|
|
134
|
+
...optional("version", nonEmptyString(row.version)),
|
|
134
135
|
topology: {
|
|
135
136
|
audioInputs,
|
|
136
137
|
audioOutputs,
|
|
@@ -139,6 +140,7 @@ export function measuredPluginsFromSweep(passes) {
|
|
|
139
140
|
stability: stabilityOf(row, deep.get(uri), soak.get(uri)),
|
|
140
141
|
rtSafety: rtSafetyOf(row),
|
|
141
142
|
features: featuresOf(row),
|
|
143
|
+
...optional("integrity", readIntegrity(row.integrity)),
|
|
142
144
|
});
|
|
143
145
|
}
|
|
144
146
|
return out;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sweep-jsonl.js","sourceRoot":"","sources":["../../src/measurement/sweep-jsonl.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,sDAAsD;AACtD;;;;;;;;;;;;;;;;;;;GAmBG;AAUH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"sweep-jsonl.js","sourceRoot":"","sources":["../../src/measurement/sweep-jsonl.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,12 @@ export const UNMEASURED_TERMS = [
|
|
|
46
46
|
kind: "nothing-to-measure",
|
|
47
47
|
description: "A convolver requiring an IR file the prober did not load.",
|
|
48
48
|
},
|
|
49
|
+
{
|
|
50
|
+
code: "unpinnable",
|
|
51
|
+
kind: "nothing-to-measure",
|
|
52
|
+
description: "The files the host loads cannot be pinned (plugin-qualify spec §11.1): a path holding ',', '=' or " +
|
|
53
|
+
"whitespace, or a manifest using @base or a percent-encoded IRI. The plugin stays unpinned, never partly pinned.",
|
|
54
|
+
},
|
|
49
55
|
{
|
|
50
56
|
code: "refused-instantiation",
|
|
51
57
|
kind: "probe-failed",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../src/measurement/vocabulary.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../src/measurement/vocabulary.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,10 +39,20 @@ export declare const CLAP_SCAN_TOOL_DEFAULT = "omx-clap-scan";
|
|
|
39
39
|
export declare const CLAP_SCAN_TIMEOUT_S = 300;
|
|
40
40
|
/**
|
|
41
41
|
* The CLAP prober (`native/clap-qualify.c`) and the interposer it runs under (`native/rt-interpose.c`):
|
|
42
|
-
* each located by one environment variable, else the
|
|
42
|
+
* each located by one environment variable, else the first of `NATIVE_TOOL_DIRS` that holds it, else
|
|
43
|
+
* the package's own build in `native/build/`.
|
|
43
44
|
*/
|
|
44
45
|
export declare const CLAP_QUALIFY_TOOL_ENV = "OMX_CLAP_QUALIFY";
|
|
45
46
|
export declare const RT_INTERPOSE_ENV = "OMX_RT_INTERPOSE";
|
|
47
|
+
/** The file names of the prober and the interposer, in every place they are looked for. */
|
|
48
|
+
export declare const CLAP_QUALIFY_TOOL_NAME = "clap-qualify";
|
|
49
|
+
export declare const RT_INTERPOSE_NAME = "rt_interpose.so";
|
|
50
|
+
/**
|
|
51
|
+
* Where the RPM and the DEB install the prober and the interposer: the libexec directory on Fedora,
|
|
52
|
+
* `/usr/lib/<package>` on Debian (policy keeps a package's private programs there). The packaging
|
|
53
|
+
* installs into exactly these; a test holds the spec and `debian/rules` to them.
|
|
54
|
+
*/
|
|
55
|
+
export declare const NATIVE_TOOL_DIRS: readonly string[];
|
|
46
56
|
/** The CLAP sweep: blocks of `CLAP_SWEEP_FRAMES` frames per rate, every parameter moved through events. */
|
|
47
57
|
export declare const CLAP_SWEEP_BLOCKS = 512;
|
|
48
58
|
export declare const CLAP_SWEEP_FRAMES = 512;
|
|
@@ -41,10 +41,20 @@ export const CLAP_SCAN_TOOL_DEFAULT = "omx-clap-scan";
|
|
|
41
41
|
export const CLAP_SCAN_TIMEOUT_S = 300;
|
|
42
42
|
/**
|
|
43
43
|
* The CLAP prober (`native/clap-qualify.c`) and the interposer it runs under (`native/rt-interpose.c`):
|
|
44
|
-
* each located by one environment variable, else the
|
|
44
|
+
* each located by one environment variable, else the first of `NATIVE_TOOL_DIRS` that holds it, else
|
|
45
|
+
* the package's own build in `native/build/`.
|
|
45
46
|
*/
|
|
46
47
|
export const CLAP_QUALIFY_TOOL_ENV = "OMX_CLAP_QUALIFY";
|
|
47
48
|
export const RT_INTERPOSE_ENV = "OMX_RT_INTERPOSE";
|
|
49
|
+
/** The file names of the prober and the interposer, in every place they are looked for. */
|
|
50
|
+
export const CLAP_QUALIFY_TOOL_NAME = "clap-qualify";
|
|
51
|
+
export const RT_INTERPOSE_NAME = "rt_interpose.so";
|
|
52
|
+
/**
|
|
53
|
+
* Where the RPM and the DEB install the prober and the interposer: the libexec directory on Fedora,
|
|
54
|
+
* `/usr/lib/<package>` on Debian (policy keeps a package's private programs there). The packaging
|
|
55
|
+
* installs into exactly these; a test holds the spec and `debian/rules` to them.
|
|
56
|
+
*/
|
|
57
|
+
export const NATIVE_TOOL_DIRS = ["/usr/libexec/plugin-qualify", "/usr/lib/plugin-qualify"];
|
|
48
58
|
/** The CLAP sweep: blocks of `CLAP_SWEEP_FRAMES` frames per rate, every parameter moved through events. */
|
|
49
59
|
export const CLAP_SWEEP_BLOCKS = 512;
|
|
50
60
|
export const CLAP_SWEEP_FRAMES = 512;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qualify-declarations.js","sourceRoot":"","sources":["../src/qualify-declarations.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,sDAAsD;AACtD;;;;GAIG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C,sFAAsF;AACtF,MAAM,CAAC,MAAM,aAAa,GAAsB,CAAC,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAExG,4EAA4E;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;AAEjF,wGAAwG;AACxG,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC,0FAA0F;AAC1F,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAClD,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC;AAEtD,sFAAsF;AACtF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC
|
|
1
|
+
{"version":3,"file":"qualify-declarations.js","sourceRoot":"","sources":["../src/qualify-declarations.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,sDAAsD;AACtD;;;;GAIG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C,sFAAsF;AACtF,MAAM,CAAC,MAAM,aAAa,GAAsB,CAAC,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAExG,4EAA4E;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;AAEjF,wGAAwG;AACxG,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC,0FAA0F;AAC1F,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAClD,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC;AAEtD,sFAAsF;AACtF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAEnD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,sBAAsB,GAAG,cAAc,CAAC;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAsB,CAAC,6BAA6B,EAAE,yBAAyB,CAAC,CAAC;AAE9G,2GAA2G;AAC3G,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,yFAAyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAsB1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;IACxB,oBAAoB,EAAE,CAAC;IACvB,cAAc,EAAE,EAAE;CACnB,CAAC;AAOF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,mBAAmB,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,cAAc,EAAE;IACtG,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,EAAE;IAC1E,UAAU,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,EAAE;CACzB,CAAC"}
|
package/dist/tool-paths.d.ts
CHANGED
|
@@ -10,3 +10,5 @@ export declare function lv2MeasureToolPath(): string;
|
|
|
10
10
|
export declare function clapQualifyToolPath(): string;
|
|
11
11
|
/** The package's own build of the interposer the CLAP prober runs under. */
|
|
12
12
|
export declare function rtInterposePath(): string;
|
|
13
|
+
/** Where a native tool is looked for when no setting names it, in order: the installed directories, then the own build. */
|
|
14
|
+
export declare function nativeToolCandidates(name: string): string[];
|
package/dist/tool-paths.js
CHANGED
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* wherever it is installed (a checkout, an RPM's bundled node_modules, a pnpm store). The
|
|
6
6
|
* tools are shipped RUNTIME artefacts, not dev scripts.
|
|
7
7
|
*/
|
|
8
|
+
import { join } from "node:path";
|
|
8
9
|
import { fileURLToPath } from "node:url";
|
|
10
|
+
import { CLAP_QUALIFY_TOOL_NAME, NATIVE_TOOL_DIRS, RT_INTERPOSE_NAME } from "./qualify-declarations.js";
|
|
9
11
|
/**
|
|
10
12
|
* `tools/` — `scan.py`, `benchmark.py`, `lv2-measure.mjs`, `hosting-sweep.mjs`. Resolved when a
|
|
11
13
|
* console asks, never at import: a consumer that only reads this package's declarations from a
|
|
@@ -18,12 +20,20 @@ export function toolsDir() {
|
|
|
18
20
|
export function lv2MeasureToolPath() {
|
|
19
21
|
return fileURLToPath(new URL("../tools/lv2-measure.mjs", import.meta.url));
|
|
20
22
|
}
|
|
23
|
+
/** The package's own build of the native tools (`make -C native`). */
|
|
24
|
+
function nativeBuildDir() {
|
|
25
|
+
return fileURLToPath(new URL("../native/build/", import.meta.url));
|
|
26
|
+
}
|
|
21
27
|
/** The package's own build of the CLAP prober (`make -C native`). */
|
|
22
28
|
export function clapQualifyToolPath() {
|
|
23
|
-
return
|
|
29
|
+
return join(nativeBuildDir(), CLAP_QUALIFY_TOOL_NAME);
|
|
24
30
|
}
|
|
25
31
|
/** The package's own build of the interposer the CLAP prober runs under. */
|
|
26
32
|
export function rtInterposePath() {
|
|
27
|
-
return
|
|
33
|
+
return join(nativeBuildDir(), RT_INTERPOSE_NAME);
|
|
34
|
+
}
|
|
35
|
+
/** Where a native tool is looked for when no setting names it, in order: the installed directories, then the own build. */
|
|
36
|
+
export function nativeToolCandidates(name) {
|
|
37
|
+
return [...NATIVE_TOOL_DIRS, nativeBuildDir()].map((dir) => join(dir, name));
|
|
28
38
|
}
|
|
29
39
|
//# sourceMappingURL=tool-paths.js.map
|
package/dist/tool-paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-paths.js","sourceRoot":"","sources":["../src/tool-paths.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,sDAAsD;AACtD;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB;IAChC,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"tool-paths.js","sourceRoot":"","sources":["../src/tool-paths.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,sDAAsD;AACtD;;;;GAIG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAExG;;;;GAIG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB;IAChC,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,sEAAsE;AACtE,SAAS,cAAc;IACrB,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,sBAAsB,CAAC,CAAC;AACxD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACnD,CAAC;AAED,2HAA2H;AAC3H,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,CAAC,GAAG,gBAAgB,EAAE,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openmixer/plugin-qualify",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Qualify audio plugins for real-time hosting: scan, offline latency and cost measurement, a mod-host hosting sweep, and a fail-closed rating.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "GPL-3.0-or-later",
|
package/src/clap-qualify.ts
CHANGED
|
@@ -16,9 +16,11 @@ import { existsSync } from "node:fs";
|
|
|
16
16
|
import {
|
|
17
17
|
CLAP_QUALIFY_TIMEOUT_S,
|
|
18
18
|
CLAP_QUALIFY_TOOL_ENV,
|
|
19
|
+
CLAP_QUALIFY_TOOL_NAME,
|
|
19
20
|
CLAP_SWEEP_BLOCKS,
|
|
20
21
|
CLAP_SWEEP_FRAMES,
|
|
21
22
|
RT_INTERPOSE_ENV,
|
|
23
|
+
RT_INTERPOSE_NAME,
|
|
22
24
|
} from "./qualify-declarations.js";
|
|
23
25
|
import {
|
|
24
26
|
HOSTING_CODE,
|
|
@@ -33,7 +35,8 @@ import { OPENMIXER_CONSOLE_PROFILE, type HostProfile } from "./host-profiles.js"
|
|
|
33
35
|
import type { PluginTarget } from "./loader.js";
|
|
34
36
|
import type { QualifyVerdict } from "./qualify-cli.js";
|
|
35
37
|
import { RATING_SEVERITY, worstRating, type SuitabilityRating } from "./rating.js";
|
|
36
|
-
import {
|
|
38
|
+
import { nativeToolCandidates } from "./tool-paths.js";
|
|
39
|
+
import { readIntegrity, type IntegrityMeasurement } from "./measurement/format.js";
|
|
37
40
|
|
|
38
41
|
export class ClapQualifyError extends Error {
|
|
39
42
|
constructor(message: string) {
|
|
@@ -64,6 +67,11 @@ export interface ClapQualifyLine {
|
|
|
64
67
|
readonly hostExtensions: readonly string[];
|
|
65
68
|
readonly clap: ClapProbedFacts;
|
|
66
69
|
readonly rtSafety: ClapRtSafetyReading;
|
|
70
|
+
/**
|
|
71
|
+
* The pin (spec §11): the `.clap`'s digest by its name in its directory and the layout fingerprint
|
|
72
|
+
* the prober computed through plugin-hostd's `pin.h`, or the reason it took none.
|
|
73
|
+
*/
|
|
74
|
+
readonly integrity: IntegrityMeasurement;
|
|
67
75
|
}
|
|
68
76
|
|
|
69
77
|
const SHA256 = /^[0-9a-f]{64}$/;
|
|
@@ -161,6 +169,7 @@ export function parseClapQualifyLine(text: string): ClapQualifyLine {
|
|
|
161
169
|
hostExtensions: strings(v, "hostExtensions", "the line"),
|
|
162
170
|
clap: readClap(v["clap"]),
|
|
163
171
|
rtSafety: readRtSafety(v["rtSafety"]),
|
|
172
|
+
integrity: readIntegrity(v["integrity"]) ?? bad("no integrity"),
|
|
164
173
|
};
|
|
165
174
|
}
|
|
166
175
|
|
|
@@ -200,6 +209,7 @@ export interface RtSafetyDocument {
|
|
|
200
209
|
readonly hostExtensions: readonly string[];
|
|
201
210
|
readonly clap: ClapProbedFacts;
|
|
202
211
|
readonly rtSafety: ClapRtSafetyReading;
|
|
212
|
+
readonly integrity: IntegrityMeasurement;
|
|
203
213
|
};
|
|
204
214
|
}
|
|
205
215
|
|
|
@@ -236,7 +246,7 @@ export function rtSafetyDocument(line: ClapQualifyLine, profile: HostProfile = O
|
|
|
236
246
|
plugin: { uri: line.uri, format: "clap", binary: line.binary },
|
|
237
247
|
console: profile.id,
|
|
238
248
|
verdict: { rating, rtSafe: rating === "suitable", ...(rating === "suitable" || deciding === undefined ? {} : { deciding }), reasons },
|
|
239
|
-
measured: { hostExtensions: line.hostExtensions, clap: line.clap, rtSafety: line.rtSafety },
|
|
249
|
+
measured: { hostExtensions: line.hostExtensions, clap: line.clap, rtSafety: line.rtSafety, integrity: line.integrity },
|
|
240
250
|
};
|
|
241
251
|
}
|
|
242
252
|
|
|
@@ -297,14 +307,35 @@ export interface ClapQualifyOptions {
|
|
|
297
307
|
readonly exists?: (path: string) => boolean;
|
|
298
308
|
}
|
|
299
309
|
|
|
300
|
-
|
|
310
|
+
/** One native tool: its setting when set, else the first candidate that exists. Absent, it throws, naming where it looked. */
|
|
311
|
+
function locate(
|
|
312
|
+
env: Readonly<Record<string, string | undefined>>,
|
|
313
|
+
what: string,
|
|
314
|
+
name: string,
|
|
315
|
+
file: string,
|
|
316
|
+
exists: (path: string) => boolean,
|
|
317
|
+
): string {
|
|
301
318
|
const v = env[name];
|
|
302
|
-
|
|
319
|
+
const looked = v === undefined || v === "" ? nativeToolCandidates(file) : [v];
|
|
320
|
+
const path = looked.find((p) => exists(p));
|
|
321
|
+
if (path === undefined) {
|
|
322
|
+
throw new ClapQualifyError(`no CLAP ${what} at ${looked.join(", ")}: install the plugin-qualify package, build it with make -C native, or set ${name}`);
|
|
323
|
+
}
|
|
324
|
+
return path;
|
|
303
325
|
}
|
|
304
326
|
|
|
305
|
-
/**
|
|
306
|
-
|
|
307
|
-
|
|
327
|
+
/**
|
|
328
|
+
* The prober and the interposer this run uses: each its setting, else the first of the installed
|
|
329
|
+
* directories (`NATIVE_TOOL_DIRS`) that holds it, else the package's own build.
|
|
330
|
+
*/
|
|
331
|
+
export function clapQualifyTools(
|
|
332
|
+
env: Readonly<Record<string, string | undefined>>,
|
|
333
|
+
exists: (path: string) => boolean = existsSync,
|
|
334
|
+
): { tool: string; interposer: string } {
|
|
335
|
+
return {
|
|
336
|
+
tool: locate(env, "prober", CLAP_QUALIFY_TOOL_ENV, CLAP_QUALIFY_TOOL_NAME, exists),
|
|
337
|
+
interposer: locate(env, "interposer", RT_INTERPOSE_ENV, RT_INTERPOSE_NAME, exists),
|
|
338
|
+
};
|
|
308
339
|
}
|
|
309
340
|
|
|
310
341
|
/**
|
|
@@ -314,11 +345,7 @@ export function clapQualifyTools(env: Readonly<Record<string, string | undefined
|
|
|
314
345
|
*/
|
|
315
346
|
export function qualifyClap(binaryPath: string, id: string | undefined, options: ClapQualifyOptions): ClapQualifyLine[] {
|
|
316
347
|
const env = options.env ?? process.env;
|
|
317
|
-
const
|
|
318
|
-
const { tool, interposer } = clapQualifyTools(env);
|
|
319
|
-
for (const [what, path, name] of [["prober", tool, CLAP_QUALIFY_TOOL_ENV], ["interposer", interposer, RT_INTERPOSE_ENV]] as const) {
|
|
320
|
-
if (!exists(path)) throw new ClapQualifyError(`no CLAP ${what} at ${path}: build it with make -C native, or set ${name}`);
|
|
321
|
-
}
|
|
348
|
+
const { tool, interposer } = clapQualifyTools(env, options.exists ?? existsSync);
|
|
322
349
|
const args = [
|
|
323
350
|
"--rates",
|
|
324
351
|
options.rates.join(","),
|
package/src/hosting-codes.ts
CHANGED
|
@@ -55,6 +55,10 @@ export const HOSTING_CODE = {
|
|
|
55
55
|
clapFormatNotHosted: 'hosting.clap.format-not-hosted',
|
|
56
56
|
clapExtensionsNotCovered: 'hosting.clap.extensions-not-covered',
|
|
57
57
|
outputNonFinite: 'hosting.output.non-finite',
|
|
58
|
+
// The pin (spec §11; one-contract §10.3): a host's refusal at add, by the daemon's code.
|
|
59
|
+
integrityUnpinned: 'hosting.integrity.unpinned',
|
|
60
|
+
integrityBinaryMismatch: 'hosting.integrity.binary-mismatch',
|
|
61
|
+
integrityLayoutMismatch: 'hosting.integrity.layout-mismatch',
|
|
58
62
|
overrideIsolated: 'hosting.override.curator-isolated',
|
|
59
63
|
hostProvenanceDiffers: 'hosting.provenance.host-differs',
|
|
60
64
|
sweepControlDidNotFire: 'hosting.provenance.sweep-control-did-not-fire',
|
|
@@ -73,8 +73,9 @@ export const MEASUREMENT_FORMAT_MAJOR = 1;
|
|
|
73
73
|
|
|
74
74
|
/** The minor this build writes. Additive-only within {@link MEASUREMENT_FORMAT_MAJOR}.
|
|
75
75
|
* `1.1` added the three hosting dimensions — {@link StabilityMeasurement},
|
|
76
|
-
* {@link RtSafetyMeasurement}, {@link FeaturesMeasurement} — which a 1.0 reader skips.
|
|
77
|
-
|
|
76
|
+
* {@link RtSafetyMeasurement}, {@link FeaturesMeasurement} — which a 1.0 reader skips.
|
|
77
|
+
* `1.2` added the verdicts per host profile; `1.3` the {@link IntegrityMeasurement} block. */
|
|
78
|
+
export const MEASUREMENT_FORMAT_MINOR = 3;
|
|
78
79
|
|
|
79
80
|
/** The version string this build writes, e.g. `"1.0"`. */
|
|
80
81
|
export const MEASUREMENT_FORMAT_VERSION = `${MEASUREMENT_FORMAT_MAJOR}.${MEASUREMENT_FORMAT_MINOR}`;
|
|
@@ -398,6 +399,34 @@ export interface FeaturesMeasurement {
|
|
|
398
399
|
readonly unmeasuredDetail?: string;
|
|
399
400
|
}
|
|
400
401
|
|
|
402
|
+
/** One file of a pin: its path relative to the bundle root (the `.clap`'s directory) and its SHA-256. */
|
|
403
|
+
export interface PinnedFile {
|
|
404
|
+
readonly path: string;
|
|
405
|
+
readonly sha256: string;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/** The parameter-layout fingerprint, with the scheme it was serialised in (`omx-layout/1`). */
|
|
409
|
+
export interface LayoutPin {
|
|
410
|
+
readonly scheme: string;
|
|
411
|
+
readonly sha256: string;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* v1.3 (§3c; plugin-qualify spec §11): what the prober that LOADED the plugin recorded so a vetted
|
|
416
|
+
* plugin cannot be swapped — the SHA-256 of every file the host loads for it and the fingerprint of
|
|
417
|
+
* its parameter layout, as the C prober computed them through plugin-hostd's `pin.h`. RAW hex, never
|
|
418
|
+
* computed here. A block with no `files` and `layout` carries an `unmeasuredReason` and is no pin.
|
|
419
|
+
*/
|
|
420
|
+
export interface IntegrityMeasurement {
|
|
421
|
+
/** The entry's version the pin was taken at. */
|
|
422
|
+
readonly version?: string;
|
|
423
|
+
/** Sorted by path. */
|
|
424
|
+
readonly files?: readonly PinnedFile[];
|
|
425
|
+
readonly layout?: LayoutPin;
|
|
426
|
+
readonly unmeasuredReason?: string;
|
|
427
|
+
readonly unmeasuredDetail?: string;
|
|
428
|
+
}
|
|
429
|
+
|
|
401
430
|
/** One plugin as one run saw it. */
|
|
402
431
|
export interface MeasuredPlugin {
|
|
403
432
|
readonly uri: string;
|
|
@@ -418,6 +447,8 @@ export interface MeasuredPlugin {
|
|
|
418
447
|
readonly stability?: StabilityMeasurement;
|
|
419
448
|
readonly rtSafety?: RtSafetyMeasurement;
|
|
420
449
|
readonly features?: FeaturesMeasurement;
|
|
450
|
+
/** v1.3: the pin, when the run loaded the plugin (§3c). */
|
|
451
|
+
readonly integrity?: IntegrityMeasurement;
|
|
421
452
|
}
|
|
422
453
|
|
|
423
454
|
/** What a host spends on one plugin instance: the P95 core-fraction ceiling, at its rate and quantum. */
|
|
@@ -918,6 +949,68 @@ function readFeatures(value: unknown): FeaturesMeasurement | undefined {
|
|
|
918
949
|
};
|
|
919
950
|
}
|
|
920
951
|
|
|
952
|
+
const SHA256_HEX = /^[0-9a-f]{64}$/;
|
|
953
|
+
|
|
954
|
+
/** A pinned path: relative, inside the bundle, and none of `pin_set`'s separators or whitespace. */
|
|
955
|
+
function pinnedPath(value: unknown): string | undefined {
|
|
956
|
+
const path = nonEmptyString(value);
|
|
957
|
+
if (path === undefined || path.startsWith("/") || /[,=\s]/.test(path)) return undefined;
|
|
958
|
+
return path.split("/").every((part) => part !== "" && part !== "." && part !== "..") ? path : undefined;
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
function readPinnedFile(value: unknown): PinnedFile | undefined {
|
|
962
|
+
if (!isRecord(value)) return undefined;
|
|
963
|
+
const path = pinnedPath(value.path);
|
|
964
|
+
const sha256 = nonEmptyString(value.sha256);
|
|
965
|
+
return path === undefined || sha256 === undefined || !SHA256_HEX.test(sha256) ? undefined : { path, sha256 };
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
/**
|
|
969
|
+
* The `integrity` block, or `undefined` when it is not one. A pin is whole or absent: a file entry
|
|
970
|
+
* that does not read, a path named twice, an empty list or a malformed layout drops the pin and
|
|
971
|
+
* keeps only a reason, never a partial pin.
|
|
972
|
+
*/
|
|
973
|
+
export function readIntegrity(value: unknown): IntegrityMeasurement | undefined {
|
|
974
|
+
if (!isRecord(value)) return undefined;
|
|
975
|
+
const version = nonEmptyString(value.version);
|
|
976
|
+
const rawFiles = Array.isArray(value.files) ? value.files : undefined;
|
|
977
|
+
const files = rawFiles?.map(readPinnedFile);
|
|
978
|
+
const layout = isRecord(value.layout)
|
|
979
|
+
? { scheme: nonEmptyString(value.layout.scheme), sha256: nonEmptyString(value.layout.sha256) }
|
|
980
|
+
: undefined;
|
|
981
|
+
const whole =
|
|
982
|
+
files !== undefined &&
|
|
983
|
+
files.length > 0 &&
|
|
984
|
+
files.every((f) => f !== undefined) &&
|
|
985
|
+
new Set(files.map((f) => f!.path)).size === files.length &&
|
|
986
|
+
layout?.scheme !== undefined &&
|
|
987
|
+
layout.sha256 !== undefined &&
|
|
988
|
+
SHA256_HEX.test(layout.sha256);
|
|
989
|
+
if (whole) {
|
|
990
|
+
return {
|
|
991
|
+
...optional("version", version),
|
|
992
|
+
files: (files as PinnedFile[]).slice().sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0)),
|
|
993
|
+
layout: { scheme: layout!.scheme!, sha256: layout!.sha256! },
|
|
994
|
+
};
|
|
995
|
+
}
|
|
996
|
+
const reason = reasonOf(value);
|
|
997
|
+
if (rawFiles === undefined && value.layout === undefined && reason.unmeasuredReason !== undefined) {
|
|
998
|
+
return { ...optional("version", version), ...reason };
|
|
999
|
+
}
|
|
1000
|
+
return { ...optional("version", version), unmeasuredReason: "probe-error", unmeasuredDetail: "the integrity block is not a whole pin" };
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
/** Whether two pins name the same files with the same digests and the same layout. */
|
|
1004
|
+
export function sameIntegrity(a: IntegrityMeasurement | undefined, b: IntegrityMeasurement | undefined): boolean {
|
|
1005
|
+
if (a?.files === undefined || b?.files === undefined || a.layout === undefined || b.layout === undefined) return false;
|
|
1006
|
+
return (
|
|
1007
|
+
a.layout.scheme === b.layout.scheme &&
|
|
1008
|
+
a.layout.sha256 === b.layout.sha256 &&
|
|
1009
|
+
a.files.length === b.files.length &&
|
|
1010
|
+
a.files.every((f, i) => f.path === b.files![i]!.path && f.sha256 === b.files![i]!.sha256)
|
|
1011
|
+
);
|
|
1012
|
+
}
|
|
1013
|
+
|
|
921
1014
|
function readPlugin(value: unknown): MeasuredPlugin | undefined {
|
|
922
1015
|
if (!isRecord(value)) return undefined;
|
|
923
1016
|
const uri = nonEmptyString(value.uri);
|
|
@@ -935,6 +1028,7 @@ function readPlugin(value: unknown): MeasuredPlugin | undefined {
|
|
|
935
1028
|
...optional("stability", readStability(value.stability)),
|
|
936
1029
|
...optional("rtSafety", readRtSafety(value.rtSafety)),
|
|
937
1030
|
...optional("features", readFeatures(value.features)),
|
|
1031
|
+
...optional("integrity", readIntegrity(value.integrity)),
|
|
938
1032
|
};
|
|
939
1033
|
}
|
|
940
1034
|
|
package/src/measurement/merge.ts
CHANGED
|
@@ -38,11 +38,19 @@
|
|
|
38
38
|
*
|
|
39
39
|
* An UNKNOWN reason code from a third-party document resolves to `probe-failed`: a word we
|
|
40
40
|
* cannot interpret must never be allowed to delete a real measurement.
|
|
41
|
+
*
|
|
42
|
+
* ## The pin binds the figures to the bytes (plugin-qualify spec §11.5)
|
|
43
|
+
*
|
|
44
|
+
* The `integrity` block resolves by the same precedence. Where the effective block is a pin, a
|
|
45
|
+
* dimension resolved from a document whose `integrity` for that plugin differs or is absent does
|
|
46
|
+
* not apply: a figure measured on another binary is not a figure about this one, so the dimension
|
|
47
|
+
* is dropped and reads unknown. With no effective pin, nothing is bound.
|
|
41
48
|
*/
|
|
42
49
|
|
|
43
50
|
import type {
|
|
44
51
|
CostMeasurement,
|
|
45
52
|
FeaturesMeasurement,
|
|
53
|
+
IntegrityMeasurement,
|
|
46
54
|
LatencyMeasurement,
|
|
47
55
|
MeasurementDocument,
|
|
48
56
|
MeasuredPlugin,
|
|
@@ -50,6 +58,7 @@ import type {
|
|
|
50
58
|
RtSafetyMeasurement,
|
|
51
59
|
StabilityMeasurement,
|
|
52
60
|
} from "./format.js";
|
|
61
|
+
import { sameIntegrity } from "./format.js";
|
|
53
62
|
import { type MeasurementDimension, MEASUREMENT_DIMENSIONS, unmeasuredKind } from "./vocabulary.js";
|
|
54
63
|
|
|
55
64
|
/** Where a figure came from. Two words, because the operator only ever has two questions. */
|
|
@@ -81,6 +90,8 @@ export interface MergedPluginMeasurement {
|
|
|
81
90
|
readonly stability?: ResolvedFigure<StabilityMeasurement>;
|
|
82
91
|
readonly rtSafety?: ResolvedFigure<RtSafetyMeasurement>;
|
|
83
92
|
readonly features?: ResolvedFigure<FeaturesMeasurement>;
|
|
93
|
+
/** The effective pin (§3c), resolved like a dimension; it binds the dimensions above to its bytes. */
|
|
94
|
+
readonly integrity?: ResolvedFigure<IntegrityMeasurement>;
|
|
84
95
|
/**
|
|
85
96
|
* Dimensions where the LOCAL run tried and failed (crashed, timed out, refused), keyed
|
|
86
97
|
* by dimension with the reason code. The shipped figure is still in use for these —
|
|
@@ -110,7 +121,8 @@ type AnyMeasurement =
|
|
|
110
121
|
| CostMeasurement
|
|
111
122
|
| StabilityMeasurement
|
|
112
123
|
| RtSafetyMeasurement
|
|
113
|
-
| FeaturesMeasurement
|
|
124
|
+
| FeaturesMeasurement
|
|
125
|
+
| IntegrityMeasurement;
|
|
114
126
|
|
|
115
127
|
/** Each dimension's block type, so a resolved figure keeps the type of the block it holds. */
|
|
116
128
|
interface MeasurementOf {
|
|
@@ -264,6 +276,28 @@ function resolveDimension<T extends AnyMeasurement>(
|
|
|
264
276
|
return shippedFigure === undefined ? {} : { resolved: shippedFigure };
|
|
265
277
|
}
|
|
266
278
|
|
|
279
|
+
/** A pin, as opposed to a block that only says why there is none. */
|
|
280
|
+
function isPin(integrity: IntegrityMeasurement | undefined): boolean {
|
|
281
|
+
return integrity?.files !== undefined && integrity.layout !== undefined;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* The effective `integrity` of one plugin, by the precedence every dimension takes: a local pin
|
|
286
|
+
* wins; a local `nothing-to-measure` (an unpinnable plugin) overrides with no pin; a local probe
|
|
287
|
+
* failure or absence leaves the shipped pin.
|
|
288
|
+
*/
|
|
289
|
+
function resolveIntegrity(
|
|
290
|
+
local: { readonly run: MeasurementRun; readonly integrity: IntegrityMeasurement | undefined } | undefined,
|
|
291
|
+
shipped: { readonly run: MeasurementRun; readonly integrity: IntegrityMeasurement | undefined } | undefined,
|
|
292
|
+
): ResolvedFigure<IntegrityMeasurement> | undefined {
|
|
293
|
+
const shippedFigure = shipped !== undefined && isPin(shipped.integrity) ? figure("shipped", shipped.run, shipped.integrity!) : undefined;
|
|
294
|
+
if (local?.integrity === undefined) return shippedFigure;
|
|
295
|
+
if (isPin(local.integrity) || unmeasuredKind(local.integrity.unmeasuredReason) === "nothing-to-measure") {
|
|
296
|
+
return figure("local", local.run, local.integrity);
|
|
297
|
+
}
|
|
298
|
+
return shippedFigure;
|
|
299
|
+
}
|
|
300
|
+
|
|
267
301
|
/**
|
|
268
302
|
* The merged view an installation reads: shipped defaults with local measurements laid over
|
|
269
303
|
* them, every figure still knowing where it came from.
|
|
@@ -311,15 +345,27 @@ export class MergedMeasurements {
|
|
|
311
345
|
const failure = outcomes[dimension].localFailure;
|
|
312
346
|
if (failure !== undefined) failures[dimension] = failure;
|
|
313
347
|
}
|
|
348
|
+
const integrity = resolveIntegrity(
|
|
349
|
+
local !== undefined && localPlugin !== undefined ? { run: local.run, integrity: localPlugin.integrity } : undefined,
|
|
350
|
+
shipped !== undefined && shippedPlugin !== undefined ? { run: shipped.run, integrity: shippedPlugin.integrity } : undefined,
|
|
351
|
+
);
|
|
352
|
+
// §11.5: with an effective pin, a figure from a document whose pin for this plugin differs or
|
|
353
|
+
// is absent is about other bytes, and does not apply.
|
|
354
|
+
const pinOf = (source: FigureSource) => (source === "local" ? localPlugin : shippedPlugin)?.integrity;
|
|
355
|
+
const bound = <T>(resolved: ResolvedFigure<T> | undefined): ResolvedFigure<T> | undefined =>
|
|
356
|
+
resolved === undefined || integrity === undefined || !isPin(integrity.value) || sameIntegrity(pinOf(resolved.source), integrity.value)
|
|
357
|
+
? resolved
|
|
358
|
+
: undefined;
|
|
314
359
|
|
|
315
360
|
merged.set(uri, {
|
|
316
361
|
uri,
|
|
317
362
|
plugin: identity,
|
|
318
|
-
...optionalFigure("latency", latency.resolved),
|
|
319
|
-
...optionalFigure("cost", cost.resolved),
|
|
320
|
-
...optionalFigure("stability", stability.resolved),
|
|
321
|
-
...optionalFigure("rtSafety", rtSafety.resolved),
|
|
322
|
-
...optionalFigure("features", features.resolved),
|
|
363
|
+
...optionalFigure("latency", bound(latency.resolved)),
|
|
364
|
+
...optionalFigure("cost", bound(cost.resolved)),
|
|
365
|
+
...optionalFigure("stability", bound(stability.resolved)),
|
|
366
|
+
...optionalFigure("rtSafety", bound(rtSafety.resolved)),
|
|
367
|
+
...optionalFigure("features", bound(features.resolved)),
|
|
368
|
+
...(integrity === undefined ? {} : { integrity }),
|
|
323
369
|
...(Object.keys(failures).length > 0 ? { localProbeFailed: failures } : {}),
|
|
324
370
|
...(shippedPlugin === undefined ? { localOnly: true } : {}),
|
|
325
371
|
});
|