@trillboards/edge-sdk 0.2.93 → 0.2.95

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.
@@ -81,6 +81,24 @@
81
81
  "onnx": "forklift_akdve_11n.onnx",
82
82
  "litert": "forklift_akdve_11n.tflite"
83
83
  },
84
+ {
85
+ "layout": "anchor_4_plus_nc",
86
+ "imgsz": 640,
87
+ "box_scale_applied": 640.0,
88
+ "box_residual_px": 0.001003265380859375,
89
+ "box_residual_unscaled": 651.8335539102554,
90
+ "cls_residual": 1.3380153518482985e-07,
91
+ "pass": true,
92
+ "reason": "ok",
93
+ "onnx": "gh_forklift_combine.onnx",
94
+ "litert": "gh_forklift_combine.tflite",
95
+ "model_id": "gh_forklift_combine",
96
+ "box_units": "normalized",
97
+ "box_scale_to_pixels": 640.0,
98
+ "litert_sha256": "c196a45613726e1a0bd522cd7140fde58784d71d9ffadfec00b033f8914b9df5",
99
+ "litert_bytes": 12257807,
100
+ "evidence": "twin parity: box residual 0.001003 px after x640, UNSCALED 651.8 px \u2014 the scale is load-bearing, not cosmetic. Class residual 1.34e-07 with no scaling at all."
101
+ },
84
102
  {
85
103
  "layout": "anchor_4_plus_nc",
86
104
  "imgsz": 640,
@@ -141,6 +159,24 @@
141
159
  "onnx": "hg-v6.onnx",
142
160
  "litert": "hg-v6.tflite"
143
161
  },
162
+ {
163
+ "layout": "anchor_4_plus_nc",
164
+ "imgsz": 640,
165
+ "box_scale_applied": 640.0,
166
+ "box_residual_px": 0.001068115234375,
167
+ "box_residual_unscaled": 634.6248278617859,
168
+ "cls_residual": 1.2764758139383048e-07,
169
+ "pass": true,
170
+ "reason": "ok",
171
+ "onnx": "ppe_construction_17cls_v8n.onnx",
172
+ "litert": "ppe_construction_17cls_v8n.tflite",
173
+ "model_id": "ppe_construction_17cls_v8n",
174
+ "box_units": "normalized",
175
+ "box_scale_to_pixels": 640.0,
176
+ "litert_sha256": "08ebf94fec8c864eb4c1fae009d8f7686252c622fafed37c71d80f117884173b",
177
+ "litert_bytes": 12268767,
178
+ "evidence": "twin parity: box residual 0.001068 px after x640, UNSCALED 634.6 px \u2014 the scale is load-bearing, not cosmetic. Class residual 1.28e-07 with no scaling at all."
179
+ },
144
180
  {
145
181
  "layout": "anchor_4_plus_nc",
146
182
  "imgsz": 640,
@@ -177,6 +213,42 @@
177
213
  "onnx": "ppe_keremberke_v8s.onnx",
178
214
  "litert": "ppe_keremberke_v8s.tflite"
179
215
  },
216
+ {
217
+ "layout": "anchor_4_plus_nc",
218
+ "imgsz": 640,
219
+ "box_scale_applied": 640.0,
220
+ "box_residual_px": 0.00225830078125,
221
+ "box_residual_unscaled": 641.4581891298294,
222
+ "cls_residual": 1.3920431740643835e-07,
223
+ "pass": true,
224
+ "reason": "ok",
225
+ "onnx": "ppe_killuminati_19cls_v8s.onnx",
226
+ "litert": "ppe_killuminati_19cls_v8s.tflite",
227
+ "model_id": "ppe_killuminati_19cls_v8s",
228
+ "box_units": "normalized",
229
+ "box_scale_to_pixels": 640.0,
230
+ "litert_sha256": "493f93835ba89904296f14b5dd8dc1451612ec319fdf968a29bede69b24debb5",
231
+ "litert_bytes": 44764391,
232
+ "evidence": "twin parity: box residual 0.002258 px after x640, UNSCALED 641.5 px \u2014 the scale is load-bearing, not cosmetic. Class residual 1.39e-07 with no scaling at all."
233
+ },
234
+ {
235
+ "layout": "anchor_4_plus_nc",
236
+ "imgsz": 640,
237
+ "box_scale_applied": 640.0,
238
+ "box_residual_px": 0.0002117156982421875,
239
+ "box_residual_unscaled": 636.5309634804726,
240
+ "cls_residual": 1.373183451391924e-07,
241
+ "pass": true,
242
+ "reason": "ok",
243
+ "onnx": "ppe_vyra_14cls_v8m.onnx",
244
+ "litert": "ppe_vyra_14cls_v8m.tflite",
245
+ "model_id": "ppe_vyra_14cls_v8m",
246
+ "box_units": "normalized",
247
+ "box_scale_to_pixels": 640.0,
248
+ "litert_sha256": "bef4efe403c834d1b05fa5217d97fcbcefde3da890b964141692fad66ca260f1",
249
+ "litert_bytes": 103663784,
250
+ "evidence": "twin parity: box residual 0.0002117 px after x640, UNSCALED 636.5 px \u2014 the scale is load-bearing, not cosmetic. Class residual 1.37e-07 with no scaling at all."
251
+ },
180
252
  {
181
253
  "layout": "end2end_n_6",
182
254
  "imgsz": 640,
@@ -238,4 +310,4 @@
238
310
  "litert": "weapon_gunknife_11n.tflite"
239
311
  }
240
312
  ]
