Phase0 Baselines 20260723

Phase 0 Stabilized A-C Baselines, July 23, 2026

Executive Summary

Phase 0 Stabilized A-C Baselines, July 23, 2026 These measurements used the deployed receive-only all-FRS receiver at 12 MS/s with Channel 1 centered at 462.5625 MHz. Ambient temperature was recorded as 28.8 C.

Phase 0 Stabilized A-C Baselines, July 23, 2026

These measurements used the deployed receive-only all-FRS receiver at 12 MS/s
with Channel 1 centered at 462.5625 MHz. Ambient temperature was recorded as
28.8 C. Each accepted state ran for 900 seconds.

Results

| State | Workload | Receiver CPU mean/p95 | API CPU mean | Package temperature mean/p95 | Receiver RSS mean | Waterfall |
| --- | --- | ---: | ---: | ---: | ---: | ---: |
| A | Receiver on, waterfall closed, audio off, workers idle | 3.561 / 4.662 cores | 0.022 core | 51.84 / 57.0 C | 132.85 MiB | 2.006 rows/s |
| B | One continuous waterfall client, audio off | 3.490 / 4.606 cores | 0.247 core | 52.51 / 57.0 C | 130.86 MiB | 18.038 rows/s |
| C | One continuous selected-audio client, waterfall closed | 3.589 / 4.747 cores | 0.029 core | 51.24 / 57.0 C | 129.59 MiB | 2.006 rows/s |

Relative to State A:

- State B changed receiver CPU by -0.071 core and API CPU by +0.225
core. The waterfall cost remained in the presentation layer.
- State C changed receiver CPU by +0.028 core and API CPU by +0.007
core.
- State C audio capture, MP3 encoding, playback, and pipeline orchestration
together averaged 0.016 CPU core.

Runtime Acceptance

Every accepted run retained:

Runtime status polling completed without failure:

| State | Successful polls | Waterfall clients mean | Audio clients mean |
| --- | ---: | ---: | ---: |
| A | 179 / 179 | 0.000 | 0.000 |
| B | 178 / 178 | 1.000 | 0.000 |
| C | 178 / 178 | 0.000 | 1.000 |

After State B, the waterfall returned to 2 rows/s when its client disconnected.
After State C, the audio client count returned to zero and the API-owned
parec and MP3 encoder exited after the 30-second standby grace.

Evidence

- State A:
~/.local/state/radio/performance/20260723T073031-state-a.json
- State B:
~/.local/state/radio/performance/20260723T074623-state-b.json
- State C:
~/.local/state/radio/performance/20260723T081923-state-c.json

The earlier
~/.local/state/radio/performance/20260723T080247-state-c.json is diagnostic
only. Its transport timeout began before baseline sampling and audio-client
occupancy fell to 0.972; it is retained for provenance but is not an
acceptance result.

Channel 1 PTT Regression Finding

A controlled full-SOS PTT attempt at 2026-07-23T08:47:32Z was captured on
Channel 1 as radio-20260723-034732-aae6d7. Recording, popup,
acknowledgment, ensemble descriptive audio, and queue completion succeeded with
zero receiver audio drops or driver anomalies. The legacy timing path collapsed
the attempt into one 4.522-second RF interval, so it did not support a decoded
... --- ... result and is not an accepted latency test.

The first correction used a faster native power-probe average and separated
edge timing from the 250 ms recording gate. A second attempt at
2026-07-23T09:04:40Z exposed a 40 ms probe flicker that was provisionally
decoded as TT; that decode was invalidated and the test was closed without
claiming SOS.

The current correction keeps the 50 Hz RF edge path, then applies a lightweight
post-recording audio-envelope pass when rapid presses remain one merged RF
carrier. Seven fast operator attempts completed in roughly 5-10 seconds but
retained only 3-6 resolvable over-air holds; they remain explicitly unverified
instead of being relabeled from operator intent.

A slower controlled attempt at 2026-07-23T09:20:03Z
(radio-20260723-042003-a82dea) retained nine holds:
1.38, 1.02, 0.94, 2.02, 2.14, 2.22, 0.94, 1.06, 1.00 seconds. The adaptive
analyzer originally decoded ... --- ... / SOS at confidence 1.0; the
current normalized reprocessing result is authoritative at confidence 0.902.
Both determinations remain in the metadata log with decoder provenance. The
recording also matched one
calibrated 375/550/750 Hz release chime for each hold; all chimes were excluded
from Morse symbols and the ninth closed the sequence. The full 15.7-second WAV,
including the two-second prebuffer, all nine holds, inter-press gaps, release
chimes, and recording tail, is retained as one protected message. Receiver
audio drops, driver anomalies, and worker queue depths remained zero.

Reminder-Storm Regression Gate

The iPhone reminder storm exposed a persistence and concurrency requirement,
not merely a display issue. The current software gate proves:

1. one trusted PTT produces one ptt_press update and no repeat schedule;
2. acknowledgment resolves the incident and deactivates its schedule in one
transaction;
3. stale inference cannot change a closed incident back into an active state or
enqueue an inference follow-up;
4. overlapping and restarted scheduler workers cannot both claim one due row.

The scheduler now leases a due row with an atomic conditional SQLite update.
The second worker sees a changed due time and cannot deliver the same reminder.
The regression suite covers these paths in:

text
test_single_trusted_ptt_pushes_once_without_reminder_schedule
test_acknowledgment_atomically_cancels_pending_reminders
test_stale_inference_cannot_resurrect_closed_incident
test_overlapping_workers_cannot_claim_same_reminder
test_scheduler_restart_does_not_duplicate_a_claimed_reminder

This is accepted software regression coverage. A controlled full-pipeline
State F run must still confirm exactly one real phone notification for one PTT,
real acknowledgment cancellation, and no duplicate schedule after a managed
service restart.

Remaining Gate

The HackRF runtime does not currently expose a native dropped-sample counter.
Zero driver-log anomalies is useful evidence but is not equivalent to a
hardware overrun count.

Phase 0 still requires:

  1. controlled Channel 1 voice and end-to-end notification latency measurement;
  2. controlled nontrusted-channel gate-open and speech-start capture measurement;
  3. controlled multi-signal or approved replay State E;
  4. full incident-pipeline State F;
  5. a one-hour no-overrun run using a defensible external measurement;
  6. an overnight thermal, memory, worker, queue, transport, and notification soak.