@openmixer/plugin-qualify 0.20.0 → 0.20.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.
Files changed (48) hide show
  1. package/bin/plugin-qualify-records-package.mjs +9 -7
  2. package/bin/plugin-qualify.mjs +34 -0
  3. package/dist/distributed-records.d.ts +16 -3
  4. package/dist/distributed-records.js +38 -4
  5. package/dist/distributed-records.js.map +1 -1
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/judged-layer.d.ts +91 -0
  10. package/dist/judged-layer.js +144 -0
  11. package/dist/judged-layer.js.map +1 -0
  12. package/dist/judgement-line.d.ts +6 -0
  13. package/dist/judgement-line.js +20 -0
  14. package/dist/judgement-line.js.map +1 -0
  15. package/dist/measurement/cli.d.ts +2 -0
  16. package/dist/measurement/cli.js +25 -2
  17. package/dist/measurement/cli.js.map +1 -1
  18. package/dist/measurement/format.d.ts +2 -0
  19. package/dist/measurement/format.js +5 -0
  20. package/dist/measurement/format.js.map +1 -1
  21. package/dist/qualification-record.d.ts +8 -0
  22. package/dist/qualification-record.js +12 -2
  23. package/dist/qualification-record.js.map +1 -1
  24. package/dist/qualify-isolated.d.ts +5 -3
  25. package/dist/qualify-isolated.js +6 -4
  26. package/dist/qualify-isolated.js.map +1 -1
  27. package/dist/qualify-sync.d.ts +7 -2
  28. package/dist/qualify-sync.js +21 -11
  29. package/dist/qualify-sync.js.map +1 -1
  30. package/dist/records-package.d.ts +31 -4
  31. package/dist/records-package.js +149 -24
  32. package/dist/records-package.js.map +1 -1
  33. package/fixtures/records-rpi5-0.19.1/http___drumkv1.sourceforge.net_lv2@0.2-7d179bdcf9e5.default.probe.json +58 -0
  34. package/fixtures/records-rpi5-0.19.1/http___drumkv1.sourceforge.net_lv2@0.2-7d179bdcf9e5.default.qualification.json +305 -0
  35. package/fixtures/records-rpi5-0.19.1/http___samplv1.sourceforge.net_lv2@0.2-c9cd8fb3102f.default.probe.json +58 -0
  36. package/fixtures/records-rpi5-0.19.1/http___samplv1.sourceforge.net_lv2@0.2-c9cd8fb3102f.default.qualification.json +301 -0
  37. package/package.json +2 -2
  38. package/src/distributed-records.ts +41 -4
  39. package/src/index.ts +2 -0
  40. package/src/judged-layer.ts +197 -0
  41. package/src/judgement-line.ts +22 -0
  42. package/src/measurement/cli.ts +26 -2
  43. package/src/measurement/format.ts +8 -0
  44. package/src/qualification-record.ts +19 -2
  45. package/src/qualify-isolated.ts +6 -4
  46. package/src/qualify-sync.ts +22 -10
  47. package/src/records-package.ts +156 -25
  48. package/tools/lv2-measure.mjs +21 -2
