feat(offset): scan the histogram corpus — the other 90% of the archive
offset_scan3.py covers only waveforms (6,577 unique binaries). The archive also holds 63,535 unique histograms, which the pre-trigger method cannot touch: a histogram carries no samples, only a per-interval per-channel peak. scratch/offset_hist_scan.py scans them — 63,505/63,535 decoded (99.95%), 43 units, 77.9M intervals. It emits every candidate floor statistic per (file, channel) rather than deciding anything, so thresholds get calibrated against the waveform ground truth instead of guessed. Journal §8b records the outcome. What survives is a site-quiet-gated cross-channel differential that independently confirms BE18438|Vert and BE9558|Tran+Long with a clean 2.5x separation gap and 0.037% day-level false alarm, threshold-insensitive across a 2.3x span — the first operating point in this investigation to pass that test cleanly. What it does not do, recorded just as plainly: it finds 2 of the 5 confirmed units, not 5. DC leakage into the interval peak is bimodal (0.9 on BE18438, 0.02 on BE12599), so a negative histogram result is not evidence of health. Per-channel attribution is not established (channel-scramble p = 0.769) and timing resolves to ~a month, not a day. Two dead ends buried for good: the absolute floor is retired (66% of its discrimination is a day/site confound), and zero-fraction is structurally impossible — the device clamps every interval peak at >= 1 A/D count. Two findings independent of the histograms: - offset_scan3's spread<=0.02 gate discards 18.8% of rows with |pre|>=0.025, concentrated on 41 unit-channels currently labelled clean; 4 would be sustained positives without it. The fleet label is three-state, not two. - The waveform corpus observes ~7% of the days a unit was deployed. BE10895 is reclassified from transient to a genuine Vert fault of a different subtype: 49.4% single-axis-dominant events, the highest in the fleet, all on Vert. The other six marginal units are clean. Not done: the 11 thin-coverage units were not screened, and no completeness audit was run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HgTe8CamXAHcAmaQ6QNcog
This commit is contained in:
@@ -58,6 +58,14 @@ Companion material:
|
||||
sensor-check failures. Do not try to use it as a screen.
|
||||
- **Cause is still unsettled.** Instantel's autozero fixes the minority of
|
||||
cases; the rest are hardware. We cannot yet tell which is which remotely.
|
||||
- **The histogram corpus (63,535 files, 9.7x the waveforms) is now scanned too** —
|
||||
see §8b. It independently confirms BE18438 and BE9558 with a clean 2.5x
|
||||
separation, but detects only **2 of the 5** confirmed units, cannot attribute a
|
||||
channel, and resolves time to ~a month. **A negative histogram result is not
|
||||
evidence of health** — DC leakage into the interval peak varies 45x between units.
|
||||
- **`offset_scan3.py` has a label defect** (§8b): its spread gate discards 18.8% of
|
||||
high-|pre| rows onto units currently counted as clean. Re-cut before quoting any
|
||||
precision number again.
|
||||
- **Best open lead:** `SUB 0x0E` (channel sensor data, 8 channels × 10 bytes,
|
||||
unimplemented) may carry the very numbers Instantel says to check against
|
||||
**2027–2069**. Untested.
|
||||
@@ -495,6 +503,165 @@ doubled two reported figures before it was caught.
|
||||
|
||||
---
|
||||
|
||||
## 8b. The histogram corpus — the other 90% of the archive (2026-09-04)
|
||||
|
||||
Every result above §8 comes from **waveform** files. `offset_scan3.py` filters on
|
||||
`\.[A-Za-z0-9]{2}0[Ww]$`, so the corpus it scanned is 6,577 unique binaries. The
|
||||
archive also holds **63,535 unique histograms** — 9.7x more files — which the
|
||||
pre-trigger method cannot touch, because a histogram carries no samples: only a
|
||||
per-interval, per-channel peak and half-period.
|
||||
|
||||
`scratch/offset_hist_scan.py` scans them. **63,505 of 63,535 decoded (99.95%),
|
||||
43 units, 77.9M intervals.** Two of the 45 units have no histograms at all.
|
||||
Output: `/home/serversdown/dl2-archive/offset_hist.csv` (190,515 channel-rows).
|
||||
|
||||
### The premise, and how far it actually holds
|
||||
|
||||
A histogram file is hours of continuous monitoring, so most of its intervals are
|
||||
definitionally quiet, and a channel parked off zero cannot report a peak below
|
||||
its own displacement. The signal is real — two within-unit contrasts, siblings
|
||||
unmoved in both:
|
||||
|
||||
| unit | channel | in-episode floor | outside | waveform \|pre\| same window |
|
||||
|---|---|---|---|---|
|
||||
| BE18438 | Vert | 0.0350 | 0.0050 | +0.18 .. +0.37 |
|
||||
| BE12599 | Tran | 0.0250 | 0.0050 | +0.03 .. +0.49 |
|
||||
|
||||
But the **leakage from a waveform pedestal into the histogram floor is bimodal,
|
||||
not merely partial**: measured ratio ~0.9 on BE18438 Vert, ~0.7 on BE9558,
|
||||
**~0.02 on BE12599** — two orders of magnitude on one instrument. The device
|
||||
evidently measures each interval peak against a running baseline, and how much
|
||||
DC survives that varies per unit. **Consequence: a negative histogram result
|
||||
carries almost no information.** Do not read "clean in the histograms" as clean.
|
||||
|
||||
### The detector that survived
|
||||
|
||||
dmin(file, ch) = min[ch] - min over the other two geo channels, SAME file
|
||||
gates (both hard): n_intervals >= 60 AND mic_p5 <= 5 raw counts
|
||||
day statistic: median of dmin over that day's qualifying files
|
||||
flag day at dmin >= 0.020 in/s (4 A/D counts)
|
||||
episode at >= 3 CONSECUTIVE observed days
|
||||
|
||||
**Result: BE18438|Vert, BE9558|Tran, BE9558|Long.** Threshold-insensitive —
|
||||
the journal's own test for a real signal against a tuned one — and this is the
|
||||
first operating point in the investigation that passes it cleanly. The identical
|
||||
answer holds across: statistic `min` or `p5`; length gate 10/30/60/120/300; mic
|
||||
gate 3/5/8/10; threshold 0.015–0.035 (a 2.3x span); persistence K = 2,3,4,5,7.
|
||||
|
||||
Separation, ranked by highest floor sustained over 3 consecutive gated days
|
||||
across all 135 unit-channels:
|
||||
|
||||
| unit-channel | best3 |
|
||||
|---|---|
|
||||
| BE18438 Vert | 0.1650 |
|
||||
| BE9558 Long | 0.0350 |
|
||||
| BE9558 Tran | 0.0250 |
|
||||
| *(2.5x gap)* | |
|
||||
| BE7145 Tran | 0.0100 |
|
||||
| entire rest of fleet | <= 0.0050 (one quantisation count) |
|
||||
|
||||
Day-level false alarm: **37 of 99,432 gated unit-channel-days = 0.037%.**
|
||||
|
||||
### What it does NOT do — read this before trusting it
|
||||
|
||||
- **It finds 2 of the 5 confirmed units, not 5.** The site-quiet gate is what
|
||||
makes it work and it is also what costs BE11529 and BE12599. BE11529's
|
||||
four-day single-axis ramp (Tran 0.025 -> 0.055, both siblings pinned at 0.005)
|
||||
is the most offset-shaped thing in the corpus outside the two detections, and
|
||||
the gate discards it.
|
||||
- **The positive class is two units.** Every threshold here is fitted to
|
||||
BE18438 and BE9558, which contribute 22 of the 37 flagged days in the entire
|
||||
corpus. No cross-validation is possible at n=2.
|
||||
- **Per-channel attribution is NOT established.** Rotating the three geo channel
|
||||
labels within each file — preserving every value, file and day, destroying
|
||||
only channel identity — reproduces the episode *count* with p = 0.769 and the
|
||||
label agreement at p = 0.038–0.077. Report a **unit and a window**; do not
|
||||
name a geophone axis on the strength of this detector alone.
|
||||
- **Timing resolution is ~1 month, not ~1 day.** A 30-day label shift still
|
||||
scores 2 of 9 episode hits; the signal dies only past ~60 days. The day-level
|
||||
series look far crisper than they are.
|
||||
- **Ground truth here is a sibling detector, not a service record.** Agreement
|
||||
between the two corpora is corroboration of a shared method. Nothing in this
|
||||
section has been checked against an actual repair, calibration or RMA.
|
||||
|
||||
### Dead ends — keep these dead
|
||||
|
||||
- **Absolute floor (min / p1 / p5 / p10 / p25, thresholded alone) — RETIRED.**
|
||||
Not fleet-comparable and mostly not about the channel. Scoring each cell using
|
||||
*only the other two channels* — a statistic containing zero information about
|
||||
the suspect channel — reaches AUC 0.746 against the same labels, versus 0.872
|
||||
for the absolute floor itself. **66% of its apparent discrimination is "that
|
||||
day was noisy at that site."** Interval size alone moves its p99 7x (0.0350 at
|
||||
1 min vs 0.0050 at 2 s). And of all files with any channel above 0.025, 56.5%
|
||||
have **all three** channels above it — common-mode, i.e. the wrong physics.
|
||||
- **Zero-fraction — STRUCTURALLY IMPOSSIBLE, not merely weak.** The device never
|
||||
reports a zero histogram interval peak. The value is a max over hundreds of
|
||||
samples of a channel that always carries at least 1 count of noise, so it is
|
||||
clamped at 1 A/D count (0.005 in/s). There is no zero to count.
|
||||
- **Interval size, sample rate, geo range, firmware — refuted as confounds for
|
||||
the differential.** All four are *file-level scalars*: they move all three geo
|
||||
channels together, so they cannot produce a single-channel lift and the
|
||||
within-file differential is immune to them by construction. Geo range is
|
||||
identical across the three geo channels in **63,535 of 63,535** binaries.
|
||||
(Interval size remains fatal to the *absolute*-floor version, above.)
|
||||
|
||||
### Two findings that are independent of the histogram detector
|
||||
|
||||
**1. `offset_scan3.py`'s `spread <= 0.02` gate is discarding real signal.**
|
||||
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
|
||||
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,
|
||||
in this section and in §3, is affected.
|
||||
|
||||
**2. The waveform corpus sees ~7% of the days a unit was deployed.** 2,627
|
||||
(unit, day) observations against the histogram corpus's 35,105 — 13.4x — with a
|
||||
per-unit median ratio of 0.070. BE12599, a confirmed unit, is waveform-observed
|
||||
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)
|
||||
|
||||
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
|
||||
0.010–0.015 on 48/58 files from 2023-08-03 to 08-27, while Tran moves on 2/58
|
||||
and Long on 9/58 and the site mic floor never leaves 1–3 counts. Independently,
|
||||
**42 of its 85 waveform events (49.4%) are single-axis-dominant** — one geo peak
|
||||
>= 10x both siblings and >= 0.05 in/s — the **highest rate in the 45-unit
|
||||
fleet** (BE13117 36.1%, BE18438 29.4%), and **100% of it on Vert**. Vert
|
||||
excursions of 0.1–1.5 in/s with Tran/Long at 0.005–0.035 are not ground motion.
|
||||
|
||||
This is a genuine Vert-channel hardware fault, but **not the classic pedestal** —
|
||||
the differential is only one A/D count. Caveat: its entire histogram record is a
|
||||
single 52-day deployment ending 2023-08-27, so nothing says whether it
|
||||
persisted, was serviced, or resolved.
|
||||
|
||||
The other six marginal units — BE11007, BE17354, BE18004, BE18104, BE9557,
|
||||
BE18003 — are **clean**. All seven cap at +0.005 to +0.007 (one A/D count)
|
||||
lifetime under the quiet-site gate, against +0.175 for BE18438 Vert and +0.062
|
||||
for BE9558 Long. Three individual waveform flags fall in windows with **zero**
|
||||
histogram coverage and are NO-DATA, not clean: BE18004|Tran 2024-10-16,
|
||||
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
|
||||
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
|
||||
the full-archive pass; BE10202 has no histogram files at all.
|
||||
- **No completeness audit was run** over the above.
|
||||
- Re-cutting the ground truth three-state (finding 1) and re-scoring everything
|
||||
against it.
|
||||
|
||||
---
|
||||
|
||||
## 9. Chronology
|
||||
|
||||
| date | event |
|
||||
@@ -512,3 +679,8 @@ doubled two reported figures before it was caught.
|
||||
| 2026-08-28 | Bimodality established; sensor check proven **blind** to offsets; `SUB 0x0E` identified as the best open lead. |
|
||||
| 2026-08-28 | **v1 detector retracted.** Brian challenged the "come and go" finding against field experience. Two flaws found: dominant-axis-only scoring and mean-instead-of-median. Corrected detector shows persistent pedestals on **8 of 45 units**, and the gaps are service windows. |
|
||||
| 2026-08-28 | **Detector v3 (Brian's method):** pre-trigger floor + pre/mid/end consistency. Healthy channels proven to sit at 0.000 +/-1 unit (94.5%), confirming no decoder zero-point bias. Final: **5 of 45 units (11%)**, threshold-insensitive. |
|
||||
| 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 | **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. |
|
||||
|
||||
Reference in New Issue
Block a user