diff --git a/docs/offset_investigation.md b/docs/offset_investigation.md index 537691c..9a6b795 100644 --- a/docs/offset_investigation.md +++ b/docs/offset_investigation.md @@ -154,8 +154,8 @@ is the discriminator — and it is what the field experience predicts. | runs of >=3 consecutive | — | 29 | | runs of 1-2 events (noise) | — | 69 | -Units with a sustained pedestal: **BE9558, BE10895, BE11007, BE11529, BE12599, -BE13117, BE18003, BE18438**. BE10895 and BE18003 were invisible to v1. +Units with a sustained pedestal: **BE9558, BA10895, BE11007, BE11529, BE12599, +BE13117, BE18003, BE18438**. BA10895 and BE18003 were invisible to v1. **The affected channel is most often Vert**, which v1 got wrong — it named whichever axis had the largest peak. BE13117 and BE18438 are both Vert faults. @@ -226,7 +226,7 @@ signal from a tuned one: **BE9558, BE11529, BE12599, BE13117, BE18438.** -Unchanged across a 2x threshold range. BE11007 and BE10895 drop out — the +Unchanged across a 2x threshold range. BE11007 and BA10895 drop out — the spread test identifies them as transients, not pedestals. The 11% headline happens to match v1's, but the reasoning and the unit list @@ -612,7 +612,7 @@ It rejects **113 of the 600 channel-rows with |pre| >= 0.025 (18.8%)**, and the rejections are not random — 92 of them fall across 41 unit-channels currently labelled NEGATIVE. Four would become sustained positives under an amplitude-only >=3-consecutive rule: **BE12599|Long (run of 8), BE18003|Vert -(4), BE10895|Vert (3), BE12844|Tran (3).** Until this is re-cut, the fleet label +(4), BA10895|Vert (3), BE12844|Tran (3).** Until this is re-cut, the fleet label is **three-state — POSITIVE / NEGATIVE / SPREAD-REJECTED(unknown)** — and the third state should be excluded from both TP and FP counts rather than silently scored as healthy. Every precision figure computed against the two-state label, @@ -625,7 +625,7 @@ on 39 of its 1,666 histogram-observed days (**2.3%**). Any statement of the form "the fault was absent before date X" that rests on waveform coverage alone is much weaker than its event count suggests. -### BE10895 — reclassified (see also §4) +### BA10895 — reclassified (see also §4) Previously dismissed as a transient. The histogram record shows its **Vert** quiet-minute floor at 0.005 on 62/62 qualifying files from 2023-07-07, then @@ -651,7 +651,7 @@ BE9557|Tran 2021-06-28, BE9557|Vert 2025-06-12. ### Still open in this section - **The 11 thin-coverage units were not screened** (BE10202, BE11462, BE13779, - BE15760, BE15957, BE16754, BE16758, BE8081, BE8626, BE9229, BE9887 — each + BE15760, BA15957, BE16754, BE16758, BE8081, BE8626, BA9229, BE9887 — each under 20 waveform events, several with hundreds of histograms). This is the population most likely to hold a previously unknown offset, and it is the one slice of the plan that did not run. BE11462 was incidentally scored clean by @@ -662,6 +662,28 @@ BE9557|Tran 2021-06-28, BE9557|Vert 2025-06-12. --- +### ⚠ Serial prefixes — four of these units are BlastMates, not MiniMates + +Corrected 2026-09-06, after Brian queried "BA10895?" against a report that +said BE10895. He was right. The BW filename encodes the serial **number +only** — `L895` -> 10895 — and every offset scanner synthesised the family +prefix as `"BE"`. Four of the 43 archive units are **BA** (BlastMate, the +MiniMate Plus's bigger sibling; same Series III, byte-identical data): + +**BA9229, BA10060, BA10895, BA15957.** + +Read off the file bodies, which carry the serial verbatim. No analysis +changed — grouping was always on the numeric part, and no unit number maps +to two serials — but every earlier reference to "BE10895" and the other +three is a label error and has been corrected throughout this document. + +The same assumption was live in two production sites and is fixed +(`sfm/waveform_store.py`, `minimateplus/client.py`): the store would have +filed a BlastMate under a unit that does not exist, and the monitor-log +decoder lost the geo threshold along with the serial. See commit `9ceff65`. + +--- + ## 9. Chronology | date | event | @@ -682,5 +704,6 @@ BE9557|Tran 2021-06-28, BE9557|Vert 2025-06-12. | 2026-09-04 | **Histogram corpus scanned** — 63,505 of 63,535 files, 43 units, 77.9M intervals (9.7x the waveform corpus). `scratch/offset_hist_scan.py`. | | 2026-09-04 | Absolute-floor statistic **retired**: 66% of its discrimination is a day/site confound (other-channels-only AUC 0.746 vs 0.872). Zero-fraction shown **structurally impossible** — the device clamps every interval peak at >= 1 count. | | 2026-09-04 | Site-quiet-gated cross-channel differential established: **BE18438 Vert, BE9558 Tran+Long**, threshold-insensitive over a 2.3x span. Finds only **2 of the 5** confirmed units — leakage into the histogram floor is bimodal (0.9 to 0.02), so a negative result carries almost no information. Per-channel attribution **not** established (channel-scramble p = 0.769). | -| 2026-09-04 | **BE10895 reclassified** from transient to a genuine Vert fault of a different subtype — 49.4% single-axis-dominant events, the highest in the fleet, 100% on Vert. The other six marginal units are clean. | +| 2026-09-04 | **BA10895 reclassified** from transient to a genuine Vert fault of a different subtype — 49.4% single-axis-dominant events, the highest in the fleet, 100% on Vert. The other six marginal units are clean. | | 2026-09-04 | **Defect found in `offset_scan3.py`**: its `spread <= 0.02` gate discards 18.8% of rows with \|pre\| >= 0.025, concentrated on 41 negative unit-channels; 4 would be sustained positives without it. The fleet label is three-state, not two. | +| 2026-09-06 | **Four units relabelled BA, not BE** — BA9229, BA10060, BA10895, BA15957 are BlastMates. The BW filename carries only the serial number; the family prefix must be read from the file body. Fixed in the scanners and in two production sites. |