@@ -0,0 +1,305 @@
1
+ {
2
+ "schema": "plugin-qualify.qualification-record/1",
3
+ "plugin": {
4
+ "format": "lv2",
5
+ "id": "http://drumkv1.sourceforge.net/lv2"
6
+ },
7
+ "testedVersion": "0.2",
8
+ "binary": {
9
+ "path": "drumkv1.so",
10
+ "sha256": "7d179bdcf9e5b755855794eed0a764c3f53abb70c529ea97077d534fa39ae442",
11
+ "files": [
12
+ {
13
+ "path": "drumkv1.so",
14
+ "sha256": "7d179bdcf9e5b755855794eed0a764c3f53abb70c529ea97077d534fa39ae442"
15
+ },
16
+ {
17
+ "path": "drumkv1.ttl",
18
+ "sha256": "ef66e4a1fff9e9c53206dc6c679620f9b552aade7f7ef2026854be19ceacf831"
19
+ },
20
+ {
21
+ "path": "drumkv1_ui.ttl",
22
+ "sha256": "6f0e871e0f10a5f98a78d47721886c17d693356cf22bc2c9780f4d3fd2c8da24"
23
+ },
24
+ {
25
+ "path": "manifest.ttl",
26
+ "sha256": "b66fed04b78253873ae51e1b31eeddc95cf76e1aa99d8dbb30983ad41f04cade"
27
+ }
28
+ ],
29
+ "layout": {
30
+ "scheme": "omx-layout/1",
31
+ "sha256": "ae0fca82111ac3f7310ace9fcc27e7f0345e1937d47f5e7532115b0b536d07ce"
32
+ }
33
+ },
34
+ "verdicts": [
35
+ {
36
+ "host": "omx-clap-host",
37
+ "measured": true,
38
+ "rating": "unknown",
39
+ "qualified": false,
40
+ "hosting": "isolated",
41
+ "arm": "run",
42
+ "deciding": "omx-clap-host.silent-under-note",
43
+ "reasons": [
44
+ {
45
+ "dimension": "hostAdmission",
46
+ "rating": "unknown",
47
+ "code": "omx-clap-host.silent-under-note",
48
+ "params": {
49
+ "peak": 0,
50
+ "notes": 30
51
+ }
52
+ },
53
+ {
54
+ "dimension": "rtSafety",
55
+ "rating": "suitable",
56
+ "code": "hosting.rt-safety.clean-under-sweep",
57
+ "params": {
58
+ "blocks": 512
59
+ }
60
+ },
61
+ {
62
+ "dimension": "rtSafety",
63
+ "rating": "suitable",
64
+ "code": "hosting.rt-safety.clean-under-notes",
65
+ "params": {
66
+ "blocks": 512,
67
+ "events": 0
68
+ }
69
+ }
70
+ ]
71
+ },
72
+ {
73
+ "host": "openmixer-console",
74
+ "measured": true,
75
+ "rating": "unknown",
76
+ "qualified": false,
77
+ "hosting": "isolated",
78
+ "arm": "declaration",
79
+ "deciding": "hosting.memory.unmeasured",
80
+ "reasons": [
81
+ {
82
+ "dimension": "rtSafety",
83
+ "rating": "suitable",
84
+ "code": "hosting.rt-safety.clean-under-sweep",
85
+ "params": {
86
+ "blocks": 512
87
+ }
88
+ },
89
+ {
90
+ "dimension": "rtSafety",
91
+ "rating": "suitable",
92
+ "code": "hosting.rt-safety.clean-under-notes",
93
+ "params": {
94
+ "blocks": 512,
95
+ "events": 0
96
+ }
97
+ },
98
+ {
99
+ "dimension": "memory",
100
+ "rating": "unknown",
101
+ "code": "hosting.memory.unmeasured",
102
+ "params": {
103
+ "rate": 96000,
104
+ "quantum": 1024
105
+ }
106
+ }
107
+ ]
108
+ }
109
+ ],
110
+ "adapter": {
111
+ "host": "omx-clap-host",
112
+ "measured": true,
113
+ "admitted": false,
114
+ "code": "omx-clap-host.silent-under-note",
115
+ "params": {
116
+ "peak": 0,
117
+ "notes": 30
118
+ }
119
+ },
120
+ "tiers": {
121
+ "inProcess": {
122
+ "host": "openmixer-console",
123
+ "measured": true,
124
+ "qualified": false,
125
+ "rating": "unknown",
126
+ "deciding": "hosting.memory.unmeasured"
127
+ },
128
+ "isolated": {
129
+ "host": "omx-clap-host",
130
+ "measured": true,
131
+ "qualified": false,
132
+ "rating": "unknown",
133
+ "deciding": "omx-clap-host.silent-under-note"
134
+ },
135
+ "offeredOn": [],
136
+ "dimmed": "openmixer-console: hosting.memory.unmeasured; omx-clap-host: omx-clap-host.silent-under-note"
137
+ },
138
+ "cost": [
139
+ {
140
+ "host": "omx-clap-host",
141
+ "rate": 48000,
142
+ "quantum": 128,
143
+ "reasons": [
144
+ {
145
+ "dimension": "cost",
146
+ "rating": "unknown",
147
+ "code": "hosting.cost.unmeasured-at-rate-and-quantum",
148
+ "params": {
149
+ "rate": 48000,
150
+ "quantum": 128
151
+ }
152
+ }
153
+ ]
154
+ },
155
+ {
156
+ "host": "openmixer-console",
157
+ "rate": 96000,
158
+ "quantum": 1024,
159
+ "reasons": [
160
+ {
161
+ "dimension": "cost",
162
+ "rating": "unknown",
163
+ "code": "hosting.cost.unmeasured-at-rate-and-quantum",
164
+ "params": {
165
+ "rate": 96000,
166
+ "quantum": 1024
167
+ }
168
+ }
169
+ ]
170
+ }
171
+ ],
172
+ "measurements": {
173
+ "grid": [
174
+ {
175
+ "rate": 48000,
176
+ "quantum": 256,
177
+ "outcome": "probe.ok",
178
+ "latency": {
179
+ "declaredFrames": 0,
180
+ "measuredFrames": 0
181
+ },
182
+ "cost": {
183
+ "median": 172.129,
184
+ "percentile": {
185
+ "p": 95,
186
+ "value": 173.537
187
+ },
188
+ "blocks": 512,
189
+ "warmupBlocks": 64
190
+ },
191
+ "rtSafety": {
192
+ "interposer": true,
193
+ "swept": true,
194
+ "sweepApplicable": true,
195
+ "blocks": 512,
196
+ "allocations": 0,
197
+ "locks": 0,
198
+ "syscalls": 0,
199
+ "events": []
200
+ },
201
+ "noteSweep": {
202
+ "applicable": true,
203
+ "dialect": "midi",
204
+ "allocations": 0,
205
+ "locks": 0,
206
+ "syscalls": 0
207
+ },
208
+ "memory": {
209
+ "afterInstantiateKb": 21792,
210
+ "afterActivateKb": 22512,
211
+ "atRestKb": 22528,
212
+ "secondInstanceKb": 976,
213
+ "firstInstanceKb": 22528,
214
+ "perInstanceKb": 976
215
+ }
216
+ }
217
+ ],
218
+ "behaviour": {
219
+ "lifecycle": {
220
+ "cycles": 30,
221
+ "instantiated": 30,
222
+ "failed": 0
223
+ },
224
+ "threads": {
225
+ "before": 1,
226
+ "afterFirstInstantiate": 2,
227
+ "afterAllFreed": 1
228
+ },
229
+ "features": {
230
+ "required": [
231
+ "http://lv2plug.in/ns/ext/worker#schedule",
232
+ "http://lv2plug.in/ns/ext/urid#map"
233
+ ]
234
+ }
235
+ }
236
+ },
237
+ "notMeasured": [
238
+ {
239
+ "dimension": "stability",
240
+ "code": "hosting.stability.unsoaked"
241
+ }
242
+ ],
243
+ "tool": {
244
+ "runner": "plugin-hostd-probe 0.19.1",
245
+ "child": "lv2_measure",
246
+ "interposer": "rt_interpose.so"
247
+ },
248
+ "measuredAt": "2026-11-08T23:26:50+00:00",
249
+ "probe": {
250
+ "file": "http___drumkv1.sourceforge.net_lv2@0.2-7d179bdcf9e5.default.probe.json",
251
+ "sha256": "36041d2e57aac547248c44fa688316584294272fd6fbc398a08383639550f29b",
252
+ "bytes": 4702,
253
+ "protocol": {
254
+ "name": "plugin-hostd.probe-protocol",
255
+ "version": 1
256
+ },
257
+ "reason": "on-request",
258
+ "outcome": "probe.ok",
259
+ "complete": true,
260
+ "machineClass": {
261
+ "arch": "aarch64",
262
+ "family": "arm",
263
+ "coreBand": "3-4",
264
+ "clockBand": "1.5-2.5GHz",
265
+ "preemptRt": false,
266
+ "cstatesLimited": false
267
+ },
268
+ "meetsProtocol": false,
269
+ "load": {
270
+ "loadavg1": 0.46,
271
+ "cores": 4
272
+ }
273
+ },
274
+ "run": {
275
+ "id": "20261108T232650Z-1a1a6-f541efcb",
276
+ "steps": [
277
+ {
278
+ "step": "scan",
279
+ "result": "ok"
280
+ },
281
+ {
282
+ "step": "describe",
283
+ "result": "ok"
284
+ },
285
+ {
286
+ "step": "probe",
287
+ "result": "probe.ok"
288
+ },
289
+ {
290
+ "step": "rt-safety",
291
+ "result": "safe"
292
+ },
293
+ {
294
+ "step": "isolated",
295
+ "result": "isolated",
296
+ "figures": {
297
+ "latencyFrames": 0,
298
+ "cpuPercent": 0.6666666666666666,
299
+ "xruns": 0,
300
+ "midiInputsLinked": 1
301
+ }
302
+ }
303
+ ]
304
+ }
305
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "format": "plugin-hostd.probe-output",
3
+ "formatVersion": "1.4",
4
+ "run": {
5
+ "id": "20261108T232659Z-1a20f-da571497",
6
+ "startedAt": "2026-11-08T23:26:59+00:00",
7
+ "elapsedMs": 1266,
8
+ "complete": true,
9
+ "outcome": "probe.ok",
10
+ "reason": "on-request",
11
+ "protocol": {"name": "plugin-hostd.probe-protocol", "version": 1},
12
+ "tools": {"runner": "plugin-hostd-probe 0.19.1", "child": "lv2_measure", "interposer": "rt_interpose.so"},
13
+ "via": "runner",
14
+ "realtime": {"class": "fifo", "priority": 99, "requested": 99, "grantedBy": "cap", "capabilityBound": true, "observed": {"policy": "fifo", "priority": 99}},
15
+ "memoryLock": {"locked": false, "limitBytes": 8388608, "reason": "RLIMIT_MEMLOCK is 8388608 bytes, below the memory limit of 2122874880: a lock would fail the plugin's own allocations first"}
16
+ },
17
+ "plugin": {"format": "lv2", "id": "http://samplv1.sourceforge.net/lv2", "version": "0.2"},
18
+ "binary": {"path": "samplv1.so", "sha256": "c9cd8fb3102fd7e60bd35108fe97490dde414e2afb3afb20899a8a59d2dae236", "files": [{"path": "manifest.ttl", "sha256": "ad06bcfc23720f0a5622e045f8a308aaeec99efbc6125764ce0ab014146696c8"}, {"path": "samplv1.so", "sha256": "c9cd8fb3102fd7e60bd35108fe97490dde414e2afb3afb20899a8a59d2dae236"}, {"path": "samplv1.ttl", "sha256": "7722d13cbae4d7d547dcebdf712be84cd498707a4307b20c4179fcb8f8a368a9"}, {"path": "samplv1_ui.ttl", "sha256": "6f04c36ea787976e1e85af3c01ecd3c7590ed1811e2e0e9fe702628be0cdad82"}], "layout": {"scheme": "omx-layout/1", "sha256": "2edf41e8367c7424f326e11bbeb4c0e6fa70d910ce35907c86abfbe752cb5e93"}},
19
+ "machine": {
20
+ "class": {"arch": "aarch64", "family": "arm", "coreBand": "3-4", "clockBand": "1.5-2.5GHz", "preemptRt": false, "cstatesLimited": false},
21
+ "profile": {"governor": "performance", "turbo": false, "smt": false, "preempt": "PREEMPT",
22
+ "cpuidle": [],
23
+ "meetsProtocol": false, "unmet": ["probe.profile.not-pinned"]},
24
+ "pinnedCpus": "0-3"
25
+ },
26
+ "offer": {"id": "default", "realtime": "fifo"},
27
+ "limits": {"set": "default",
28
+ "applied": [
29
+ {"limit": "wall-clock", "value": 120, "unit": "s", "by": "supervisor"},
30
+ {"limit": "cpu-time", "value": 540, "unit": "s", "by": "rlimit"},
31
+ {"limit": "memory", "value": 2122874880, "unit": "bytes", "by": "rlimit"},
32
+ {"limit": "files", "value": 256, "unit": "count", "by": "rlimit"},
33
+ {"limit": "file-size", "value": 67108864, "unit": "bytes", "by": "rlimit"},
34
+ {"limit": "core-dump", "value": 0, "unit": "bytes", "by": "rlimit"},
35
+ {"limit": "rt-priority", "value": 0, "by": "rlimit"},
36
+ {"limit": "rt-time", "value": 120000000, "unit": "us", "by": "rlimit"},
37
+ {"limit": "memory-lock", "value": 8388608, "unit": "bytes", "by": "rlimit"},
38
+ {"limit": "no-new-privs", "by": "prctl"}
39
+ ],
40
+ "unavailable": [
41
+ {"limit": "memory", "code": "probe.limit.controller-not-delegated"},
42
+ {"limit": "tasks", "code": "probe.limit.not-implemented"}
43
+ ]
44
+ },
45
+ "steps": [
46
+ {"step": "hash", "outcome": "probe.ok", "elapsedMs": 32, "exitStatus": 0},
47
+ {"step": "instantiate", "outcome": "probe.ok", "elapsedMs": 0, "detail": "read from the child's line"},
48
+ {"step": "rt-safety", "rate": 48000, "quantum": 256, "outcome": "probe.ok", "elapsedMs": 0, "detail": "read from the child's line"},
49
+ {"step": "latency", "rate": 48000, "quantum": 256, "outcome": "probe.ok", "elapsedMs": 0},
50
+ {"step": "cost", "rate": 48000, "quantum": 256, "outcome": "probe.ok", "elapsedMs": 0},
51
+ {"step": "lifecycle", "outcome": "probe.ok", "elapsedMs": 1234, "exitStatus": 0}
52
+ ],
53
+ "grid": [
54
+ {"rate": 48000, "quantum": 256, "outcome": "probe.ok", "latency": {"declaredFrames": 0, "measuredFrames": 0, "method": "impulse-onset"}, "cost": {"unit": "ns-per-sample", "median": 200.086, "percentile": {"p": 95, "value": 320.746}, "min": 10.0547, "max": 404.73, "blocks": 512, "warmupBlocks": 64}, "memory": {"afterInstantiateKb": 22000, "afterActivateKb": 22576, "atRestKb": 22576, "secondInstanceKb": 960}, "rtSafety": {"interposer": true, "swept": true, "sweepApplicable": true, "blocks": 512, "allocations": 0, "locks": 1533, "syscalls": 0, "events": ["mutex_lock libQt6Core.so.6 _ZN14QWaitCondition7wakeAllEv"]}, "noteSweep": {"applicable": true, "dialect": "midi", "allocations": 0, "locks": 0, "syscalls": 0}}
55
+ ],
56
+ "behaviour": {"lifecycle": {"cycles": 30, "instantiated": 30, "failed": 0}, "threads": {"before": 1, "afterFirstInstantiate": 2, "afterAllFreed": 1}, "features": {"required": ["http://lv2plug.in/ns/ext/worker#schedule", "http://lv2plug.in/ns/ext/urid#map"]}},
57
+ "logs": [{"name": "stderr", "path": "/tmp/plugin-qualify-probe-cU87wz/child.stderr.log", "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "bytes": 0}]
58
+ }
@@ -0,0 +1,301 @@
1
+ {
2
+ "schema": "plugin-qualify.qualification-record/1",
3
+ "plugin": {
4
+ "format": "lv2",
5
+ "id": "http://samplv1.sourceforge.net/lv2"
6
+ },
7
+ "testedVersion": "0.2",
8
+ "binary": {
9
+ "path": "samplv1.so",
10
+ "sha256": "c9cd8fb3102fd7e60bd35108fe97490dde414e2afb3afb20899a8a59d2dae236",
11
+ "files": [
12
+ {
13
+ "path": "manifest.ttl",
14
+ "sha256": "ad06bcfc23720f0a5622e045f8a308aaeec99efbc6125764ce0ab014146696c8"
15
+ },
16
+ {
17
+ "path": "samplv1.so",
18
+ "sha256": "c9cd8fb3102fd7e60bd35108fe97490dde414e2afb3afb20899a8a59d2dae236"
19
+ },
20
+ {
21
+ "path": "samplv1.ttl",
22
+ "sha256": "7722d13cbae4d7d547dcebdf712be84cd498707a4307b20c4179fcb8f8a368a9"
23
+ },
24
+ {
25
+ "path": "samplv1_ui.ttl",
26
+ "sha256": "6f04c36ea787976e1e85af3c01ecd3c7590ed1811e2e0e9fe702628be0cdad82"
27
+ }
28
+ ],
29
+ "layout": {
30
+ "scheme": "omx-layout/1",
31
+ "sha256": "2edf41e8367c7424f326e11bbeb4c0e6fa70d910ce35907c86abfbe752cb5e93"
32
+ }
33
+ },
34
+ "verdicts": [
35
+ {
36
+ "host": "omx-clap-host",
37
+ "measured": true,
38
+ "rating": "unknown",
39
+ "qualified": false,
40
+ "hosting": "isolated",
41
+ "arm": "run",
42
+ "deciding": "omx-clap-host.silent-under-note",
43
+ "reasons": [
44
+ {
45
+ "dimension": "hostAdmission",
46
+ "rating": "unknown",
47
+ "code": "omx-clap-host.silent-under-note",
48
+ "params": {
49
+ "peak": 0,
50
+ "notes": 30
51
+ }
52
+ },
53
+ {
54
+ "dimension": "rtSafety",
55
+ "rating": "conditional",
56
+ "code": "hosting.rt-safety.violations-in-run",
57
+ "params": {
58
+ "allocations": 0,
59
+ "syscalls": 0,
60
+ "locks": 1533
61
+ }
62
+ },
63
+ {
64
+ "dimension": "rtSafety",
65
+ "rating": "suitable",
66
+ "code": "hosting.rt-safety.clean-under-notes",
67
+ "params": {
68
+ "blocks": 512,
69
+ "events": 0
70
+ }
71
+ }
72
+ ]
73
+ },
74
+ {
75
+ "host": "openmixer-console",
76
+ "measured": true,
77
+ "rating": "unknown",
78
+ "qualified": false,
79
+ "hosting": "isolated",
80
+ "arm": "declaration",
81
+ "deciding": "hosting.memory.unmeasured",
82
+ "reasons": [
83
+ {
84
+ "dimension": "rtSafety",
85
+ "rating": "conditional",
86
+ "code": "hosting.rt-safety.violations-in-run",
87
+ "params": {
88
+ "allocations": 0,
89
+ "syscalls": 0,
90
+ "locks": 1533
91
+ }
92
+ },
93
+ {
94
+ "dimension": "rtSafety",
95
+ "rating": "suitable",
96
+ "code": "hosting.rt-safety.clean-under-notes",
97
+ "params": {
98
+ "blocks": 512,
99
+ "events": 0
100
+ }
101
+ },
102
+ {
103
+ "dimension": "memory",
104
+ "rating": "unknown",
105
+ "code": "hosting.memory.unmeasured",
106
+ "params": {
107
+ "rate": 96000,
108
+ "quantum": 1024
109
+ }
110
+ }
111
+ ]
112
+ }
113
+ ],
114
+ "adapter": {
115
+ "host": "omx-clap-host",
116
+ "measured": true,
117
+ "admitted": false,
118
+ "code": "omx-clap-host.silent-under-note",
119
+ "params": {
120
+ "peak": 0,
121
+ "notes": 30
122
+ }
123
+ },
124
+ "tiers": {
125
+ "inProcess": {
126
+ "host": "openmixer-console",
127
+ "measured": true,
128
+ "qualified": false,
129
+ "rating": "unknown",
130
+ "deciding": "hosting.memory.unmeasured"
131
+ },
132
+ "isolated": {
133
+ "host": "omx-clap-host",
134
+ "measured": true,
135
+ "qualified": false,
136
+ "rating": "unknown",
137
+ "deciding": "omx-clap-host.silent-under-note"
138
+ },
139
+ "offeredOn": [],
140
+ "dimmed": "openmixer-console: hosting.memory.unmeasured; omx-clap-host: omx-clap-host.silent-under-note"
141
+ },
142
+ "cost": [
143
+ {
144
+ "host": "omx-clap-host",
145
+ "rate": 48000,
146
+ "quantum": 128,
147
+ "reasons": [
148
+ {
149
+ "dimension": "cost",
150
+ "rating": "unknown",
151
+ "code": "hosting.cost.unmeasured-at-rate-and-quantum",
152
+ "params": {
153
+ "rate": 48000,
154
+ "quantum": 128
155
+ }
156
+ }
157
+ ]
158
+ },
159
+ {
160
+ "host": "openmixer-console",
161
+ "rate": 96000,
162
+ "quantum": 1024,
163
+ "reasons": [
164
+ {
165
+ "dimension": "cost",
166
+ "rating": "unknown",
167
+ "code": "hosting.cost.unmeasured-at-rate-and-quantum",
168
+ "params": {
169
+ "rate": 96000,
170
+ "quantum": 1024
171
+ }
172
+ }
173
+ ]
174
+ }
175
+ ],
176
+ "measurements": {
177
+ "grid": [
178
+ {
179
+ "rate": 48000,
180
+ "quantum": 256,
181
+ "outcome": "probe.ok",
182
+ "latency": {
183
+ "declaredFrames": 0,
184
+ "measuredFrames": 0
185
+ },
186
+ "cost": {
187
+ "median": 200.086,
188
+ "percentile": {
189
+ "p": 95,
190
+ "value": 320.746
191
+ },
192
+ "blocks": 512,
193
+ "warmupBlocks": 64
194
+ },
195
+ "rtSafety": {
196
+ "interposer": true,
197
+ "swept": true,
198
+ "sweepApplicable": true,
199
+ "blocks": 512,
200
+ "allocations": 0,
201
+ "locks": 1533,
202
+ "syscalls": 0,
203
+ "events": [
204
+ "mutex_lock libQt6Core.so.6 _ZN14QWaitCondition7wakeAllEv"
205
+ ]
206
+ },
207
+ "noteSweep": {
208
+ "applicable": true,
209
+ "dialect": "midi",
210
+ "allocations": 0,
211
+ "locks": 0,
212
+ "syscalls": 0
213
+ },
214
+ "memory": {
215
+ "afterInstantiateKb": 22000,
216
+ "afterActivateKb": 22576,
217
+ "atRestKb": 22576,
218
+ "secondInstanceKb": 960,
219
+ "firstInstanceKb": 22576,
220
+ "perInstanceKb": 960
221
+ }
222
+ }
223
+ ],
224
+ "behaviour": {
225
+ "lifecycle": {
226
+ "cycles": 30,
227
+ "instantiated": 30,
228
+ "failed": 0
229
+ },
230
+ "threads": {
231
+ "before": 1,
232
+ "afterFirstInstantiate": 2,
233
+ "afterAllFreed": 1
234
+ },
235
+ "features": {
236
+ "required": [
237
+ "http://lv2plug.in/ns/ext/worker#schedule",
238
+ "http://lv2plug.in/ns/ext/urid#map"
239
+ ]
240
+ }
241
+ }
242
+ },
243
+ "notMeasured": [
244
+ {
245
+ "dimension": "stability",
246
+ "code": "hosting.stability.unsoaked"
247
+ }
248
+ ],
249
+ "tool": {
250
+ "runner": "plugin-hostd-probe 0.19.1",
251
+ "child": "lv2_measure",
252
+ "interposer": "rt_interpose.so"
253
+ },
254
+ "measuredAt": "2026-11-08T23:26:59+00:00",
255
+ "probe": {
256
+ "file": "http___samplv1.sourceforge.net_lv2@0.2-c9cd8fb3102f.default.probe.json",
257
+ "sha256": "6b642b3331f260e82ca80da523d8911ae88355823b4a3b9b85e4e97721d9f548",
258
+ "bytes": 4762,
259
+ "protocol": {
260
+ "name": "plugin-hostd.probe-protocol",
261
+ "version": 1
262
+ },
263
+ "reason": "on-request",
264
+ "outcome": "probe.ok",
265
+ "complete": true,
266
+ "machineClass": {
267
+ "arch": "aarch64",
268
+ "family": "arm",
269
+ "coreBand": "3-4",
270
+ "clockBand": "1.5-2.5GHz",
271
+ "preemptRt": false,
272
+ "cstatesLimited": false
273
+ },
274
+ "meetsProtocol": false,
275
+ "load": {
276
+ "loadavg1": 0.47,
277
+ "cores": 4
278
+ }
279
+ },
280
+ "run": {
281
+ "id": "20261108T232659Z-1a20f-da571497",
282
+ "steps": [
283
+ {
284
+ "step": "scan",
285
+ "result": "ok"
286
+ },
287
+ {
288
+ "step": "describe",
289
+ "result": "ok"
290
+ },
291
+ {
292
+ "step": "probe",
293
+ "result": "probe.ok"
294
+ },
295
+ {
296
+ "step": "rt-safety",
297
+ "result": "safe"
298
+ }
299
+ ]
300
+ }
301
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmixer/plugin-qualify",
3
- "version": "0.20.0",
3
+ "version": "0.20.1",
4
4
  "description": "Qualify audio plugins for real-time hosting: scan, offline latency and cost measurement, and a fail-closed rating.",
5
5
  "type": "module",
6
6
  "license": "GPL-3.0-or-later",
@@ -98,6 +98,6 @@
98
98
  "provenance": true
99
99
  },
100
100
  "dependencies": {
101
- "@openmixer/omx-contract": "^3.9.1"
101
+ "@openmixer/omx-contract": "^3.12.0"
102
102
  }
103
103
  }