From f08ca8096e7becf4cd933a43ec3fbfcca2f96213 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 25 May 2026 06:56:32 +0100 Subject: [PATCH] Invalidate noisy cardioid contour receipt --- .../complex-contour-live-20260525-063229.md | 31 ++++++++++++++----- docs/bioacoustic-timeline-watermark.md | 7 +++++ state/evidence.jsonl | 1 + state/map.yaml | 13 ++++---- 4 files changed, 38 insertions(+), 14 deletions(-) diff --git a/calibration/bioacoustic/complex-contour-live-20260525-063229.md b/calibration/bioacoustic/complex-contour-live-20260525-063229.md index a920913..4cd8c5c 100644 --- a/calibration/bioacoustic/complex-contour-live-20260525-063229.md +++ b/calibration/bioacoustic/complex-contour-live-20260525-063229.md @@ -21,8 +21,27 @@ Reference channel is `asio-ch2` / Loopback 1. | Candidate | Meaning | Prediction | Estimate | Prediction Error | Confidence | Direct Hits | Cluster MAE | Phase MAE | | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | | `asio-ch3` | Loopback 2 | `0.000000` samples | `-0.002628` samples | `-0.014 us` | `0.971` | `216` | `0.008405` samples | `0.001 rad` | -| `asio-ch1` | shotgun/co-streamer mic path | `544.244999` samples | `543.480112` samples | `-3.984 us` | `0.335` | `14` | `3.335599` samples | `0.858 rad` | -| `asio-ch0` | cardioid/local mic path | `781.490952` samples | `781.787929` samples | `+1.547 us` | `0.488` | `23` | `2.949737` samples | `0.382 rad` | +| `asio-ch1` | weak/non-authoritative input | `544.244999` samples | `543.480112` samples | `-3.984 us` | `0.335` | `14` | `3.335599` samples | `0.858 rad` | +| `asio-ch0` | invalid/no real mic signal | `781.490952` samples | `781.787929` samples | `+1.547 us` | `0.488` | `23` | `2.949737` samples | `0.382 rad` | + +## Signal Sanity Check + +The timing table above is not enough. A log-mel spectrogram and channel-level +statistics show that `asio-ch0` is not a valid acoustic signal in this capture. +Its RMS is nearly flat across the whole file and its correlation with loopback +is effectively zero. + +| Channel | RMS | Peak | Zero-lag correlation with `asio-ch2` | Block RMS shape | +| --- | ---: | ---: | ---: | --- | +| `asio-ch0` | `0.00209475` | `0.00334287` | `0.000032` | flat: `0.00208350` to `0.00209815` | +| `asio-ch1` | `0.00458988` | `0.02119338` | `0.010854` | weak/variable | +| `asio-ch2` | `0.00681935` | `0.02822563` | `1.000000` | loopback | +| `asio-ch3` | `0.00681935` | `0.02822563` | `1.000000` | loopback duplicate | + +Conclusion: the `asio-ch0` near-seed timing estimate is invalid. It is a seeded +tracker fit against noise, not a physical cardioid proof. `asio-ch1` may contain +some weak bleed or an actual connected mic path, but it is not strong enough to +serve as timing authority in this receipt. ## Interpretation @@ -32,11 +51,9 @@ live DAC/speaker/room/mic/ADC path: both physical mics land within four microseconds of their prior path seeds in this run, and the cardioid is within about one and a half microseconds. -This is not a final microsecond sync claim because the estimates are judged -against previous path seeds rather than an independently measured ground-truth -distance. It is, however, the first fresh meatspace proof that the complex -contour/channel-model path can hear the current witness and return usable -direct-path timing instead of only replaying old artifacts. +This is not a final microsecond sync claim. After signal inspection, this +receipt proves the loopback/interface path and shows a weak non-authoritative +input path, but it does not prove physical cardioid timing. The first receipt pass reported much lower confidence because the tracker normalized the direct cluster against every alternate matched-filter lobe. The diff --git a/docs/bioacoustic-timeline-watermark.md b/docs/bioacoustic-timeline-watermark.md index 1c99bab..e4914d2 100644 --- a/docs/bioacoustic-timeline-watermark.md +++ b/docs/bioacoustic-timeline-watermark.md @@ -221,3 +221,10 @@ weaker/disconnected-looking path is `0.335`. This is fresh meatspace evidence through the actual DAC/speaker/room/mic/ADC path, though final microsecond sync still needs independently measured path truth instead of comparison to prior seeds. + +Correction after signal inspection: the apparent `asio-ch0` cardioid estimate +from that receipt is invalid. Its log-mel panel and channel statistics show a +flat low-level signal with essentially zero correlation to loopback +(`0.000032`). The tracker had enough seeded timing pressure to fit noise near +the expected delay. Treat that receipt as a clean loopback/interface proof plus +a weak/non-authoritative input witness, not a physical cardioid proof. diff --git a/state/evidence.jsonl b/state/evidence.jsonl index d958a12..630a35c 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -108,3 +108,4 @@ {"ts": "2026-05-25T04:25:00+01:00", "type": "implementation", "status": "partial", "note": "Moved the complex contour receiver from artifact-only replay into runtime shape. `MimirComplexContourRuntimeAnalyzer` reads Float32 samples from `MimirRollingStreamBuffer`, maps runtime time into the configured bioacoustic witness profile, runs the complex contour matched-filter/direct-path tracker, applies path-scoped `MimirComplexContourChannelModelDocument` corrections, and emits `evidence=complex-contour` synchronization reports. `MimirRuntime` now emits `MimirBioacousticContestantRenderer` audio when `enableComplexContourRuntime` is true, so the live sound and contour decoder share one song profile. Synthetic proof: `--complex-contour-runtime-self-test` at 192 kHz recovers a 693.5-sample delay with 0.219 us error from runtime-shaped rolling buffers. Real Scarlett loopback/mic proof remains the next gate."} {"ts": "2026-05-25T06:37:00+01:00", "type": "verification", "status": "partial", "note": "Ran a fresh live Scarlett complex-contour pass through the physical output/input path. Rendered `artifacts/asio/canary-packet-live-20260525-063229-f32.raw`, played it through Focusrite ASIO at 192 kHz, and captured `artifacts/asio/scarlett-canary-packet-live-20260525-063229-f32.raw` from all four inputs. Loopback 1 -> Loopback 2 measured -0.014 us with 216 direct hits and 0.008 sample MAE. With `calibration/bioacoustic/complex-contour-channel-model.json` loaded, shotgun measured -3.984 us from prior seed and cardioid measured +1.547 us from prior seed. This proves fresh meatspace viability, but physical mic confidence remains low; next work is stronger direct-path confidence and independent distance/path truth. Receipt: `calibration/bioacoustic/complex-contour-live-20260525-063229.md`."} {"ts": "2026-05-25T06:50:00+01:00", "type": "implementation", "status": "ok", "note": "Corrected `MimirDirectPathTracker` confidence scoring. The old score normalized direct-cluster confidence against all alternate matched-filter lobes, which made a nearly perfect loopback lock report only 0.126 confidence. Confidence now primarily belongs to the selected direct cluster: direct-hit count, residual tightness, phase coherence, and prediction agreement; nearby competing lobes apply only an ambiguity penalty. Reanalysis of `scarlett-canary-packet-live-20260525-063229-f32.raw` leaves delays unchanged but raises Loopback 1 -> Loopback 2 confidence to 0.971, cardioid confidence to 0.488, and the weaker/disconnected-looking channel to 0.335."} +{"ts": "2026-05-25T06:59:00+01:00", "type": "correction", "status": "invalidated", "note": "Invalidated the apparent cardioid timing proof in `calibration/bioacoustic/complex-contour-live-20260525-063229.md`. The log-mel spectrogram and channel statistics show `asio-ch0` is not a real acoustic signal in that capture: RMS is almost flat (`0.00208350` to `0.00209815` by 0.1s block), peak is only `0.00334287`, and zero-lag correlation with loopback is `0.000032`. The near-seed +1.547 us contour estimate was a seeded tracker fit against noise, not physical mic evidence. The receipt remains valid as a loopback/interface proof (`asio-ch2` -> `asio-ch3` at -0.014 us, confidence 0.971) plus a weak/non-authoritative input witness."} diff --git a/state/map.yaml b/state/map.yaml index 99280c8..0ae93ef 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -249,13 +249,12 @@ accepted_design: A fresh live Scarlett proof is preserved at `calibration/bioacoustic/complex-contour-live-20260525-063229.md`: Focusrite ASIO playback/capture measured Loopback 1 -> Loopback 2 at - -0.014 us, shotgun at -3.984 us from prior seed, and cardioid at +1.547 us - from prior seed with the current channel model. The direct-path confidence - scorer now belongs to selected-cluster quality rather than all alternate - matched-filter lobes: loopback confidence is 0.971, cardioid confidence is - 0.488, and the weaker/disconnected-looking path is 0.335. This is fresh - meatspace evidence through DAC/speaker/room/mic/ADC, but the next cut is - independent path truth and better frequency/direct-path discrimination. + -0.014 us with corrected confidence 0.971. The apparent `asio-ch0` + near-seed/cardioid estimate is invalidated: signal inspection shows flat + low-level noise with zero-lag loopback correlation 0.000032, so the tracker + fit noise under seeded timing pressure. `asio-ch1` remains only a weak, + non-authoritative input witness. The next cut is signal-presence gating, + independent path truth, and better frequency/direct-path discrimination. `calibration/bioacoustic/complex-contour-replay-panel.json` persists the current four-case replay receipt. Acoustic robustness remains open.