@openmixer/plugin-qualify 0.14.1 → 0.16.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 +127 -14
- package/bin/plugin-qualify-sync.mjs +57 -0
- package/bin/plugin-qualify.mjs +66 -15
- package/dist/adjust-cli.d.ts +83 -0
- package/dist/adjust-cli.js +214 -0
- package/dist/adjust-cli.js.map +1 -0
- package/dist/clap-loader.d.ts +3 -3
- package/dist/clap-loader.js +11 -11
- package/dist/clap-loader.js.map +1 -1
- package/dist/history-adjust.d.ts +77 -0
- package/dist/history-adjust.js +99 -0
- package/dist/history-adjust.js.map +1 -0
- package/dist/history-file.d.ts +73 -0
- package/dist/history-file.js +133 -0
- package/dist/history-file.js.map +1 -0
- package/dist/host-admission.d.ts +53 -0
- package/dist/host-admission.js +96 -0
- package/dist/host-admission.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/lv2-loader.d.ts +16 -2
- package/dist/lv2-loader.js +168 -17
- package/dist/lv2-loader.js.map +1 -1
- package/dist/measurement/cli.d.ts +6 -4
- package/dist/measurement/cli.js +12 -19
- package/dist/measurement/cli.js.map +1 -1
- package/dist/pins-file.d.ts +8 -2
- package/dist/pins-file.js +17 -3
- package/dist/pins-file.js.map +1 -1
- package/dist/probe-judge.d.ts +11 -1
- package/dist/probe-judge.js +20 -1
- package/dist/probe-judge.js.map +1 -1
- package/dist/probe-output-fixtures.d.ts +10 -0
- package/dist/probe-output-fixtures.js +86 -0
- package/dist/probe-output-fixtures.js.map +1 -1
- package/dist/probe-output.d.ts +2 -0
- package/dist/probe-output.js +1 -0
- package/dist/probe-output.js.map +1 -1
- package/dist/probe-runner.d.ts +9 -3
- package/dist/probe-runner.js +36 -12
- package/dist/probe-runner.js.map +1 -1
- package/dist/qualification-record.d.ts +109 -3
- package/dist/qualification-record.js +79 -13
- package/dist/qualification-record.js.map +1 -1
- package/dist/qualify-cli.d.ts +0 -1
- package/dist/qualify-cli.js +2 -4
- package/dist/qualify-cli.js.map +1 -1
- package/dist/qualify-declarations.d.ts +8 -1
- package/dist/qualify-declarations.js +8 -1
- package/dist/qualify-declarations.js.map +1 -1
- package/dist/qualify-options.js +1 -2
- package/dist/qualify-options.js.map +1 -1
- package/dist/qualify-sync.d.ts +215 -0
- package/dist/qualify-sync.js +794 -0
- package/dist/qualify-sync.js.map +1 -0
- package/dist/whole-file.d.ts +3 -0
- package/dist/whole-file.js +36 -0
- package/dist/whole-file.js.map +1 -0
- package/fixtures/admission/2026-10-26.json +19 -0
- package/fixtures/clap-scan/fake.json +24 -24
- package/package.json +5 -4
- package/src/adjust-cli.ts +262 -0
- package/src/clap-loader.ts +9 -13
- package/src/history-adjust.ts +156 -0
- package/src/history-file.ts +177 -0
- package/src/host-admission.ts +136 -0
- package/src/index.ts +6 -0
- package/src/lv2-loader.ts +150 -15
- package/src/measurement/cli.ts +11 -17
- package/src/pins-file.ts +17 -3
- package/src/probe-judge.ts +27 -1
- package/src/probe-output-fixtures.ts +86 -0
- package/src/probe-output.ts +3 -0
- package/src/probe-runner.ts +45 -14
- package/src/qualification-record.ts +174 -15
- package/src/qualify-cli.ts +2 -5
- package/src/qualify-declarations.ts +9 -1
- package/src/qualify-options.ts +1 -2
- package/src/qualify-sync.ts +889 -0
- package/src/whole-file.ts +35 -0
- package/tools/_declarations.py +3 -1
- package/tools/ai-trace-commit-check.sh +26 -14
- package/tools/ai-trace-patterns.json +10 -2
- package/tools/gen-hosting-codes.mjs +1 -1
- package/tools/gen-python-declarations.mjs +2 -0
- package/tools/install-roundtrip.sh +173 -0
- package/tools/mod-host-admit.mjs +74 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
// Copyright (C) 2026 Pau Aliagas <linuxnow@gmail.com>
|
|
3
|
+
/**
|
|
4
|
+
* `plugin-qualify adjust --history <file>`: read the qualification records `judge` (or a run with `--out`) wrote, read
|
|
5
|
+
* plugin-hostd's running history, and write a second verdict beside each measured one, for the host class of the history,
|
|
6
|
+
* with a reason code (`history-adjust.ts` holds the rules). The measurement and the measured verdicts of a record are
|
|
7
|
+
* never touched: the second verdict lives in the record's `history` block, one entry per host class. `--pins` writes the
|
|
8
|
+
* adjusted verdict instead of the measured one. `bin/plugin-qualify.mjs` only reads argv and prints.
|
|
9
|
+
*/
|
|
10
|
+
import { readFileSync, readdirSync } from "node:fs";
|
|
11
|
+
import { join } from "node:path";
|
|
12
|
+
import { findHistory, historyClasses, readHistory } from "./history-file.js";
|
|
13
|
+
import { adjustVerdict, summariseHistory } from "./history-adjust.js";
|
|
14
|
+
import { OPENMIXER_CONSOLE_PROFILE } from "./host-profiles.js";
|
|
15
|
+
import { clapPinUri, pinVerdictOf } from "./pins-file.js";
|
|
16
|
+
import { QUALIFICATION_RECORD_SCHEMA } from "./qualification-record.js";
|
|
17
|
+
import { EXIT_CODE, OUTPUT_FORMATS } from "./qualify-options.js";
|
|
18
|
+
const VALUE_FLAGS = ["--history", "--host-profile", "--qualification-dir", "--host-class", "--pins", "--now", "--format"];
|
|
19
|
+
export function parseAdjustArgs(argv) {
|
|
20
|
+
const specs = [];
|
|
21
|
+
const got = new Map();
|
|
22
|
+
let help = false;
|
|
23
|
+
for (let i = 0; i < argv.length; i++) {
|
|
24
|
+
const a = argv[i];
|
|
25
|
+
if (!a.startsWith("--"))
|
|
26
|
+
return { ok: false, error: `${a}: adjust takes options only; the records are read from --qualification-dir` };
|
|
27
|
+
if (a === "--help") {
|
|
28
|
+
help = true;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (!VALUE_FLAGS.includes(a))
|
|
32
|
+
return { ok: false, error: `unknown option ${a}` };
|
|
33
|
+
const v = argv[++i];
|
|
34
|
+
if (v === undefined || v.startsWith("--"))
|
|
35
|
+
return { ok: false, error: `${a} needs a value` };
|
|
36
|
+
if (a === "--host-profile")
|
|
37
|
+
specs.push(...v.split(",").map((t) => t.trim()).filter((t) => t !== ""));
|
|
38
|
+
else
|
|
39
|
+
got.set(a, v);
|
|
40
|
+
}
|
|
41
|
+
const format = got.get("--format") ?? "text";
|
|
42
|
+
if (!OUTPUT_FORMATS.includes(format))
|
|
43
|
+
return { ok: false, error: `--format must be one of ${OUTPUT_FORMATS.join(", ")}` };
|
|
44
|
+
const nowText = got.get("--now");
|
|
45
|
+
const now = nowText === undefined ? undefined : Number(nowText);
|
|
46
|
+
if (now !== undefined && !(Number.isInteger(now) && now >= 0))
|
|
47
|
+
return { ok: false, error: "--now must be UTC seconds, a whole number" };
|
|
48
|
+
const history = got.get("--history");
|
|
49
|
+
if (!help && history === undefined)
|
|
50
|
+
return { ok: false, error: "name the history file with --history" };
|
|
51
|
+
const dir = got.get("--qualification-dir");
|
|
52
|
+
const hostClass = got.get("--host-class");
|
|
53
|
+
const pins = got.get("--pins");
|
|
54
|
+
return {
|
|
55
|
+
ok: true,
|
|
56
|
+
args: {
|
|
57
|
+
history: history ?? "",
|
|
58
|
+
hostProfiles: [...new Set(specs.length > 0 ? specs : [OPENMIXER_CONSOLE_PROFILE.id])],
|
|
59
|
+
...(dir === undefined ? {} : { qualificationDir: dir }),
|
|
60
|
+
...(hostClass === undefined ? {} : { hostClass }),
|
|
61
|
+
...(pins === undefined ? {} : { pins }),
|
|
62
|
+
...(now === undefined ? {} : { now }),
|
|
63
|
+
format: format,
|
|
64
|
+
help,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export function adjustHelpText() {
|
|
69
|
+
return [
|
|
70
|
+
"plugin-qualify adjust — write a second verdict beside each measured one from plugin-hostd's running history",
|
|
71
|
+
"",
|
|
72
|
+
" plugin-qualify adjust --history <file> [options]",
|
|
73
|
+
"",
|
|
74
|
+
" --history <file> plugin-hostd's history file ($XDG_STATE_HOME/plugin-hostd/history); required",
|
|
75
|
+
" --qualification-dir <dir> the records `judge` wrote; each gets a `history` block (default: the one judge writes to)",
|
|
76
|
+
" --host-profile <file|id> adjust the verdict of this host; repeat or comma-separate (default: openmixer-console)",
|
|
77
|
+
" --host-class <class> read only this host class of the history (arch/cores/clock); default: every class the file holds",
|
|
78
|
+
" --pins <file> write the pins with the ADJUSTED verdict of the first host profile; needs exactly one host class",
|
|
79
|
+
" --now <seconds> the UTC second the history is read at (default: the clock)",
|
|
80
|
+
" --format <json|text> json = the records; text = one row per plugin, host and host class (default: text)",
|
|
81
|
+
"",
|
|
82
|
+
"The measured verdicts and the measurement are never changed. History can demote in-process to isolated (a crash, xruns when",
|
|
83
|
+
"grouped), isolated to refused (three solo crashes), and promote isolated to in-process only when every reason against the",
|
|
84
|
+
"plugin is a cost reason and it ran steady alone. It never lifts a real-time-safety, feature or unknown verdict, or a refused one.",
|
|
85
|
+
"",
|
|
86
|
+
`exit ${EXIT_CODE.allQualified} done / ${EXIT_CODE.couldNotMeasure} the history, a record or an option could not be read`,
|
|
87
|
+
"",
|
|
88
|
+
].join("\n");
|
|
89
|
+
}
|
|
90
|
+
/** Every `*.qualification.json` of the directory with this reader's schema; a file that does not read is a failure, and the others go on. */
|
|
91
|
+
export function readRecords(dir, read = (p) => readFileSync(p, "utf8")) {
|
|
92
|
+
const records = [];
|
|
93
|
+
const failures = [];
|
|
94
|
+
let names;
|
|
95
|
+
try {
|
|
96
|
+
names = readdirSync(dir).filter((n) => n.endsWith(".qualification.json")).sort();
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
return { records, failures: [{ file: dir, problem: `cannot read: ${e instanceof Error ? e.message : String(e)}` }] };
|
|
100
|
+
}
|
|
101
|
+
for (const name of names) {
|
|
102
|
+
const path = join(dir, name);
|
|
103
|
+
try {
|
|
104
|
+
const doc = JSON.parse(read(path));
|
|
105
|
+
if (doc.schema !== QUALIFICATION_RECORD_SCHEMA)
|
|
106
|
+
failures.push({ file: path, problem: `schema ${String(doc.schema)}, not ${QUALIFICATION_RECORD_SCHEMA}` });
|
|
107
|
+
else
|
|
108
|
+
records.push({ path, record: doc });
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
failures.push({ file: path, problem: `cannot read: ${e instanceof Error ? e.message : String(e)}` });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return { records, failures };
|
|
115
|
+
}
|
|
116
|
+
/** plugin-hostd's key of a record's plugin: its uri and the digest of the first file of its pin (files sorted by path, as the pin lists them). `undefined` when the record holds no whole pin. */
|
|
117
|
+
export function historyKeyOf(record) {
|
|
118
|
+
const files = [...record.binary.files].sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
|
|
119
|
+
if (files.length === 0 || record.binary.layout === undefined)
|
|
120
|
+
return undefined;
|
|
121
|
+
const uri = record.plugin.format === "clap" ? clapPinUri(record.binary.path, record.plugin.id) : record.plugin.id;
|
|
122
|
+
return { uri, digest: files[0].sha256 };
|
|
123
|
+
}
|
|
124
|
+
/** The pin verdict of a record's verdict row: `unknown` and an unmeasured row have none. */
|
|
125
|
+
function measuredPinVerdict(v) {
|
|
126
|
+
return v.measured ? pinVerdictOf(v.rating) : undefined;
|
|
127
|
+
}
|
|
128
|
+
/** The `history` block of one record for one host class. */
|
|
129
|
+
export function historyBlock(record, history, hostClass, profiles, options) {
|
|
130
|
+
const key = historyKeyOf(record);
|
|
131
|
+
const found = key === undefined ? undefined : findHistory(history, key.uri, key.digest, hostClass);
|
|
132
|
+
const verdicts = profiles.flatMap((profile) => {
|
|
133
|
+
const row = record.verdicts.find((v) => v.host === profile.id);
|
|
134
|
+
if (row === undefined)
|
|
135
|
+
return [];
|
|
136
|
+
const a = adjustVerdict({
|
|
137
|
+
measured: measuredPinVerdict(row),
|
|
138
|
+
reasons: row.reasons.map((r) => ({ code: r.code, rating: r.rating })),
|
|
139
|
+
record: found,
|
|
140
|
+
profile,
|
|
141
|
+
now: options.now,
|
|
142
|
+
});
|
|
143
|
+
return [{ host: profile.id, ...a }];
|
|
144
|
+
});
|
|
145
|
+
return {
|
|
146
|
+
hostClass,
|
|
147
|
+
file: options.file,
|
|
148
|
+
at: new Date(options.now * 1000).toISOString(),
|
|
149
|
+
...(key === undefined ? {} : { key }),
|
|
150
|
+
found: found !== undefined,
|
|
151
|
+
...(found === undefined
|
|
152
|
+
? {}
|
|
153
|
+
: {
|
|
154
|
+
windows: { solo: found.windowsSolo, grouped: found.windowsGrouped },
|
|
155
|
+
summary: summariseHistory(found, options.now),
|
|
156
|
+
...(Object.keys(found.unknownKeys).length === 0 ? {} : { unknownKeys: found.unknownKeys }),
|
|
157
|
+
}),
|
|
158
|
+
verdicts,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Each record with its `history` block replaced by the blocks of the host classes read (an earlier block of a class not read
|
|
163
|
+
* is kept, so two histories of two classes can be applied one after the other). The measured fields are copied as they are.
|
|
164
|
+
*/
|
|
165
|
+
export function adjustRecords(records, historyText, options) {
|
|
166
|
+
const read = readHistory(historyText);
|
|
167
|
+
if (!read.ok)
|
|
168
|
+
return { ok: false, problem: `${options.file}: ${read.problem}` };
|
|
169
|
+
const hostClasses = options.hostClass === undefined ? historyClasses(read.records) : [options.hostClass];
|
|
170
|
+
if (hostClasses.length === 0)
|
|
171
|
+
return { ok: false, problem: `${options.file} holds no record, so there is no host class to adjust for` };
|
|
172
|
+
const adjusted = records.map(({ path, record }) => {
|
|
173
|
+
const fresh = hostClasses.map((c) => historyBlock(record, read.records, c, options.profiles, { file: options.file, now: options.now }));
|
|
174
|
+
const kept = (record.history ?? []).filter((b) => !hostClasses.includes(b.hostClass));
|
|
175
|
+
return { path, record: { ...record, history: [...kept, ...fresh].sort((a, b) => (a.hostClass < b.hostClass ? -1 : a.hostClass > b.hostClass ? 1 : 0)) } };
|
|
176
|
+
});
|
|
177
|
+
return { ok: true, records: adjusted, hostClasses, ignored: read.ignored };
|
|
178
|
+
}
|
|
179
|
+
/** The adjusted verdict of a record's host for a host class: the pin verdict, `null` when it has none, `undefined` when the record holds no block for the pair. */
|
|
180
|
+
export function adjustedVerdictOf(record, hostClass, host) {
|
|
181
|
+
return record.history?.find((b) => b.hostClass === hostClass)?.verdicts.find((v) => v.host === host)?.adjusted;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* The pin entries of adjusted records for one host and one host class: the integrity is the record's, the verdict is the
|
|
185
|
+
* ADJUSTED one. A record with no verdict row for the host is pinned without a verdict word, as a run without one is.
|
|
186
|
+
*/
|
|
187
|
+
export function adjustedPinEntries(records, hostClass, host) {
|
|
188
|
+
return records.flatMap(({ record }) => {
|
|
189
|
+
const key = historyKeyOf(record);
|
|
190
|
+
if (key === undefined)
|
|
191
|
+
return [];
|
|
192
|
+
const adjusted = adjustedVerdictOf(record, hostClass, host);
|
|
193
|
+
return [
|
|
194
|
+
{
|
|
195
|
+
uri: key.uri,
|
|
196
|
+
integrity: {
|
|
197
|
+
...(record.testedVersion === undefined ? {} : { version: record.testedVersion }),
|
|
198
|
+
files: [...record.binary.files].sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0)),
|
|
199
|
+
layout: record.binary.layout,
|
|
200
|
+
},
|
|
201
|
+
...(adjusted === null || adjusted === undefined ? {} : { verdict: adjusted }),
|
|
202
|
+
},
|
|
203
|
+
];
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
/** One row per plugin, host and host class: the measured verdict, the adjusted one, the reason. */
|
|
207
|
+
export function adjustTable(records) {
|
|
208
|
+
const rows = records.flatMap(({ record }) => (record.history ?? []).flatMap((b) => b.verdicts.map((v) => [record.plugin.id, v.host, b.hostClass, v.measured ?? "-", v.adjusted ?? "-", v.reason])));
|
|
209
|
+
const head = ["plugin", "host", "host class", "measured", "adjusted", "reason"];
|
|
210
|
+
const width = head.map((h, i) => Math.max(h.length, ...rows.map((r) => r[i].length)));
|
|
211
|
+
const line = (r) => r.map((c, i) => c.padEnd(width[i])).join(" ").trimEnd();
|
|
212
|
+
return [line(head), ...rows.map(line), ""].join("\n");
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=adjust-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adjust-cli.js","sourceRoot":"","sources":["../src/adjust-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/clap-loader.d.ts
CHANGED
|
@@ -163,9 +163,9 @@ export declare function discoverClapTargets(options?: ClapDiscoverOptions): Plug
|
|
|
163
163
|
export interface DiscoverAllOptions extends ClapDiscoverOptions {
|
|
164
164
|
}
|
|
165
165
|
/**
|
|
166
|
-
* The targets of `--all
|
|
167
|
-
*
|
|
168
|
-
*
|
|
166
|
+
* The targets of `--all`: every LV2 plugin of the bundles on the LV2 search path ({@link lv2BundlesOnPath}, each
|
|
167
|
+
* through {@link lv2Loader} as a named bundle is), then every CLAP plugin on the CLAP path. An LV2 URI found in two
|
|
168
|
+
* bundles keeps the first, as the search path does. A directory that cannot be read is a {@link ClapScanError} naming it.
|
|
169
169
|
*/
|
|
170
170
|
export declare function discoverAllTargets(options?: DiscoverAllOptions): PluginTarget[];
|
|
171
171
|
export {};
|
package/dist/clap-loader.js
CHANGED
|
@@ -16,7 +16,7 @@ import { spawnSync } from "node:child_process";
|
|
|
16
16
|
import { existsSync, readdirSync, statSync } from "node:fs";
|
|
17
17
|
import { homedir } from "node:os";
|
|
18
18
|
import { basename, dirname, join, resolve } from "node:path";
|
|
19
|
-
import { lv2BundlesOnPath } from "./lv2-loader.js";
|
|
19
|
+
import { lv2BundlesOnPath, lv2Loader } from "./lv2-loader.js";
|
|
20
20
|
import { CLAP_PATH_ENV, CLAP_SCAN_TIMEOUT_S, CLAP_SCAN_TOOL_DEFAULT, CLAP_SCAN_TOOL_ENV, CLAP_SYSTEM_DIR, CLAP_SYSTEM_DIR_ENV, CLAP_USER_DIR, } from "./qualify-declarations.js";
|
|
21
21
|
/** The scanner's own name in its document — anything else is not its output. */
|
|
22
22
|
const SCANNER_NAME = "omx-clap-scan";
|
|
@@ -311,23 +311,23 @@ export function discoverClapTargets(options = {}) {
|
|
|
311
311
|
return [...found.values()];
|
|
312
312
|
}
|
|
313
313
|
/**
|
|
314
|
-
* The targets of `--all
|
|
315
|
-
*
|
|
316
|
-
*
|
|
314
|
+
* The targets of `--all`: every LV2 plugin of the bundles on the LV2 search path ({@link lv2BundlesOnPath}, each
|
|
315
|
+
* through {@link lv2Loader} as a named bundle is), then every CLAP plugin on the CLAP path. An LV2 URI found in two
|
|
316
|
+
* bundles keeps the first, as the search path does. A directory that cannot be read is a {@link ClapScanError} naming it.
|
|
317
317
|
*/
|
|
318
318
|
export function discoverAllTargets(options = {}) {
|
|
319
319
|
const env = options.env ?? process.env;
|
|
320
|
-
|
|
320
|
+
const lv2 = new Map();
|
|
321
321
|
try {
|
|
322
|
-
|
|
322
|
+
for (const bundle of lv2BundlesOnPath(env, options.home ?? homedir())) {
|
|
323
|
+
for (const t of lv2Loader.resolve(bundle) ?? [])
|
|
324
|
+
if (!lv2.has(t.uri))
|
|
325
|
+
lv2.set(t.uri, t);
|
|
326
|
+
}
|
|
323
327
|
}
|
|
324
328
|
catch (e) {
|
|
325
329
|
throw unreadable("the LV2 search path", e);
|
|
326
330
|
}
|
|
327
|
-
|
|
328
|
-
throw new ClapScanError(`--all cannot measure LV2 from this entry point and ${String(bundles.length)} LV2 bundle(s) are on the LV2 path ` +
|
|
329
|
-
`(first: ${bundles[0]}); name the plugins or bundles to qualify instead, or unset LV2_PATH to an empty directory`);
|
|
330
|
-
}
|
|
331
|
-
return discoverClapTargets(options);
|
|
331
|
+
return [...lv2.values(), ...discoverClapTargets(options)];
|
|
332
332
|
}
|
|
333
333
|
//# sourceMappingURL=clap-loader.js.map
|
package/dist/clap-loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clap-loader.js","sourceRoot":"","sources":["../src/clap-loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clap-loader.js","sourceRoot":"","sources":["../src/clap-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the running history may do to a measured verdict (the grouping-planner design note, How plugin-qualify uses it).
|
|
3
|
+
* A pure function of the measured verdict, the reasons behind it, one history record and the clock: it moves a pin
|
|
4
|
+
* verdict one step toward safer, or promotes `isolated` to `in-process` for a steady plugin whose only fault was a cost
|
|
5
|
+
* reason, or leaves the measured verdict alone. It never changes the measurement, and it never lifts a verdict that is a
|
|
6
|
+
* fact about the plugin (real-time safety, a missing feature, a crash in the prober, an `unknown`), nor a `refused`.
|
|
7
|
+
*
|
|
8
|
+
* The thresholds are the note's starting values, declared once in {@link HISTORY_POLICY}; the benchmark tunes them.
|
|
9
|
+
* The summaries (`crashed`, `raises-xruns`) are plugin-hostd's `history_get` rules, read here from the file because
|
|
10
|
+
* plugin-qualify runs without a daemon.
|
|
11
|
+
*/
|
|
12
|
+
import type { HostProfile } from "./host-profiles.js";
|
|
13
|
+
import type { HistoryRecord } from "./history-file.js";
|
|
14
|
+
import { type PinVerdict } from "./pins-file.js";
|
|
15
|
+
export declare const HISTORY_POLICY: {
|
|
16
|
+
/** plugin-hostd's PHD_HISTORY_KEEP_DAYS: a crash older than this is not read. */
|
|
17
|
+
readonly keepDays: 30;
|
|
18
|
+
/** plugin-hostd's PHD_HISTORY_MIN_WINDOWS: grouped windows before an xrun share is read. */
|
|
19
|
+
readonly minWindows: 30;
|
|
20
|
+
/** plugin-hostd's PHD_HISTORY_XRUN_MARGIN_PCT: percentage points the grouped xrun share may exceed the solo one by. */
|
|
21
|
+
readonly xrunMarginPct: 5;
|
|
22
|
+
/** Solo crashes, on this binary and class within `keepDays`, that demote `isolated` to `refused`. */
|
|
23
|
+
readonly crashedAloneCount: 3;
|
|
24
|
+
/** Windows run alone before a promotion is read: 360 windows of 60 s are six hours. */
|
|
25
|
+
readonly steadyWindowsSolo: 360;
|
|
26
|
+
};
|
|
27
|
+
/** The codes of the second verdict. Codes, never prose. */
|
|
28
|
+
export declare const HISTORY_REASON: {
|
|
29
|
+
readonly crashed: "history.crashed";
|
|
30
|
+
readonly xrunsGrouped: "history.xruns-grouped";
|
|
31
|
+
readonly crashedAlone: "history.crashed-alone";
|
|
32
|
+
readonly steady: "history.steady";
|
|
33
|
+
/** History has no line for this plugin binary on this host class: the measured verdict stands. */
|
|
34
|
+
readonly noRecord: "history.no-record";
|
|
35
|
+
/** The record was read and no rule moves this verdict. */
|
|
36
|
+
readonly noChange: "history.no-change";
|
|
37
|
+
/** The record would promote, but the measured verdict is a fact about the plugin and history does not lift it. */
|
|
38
|
+
readonly notLiftable: "history.not-liftable";
|
|
39
|
+
};
|
|
40
|
+
export type HistoryReasonCode = (typeof HISTORY_REASON)[keyof typeof HISTORY_REASON];
|
|
41
|
+
export type HistoryMove = "demote" | "promote" | "none";
|
|
42
|
+
/** What the daemon's `history_get` summary says of a record at `now` (UTC seconds). */
|
|
43
|
+
export interface HistorySummary {
|
|
44
|
+
/** A crash was counted and the latest one is within `keepDays`. */
|
|
45
|
+
readonly crashed: boolean;
|
|
46
|
+
/** The grouped windows' share of xruns exceeds the solo share by the margin, over at least `minWindows` grouped windows. */
|
|
47
|
+
readonly raisesXruns: boolean;
|
|
48
|
+
}
|
|
49
|
+
export declare function summariseHistory(r: HistoryRecord, now: number): HistorySummary;
|
|
50
|
+
/** One reason of the measured verdict, as the record holds it. */
|
|
51
|
+
export interface MeasuredReason {
|
|
52
|
+
readonly code: string;
|
|
53
|
+
/** The rating the reason contributed to the verdict. */
|
|
54
|
+
readonly rating: string;
|
|
55
|
+
}
|
|
56
|
+
export interface AdjustInput {
|
|
57
|
+
/** The measured pin verdict of the host, or `undefined` for an `unknown` rating (no verdict word). */
|
|
58
|
+
readonly measured: PinVerdict | undefined;
|
|
59
|
+
/** The reasons of the measured verdict, all of them. */
|
|
60
|
+
readonly reasons: readonly MeasuredReason[];
|
|
61
|
+
/** The record of this plugin binary on the host class, or `undefined` when the history has none. */
|
|
62
|
+
readonly record: HistoryRecord | undefined;
|
|
63
|
+
/** The host the verdict is for; its cost ceiling is the budget a promotion is read against. */
|
|
64
|
+
readonly profile: HostProfile;
|
|
65
|
+
/** UTC seconds. */
|
|
66
|
+
readonly now: number;
|
|
67
|
+
}
|
|
68
|
+
export interface Adjustment {
|
|
69
|
+
readonly measured: PinVerdict | null;
|
|
70
|
+
readonly adjusted: PinVerdict | null;
|
|
71
|
+
readonly move: HistoryMove;
|
|
72
|
+
readonly reason: HistoryReasonCode;
|
|
73
|
+
/** For `history.not-liftable`: why the measured verdict is not history's to lift: `refused`, `unknown`, or the codes of the reasons that are not cost reasons. */
|
|
74
|
+
readonly blockedBy?: readonly string[];
|
|
75
|
+
}
|
|
76
|
+
/** The second verdict beside the measured one. Demotions are read first and promotions last; a demotion is one step. */
|
|
77
|
+
export declare function adjustVerdict(input: AdjustInput): Adjustment;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { PIN_VERDICTS } from "./pins-file.js";
|
|
2
|
+
export const HISTORY_POLICY = {
|
|
3
|
+
/** plugin-hostd's PHD_HISTORY_KEEP_DAYS: a crash older than this is not read. */
|
|
4
|
+
keepDays: 30,
|
|
5
|
+
/** plugin-hostd's PHD_HISTORY_MIN_WINDOWS: grouped windows before an xrun share is read. */
|
|
6
|
+
minWindows: 30,
|
|
7
|
+
/** plugin-hostd's PHD_HISTORY_XRUN_MARGIN_PCT: percentage points the grouped xrun share may exceed the solo one by. */
|
|
8
|
+
xrunMarginPct: 5,
|
|
9
|
+
/** Solo crashes, on this binary and class within `keepDays`, that demote `isolated` to `refused`. */
|
|
10
|
+
crashedAloneCount: 3,
|
|
11
|
+
/** Windows run alone before a promotion is read: 360 windows of 60 s are six hours. */
|
|
12
|
+
steadyWindowsSolo: 360,
|
|
13
|
+
};
|
|
14
|
+
const SECONDS_PER_DAY = 86_400;
|
|
15
|
+
/** The codes of the second verdict. Codes, never prose. */
|
|
16
|
+
export const HISTORY_REASON = {
|
|
17
|
+
crashed: "history.crashed",
|
|
18
|
+
xrunsGrouped: "history.xruns-grouped",
|
|
19
|
+
crashedAlone: "history.crashed-alone",
|
|
20
|
+
steady: "history.steady",
|
|
21
|
+
/** History has no line for this plugin binary on this host class: the measured verdict stands. */
|
|
22
|
+
noRecord: "history.no-record",
|
|
23
|
+
/** The record was read and no rule moves this verdict. */
|
|
24
|
+
noChange: "history.no-change",
|
|
25
|
+
/** The record would promote, but the measured verdict is a fact about the plugin and history does not lift it. */
|
|
26
|
+
notLiftable: "history.not-liftable",
|
|
27
|
+
};
|
|
28
|
+
export function summariseHistory(r, now) {
|
|
29
|
+
const last = Math.max(r.lastCrash, r.lastCrashGrouped);
|
|
30
|
+
const crashed = r.crashesSolo + r.crashesGrouped > 0 && now - last <= HISTORY_POLICY.keepDays * SECONDS_PER_DAY;
|
|
31
|
+
const wg = r.windowsGrouped;
|
|
32
|
+
const xg = r.xrunWindowsGrouped;
|
|
33
|
+
const ws = r.windowsSolo;
|
|
34
|
+
const xs = r.xrunWindowsSolo;
|
|
35
|
+
const m = HISTORY_POLICY.xrunMarginPct;
|
|
36
|
+
// xg/wg > xs/ws + m/100, cross-multiplied so no division is rounded
|
|
37
|
+
const raisesXruns = wg < HISTORY_POLICY.minWindows ? false : ws === 0 ? 100 * xg > m * wg : 100 * xg * ws > 100 * xs * wg + m * wg * ws;
|
|
38
|
+
return { crashed, raisesXruns };
|
|
39
|
+
}
|
|
40
|
+
const COST_PREFIX = "hosting.cost.";
|
|
41
|
+
/**
|
|
42
|
+
* Why the measured verdict cannot be promoted by history, or an empty list when it can: the verdict must be `isolated`
|
|
43
|
+
* (conditional), and every reason that is not `suitable` must be a cost reason. A reason of any other dimension
|
|
44
|
+
* (real-time safety, features, stability, latency, topology) is a measurement of the plugin, not of this machine.
|
|
45
|
+
*/
|
|
46
|
+
function blockers(measured, reasons) {
|
|
47
|
+
if (measured === undefined)
|
|
48
|
+
return ["unknown"];
|
|
49
|
+
if (measured === "refused")
|
|
50
|
+
return ["refused"];
|
|
51
|
+
const deciding = reasons.filter((r) => r.rating !== "suitable");
|
|
52
|
+
const notCost = deciding.filter((r) => !r.code.startsWith(COST_PREFIX)).map((r) => r.code);
|
|
53
|
+
if (notCost.length > 0)
|
|
54
|
+
return notCost;
|
|
55
|
+
// an isolated verdict that no reason explains is not one history can vouch for
|
|
56
|
+
return deciding.length === 0 ? ["no-deciding-reason"] : [];
|
|
57
|
+
}
|
|
58
|
+
function stay(measured, reason, blockedBy) {
|
|
59
|
+
return { measured: measured ?? null, adjusted: measured ?? null, move: "none", reason, ...(blockedBy === undefined ? {} : { blockedBy }) };
|
|
60
|
+
}
|
|
61
|
+
function move(measured, adjusted, reason) {
|
|
62
|
+
const demote = PIN_VERDICTS.indexOf(adjusted) > PIN_VERDICTS.indexOf(measured);
|
|
63
|
+
return { measured, adjusted, move: demote ? "demote" : "promote", reason };
|
|
64
|
+
}
|
|
65
|
+
/** Whether the record shows a plugin that has run alone long enough, without a crash or a restart, under the host's cost budget. */
|
|
66
|
+
function steady(r, profile, summary) {
|
|
67
|
+
const budgetPct = profile.cost.coreFractionCeiling * 100;
|
|
68
|
+
return (r.windowsSolo >= HISTORY_POLICY.steadyWindowsSolo &&
|
|
69
|
+
r.crashesSolo + r.crashesGrouped === 0 &&
|
|
70
|
+
r.restartsGrouped === 0 &&
|
|
71
|
+
!summary.raisesXruns &&
|
|
72
|
+
r.cpuP95Solo < budgetPct);
|
|
73
|
+
}
|
|
74
|
+
/** The second verdict beside the measured one. Demotions are read first and promotions last; a demotion is one step. */
|
|
75
|
+
export function adjustVerdict(input) {
|
|
76
|
+
const { measured, reasons, record, profile, now } = input;
|
|
77
|
+
if (record === undefined)
|
|
78
|
+
return stay(measured, HISTORY_REASON.noRecord);
|
|
79
|
+
const summary = summariseHistory(record, now);
|
|
80
|
+
if (measured === "in-process") {
|
|
81
|
+
if (summary.crashed)
|
|
82
|
+
return move(measured, "isolated", HISTORY_REASON.crashed);
|
|
83
|
+
if (summary.raisesXruns)
|
|
84
|
+
return move(measured, "isolated", HISTORY_REASON.xrunsGrouped);
|
|
85
|
+
return stay(measured, HISTORY_REASON.noChange);
|
|
86
|
+
}
|
|
87
|
+
if (measured === "isolated") {
|
|
88
|
+
const aloneCrashed = record.crashesSolo >= HISTORY_POLICY.crashedAloneCount && now - record.lastCrash <= HISTORY_POLICY.keepDays * SECONDS_PER_DAY;
|
|
89
|
+
if (aloneCrashed)
|
|
90
|
+
return move(measured, "refused", HISTORY_REASON.crashedAlone);
|
|
91
|
+
}
|
|
92
|
+
if (!steady(record, profile, summary))
|
|
93
|
+
return stay(measured, HISTORY_REASON.noChange);
|
|
94
|
+
const blocked = blockers(measured, reasons);
|
|
95
|
+
if (blocked.length > 0)
|
|
96
|
+
return stay(measured, HISTORY_REASON.notLiftable, blocked);
|
|
97
|
+
return move("isolated", "in-process", HISTORY_REASON.steady);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=history-adjust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-adjust.js","sourceRoot":"","sources":["../src/history-adjust.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The running-history file plugin-hostd writes and `plugin-qualify adjust --history` reads (plugin-hostd's `data/history.json`
|
|
3
|
+
* and `src/history.c`): a header line, then one line per plugin binary and host class,
|
|
4
|
+
*
|
|
5
|
+
* history <uri> <binary digest> <host class> key=value ...
|
|
6
|
+
*
|
|
7
|
+
* The reader keeps the daemon's rules for what it reads: the header must be the one it knows, a line outside the grammar
|
|
8
|
+
* is not read (and counted, so the caller can say so), a second line of one plugin binary on one host class is not read,
|
|
9
|
+
* a value is a whole number or a decimal and never negative. It differs in one place on purpose: a key it does not know
|
|
10
|
+
* is not a reason to skip the line, it is kept on the record (`unknownKeys`) and the known keys are read, so a daemon
|
|
11
|
+
* that grows a key inside history/1 does not blind the qualifier. Nothing here writes the file; only the daemon does.
|
|
12
|
+
*/
|
|
13
|
+
/** The header line of the format this reader knows, plugin-hostd's `PHD_HISTORY_HEADER`. */
|
|
14
|
+
export declare const HISTORY_HEADER = "# plugin-hostd history/1";
|
|
15
|
+
/** The verb a record line starts with, plugin-hostd's `PHD_HISTORY_RECORD`. */
|
|
16
|
+
export declare const HISTORY_RECORD = "history";
|
|
17
|
+
/** The words of the keys this reader knows, in the daemon's order. */
|
|
18
|
+
export declare const HISTORY_KEY_WORDS: readonly string[];
|
|
19
|
+
/** The figures of one record. A key the line did not carry reads as 0, as the daemon's record starts at 0. */
|
|
20
|
+
export interface HistoryCounters {
|
|
21
|
+
/** UTC seconds of the first and the last window. */
|
|
22
|
+
readonly first: number;
|
|
23
|
+
readonly last: number;
|
|
24
|
+
readonly windowsSolo: number;
|
|
25
|
+
readonly windowsGrouped: number;
|
|
26
|
+
/** Percent of one core. */
|
|
27
|
+
readonly cpuP95Solo: number;
|
|
28
|
+
readonly cpuMaxSolo: number;
|
|
29
|
+
/** MiB. */
|
|
30
|
+
readonly pssMbSolo: number;
|
|
31
|
+
readonly xrunWindowsSolo: number;
|
|
32
|
+
readonly xrunWindowsGrouped: number;
|
|
33
|
+
readonly crashesSolo: number;
|
|
34
|
+
readonly crashesGrouped: number;
|
|
35
|
+
readonly restartsGrouped: number;
|
|
36
|
+
readonly quarantines: number;
|
|
37
|
+
/** UTC seconds of the last crash the plugin was blamed for alone, and in a group. */
|
|
38
|
+
readonly lastCrash: number;
|
|
39
|
+
readonly lastCrashGrouped: number;
|
|
40
|
+
}
|
|
41
|
+
/** One line of the history: a plugin binary on a host class. */
|
|
42
|
+
export interface HistoryRecord extends HistoryCounters {
|
|
43
|
+
/** plugin-hostd's uri: `clap:<path of the .clap>#<id>`, or an LV2 plugin's own URI. */
|
|
44
|
+
readonly uri: string;
|
|
45
|
+
/** The SHA-256 of the first file of the plugin's pin, 64 lowercase hex digits. */
|
|
46
|
+
readonly digest: string;
|
|
47
|
+
/** The machine class the daemon recorded under, `arch/cores/clock`. */
|
|
48
|
+
readonly hostClass: string;
|
|
49
|
+
/** The keys of the line this reader does not know, as written: kept, never read. */
|
|
50
|
+
readonly unknownKeys: Readonly<Record<string, string>>;
|
|
51
|
+
}
|
|
52
|
+
export type HistoryRead = {
|
|
53
|
+
readonly ok: true;
|
|
54
|
+
readonly records: readonly HistoryRecord[];
|
|
55
|
+
/** The lines that were not read, each with the line number and why: outside the grammar, or a second line of one binary and class. */
|
|
56
|
+
readonly ignored: readonly {
|
|
57
|
+
readonly line: number;
|
|
58
|
+
readonly problem: string;
|
|
59
|
+
}[];
|
|
60
|
+
} | {
|
|
61
|
+
readonly ok: false;
|
|
62
|
+
readonly problem: string;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Read the text of a history file. A file whose first line (blank lines apart) is not the header is refused as a whole,
|
|
66
|
+
* as the daemon blocks it: a version this reader does not know is not read by guessing. Comment lines and blank lines
|
|
67
|
+
* after the header are skipped.
|
|
68
|
+
*/
|
|
69
|
+
export declare function readHistory(text: string): HistoryRead;
|
|
70
|
+
/** The record of one plugin binary on one host class, or `undefined`. */
|
|
71
|
+
export declare function findHistory(records: readonly HistoryRecord[], uri: string, digest: string, hostClass: string): HistoryRecord | undefined;
|
|
72
|
+
/** The host classes a history holds a record for, sorted. */
|
|
73
|
+
export declare function historyClasses(records: readonly HistoryRecord[]): string[];
|