@openmixer/plugin-qualify 0.17.5 → 0.18.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 (109) hide show
  1. package/README.md +127 -13
  2. package/bin/plugin-qualify-sync.mjs +3 -1
  3. package/dist/clap-qualify.d.ts +3 -1
  4. package/dist/clap-qualify.js +7 -1
  5. package/dist/clap-qualify.js.map +1 -1
  6. package/dist/direct-limit.d.ts +27 -0
  7. package/dist/direct-limit.js +52 -0
  8. package/dist/direct-limit.js.map +1 -0
  9. package/dist/distributed-records.d.ts +4 -2
  10. package/dist/distributed-records.js +1 -1
  11. package/dist/distributed-records.js.map +1 -1
  12. package/dist/host-admission.d.ts +12 -2
  13. package/dist/host-admission.js +24 -4
  14. package/dist/host-admission.js.map +1 -1
  15. package/dist/host-profiles.d.ts +8 -0
  16. package/dist/host-profiles.js +16 -1
  17. package/dist/host-profiles.js.map +1 -1
  18. package/dist/hosting-codes.generated.d.ts +10 -0
  19. package/dist/hosting-codes.generated.js +10 -0
  20. package/dist/hosting-codes.generated.js.map +1 -1
  21. package/dist/hosting-suitability.d.ts +34 -8
  22. package/dist/hosting-suitability.js +92 -7
  23. package/dist/hosting-suitability.js.map +1 -1
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.js +3 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/measurement/format.d.ts +54 -8
  28. package/dist/measurement/format.js +54 -3
  29. package/dist/measurement/format.js.map +1 -1
  30. package/dist/measurement/plan.d.ts +3 -3
  31. package/dist/measurement/plan.js +1 -1
  32. package/dist/measurement-grid.d.ts +8 -0
  33. package/dist/measurement-grid.js +4 -0
  34. package/dist/measurement-grid.js.map +1 -1
  35. package/dist/memory-bound.d.ts +6 -0
  36. package/dist/memory-bound.js +8 -0
  37. package/dist/memory-bound.js.map +1 -1
  38. package/dist/memory-budget.d.ts +39 -0
  39. package/dist/memory-budget.js +32 -0
  40. package/dist/memory-budget.js.map +1 -0
  41. package/dist/probe-judge.d.ts +11 -0
  42. package/dist/probe-judge.js +26 -10
  43. package/dist/probe-judge.js.map +1 -1
  44. package/dist/probe-merge.js +6 -5
  45. package/dist/probe-merge.js.map +1 -1
  46. package/dist/probe-output-fixtures.d.ts +6 -0
  47. package/dist/probe-output-fixtures.js +8 -0
  48. package/dist/probe-output-fixtures.js.map +1 -1
  49. package/dist/probe-output.d.ts +4 -2
  50. package/dist/probe-output.js +2 -1
  51. package/dist/probe-output.js.map +1 -1
  52. package/dist/probe-runner.js +7 -3
  53. package/dist/probe-runner.js.map +1 -1
  54. package/dist/qualification-record.d.ts +116 -10
  55. package/dist/qualification-record.js +34 -30
  56. package/dist/qualification-record.js.map +1 -1
  57. package/dist/qualify-adapter-pass.d.ts +67 -0
  58. package/dist/qualify-adapter-pass.js +255 -0
  59. package/dist/qualify-adapter-pass.js.map +1 -0
  60. package/dist/qualify-declarations.d.ts +53 -9
  61. package/dist/qualify-declarations.js +54 -2
  62. package/dist/qualify-declarations.js.map +1 -1
  63. package/dist/qualify-rejudge.d.ts +81 -0
  64. package/dist/qualify-rejudge.js +421 -0
  65. package/dist/qualify-rejudge.js.map +1 -0
  66. package/dist/qualify-sync.d.ts +72 -1
  67. package/dist/qualify-sync.js +194 -21
  68. package/dist/qualify-sync.js.map +1 -1
  69. package/fixtures/records-0.16.1/http___example.org_raffo@unversioned-2060c09ff626.default.probe.json +46 -0
  70. package/fixtures/records-0.16.1/http___example.org_raffo@unversioned-2060c09ff626.default.qualification.json +185 -0
  71. package/fixtures/records-0.16.1/http___lv2plug.in_plugins_eg-amp@unversioned-f046a60efd45.default.probe.json +51 -0
  72. package/fixtures/records-0.16.1/http___lv2plug.in_plugins_eg-amp@unversioned-f046a60efd45.default.qualification.json +232 -0
  73. package/fixtures/records-0.16.1/https___github.com_lucianodato_noise-repellent@unversioned-c3b5e21dd9a7.default.probe.json +51 -0
  74. package/fixtures/records-0.16.1/https___github.com_lucianodato_noise-repellent@unversioned-c3b5e21dd9a7.default.qualification.json +245 -0
  75. package/fixtures/records-0.16.1/in.lsp-plug.impulse_responses_mono@unversioned-d5235d2f5f53.custom.probe.json +52 -0
  76. package/fixtures/records-0.16.1/in.lsp-plug.impulse_responses_mono@unversioned-d5235d2f5f53.custom.qualification.json +145 -0
  77. package/fixtures/records-0.16.1/in.lsp-plug.trigger_midi_mono@unversioned-d5235d2f5f53.custom.probe.json +52 -0
  78. package/fixtures/records-0.16.1/in.lsp-plug.trigger_midi_mono@unversioned-d5235d2f5f53.custom.qualification.json +155 -0
  79. package/package.json +1 -1
  80. package/src/clap-qualify.ts +8 -1
  81. package/src/direct-limit.ts +68 -0
  82. package/src/distributed-records.ts +1 -1
  83. package/src/host-admission.ts +27 -4
  84. package/src/host-profiles.ts +17 -1
  85. package/src/hosting-codes.generated.ts +10 -0
  86. package/src/hosting-suitability.ts +105 -11
  87. package/src/index.ts +3 -0
  88. package/src/measurement/format.ts +97 -3
  89. package/src/measurement/plan.ts +3 -3
  90. package/src/measurement-grid.ts +5 -0
  91. package/src/memory-bound.ts +10 -0
  92. package/src/memory-budget.ts +55 -0
  93. package/src/probe-judge.ts +29 -9
  94. package/src/probe-merge.ts +6 -5
  95. package/src/probe-output-fixtures.ts +10 -1
  96. package/src/probe-output.ts +5 -2
  97. package/src/probe-runner.ts +5 -3
  98. package/src/qualification-record.ts +121 -18
  99. package/src/qualify-adapter-pass.ts +278 -0
  100. package/src/qualify-declarations.ts +67 -3
  101. package/src/qualify-rejudge.ts +452 -0
  102. package/src/qualify-sync.ts +210 -20
  103. package/tools/_declarations.py +1 -0
  104. package/tools/benchmark.py +25 -2
  105. package/tools/gen-python-declarations.mjs +1 -0
  106. package/tools/lv2-measure.mjs +7 -4
  107. package/tools/lv2_presets.py +1 -1
  108. package/tools/lv2_resolve.py +49 -0
  109. package/tools/mod-host-admit.mjs +23 -6
