# 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:

- one managed HackRF owner;
- continuous `12 MS/s` input;
- all 22 FRS channel probes;
- Channel 1 continuously demodulated;
- zero transcription and inference backlog;
- zero active notification schedules;
- zero audio-frame drop increase;
- zero site-frame drop increase;
- zero receiver driver-anomaly increase.

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.