241
- }
313
+ }
@@ -0,0 +1,618 @@
1
+ """`scripts/sensing/onnx_artifact_probe.py` — the DECLARED layout, VERIFIED.
2
+
3
+ WHY THIS SUITE LIVES HERE AND NOT NEXT TO THE SCRIPT
4
+ ----------------------------------------------------
5
+ The probe is Python, and the only lane in this repo that executes Python is
6
+ `detector-service`, which discovers `test_*.py` under `deploy/detector`. Putting
7
+ these cases anywhere else would make them the shape the probe itself is written
8
+ against: a check that exists and never runs. `test_session.py`'s
9
+ `TestEveryVocabularyConstructionDeclaresItsVariant` already reaches out of this
10
+ package into `scripts/sensing` for the same reason, and it did so because the
11
+ first version of that guard scanned only `deploy/detector` and passed while the
12
+ probe held a broken `ModelVocabulary` construction.
13
+
14
+ STDLIB ONLY, so it runs on that lane's bare interpreter — no onnxruntime, no
15
+ numpy, no Pillow, no ~12 MiB artifact. Everything under test here is arithmetic
16
+ over shapes an exporter wrote down, so a fake output descriptor with a `.name`
17
+ and a `.shape` is not a weaker input than a real `NodeArg`; it is the same two
18
+ fields. What it cannot reach — that a graph this accepts also RUNS — is covered
19
+ by the probe's own measurement child, which loads the artifact and infers.
20
+
21
+ WHAT IS BEING PROTECTED
22
+ -----------------------
23
+ Three failures, none of which raises anything at runtime:
24
+
25
+ * a DEFAULT that moved. The probe answers `--artifact` alone exactly as it did
26
+ before layouts were declarable, which is the only reason `rfdetr_medium`'s
27
+ published probe result is still reproducible. A new flag that quietly widened
28
+ that path would republish a different number under the same provenance.
29
+ * a layout DECLARED that the graph cannot speak. `[1, 300, 6]` and
30
+ `[1, 6, 8400]` are both rank-3 with a 6 in them, and the wrong one decodes
31
+ into a confident, meaningless table.
32
+ * a `4 + nc` check counting the wrong `nc`. Distinct NAMES and LOGIT SLOTS are
33
+ different numbers on real artifacts in both directions, and using the name
34
+ count rejects healthy graphs.
35
+ """
36
+
37
+ from __future__ import annotations
38
+
39
+ import contextlib
40
+ import importlib.util
41
+ import io
42
+ import json
43
+ import pathlib
44
+ import sys
45
+ import tempfile
46
+ import unittest
47
+
48
+ from trillboards_detector import labels as labels_mod
49
+
50
+
51
+ def _load_probe():
52
+ """Import the probe BY PATH, or return None on a checkout that has none.
53
+
54
+ `deploy/` ships inside the npm tarball, so on an installed connector
55
+ `scripts/sensing` is simply absent. The module is loaded rather than asserted
56
+ for exactly that reason — the same concession `test_session.py` makes about
57
+ the repo roots it scans.
58
+ """
59
+ here = pathlib.Path(__file__).resolve().parent.parent
60
+ for parent in here.parents:
61
+ # A git WORKTREE's `.git` is a file, not a directory.
62
+ if not (parent / ".git").exists():
63
+ continue
64
+ candidate = parent / "scripts" / "sensing" / "onnx_artifact_probe.py"
65
+ if not candidate.is_file():
66
+ return None
67
+ spec = importlib.util.spec_from_file_location("onnx_artifact_probe_under_test", candidate)
68
+ module = importlib.util.module_from_spec(spec)
69
+ spec.loader.exec_module(module)
70
+ return module
71
+ return None
72
+
73
+
74
+ PROBE = _load_probe()
75
+ NO_PROBE = "scripts/sensing/onnx_artifact_probe.py is not in this checkout"
76
+
77
+
78
+ class Out:
79
+ """An ORT output descriptor, which is a `.name` and a `.shape` and nothing else.
80
+
81
+ A dynamic axis arrives from onnxruntime as a symbolic STRING rather than an
82
+ int, so several cases here pass one — that is a real artifact property and
83
+ the probe's branches turn on it.
84
+ """
85
+
86
+ def __init__(self, name: str, shape: "list"):
87
+ self.name = name
88
+ self.shape = shape
89
+
90
+ def __repr__(self) -> str: # pragma: no cover - only reached in a failure message
91
+ return f"Out({self.name!r}, {self.shape!r})"
92
+
93
+
94
+ DETS_LABELS_91 = [Out("dets", [1, 300, 4]), Out("labels", [1, 300, 91])]
95
+ #: `ppe_vyra_14cls_v8m.onnx`, measured: 14 classes, so 4 + 14 = 18 channels.
96
+ ANCHOR_14 = [Out("output0", [1, 18, 8400])]
97
+ #: `gh_fall_tonlong.onnx`, measured: 11 channels over 8400 anchors.
98
+ ANCHOR_FALL = [Out("output0", [1, 11, 8400])]
99
+ END2END = [Out("output0", [1, 300, 6])]
100
+
101
+ #: `gh_fall_tonlong.onnx`'s own `names` metadata, byte for byte. SEVEN slots,
102
+ #: and `Violence`/`violence` fold to ONE canonical name.
103
+ FALL_NAMES = {0: "Violence", 1: "fall", 2: "fire", 3: "sit", 4: "sleep", 5: "standing", 6: "violence"}
104
+
105
+
106
+ @contextlib.contextmanager
107
+ def _captured_stdout():
108
+ buf = io.StringIO()
109
+ original = sys.stdout
110
+ sys.stdout = buf
111
+ try:
112
+ yield buf
113
+ finally:
114
+ sys.stdout = original
115
+
116
+
117
+ class ProbeCase(unittest.TestCase):
118
+ """Shared helpers: the probe refuses by writing JSON and exiting 1."""
119
+
120
+ def args(self, *argv):
121
+ """A parsed `Namespace` through the REAL CLI, never a hand-built stand-in.
122
+
123
+ Every case that pretends to be a command line has to go through the
124
+ parser the command line goes through, or the suite stops covering the
125
+ surface it claims to.
126
+ """
127
+ return PROBE.parse_args(["--artifact", "unused.onnx", *argv])
128
+
129
+ def assertRefuses(self, fn, *args, **kwargs):
130
+ """Run something expected to `_fail`, and return its refusal payload.
131
+
132
+ Asserts the WHOLE contract of a refusal, not merely that it happened:
133
+ `{"ok": false, "step": ..., "reason": ...}` on stdout and exit 1. The
134
+ publisher reads `reason` off the LAST stdout line of a non-zero exit, so
135
+ a refusal that raised instead — or exited 0, or wrote prose — would reach
136
+ it as "the probe failed" with a stack trace attached.
137
+ """
138
+ with _captured_stdout() as buf:
139
+ with self.assertRaises(SystemExit) as raised:
140
+ fn(*args, **kwargs)
141
+ self.assertEqual(raised.exception.code, 1)
142
+ lines = [line for line in buf.getvalue().splitlines() if line.strip()]
143
+ self.assertTrue(lines, "a refusal must write JSON on stdout")
144
+ payload = json.loads(lines[-1])
145
+ self.assertIs(payload["ok"], False)
146
+ self.assertTrue(payload["step"])
147
+ self.assertTrue(payload["reason"])
148
+ return payload
149
+
150
+
151
+ @unittest.skipIf(PROBE is None, NO_PROBE)
152
+ class TestTheDefaultDidNotMove(ProbeCase):
153
+ """`--artifact` alone must answer exactly as it did before layouts existed.
154
+
155
+ `rfdetr_medium` was published by a run that passed nothing else, and its
156
+ `coco_classes`, `resident_mb` and graph contract are committed against that
157
+ run. A widened default would republish different numbers under the same
158
+ provenance, which is worse than a refusal because nothing would notice.
159
+ """
160
+
161
+ def test_no_declaration_is_the_rfdetr_contract(self):
162
+ contract, source = PROBE._resolve_variant(labels_mod, self.args())
163
+ self.assertEqual(contract.output_layout, labels_mod.RFDETR_DETS_LABELS)
164
+ self.assertEqual(contract.box_units, labels_mod.BOX_UNITS_PIXELS)
165
+ self.assertEqual(contract.box_scale_to_pixels, 1.0)
166
+ self.assertIn("default", source)
167
+
168
+ def test_a_graph_with_no_labels_output_is_still_refused(self):
169
+ reason = self.assertRefuses(
170
+ PROBE._graph_class_axis, labels_mod, labels_mod.RFDETR_DETS_LABELS, ANCHOR_14,
171
+ )["reason"]
172
+ # The refusal that has always been here, and the fact that identifies it.
173
+ self.assertIn("`labels`", reason)
174
+ # It now also says what to do about it, because there IS something.
175
+ self.assertIn("--variant-from-card", reason)
176
+ self.assertIn("output0[1, 18, 8400]", reason)
177
+
178
+ def test_the_rfdetr_class_axis_is_still_read_off_labels(self):
179
+ self.assertEqual(
180
+ PROBE._graph_class_axis(labels_mod, labels_mod.RFDETR_DETS_LABELS, DETS_LABELS_91),
181
+ 91,
182
+ )
183
+
184
+ def test_a_dynamic_rfdetr_class_axis_is_still_refused(self):
185
+ outputs = [Out("dets", [1, 300, 4]), Out("labels", [1, 300, "num_classes"])]
186
+ reason = self.assertRefuses(
187
+ PROBE._graph_class_axis, labels_mod, labels_mod.RFDETR_DETS_LABELS, outputs,
188
+ )["reason"]
189
+ self.assertIn("fixed class axis", reason)
190
+
191
+
192
+ @unittest.skipIf(PROBE is None, NO_PROBE)
193
+ class TestDeclaredLayoutIsVerified(ProbeCase):
194
+ """Each layout accepted on a shape it can speak, refused on one it cannot.
195
+
196
+ The refusals name the DECLARED layout and the ACTUAL outputs, because those
197
+ two facts are what tells an operator whether the artifact is wrong or the
198
+ card is.
199
+ """
200
+
201
+ def test_anchor_accepted_and_its_class_axis_is_channels_minus_four(self):
202
+ self.assertEqual(
203
+ PROBE._graph_class_axis(labels_mod, labels_mod.ANCHOR_4_PLUS_NC, ANCHOR_14), 14,
204
+ )
205
+
206
+ def test_end2end_accepted_and_declares_no_class_axis(self):
207
+ # `None`, not 0 and not a guess: the class index rides in column 5, so
208
+ # the graph says nothing at all about how many classes this model has.
209
+ self.assertIsNone(
210
+ PROBE._graph_class_axis(labels_mod, labels_mod.END2END_N_6, END2END),
211
+ )
212
+
213
+ def test_anchor_refused_on_an_end2end_shape(self):
214
+ # THE DISAMBIGUATOR. `[1, 300, 6]` read as an anchor head is 296 classes
215
+ # over 6 anchors and decodes without raising.
216
+ reason = self.assertRefuses(
217
+ PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC, END2END,
218
+ )["reason"]
219
+ self.assertIn(labels_mod.ANCHOR_4_PLUS_NC, reason)
220
+ self.assertIn("output0[1, 300, 6]", reason)
221
+ self.assertIn("296 classes over 6 anchors", reason)
222
+
223
+ def test_end2end_refused_on_an_anchor_shape(self):
224
+ reason = self.assertRefuses(
225
+ PROBE._graph_class_axis, labels_mod, labels_mod.END2END_N_6, ANCHOR_FALL,
226
+ )["reason"]
227
+ self.assertIn(labels_mod.END2END_N_6, reason)
228
+ self.assertIn("output0[1, 11, 8400]", reason)
229
+
230
+ def test_rfdetr_refused_on_an_anchor_shape(self):
231
+ reason = self.assertRefuses(
232
+ PROBE._graph_class_axis, labels_mod, labels_mod.RFDETR_DETS_LABELS, ANCHOR_FALL,
233
+ )["reason"]
234
+ self.assertIn(labels_mod.RFDETR_DETS_LABELS, reason)
235
+
236
+ def test_a_single_output_layout_refuses_a_two_output_graph(self):
237
+ outputs = [Out("output0", [1, 18, 8400]), Out("proto", [1, 32, 160, 160])]
238
+ reason = self.assertRefuses(
239
+ PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC, outputs,
240
+ )["reason"]
241
+ self.assertIn("exactly ONE graph output", reason)
242
+ self.assertIn("proto", reason)
243
+
244
+ def test_anchor_refuses_a_rank_two_output(self):
245
+ reason = self.assertRefuses(
246
+ PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC, [Out("output0", [18, 8400])],
247
+ )["reason"]
248
+ self.assertIn("rank-3", reason)
249
+
250
+ def test_anchor_refuses_a_batch_that_is_not_one(self):
251
+ reason = self.assertRefuses(
252
+ PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC, [Out("output0", [4, 18, 8400])],
253
+ )["reason"]
254
+ self.assertIn("batch-1", reason)
255
+
256
+ def test_anchor_refuses_a_dynamic_class_axis(self):
257
+ # The class count is one of the two numbers a detector arm is meaningless
258
+ # without, and a symbolic axis does not carry it.
259
+ reason = self.assertRefuses(
260
+ PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC,
261
+ [Out("output0", [1, "channels", 8400])],
262
+ )["reason"]
263
+ self.assertIn("dynamic", reason)
264
+
265
+ def test_anchor_refuses_box_channels_with_no_class_left(self):
266
+ reason = self.assertRefuses(
267
+ PROBE._graph_class_axis, labels_mod, labels_mod.ANCHOR_4_PLUS_NC, [Out("output0", [1, 4, 8400])],
268
+ )["reason"]
269
+ self.assertIn("at least one class", reason)
270
+
271
+ def test_a_dynamic_anchor_count_does_not_block_a_real_head(self):
272
+ # `anchors > channels` is skipped rather than guessed when the axis is
273
+ # symbolic. The tensor ORT actually returns is still checked by
274
+ # `decode_anchor_4_plus_nc`'s own `expected_classes` refusal.
275
+ self.assertEqual(
276
+ PROBE._graph_class_axis(
277
+ labels_mod, labels_mod.ANCHOR_4_PLUS_NC, [Out("output0", [1, 18, "anchors"])],
278
+ ),
279
+ 14,
280
+ )
281
+
282
+
283
+ @unittest.skipIf(PROBE is None, NO_PROBE)
284
+ class TestFourPlusNcCountsLogitSlots(ProbeCase):
285
+ """`4 + nc` where nc is the LOGIT WIDTH — never the number of distinct names.
286
+
287
+ This is the case that would silently invert the check. Both directions are
288
+ live on real artifacts:
289
+
290
+ * COCO-91 names 80 classes on a 91-wide axis (gaps in the category ids);
291
+ * `gh_fall_tonlong` declares SEVEN slots of which `Violence` and `violence`
292
+ fold to one canonical name, so it has 7 logit slots and 6 names.
293
+
294
+ Its graph is `[1, 11, 8400]`. `4 + 7` is 11 and matches; `4 + 6` is 10 and
295
+ would reject a perfectly healthy head.
296
+
297
+ `_verify_class_axis_width` passes by construction on a real run — the width it
298
+ is handed was read off the same graph — so these cases are what EXERCISES it.
299
+ That is the point of it: it is a tripwire on the derivation, and a tripwire
300
+ nothing pulls is indistinguishable from one that is wired wrong.
301
+ """
302
+
303
+ def test_the_fall_artifact_has_seven_slots_and_six_names(self):
304
+ slot_map = PROBE._canonical_slot_map(labels_mod, FALL_NAMES)
305
+ self.assertEqual(len(slot_map), 7)
306
+ self.assertEqual(len(set(slot_map.values())), 6)
307
+ self.assertEqual(slot_map[0], slot_map[6])
308
+
309
+ def test_the_logit_width_matches_the_real_graph(self):
310
+ # No refusal: this is the healthy case, and it must stay healthy.
311
+ PROBE._verify_class_axis_width(
312
+ labels_mod, labels_mod.ANCHOR_4_PLUS_NC, ANCHOR_FALL, 7,
313
+ )
314
+
315
+ def test_the_distinct_name_count_would_reject_the_same_graph(self):
316
+ reason = self.assertRefuses(
317
+ PROBE._verify_class_axis_width,
318
+ labels_mod, labels_mod.ANCHOR_4_PLUS_NC, ANCHOR_FALL, 6,
319
+ )["reason"]
320
+ self.assertIn("11 wide", reason)
321
+ self.assertIn("needs 10", reason)
322
+
323
+ def test_a_committed_vocabulary_narrower_than_the_graph_is_refused(self):
324
+ reason = self.assertRefuses(
325
+ PROBE._verify_class_axis_width,
326
+ labels_mod, labels_mod.ANCHOR_4_PLUS_NC, ANCHOR_14, 13,
327
+ )["reason"]
328
+ self.assertIn("18 wide", reason)
329
+ self.assertIn("needs 17", reason)
330
+
331
+ def test_rfdetr_width_is_checked_against_the_labels_axis(self):
332
+ PROBE._verify_class_axis_width(
333
+ labels_mod, labels_mod.RFDETR_DETS_LABELS, DETS_LABELS_91, 91,
334
+ )
335
+ reason = self.assertRefuses(
336
+ PROBE._verify_class_axis_width,
337
+ labels_mod, labels_mod.RFDETR_DETS_LABELS, DETS_LABELS_91, 80,
338
+ )["reason"]
339
+ # COCO-91 names EIGHTY classes on a NINETY-ONE-wide axis, so the name
340
+ # count is the wrong number here too — in the other direction.
341
+ self.assertIn("91 wide", reason)
342
+
343
+ def test_end2end_has_no_width_to_check(self):
344
+ # Not an omission: the class index is a column, so any width is
345
+ # consistent with the graph and a check would be theatre.
346
+ PROBE._verify_class_axis_width(labels_mod, labels_mod.END2END_N_6, END2END, 3)
347
+ PROBE._verify_class_axis_width(labels_mod, labels_mod.END2END_N_6, END2END, 91)
348
+
349
+ def test_a_vocabulary_with_two_spellings_of_one_word_is_unpublishable(self):
350
+ # The other half of the same artifact: the SHAPE is fine, the LIST is
351
+ # not, and `ModelVocabulary` refuses it at construction on a device too.
352
+ with self.assertRaises(ValueError) as raised:
353
+ PROBE._build_vocabulary(
354
+ labels_mod,
355
+ "fall_specialist",
356
+ PROBE._canonical_slot_map(labels_mod, FALL_NAMES),
357
+ 7,
358
+ labels_mod.VariantContract(
359
+ labels_mod.ANCHOR_4_PLUS_NC, labels_mod.BOX_UNITS_PIXELS, 1.0,
360
+ ),
361
+ )
362
+ self.assertIn("two slots share one class name", str(raised.exception))
363
+
364
+
365
+ @unittest.skipIf(PROBE is None, NO_PROBE)
366
+ class TestBoxUnitsAreRecordedNeverInvented(ProbeCase):
367
+ """A coordinate space is declared or the run is refused. It is never guessed.
368
+
369
+ `session.py` multiplies by `box_scale_to_pixels` and draws, without ever
370
+ re-deriving from the tensor, so a defaulted value is a 640x error that raises
371
+ nothing on an unpadded frame. RF-DETR is the one exemption and it is
372
+ structural: its branch calls `postprocess`, which does its own
373
+ normalised-to-frame scaling and never reads the contract.
374
+ """
375
+
376
+ def test_a_non_rfdetr_layout_without_box_units_is_refused(self):
377
+ reason = self.assertRefuses(
378
+ PROBE._resolve_variant, labels_mod, self.args("--output-layout", labels_mod.ANCHOR_4_PLUS_NC),
379
+ )["reason"]
380
+ self.assertIn("--box-units", reason)
381
+ self.assertIn("640x too small", reason)
382
+
383
+ def test_end2end_without_box_units_is_refused_too(self):
384
+ self.assertRefuses(
385
+ PROBE._resolve_variant, labels_mod, self.args("--output-layout", labels_mod.END2END_N_6),
386
+ )
387
+
388
+ def test_normalized_without_a_scale_is_refused(self):
389
+ # 1.0 IS positive, so `VariantContract` would accept the default and the
390
+ # boxes would be silently wrong. The refusal has to happen before it.
391
+ reason = self.assertRefuses(
392
+ PROBE._resolve_variant, labels_mod,
393
+ self.args("--output-layout", labels_mod.ANCHOR_4_PLUS_NC, "--box-units", "normalized"),
394
+ )["reason"]
395
+ self.assertIn("--box-scale-to-pixels", reason)
396
+
397
+ def test_normalized_with_a_scale_is_carried_through(self):
398
+ contract, source = PROBE._resolve_variant(labels_mod, self.args(
399
+ "--output-layout", labels_mod.ANCHOR_4_PLUS_NC,
400
+ "--box-units", "normalized", "--box-scale-to-pixels", "640",
401
+ ))
402
+ self.assertEqual(contract.box_units, labels_mod.BOX_UNITS_NORMALIZED)
403
+ self.assertEqual(contract.box_scale_to_pixels, 640.0)
404
+ self.assertIn("--output-layout", source)
405
+
406
+ def test_pixels_with_a_scale_that_is_not_one_is_refused(self):
407
+ reason = self.assertRefuses(
408
+ PROBE._resolve_variant, labels_mod,
409
+ self.args("--output-layout", labels_mod.ANCHOR_4_PLUS_NC,
410
+ "--box-units", "pixels", "--box-scale-to-pixels", "640"),
411
+ )["reason"]
412
+ self.assertIn("already pixels", reason)
413
+
414
+ def test_a_scale_without_units_is_refused_rather_than_overwritten(self):
415
+ # RF-DETR is the one layout whose units may be omitted, so it is also the
416
+ # one place a declared scale could be silently replaced by the 1.0 that
417
+ # fallback supplies. A declaration accepted and discarded is worse than a
418
+ # refusal: nothing downstream can tell it happened.
419
+ reason = self.assertRefuses(
420
+ PROBE._resolve_variant, labels_mod,
421
+ self.args("--output-layout", labels_mod.RFDETR_DETS_LABELS, "--box-scale-to-pixels", "640"),
422
+ )["reason"]
423
+ self.assertIn("no box_units", reason)
424
+ self.assertIn("640", reason)
425
+
426
+ def test_units_without_a_layout_are_a_claim_about_nothing(self):
427
+ reason = self.assertRefuses(
428
+ PROBE._resolve_variant, labels_mod, self.args("--box-units", "pixels"),
429
+ )["reason"]
430
+ self.assertIn("--output-layout", reason)
431
+
432
+ def test_an_unknown_layout_is_refused_by_name(self):
433
+ reason = self.assertRefuses(
434
+ PROBE._resolve_variant, labels_mod, self.args("--output-layout", "yolo_v8_raw"),
435
+ )["reason"]
436
+ self.assertIn("yolo_v8_raw", reason)
437
+
438
+ def test_an_unknown_box_unit_is_refused_by_name(self):
439
+ reason = self.assertRefuses(
440
+ PROBE._resolve_variant, labels_mod,
441
+ self.args("--output-layout", labels_mod.ANCHOR_4_PLUS_NC, "--box-units", "pixel"),
442
+ )["reason"]
443
+ self.assertIn("'pixel'", reason)
444
+
445
+
446
+ @unittest.skipIf(PROBE is None, NO_PROBE)
447
+ class TestVariantFromCard(ProbeCase):
448
+ """The card is the primary path: a MEASUREMENT with provenance, not a claim."""
449
+
450
+ def _card(self, variant, **extra):
451
+ handle = tempfile.NamedTemporaryFile("w", suffix=".json", delete=False)
452
+ blob = {"schema": "detector-score-card/1", "verdict": {"publishable": True}}
453
+ blob.update(extra)
454
+ if variant is not None:
455
+ blob["variant"] = variant
456
+ json.dump(blob, handle)
457
+ handle.close()
458
+ self.addCleanup(lambda: pathlib.Path(handle.name).unlink(missing_ok=True))
459
+ return handle.name
460
+
461
+ #: The `variant` block `score-detector-candidate.js` wrote for every one of
462
+ #: the five staged specialists, verbatim in shape.
463
+ MEASURED = {
464
+ "format": "onnx",
465
+ "output_layout": "anchor_4_plus_nc",
466
+ "end2end": False,
467
+ "box_units": "pixels",
468
+ "box_scale_to_pixels": 1,
469
+ "box_units_evidence": "max|box channel| = 640.0000 over 110 real frames",
470
+ }
471
+
472
+ def test_the_three_values_are_read_off_the_card(self):
473
+ contract, source = PROBE._resolve_variant(
474
+ labels_mod, self.args("--variant-from-card", self._card(self.MEASURED)),
475
+ )
476
+ self.assertEqual(contract.output_layout, labels_mod.ANCHOR_4_PLUS_NC)
477
+ self.assertEqual(contract.box_units, labels_mod.BOX_UNITS_PIXELS)
478
+ # A JSON `1` is a scale of 1.0. `VariantContract` compares it against
479
+ # 1.0 exactly, so the coercion is load-bearing rather than cosmetic.
480
+ self.assertEqual(contract.box_scale_to_pixels, 1.0)
481
+ self.assertIn("--variant-from-card", source)
482
+
483
+ def test_a_card_with_no_variant_block_is_refused(self):
484
+ reason = self.assertRefuses(
485
+ PROBE._resolve_variant, labels_mod, self.args("--variant-from-card", self._card(None)),
486
+ )["reason"]
487
+ self.assertIn("no `variant` block", reason)
488
+
489
+ def test_a_partial_variant_block_is_refused(self):
490
+ partial = {k: v for k, v in self.MEASURED.items() if k != "box_units"}
491
+ reason = self.assertRefuses(
492
+ PROBE._resolve_variant, labels_mod, self.args("--variant-from-card", self._card(partial)),
493
+ )["reason"]
494
+ self.assertIn("variant.box_units", reason)
495
+
496
+ def test_unreadable_json_is_refused_rather_than_raised(self):
497
+ handle = tempfile.NamedTemporaryFile("w", suffix=".json", delete=False)
498
+ handle.write("{not json")
499
+ handle.close()
500
+ self.addCleanup(lambda: pathlib.Path(handle.name).unlink(missing_ok=True))
501
+ self.assertRefuses(
502
+ PROBE._resolve_variant, labels_mod, self.args("--variant-from-card", handle.name),
503
+ )
504
+
505
+ def test_a_card_and_a_flag_that_AGREE_are_fine(self):
506
+ contract, source = PROBE._resolve_variant(labels_mod, self.args(
507
+ "--variant-from-card", self._card(self.MEASURED),
508
+ "--output-layout", labels_mod.ANCHOR_4_PLUS_NC,
509
+ ))
510
+ self.assertEqual(contract.output_layout, labels_mod.ANCHOR_4_PLUS_NC)
511
+ # A flag that states ONE field must not read as disagreeing with a card
512
+ # that states three — the agreement is checked per field, not per tuple.
513
+ self.assertIn("--variant-from-card", source)
514
+
515
+ def test_a_card_and_a_flag_that_DISAGREE_are_refused(self):
516
+ reason = self.assertRefuses(PROBE._resolve_variant, labels_mod, self.args(
517
+ "--variant-from-card", self._card(self.MEASURED),
518
+ "--output-layout", labels_mod.END2END_N_6,
519
+ ))["reason"]
520
+ self.assertIn("DISAGREES", reason)
521
+ self.assertIn(labels_mod.ANCHOR_4_PLUS_NC, reason)
522
+ self.assertIn(labels_mod.END2END_N_6, reason)
523
+
524
+ def test_a_disagreeing_scale_is_refused_too(self):
525
+ normalized = dict(self.MEASURED, box_units="normalized", box_scale_to_pixels=640)
526
+ reason = self.assertRefuses(PROBE._resolve_variant, labels_mod, self.args(
527
+ "--variant-from-card", self._card(normalized),
528
+ "--output-layout", labels_mod.ANCHOR_4_PLUS_NC,
529
+ "--box-units", "normalized", "--box-scale-to-pixels", "320",
530
+ ))["reason"]
531
+ self.assertIn("box_scale_to_pixels", reason)
532
+
533
+
534
+ @unittest.skipIf(PROBE is None, NO_PROBE)
535
+ class TestClassAxisWidthWhenTheGraphDeclaresNone(ProbeCase):
536
+ """`end2end_n_6` has no class axis, so the width comes from the class LIST."""
537
+
538
+ def _classes_file(self, blob):
539
+ handle = tempfile.NamedTemporaryFile("w", suffix=".json", delete=False)
540
+ json.dump(blob, handle)
541
+ handle.close()
542
+ self.addCleanup(lambda: pathlib.Path(handle.name).unlink(missing_ok=True))
543
+ return handle.name
544
+
545
+ def test_a_dense_list_sets_the_width_to_one_past_its_last_slot(self):
546
+ args = self.args("--classes-file", self._classes_file(["forklift", "pallet", "person"]))
547
+ slot_names, source, width = PROBE._resolve_slot_names(
548
+ labels_mod, args, None, "(no graph metadata)", None,
549
+ )
550
+ self.assertEqual(slot_names, {0: "forklift", 1: "pallet", 2: "person"})
551
+ self.assertIn("--classes-file", source)
552
+ self.assertEqual(width, 3)
553
+
554
+ def test_a_sparse_map_sets_the_width_from_its_highest_slot(self):
555
+ args = self.args("--classes-file", self._classes_file({"0": "forklift", "9": "person"}))
556
+ _, _, width = PROBE._resolve_slot_names(labels_mod, args, None, "(no graph metadata)", None)
557
+ self.assertEqual(width, 10)
558
+
559
+ def test_a_graph_declaring_fewer_names_than_its_axis_is_still_ambiguous(self):
560
+ # The check that DOES depend on a width, unchanged: it fires whenever the
561
+ # graph declares one, and is skipped only when the layout carries none.
562
+ args = self.args()
563
+ reason = self.assertRefuses(
564
+ PROBE._resolve_slot_names, labels_mod, args, ["person", "car"], "graph metadata key 'names'", 91,
565
+ )["reason"]
566
+ self.assertIn("--slot-offset", reason)
567
+
568
+ def test_the_same_list_is_unambiguous_when_the_graph_declares_no_axis(self):
569
+ args = self.args()
570
+ slot_names, _, width = PROBE._resolve_slot_names(
571
+ labels_mod, args, ["person", "car"], "graph metadata key 'names'", None,
572
+ )
573
+ self.assertEqual(slot_names, {0: "person", 1: "car"})
574
+ self.assertEqual(width, 2)
575
+
576
+
577
+ @unittest.skipIf(PROBE is None, NO_PROBE)
578
+ class TestTheCliSurface(ProbeCase):
579
+ """The flags this script offers, asserted so a rename cannot be silent.
580
+
581
+ `publish-sensing-model.js` builds `--variant-from-card` by hand into an
582
+ `argv` array and reads the probe's stdout back. Nothing type-checks that
583
+ join, so a flag renamed on one side surfaces as "the probe failed" with an
584
+ argparse usage string attached — at publish time, on a real artifact.
585
+ """
586
+
587
+ EXPECTED = {
588
+ "-h", "--help", "--mode", "--measure-payload", "--artifact", "--model-id",
589
+ "--classes-file", "--slot-offset",
590
+ "--variant-from-card", "--output-layout", "--box-units", "--box-scale-to-pixels",
591
+ }
592
+
593
+ def test_the_option_strings_are_exactly_these(self):
594
+ offered = set()
595
+ for action in PROBE.build_parser()._actions:
596
+ offered.update(action.option_strings)
597
+ self.assertEqual(offered, self.EXPECTED)
598
+
599
+ def test_the_declaration_flags_all_default_to_none(self):
600
+ # NOT to the RF-DETR values. `_resolve_variant` has to be able to tell
601
+ # "nobody declared a layout" from "somebody declared this one", because
602
+ # only the first may fall back to a default.
603
+ args = self.args()
604
+ self.assertIsNone(args.variant_from_card)
605
+ self.assertIsNone(args.output_layout)
606
+ self.assertIsNone(args.box_units)
607
+ self.assertIsNone(args.box_scale_to_pixels)
608
+
609
+ def test_slot_offset_still_records_whether_it_was_typed(self):
610
+ self.assertFalse(self.args().slot_offset_given)
611
+ self.assertEqual(self.args().slot_offset, 0)
612
+ typed = self.args("--slot-offset", "0")
613
+ self.assertTrue(typed.slot_offset_given)
614
+ self.assertEqual(typed.slot_offset, 0)
615
+
616
+
617
+ if __name__ == "__main__": # pragma: no cover
618
+ unittest.main()
@@ -347,7 +347,183 @@ RFDETR_MEDIUM = ModelVocabulary(
347
347
  #: nothing (see `ClassIndex`, built over models whose file is present), and
348
348
  #: publishing is a separate task. What changed is that the service can now
349
349
  #: EXPRESS a second entry, which before this it structurally could not.
350
- BUILTIN_VOCABULARIES: "tuple[ModelVocabulary, ...]" = (RFDETR_MEDIUM,)
350
+ #: Forklift Detector — published 2026-08-25 by
351
+ #: scripts/sensing/publish-sensing-model.js. The class list is the artifact's own
352
+ #: (graph metadata key 'names'); the footprint is MEASURED, 119.0938 MiB after a
353
+ #: probe inference via rusage-maxrss, not an estimate from the file size.
354
+ #: Coordinate space MEASURED, not assumed: max|box channel| = 640.0000 over 110 real frames; / imgsz 640 = 1.0000. pixels at >= 0.2, normalized at <= 0.02, refused in between.
355
+ GH_FORKLIFT_COMBINE_CLASS_NAMES: "MappingProxyType[int, str]" = MappingProxyType({
356
+ 0: "forklift",
357
+ 1: "forklift partial",
358
+ })
359
+
360
+ GH_FORKLIFT_COMBINE = ModelVocabulary(
361
+ model_name="gh_forklift_combine",
362
+ slot_names=GH_FORKLIFT_COMBINE_CLASS_NAMES,
363
+ logit_slots=2,
364
+ approx_ram_bytes=124878901,
365
+ onnx_variant=VariantContract(
366
+ output_layout="anchor_4_plus_nc",
367
+ box_units="pixels",
368
+ box_scale_to_pixels=1.0,
369
+ ),
370
+ )
371
+
372
+ #: PPE Detector (hard hat) — published 2026-08-25 by
373
+ #: scripts/sensing/publish-sensing-model.js. The class list is the artifact's own
374
+ #: (graph metadata key 'names'); the footprint is MEASURED, 420.5156 MiB after a
375
+ #: probe inference via rusage-maxrss, not an estimate from the file size.
376
+ #: Coordinate space MEASURED, not assumed: max|box channel| = 640.0000 over 110 real frames; / imgsz 640 = 1.0000. pixels at >= 0.2, normalized at <= 0.02, refused in between.
377
+ PPE_VYRA_14CLS_V8M_CLASS_NAMES: "MappingProxyType[int, str]" = MappingProxyType({
378
+ 0: "fall detected",
379
+ 1: "gloves",
380
+ 2: "goggles",
381
+ 3: "hardhat",
382
+ 4: "ladder",
383
+ 5: "mask",
384
+ 6: "no gloves",
385
+ 7: "no goggles",
386
+ 8: "no hardhat",
387
+ 9: "no mask",
388
+ 10: "no safety vest",
389
+ 11: "person",
390
+ 12: "safety cone",
391
+ 13: "safety vest",
392
+ })
393
+
394
+ PPE_VYRA_14CLS_V8M = ModelVocabulary(
395
+ model_name="ppe_vyra_14cls_v8m",
396
+ slot_names=PPE_VYRA_14CLS_V8M_CLASS_NAMES,
397
+ logit_slots=14,
398
+ approx_ram_bytes=440942566,
399
+ onnx_variant=VariantContract(
400
+ output_layout="anchor_4_plus_nc",
401
+ box_units="pixels",
402
+ box_scale_to_pixels=1.0,
403
+ ),
404
+ )
405
+
406
+ #: Heavy Machinery Detector — published 2026-08-25 by
407
+ #: scripts/sensing/publish-sensing-model.js. The class list is the artifact's own
408
+ #: (graph metadata key 'names'); the footprint is MEASURED, 118.6875 MiB after a
409
+ #: probe inference via rusage-maxrss, not an estimate from the file size.
410
+ #: Coordinate space MEASURED, not assumed: max|box channel| = 1832.0278 over 120 real frames; / imgsz 640 = 2.8625. pixels at >= 0.2, normalized at <= 0.02, refused in between.
411
+ PPE_CONSTRUCTION_17CLS_V8N_CLASS_NAMES: "MappingProxyType[int, str]" = MappingProxyType({
412
+ 0: "barricade",
413
+ 1: "dumpster",
414
+ 2: "excavators",
415
+ 3: "gloves",
416
+ 4: "hardhat",
417
+ 5: "mask",
418
+ 6: "no hardhat",
419
+ 7: "no mask",
420
+ 8: "no safety vest",
421
+ 9: "person",
422
+ 10: "safety net",
423
+ 11: "safety shoes",
424
+ 12: "safety vest",
425
+ 13: "dump truck",
426
+ 14: "mini van",
427
+ 15: "truck",
428
+ 16: "wheel loader",
429
+ })
430
+
431
+ PPE_CONSTRUCTION_17CLS_V8N = ModelVocabulary(
432
+ model_name="ppe_construction_17cls_v8n",
433
+ slot_names=PPE_CONSTRUCTION_17CLS_V8N_CLASS_NAMES,
434
+ logit_slots=17,
435
+ approx_ram_bytes=124452864,
436
+ onnx_variant=VariantContract(
437
+ output_layout="anchor_4_plus_nc",
438
+ box_units="pixels",
439
+ box_scale_to_pixels=1.0,
440
+ ),
441
+ )
442
+
443
+ #: Fire-Safety Detector — published 2026-08-25 by
444
+ #: scripts/sensing/publish-sensing-model.js. The class list is the artifact's own
445
+ #: (graph metadata key 'names'); the footprint is MEASURED, 239.25 MiB after a
446
+ #: probe inference via rusage-maxrss, not an estimate from the file size.
447
+ #: Coordinate space MEASURED, not assumed: max|box channel| = 1971.5000 over 100 real frames; / imgsz 640 = 3.0805. pixels at >= 0.2, normalized at <= 0.02, refused in between.
448
+ PPE_KILLUMINATI_19CLS_V8S_CLASS_NAMES: "MappingProxyType[int, str]" = MappingProxyType({
449
+ 0: "boots",
450
+ 1: "ear protection",
451
+ 2: "glass",
452
+ 3: "glove",
453
+ 4: "hard hat",
454
+ 5: "mask",
455
+ 6: "no boots",
456
+ 7: "no ear protection",
457
+ 8: "no glass",
458
+ 9: "no glove",
459
+ 10: "no helmet",
460
+ 11: "no mask",
461
+ 12: "no vest",
462
+ 13: "worker",
463
+ 14: "vest",
464
+ 15: "circular saw",
465
+ 16: "fire extinguisher",
466
+ 17: "fire prevention net",
467
+ 18: "welding equipment",
468
+ })
469
+
470
+ PPE_KILLUMINATI_19CLS_V8S = ModelVocabulary(
471
+ model_name="ppe_killuminati_19cls_v8s",
472
+ slot_names=PPE_KILLUMINATI_19CLS_V8S_CLASS_NAMES,
473
+ logit_slots=19,
474
+ approx_ram_bytes=250871808,
475
+ onnx_variant=VariantContract(
476
+ output_layout="anchor_4_plus_nc",
477
+ box_units="pixels",
478
+ box_scale_to_pixels=1.0,
479
+ ),
480
+ )
481
+
482
+ #: FIVE SPECIALISTS WERE SCORED; FOUR ARE HERE. `gh_fall_tonlong` IS ABSENT ON
483
+ #: PURPOSE, AND THIS NOTE IS WHY IT MUST STAY ABSENT.
484
+ #:
485
+ #: It has a committed score card and a committed 94-frame eval set, and its
486
+ #: numbers are good — the `fall` gate fits at 0.7924 with precision 1.0 and
487
+ #: recall 1.0 on the held-out half. It is not withheld for being weak.
488
+ #:
489
+ #: It is withheld because its own exporter named two logit slots the same word:
490
+ #: the graph's `names` metadata is
491
+ #:
492
+ #: {0: 'Violence', 1: 'fall', 2: 'fire', 3: 'sit', 4: 'sleep',
493
+ #: 5: 'standing', 6: 'violence'}
494
+ #:
495
+ #: and `normalize_class_name` lowercases, so slots 0 and 6 both fold to
496
+ #: `violence`. SEVEN logit slots, SIX names. `ModelVocabulary.__post_init__`
497
+ #: refuses that pair — "two slots share one class name, so a filter would be
498
+ #: ambiguous" — because `_to_wire` puts the declared name on the wire and
499
+ #: `postprocess` filters on the canonical one, so the service could not attribute
500
+ #: a `violence` detection to a slot. The refusal is at CONSTRUCTION, so the
501
+ #: artifact would not load on a device: a registry row for it would be a row for
502
+ #: a model that can never answer, which is the `yolov8_nano` shape this whole
503
+ #: publish path exists to stop.
504
+ #:
505
+ #: AND IT CANNOT BE PAPERED OVER FROM OUR SIDE. `_resolve_slot_names` in
506
+ #: `scripts/sensing/onnx_artifact_probe.py` is deliberately NOT a precedence
507
+ #: order — every source that exists must AGREE — so a `--classes-file` cannot
508
+ #: override the graph, only restate it, collision included. Renaming one of the
509
+ #: two would also be a guess about which logit the exporter wired, and a wrong
510
+ #: guess is invisible: the boxes stay real and the counts stay plausible while
511
+ #: every `violence` answer names the wrong slot.
512
+ #:
513
+ #: WHAT UNBLOCKS IT is a re-export with one spelling per class, which changes the
514
+ #: bytes and therefore the sha256 — so it is a NEW artifact that must be scored
515
+ #: again before it can ship. `person_fall` is already a legal `corpus_name` in
516
+ #: both CHECK constraints and holds zero fixtures, which is inert while no
517
+ #: registry row names it (and `publish-sensing-model.js` refuses to deploy
518
+ #: against an empty corpus), so the family is ready for that artifact and is
519
+ #: waiting on nothing else.
520
+ #:
521
+ #: The collision is not folklore: `tests/test_onnx_artifact_probe.py`
522
+ #: (TestFourPlusNcCountsLogitSlots) pins `slot_map[0] == slot_map[6]` and uses
523
+ #: this artifact as the fixture that exercises `_verify_class_axis_width`, where
524
+ #: `4 + 7 = 11` matches its real `[1, 11, 8400]` head and `4 + 6 = 10` would
525
+ #: reject it.
526
+ BUILTIN_VOCABULARIES: "tuple[ModelVocabulary, ...]" = (RFDETR_MEDIUM, GH_FORKLIFT_COMBINE, PPE_VYRA_14CLS_V8M, PPE_CONSTRUCTION_17CLS_V8N, PPE_KILLUMINATI_19CLS_V8S,)
351
527
 
352
528
 
353
529
  class ClassIndex:
@@ -441,6 +617,10 @@ class ClassIndex:
441
617
 
442
618
 
443
619
  __all__ = [
620
+ "PPE_KILLUMINATI_19CLS_V8S",
621
+ "PPE_CONSTRUCTION_17CLS_V8N",
622
+ "PPE_VYRA_14CLS_V8M",
623
+ "GH_FORKLIFT_COMBINE",
444
624
  "ANCHOR_4_PLUS_NC",
445
625
  "BOX_UNITS",
446
626
  "BOX_UNITS_NORMALIZED",
package/dist/EdgeAgent.js CHANGED
@@ -44,7 +44,7 @@ const edge_ads_1 = require("@trillboards/edge-ads");
44
44
  const CommandRouter_1 = require("./CommandRouter");
45
45
  const config_1 = require("./config");
46
46
  const dataDir_1 = require("./dataDir");
47
- const SDK_VERSION = '0.2.93';
47
+ const SDK_VERSION = '0.2.95';
48
48
  class EdgeAgent extends events_1.EventEmitter {
49
49
  constructor(config, deps) {
50
50
  super();
@@ -31,7 +31,7 @@ export interface DiagnosticReport {
31
31
  skipped: number;
32
32
  };
33
33
  }
34
- declare const SDK_VERSION = "0.2.93";
34
+ declare const SDK_VERSION = "0.2.95";
35
35
  declare function checkNodeVersion(): CheckResult;
36
36
  declare function checkPlatform(): CheckResult;
37
37
  declare function checkMemory(): CheckResult;
package/dist/diagnose.js CHANGED
@@ -63,7 +63,7 @@ const localNetworkAccess_1 = require("./localNetworkAccess");
63
63
  // ---------------------------------------------------------------------------
64
64
  // SDK version — mirrors package.json; kept in sync by CI
65
65
  // ---------------------------------------------------------------------------
66
- const SDK_VERSION = '0.2.93';
66
+ const SDK_VERSION = '0.2.95';
67
67
  exports._SDK_VERSION = SDK_VERSION;
68
68
  // ---------------------------------------------------------------------------
69
69
  // ANSI helpers (no external deps)
@@ -86,6 +86,13 @@ export declare function normalizeDirectStreamUrl(input: string): string;
86
86
  * the list and typed the IP by hand.
87
87
  */
88
88
  export declare function mergeDiscoveredHosts(onvifHosts: unknown[], sweptHosts: unknown[]): unknown[];
89
+ /**
90
+ * Keep the setup session visibly alive while one command owns the main poll
91
+ * loop. A recorder channel probe can legitimately spend close to a minute on a
92
+ * single sub/main + TCP/UDP candidate set; without this beat the portal's
93
+ * 30-second lost-connector guard reports a healthy connector as dead.
94
+ */
95
+ export declare function withSetupStageHeartbeat<T>(client: Pick<SetupSessionClient, 'heartbeat'>, stage: string, detail: string, work: () => Promise<T>, intervalMs?: number): Promise<T>;
89
96
  /**
90
97
  * Merge a finalized setup into the local config.
91
98
  *
@@ -1 +1 @@
1
- {"version":3,"file":"setupMode.d.ts","sourceRoot":"","sources":["../src/setupMode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setupMode.d.ts","sourceRoot":"","sources":["../src/setupMode.ts"],"names":[],"mappings":"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"}
package/dist/setupMode.js CHANGED
@@ -39,6 +39,7 @@ exports.buildSetupPortalUrl = buildSetupPortalUrl;
39
39
  exports.openSetupPortal = openSetupPortal;
40
40
  exports.normalizeDirectStreamUrl = normalizeDirectStreamUrl;
41
41
  exports.mergeDiscoveredHosts = mergeDiscoveredHosts;
42
+ exports.withSetupStageHeartbeat = withSetupStageHeartbeat;
42
43
  exports.mergeConfigFile = mergeConfigFile;
43
44
  exports.runSetupMode = runSetupMode;
44
45
  const fs = __importStar(require("fs"));
@@ -249,6 +250,40 @@ function recorderGroupKey(camera) {
249
250
  const host = cameraHost(camera);
250
251
  return host ? `host:${host}` : null;
251
252
  }
253
+ const SETUP_STAGE_HEARTBEAT_MS = 10000;
254
+ /**
255
+ * Keep the setup session visibly alive while one command owns the main poll
256
+ * loop. A recorder channel probe can legitimately spend close to a minute on a
257
+ * single sub/main + TCP/UDP candidate set; without this beat the portal's
258
+ * 30-second lost-connector guard reports a healthy connector as dead.
259
+ */
260
+ async function withSetupStageHeartbeat(client, stage, detail, work, intervalMs = SETUP_STAGE_HEARTBEAT_MS) {
261
+ await client.heartbeat(stage, detail);
262
+ let heartbeatInFlight = false;
263
+ let lastHeartbeat = Promise.resolve();
264
+ const timer = setInterval(() => {
265
+ if (heartbeatInFlight)
266
+ return;
267
+ heartbeatInFlight = true;
268
+ lastHeartbeat = client
269
+ .heartbeat(stage, detail)
270
+ .catch(() => {
271
+ // The command's result/ack path remains authoritative for surfacing a
272
+ // lost session. A transient liveness write must not abort local probing.
273
+ })
274
+ .finally(() => {
275
+ heartbeatInFlight = false;
276
+ });
277
+ }, intervalMs);
278
+ timer.unref?.();
279
+ try {
280
+ return await work();
281
+ }
282
+ finally {
283
+ clearInterval(timer);
284
+ await lastHeartbeat;
285
+ }
286
+ }
252
287
  /**
253
288
  * Merge a finalized setup into the local config.
254
289
  *
@@ -554,11 +589,10 @@ async function runSetupMode(opts) {
554
589
  }
555
590
  if (command.type === 'probe' && command.host && command.credentials) {
556
591
  credsByHost.set(command.host, command.credentials);
557
- await client.heartbeat('probing', command.host);
558
592
  log(`Checking cameras on ${command.host}…`);
559
593
  reportValidationProgress();
560
594
  let sentAny = false;
561
- const results = await probe({
595
+ const results = await withSetupStageHeartbeat(client, 'probing', command.host, () => probe({
562
596
  host: command.host,
563
597
  port: command.port,
564
598
  username: command.credentials.username,
@@ -592,7 +626,7 @@ async function runSetupMode(opts) {
592
626
  }
593
627
  reportValidationProgress();
594
628
  },
595
- });
629
+ }));
596
630
  try {
597
631
  const mac = await (opts.lookupMac ?? RecorderAddressRecovery_1.lookupMacAddress)(command.host);
598
632
  if (mac)
@@ -1 +1 @@
1
- {"version":3,"file":"setupMode.js","sourceRoot":"","sources":["../src/setupMode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setupMode.js","sourceRoot":"","sources":["../src/setupMode.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trillboards/edge-sdk",
3
- "version": "0.2.93",
3
+ "version": "0.2.95",
4
4
  "description": "Composable cross-platform Edge AI SDK for audience sensing on DOOH/CTV devices",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -30,7 +30,14 @@
30
30
  "@trillboards/edge-platform-rtsp": "^0.2.0",
31
31
  "@trillboards/edge-platform-windows": "^0.2.0"
32
32
  },
33
- "files": ["dist", "configs", "deploy", "LICENSE", "THIRD-PARTY-NOTICES.md", "README.md"],
33
+ "files": [
34
+ "dist",
35
+ "configs",
36
+ "deploy",
37
+ "LICENSE",
38
+ "THIRD-PARTY-NOTICES.md",
39
+ "README.md"
40
+ ],
34
41
  "engines": {
35
42
  "node": ">=18.0.0"
36
43
  },