@@ -0,0 +1,232 @@
1
+ {
2
+ "schema": "plugin-qualify.qualification-record/1",
3
+ "plugin": {
4
+ "format": "lv2",
5
+ "id": "http://lv2plug.in/plugins/eg-amp"
6
+ },
7
+ "binary": {
8
+ "path": "amp.so",
9
+ "sha256": "f046a60efd45fb2df00f7f317a73eb5e52184edb07d0001ce7795a1ab1b2f3f9",
10
+ "files": [
11
+ {
12
+ "path": "amp.so",
13
+ "sha256": "f046a60efd45fb2df00f7f317a73eb5e52184edb07d0001ce7795a1ab1b2f3f9"
14
+ },
15
+ {
16
+ "path": "amp.ttl",
17
+ "sha256": "4a98c2e08a0067b3366387bad5af7114e62b54c5e3f9c151254757113ba2e0c0"
18
+ },
19
+ {
20
+ "path": "manifest.ttl",
21
+ "sha256": "e68b3731686550c2343b2f32f02a29c877436c06567f3cf3a425b3eca4ab09d0"
22
+ }
23
+ ],
24
+ "layout": {
25
+ "scheme": "omx-layout/1",
26
+ "sha256": "61d59eace27ae704682f26540c1234b6b709fa572f3c6cc8f4103aeaea0c4925"
27
+ }
28
+ },
29
+ "verdicts": [
30
+ {
31
+ "host": "omx-clap-host",
32
+ "measured": true,
33
+ "rating": "suitable",
34
+ "qualified": true,
35
+ "hosting": "isolated",
36
+ "arm": "declaration",
37
+ "reasons": [
38
+ {
39
+ "dimension": "rtSafety",
40
+ "rating": "suitable",
41
+ "code": "hosting.rt-safety.clean-under-sweep",
42
+ "params": {
43
+ "blocks": 512
44
+ }
45
+ }
46
+ ]
47
+ },
48
+ {
49
+ "host": "openmixer-console",
50
+ "measured": true,
51
+ "rating": "suitable",
52
+ "qualified": true,
53
+ "hosting": "in-process",
54
+ "arm": "declaration",
55
+ "reasons": [
56
+ {
57
+ "dimension": "rtSafety",
58
+ "rating": "suitable",
59
+ "code": "hosting.rt-safety.clean-under-sweep",
60
+ "params": {
61
+ "blocks": 512
62
+ }
63
+ }
64
+ ]
65
+ },
66
+ {
67
+ "host": "mod-host",
68
+ "measured": true,
69
+ "rating": "unsuitable",
70
+ "qualified": false,
71
+ "hosting": "isolated",
72
+ "arm": "run",
73
+ "deciding": "mod-host.no-answer",
74
+ "reasons": [
75
+ {
76
+ "dimension": "hostAdmission",
77
+ "rating": "unsuitable",
78
+ "code": "mod-host.no-answer",
79
+ "params": {
80
+ "step": "activate"
81
+ }
82
+ },
83
+ {
84
+ "dimension": "rtSafety",
85
+ "rating": "suitable",
86
+ "code": "hosting.rt-safety.clean-under-sweep",
87
+ "params": {
88
+ "blocks": 512
89
+ }
90
+ }
91
+ ]
92
+ }
93
+ ],
94
+ "tiers": {
95
+ "inProcess": {
96
+ "host": "openmixer-console",
97
+ "measured": true,
98
+ "qualified": true,
99
+ "rating": "suitable"
100
+ },
101
+ "isolated": {
102
+ "host": "mod-host",
103
+ "measured": true,
104
+ "qualified": false,
105
+ "rating": "unsuitable",
106
+ "deciding": "mod-host.no-answer"
107
+ },
108
+ "offeredOn": [
109
+ "in-process"
110
+ ]
111
+ },
112
+ "cost": [
113
+ {
114
+ "host": "omx-clap-host",
115
+ "rate": 48000,
116
+ "quantum": 128,
117
+ "reasons": [
118
+ {
119
+ "dimension": "cost",
120
+ "rating": "unknown",
121
+ "code": "hosting.cost.unmeasured-at-rate-and-quantum",
122
+ "params": {
123
+ "rate": 48000,
124
+ "quantum": 128
125
+ }
126
+ }
127
+ ]
128
+ },
129
+ {
130
+ "host": "openmixer-console",
131
+ "rate": 96000,
132
+ "quantum": 1024,
133
+ "reasons": [
134
+ {
135
+ "dimension": "cost",
136
+ "rating": "unknown",
137
+ "code": "hosting.cost.unmeasured-at-rate-and-quantum",
138
+ "params": {
139
+ "rate": 96000,
140
+ "quantum": 1024
141
+ }
142
+ }
143
+ ]
144
+ },
145
+ {
146
+ "host": "mod-host",
147
+ "rate": 48000,
148
+ "quantum": 128,
149
+ "reasons": [
150
+ {
151
+ "dimension": "cost",
152
+ "rating": "unknown",
153
+ "code": "hosting.cost.unmeasured-at-rate-and-quantum",
154
+ "params": {
155
+ "rate": 48000,
156
+ "quantum": 128
157
+ }
158
+ }
159
+ ]
160
+ }
161
+ ],
162
+ "measurements": {
163
+ "grid": [
164
+ {
165
+ "rate": 48000,
166
+ "quantum": 512,
167
+ "outcome": "probe.ok",
168
+ "rtSafety": {
169
+ "interposer": true,
170
+ "swept": true,
171
+ "sweepApplicable": true,
172
+ "blocks": 512,
173
+ "allocations": 0,
174
+ "locks": 0,
175
+ "syscalls": 0,
176
+ "events": []
177
+ },
178
+ "noteSweep": {
179
+ "applicable": false
180
+ }
181
+ }
182
+ ],
183
+ "behaviour": {
184
+ "lifecycle": {
185
+ "cycles": 30,
186
+ "instantiated": 30,
187
+ "failed": 0
188
+ },
189
+ "threads": {
190
+ "before": 1,
191
+ "afterFirstInstantiate": 1,
192
+ "afterAllFreed": 1
193
+ },
194
+ "features": {
195
+ "required": []
196
+ }
197
+ }
198
+ },
199
+ "notMeasured": [
200
+ {
201
+ "dimension": "stability",
202
+ "code": "hosting.stability.unsoaked"
203
+ }
204
+ ],
205
+ "tool": {
206
+ "runner": "plugin-hostd-probe 0.12.0",
207
+ "child": "lv2_measure",
208
+ "interposer": "rt_interpose.so"
209
+ },
210
+ "measuredAt": "2026-10-27T01:22:54+00:00",
211
+ "probe": {
212
+ "file": "http___lv2plug.in_plugins_eg-amp@unversioned-f046a60efd45.default.probe.json",
213
+ "sha256": "391812d7d0427cefec9556ffb40b91ba5725897f230c5dce3404a5a0158027f6",
214
+ "bytes": 3303,
215
+ "protocol": {
216
+ "name": "plugin-hostd.probe-protocol",
217
+ "version": 1
218
+ },
219
+ "reason": "on-request",
220
+ "outcome": "probe.ok",
221
+ "complete": true,
222
+ "machineClass": {
223
+ "arch": "aarch64",
224
+ "family": "arm",
225
+ "coreBand": "3-4",
226
+ "clockBand": "1.5-2.5GHz",
227
+ "preemptRt": false,
228
+ "cstatesLimited": false
229
+ },
230
+ "meetsProtocol": false
231
+ }
232
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "format": "plugin-hostd.probe-output",
3
+ "formatVersion": "1.1",
4
+ "run": {
5
+ "id": "20261027T003559Z-14d90-81c48a6b",
6
+ "startedAt": "2026-10-27T00:35:59+00:00",
7
+ "elapsedMs": 322,
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.12.0", "child": "lv2_measure", "interposer": "rt_interpose.so"},
13
+ "via": "runner"
14
+ },
15
+ "plugin": {"format": "lv2", "id": "https://github.com/lucianodato/noise-repellent"},
16
+ "binary": {"path": "nrepel.so", "sha256": "c3b5e21dd9a76cbc84dda3b0d46f5ed860feea854345c5d12af2aa1bdc2466d9", "files": [{"path": "manifest.ttl", "sha256": "be203de993c6df338b38ed2f66e0a4eeca8a38e9f914333cc6f3bc88aa7b5648"}, {"path": "nrepel.so", "sha256": "c3b5e21dd9a76cbc84dda3b0d46f5ed860feea854345c5d12af2aa1bdc2466d9"}, {"path": "nrepel.ttl", "sha256": "273995099bb0576f4a3de0d7b5d8a4f62487b8e377d779f54d9a198cd1740a40"}], "layout": {"scheme": "omx-layout/1", "sha256": "f8736c5e003106dc367de554e12b72241bbfc32cd9d55d2000898fce629cd4df"}},
17
+ "machine": {
18
+ "class": {"arch": "aarch64", "family": "arm", "coreBand": "3-4", "clockBand": "1.5-2.5GHz", "preemptRt": false, "cstatesLimited": false},
19
+ "profile": {"governor": "powersave", "turbo": false, "smt": false, "preempt": "PREEMPT",
20
+ "cpuidle": [],
21
+ "meetsProtocol": false, "unmet": ["probe.profile.governor", "probe.profile.not-pinned"]},
22
+ "pinnedCpus": "0-3"
23
+ },
24
+ "offer": {"id": "default", "realtime": "none"},
25
+ "limits": {"set": "default",
26
+ "applied": [
27
+ {"limit": "wall-clock", "value": 60, "unit": "s", "by": "supervisor"},
28
+ {"limit": "cpu-time", "value": 540, "unit": "s", "by": "rlimit"},
29
+ {"limit": "memory", "value": 4294967296, "unit": "bytes", "by": "rlimit"},
30
+ {"limit": "files", "value": 256, "unit": "count", "by": "rlimit"},
31
+ {"limit": "file-size", "value": 67108864, "unit": "bytes", "by": "rlimit"},
32
+ {"limit": "core-dump", "value": 0, "unit": "bytes", "by": "rlimit"},
33
+ {"limit": "rt-priority", "value": 0, "by": "rlimit"},
34
+ {"limit": "no-new-privs", "by": "prctl"}
35
+ ],
36
+ "unavailable": [
37
+ {"limit": "tasks", "code": "probe.limit.not-implemented"}
38
+ ]
39
+ },
40
+ "steps": [
41
+ {"step": "hash", "outcome": "probe.ok", "elapsedMs": 42, "exitStatus": 0},
42
+ {"step": "instantiate", "outcome": "probe.ok", "elapsedMs": 0, "detail": "read from the child's line"},
43
+ {"step": "rt-safety", "rate": 48000, "quantum": 512, "outcome": "probe.ok", "elapsedMs": 0, "detail": "read from the child's line"},
44
+ {"step": "lifecycle", "outcome": "probe.ok", "elapsedMs": 280, "exitStatus": 0}
45
+ ],
46
+ "grid": [
47
+ {"rate": 48000, "quantum": 512, "outcome": "probe.ok", "rtSafety": {"interposer": true, "swept": true, "sweepApplicable": true, "blocks": 512, "allocations": 1024, "locks": 0, "syscalls": 0, "events": ["malloc ? ?", "free ? ?"]}, "noteSweep": {"applicable": false}}
48
+ ],
49
+ "behaviour": {"lifecycle": {"cycles": 30, "instantiated": 30, "failed": 0}, "threads": {"before": 1, "afterFirstInstantiate": 1, "afterAllFreed": 1}, "features": {"required": ["http://lv2plug.in/ns/ext/urid#map"]}},
50
+ "logs": [{"name": "stderr", "path": "/tmp/plugin-qualify-probe-yfxq0V/child.stderr.log", "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "bytes": 0}]
51
+ }
@@ -0,0 +1,245 @@
1
+ {
2
+ "schema": "plugin-qualify.qualification-record/1",
3
+ "plugin": {
4
+ "format": "lv2",
5
+ "id": "https://github.com/lucianodato/noise-repellent"
6
+ },
7
+ "binary": {
8
+ "path": "nrepel.so",
9
+ "sha256": "c3b5e21dd9a76cbc84dda3b0d46f5ed860feea854345c5d12af2aa1bdc2466d9",
10
+ "files": [
11
+ {
12
+ "path": "manifest.ttl",
13
+ "sha256": "be203de993c6df338b38ed2f66e0a4eeca8a38e9f914333cc6f3bc88aa7b5648"
14
+ },
15
+ {
16
+ "path": "nrepel.so",
17
+ "sha256": "c3b5e21dd9a76cbc84dda3b0d46f5ed860feea854345c5d12af2aa1bdc2466d9"
18
+ },
19
+ {
20
+ "path": "nrepel.ttl",
21
+ "sha256": "273995099bb0576f4a3de0d7b5d8a4f62487b8e377d779f54d9a198cd1740a40"
22
+ }
23
+ ],
24
+ "layout": {
25
+ "scheme": "omx-layout/1",
26
+ "sha256": "f8736c5e003106dc367de554e12b72241bbfc32cd9d55d2000898fce629cd4df"
27
+ }
28
+ },
29
+ "verdicts": [
30
+ {
31
+ "host": "omx-clap-host",
32
+ "measured": true,
33
+ "rating": "unsuitable",
34
+ "qualified": false,
35
+ "hosting": "isolated",
36
+ "arm": "declaration",
37
+ "deciding": "hosting.rt-safety.violations-in-run",
38
+ "reasons": [
39
+ {
40
+ "dimension": "rtSafety",
41
+ "rating": "unsuitable",
42
+ "code": "hosting.rt-safety.violations-in-run",
43
+ "params": {
44
+ "allocations": 1024,
45
+ "syscalls": 0,
46
+ "locks": 0
47
+ }
48
+ }
49
+ ]
50
+ },
51
+ {
52
+ "host": "openmixer-console",
53
+ "measured": true,
54
+ "rating": "unsuitable",
55
+ "qualified": false,
56
+ "hosting": "isolated",
57
+ "arm": "declaration",
58
+ "deciding": "hosting.rt-safety.violations-in-run",
59
+ "reasons": [
60
+ {
61
+ "dimension": "rtSafety",
62
+ "rating": "unsuitable",
63
+ "code": "hosting.rt-safety.violations-in-run",
64
+ "params": {
65
+ "allocations": 1024,
66
+ "syscalls": 0,
67
+ "locks": 0
68
+ }
69
+ }
70
+ ]
71
+ },
72
+ {
73
+ "host": "mod-host",
74
+ "measured": true,
75
+ "rating": "unsuitable",
76
+ "qualified": false,
77
+ "hosting": "isolated",
78
+ "arm": "run",
79
+ "deciding": "mod-host.no-answer",
80
+ "reasons": [
81
+ {
82
+ "dimension": "hostAdmission",
83
+ "rating": "unsuitable",
84
+ "code": "mod-host.no-answer",
85
+ "params": {
86
+ "step": "activate"
87
+ }
88
+ },
89
+ {
90
+ "dimension": "rtSafety",
91
+ "rating": "unsuitable",
92
+ "code": "hosting.rt-safety.violations-in-run",
93
+ "params": {
94
+ "allocations": 1024,
95
+ "syscalls": 0,
96
+ "locks": 0
97
+ }
98
+ }
99
+ ]
100
+ }
101
+ ],
102
+ "tiers": {
103
+ "inProcess": {
104
+ "host": "openmixer-console",
105
+ "measured": true,
106
+ "qualified": false,
107
+ "rating": "unsuitable",
108
+ "deciding": "hosting.rt-safety.violations-in-run"
109
+ },
110
+ "isolated": {
111
+ "host": "mod-host",
112
+ "measured": true,
113
+ "qualified": false,
114
+ "rating": "unsuitable",
115
+ "deciding": "mod-host.no-answer"
116
+ },
117
+ "offeredOn": [],
118
+ "dimmed": "openmixer-console: hosting.rt-safety.violations-in-run; mod-host: mod-host.no-answer"
119
+ },
120
+ "cost": [
121
+ {
122
+ "host": "omx-clap-host",
123
+ "rate": 48000,
124
+ "quantum": 128,
125
+ "reasons": [
126
+ {
127
+ "dimension": "cost",
128
+ "rating": "unknown",
129
+ "code": "hosting.cost.unmeasured-at-rate-and-quantum",
130
+ "params": {
131
+ "rate": 48000,
132
+ "quantum": 128
133
+ }
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ "host": "openmixer-console",
139
+ "rate": 96000,
140
+ "quantum": 1024,
141
+ "reasons": [
142
+ {
143
+ "dimension": "cost",
144
+ "rating": "unknown",
145
+ "code": "hosting.cost.unmeasured-at-rate-and-quantum",
146
+ "params": {
147
+ "rate": 96000,
148
+ "quantum": 1024
149
+ }
150
+ }
151
+ ]
152
+ },
153
+ {
154
+ "host": "mod-host",
155
+ "rate": 48000,
156
+ "quantum": 128,
157
+ "reasons": [
158
+ {
159
+ "dimension": "cost",
160
+ "rating": "unknown",
161
+ "code": "hosting.cost.unmeasured-at-rate-and-quantum",
162
+ "params": {
163
+ "rate": 48000,
164
+ "quantum": 128
165
+ }
166
+ }
167
+ ]
168
+ }
169
+ ],
170
+ "measurements": {
171
+ "grid": [
172
+ {
173
+ "rate": 48000,
174
+ "quantum": 512,
175
+ "outcome": "probe.ok",
176
+ "rtSafety": {
177
+ "interposer": true,
178
+ "swept": true,
179
+ "sweepApplicable": true,
180
+ "blocks": 512,
181
+ "allocations": 1024,
182
+ "locks": 0,
183
+ "syscalls": 0,
184
+ "events": [
185
+ "malloc ? ?",
186
+ "free ? ?"
187
+ ]
188
+ },
189
+ "noteSweep": {
190
+ "applicable": false
191
+ }
192
+ }
193
+ ],
194
+ "behaviour": {
195
+ "lifecycle": {
196
+ "cycles": 30,
197
+ "instantiated": 30,
198
+ "failed": 0
199
+ },
200
+ "threads": {
201
+ "before": 1,
202
+ "afterFirstInstantiate": 1,
203
+ "afterAllFreed": 1
204
+ },
205
+ "features": {
206
+ "required": [
207
+ "http://lv2plug.in/ns/ext/urid#map"
208
+ ]
209
+ }
210
+ }
211
+ },
212
+ "notMeasured": [
213
+ {
214
+ "dimension": "stability",
215
+ "code": "hosting.stability.unsoaked"
216
+ }
217
+ ],
218
+ "tool": {
219
+ "runner": "plugin-hostd-probe 0.12.0",
220
+ "child": "lv2_measure",
221
+ "interposer": "rt_interpose.so"
222
+ },
223
+ "measuredAt": "2026-10-27T00:35:59+00:00",
224
+ "probe": {
225
+ "file": "https___github.com_lucianodato_noise-repellent@unversioned-c3b5e21dd9a7.default.probe.json",
226
+ "sha256": "7520c08b8bfab1159cb221754a94b075887c360080f8db36a7ffbf665ff08251",
227
+ "bytes": 3390,
228
+ "protocol": {
229
+ "name": "plugin-hostd.probe-protocol",
230
+ "version": 1
231
+ },
232
+ "reason": "on-request",
233
+ "outcome": "probe.ok",
234
+ "complete": true,
235
+ "machineClass": {
236
+ "arch": "aarch64",
237
+ "family": "arm",
238
+ "coreBand": "3-4",
239
+ "clockBand": "1.5-2.5GHz",
240
+ "preemptRt": false,
241
+ "cstatesLimited": false
242
+ },
243
+ "meetsProtocol": false
244
+ }
245
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "format": "plugin-hostd.probe-output",
3
+ "formatVersion": "1.1",
4
+ "run": {
5
+ "id": "20261028T205658Z-31dbd-62d73c25",
6
+ "startedAt": "2026-10-28T20:56:58+00:00",
7
+ "elapsedMs": 371,
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.13.1", "child": "clap-qualify", "interposer": "rt_interpose.so"},
13
+ "via": "runner"
14
+ },
15
+ "plugin": {"format": "clap", "id": "in.lsp-plug.impulse_responses_mono"},
16
+ "binary": {"path": "/usr/lib/clap/lsp-plugins.clap", "sha256": "d5235d2f5f53eb3641dc9225ff5a912b5eae718cd0abbecd46350dba666f19a2", "files": [{"path": "lsp-plugins.clap", "sha256": "d5235d2f5f53eb3641dc9225ff5a912b5eae718cd0abbecd46350dba666f19a2"}], "layout": {"scheme": "omx-layout/1", "sha256": "86f71f835f0db0150b6b219b738b97ae0d9d423d2305e29ebdb172b8e20a6381"}},
17
+ "machine": {
18
+ "class": {"arch": "aarch64", "family": "arm", "coreBand": "3-4", "clockBand": "1.5-2.5GHz", "preemptRt": false, "cstatesLimited": false},
19
+ "profile": {"governor": "powersave", "turbo": false, "smt": false, "preempt": "PREEMPT",
20
+ "cpuidle": [],
21
+ "meetsProtocol": false, "unmet": ["probe.profile.governor", "probe.profile.not-pinned"]},
22
+ "pinnedCpus": "0-3"
23
+ },
24
+ "offer": {"id": "custom", "clapExtensions": ["clap.log", "clap.thread-check", "clap.latency", "clap.params", "clap.audio-ports", "clap.state", "clap.note-ports", "clap.note-name", "clap.voice-info", "clap.event-registry", "clap.timer-support", "clap.posix-fd-support", "clap.thread-pool", "clap.tail", "clap.surround/4", "clap.ambisonic/3", "clap.audio-ports-config", "clap.preset-load/2", "clap.track-info/1", "clap.remote-controls/2"], "realtime": "none"},
25
+ "limits": {"set": "default",
26
+ "applied": [
27
+ {"limit": "wall-clock", "value": 60, "unit": "s", "by": "supervisor"},
28
+ {"limit": "cpu-time", "value": 540, "unit": "s", "by": "rlimit"},
29
+ {"limit": "memory", "value": 4294967296, "unit": "bytes", "by": "rlimit"},
30
+ {"limit": "files", "value": 256, "unit": "count", "by": "rlimit"},
31
+ {"limit": "file-size", "value": 67108864, "unit": "bytes", "by": "rlimit"},
32
+ {"limit": "core-dump", "value": 0, "unit": "bytes", "by": "rlimit"},
33
+ {"limit": "rt-priority", "value": 0, "by": "rlimit"},
34
+ {"limit": "no-new-privs", "by": "prctl"}
35
+ ],
36
+ "unavailable": [
37
+ {"limit": "tasks", "code": "probe.limit.not-implemented"}
38
+ ]
39
+ },
40
+ "steps": [
41
+ {"step": "hash", "outcome": "probe.ok", "elapsedMs": 0},
42
+ {"step": "lifecycle", "outcome": "probe.ok", "elapsedMs": 371, "exitStatus": 0},
43
+ {"step": "instantiate", "outcome": "probe.ok", "elapsedMs": 0, "detail": "read from the child's line"},
44
+ {"step": "latency", "rate": 48000, "quantum": 512, "outcome": "probe.ok", "elapsedMs": 0, "detail": "read from the child's line"},
45
+ {"step": "rt-safety", "outcome": "probe.ok", "elapsedMs": 0, "detail": "counts are totals over every rate, read from the child's line"},
46
+ {"step": "note-sweep", "outcome": "probe.not-attempted", "elapsedMs": 0, "detail": "no note input"}
47
+ ],
48
+ "grid": [
49
+ {"rate": 48000, "quantum": 512, "outcome": "probe.ok", "latency": {"declaredFrames": 0, "measuredFrames": 0, "method": "impulse-onset"}, "cost": {"unit": "ns-per-sample", "median": 213.506, "percentile": {"p": 95, "value": 230.143}, "min": 6.76367, "max": 305.592, "blocks": 512, "warmupBlocks": 64}, "rtSafety": {"interposer": true, "swept": true, "sweepApplicable": true, "blocks": 512, "allocations": 0, "locks": 0, "syscalls": 1, "threadViolations": 0, "processErrors": 0, "events": ["nanosleep"]}, "noteSweep": {"applicable": false}}
50
+ ],
51
+ "logs": [{"name": "stderr", "path": "/tmp/plugin-qualify-probe-wBOBoJ/child.stderr.log", "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "bytes": 0}]
52
+ }