Approved Format

Playback Policy

Stored zone message: CHIME -> ZONE ID -> MESSAGE

Stored All Call: CHIME -> LP_ALL -> MESSAGE

Live page: CHIME -> LIVE MICROPHONE. Live pages do not play a spoken zone-identification file.

Sequence-generated messages: use the exact same stored-message path as manual stored messages.

Approved Operational Files

Deployment Record

Activated on 2026-07-16 after structural validation, checksum verification, backup, service recovery, and four-zone simultaneous playback testing. Rollback bundle: /home/paul/ppoe-backups/messages-pre-audio-standard-v1-20260716T180152Z.

Duration Cache Standard

Stored-message playback must not perform synchronous duration probing in the command path. Required chime, zone-ID, and message assets are validated once at service startup; the cache is authoritative for durations used by playMessage().

Chime Policy

The current DYY9 release candidate still uses the existing approved chime for both stored messages and live pages. The next approved change is to split chimes by operational purpose:

The split should not modify the chime files in place. Validate supplied files first, then make the smallest server.js change: separate constants, startup validation entries, and existing playback references.

Live Audio Release Standard

External FFmpeg Status

FFmpeg remains installed on the PPOE head-end and is invoked as an external executable. PagePoint does not link FFmpeg libraries into its Node.js code. Current production uses include file decoding/resampling for mixer input and startup duration probing. FFmpeg removal is not a DYY9 release blocker.

Candidate PCM-Native Solution

  1. Convert active chimes to approved PCM WAV.
  2. Add an in-process 16-bit mono WAV reader and duration parser.
  3. Replace FFmpeg-backed mixer input with deterministic PCM read/resampling.
  4. Remove ffprobe, unused legacy FFmpeg helpers, and FFmpeg process-kill paths after validation.

Acceptance Gates Before Removing FFmpeg

Do not remove FFmpeg from an appliance until four-zone simultaneous playback, stored All Call, sequences, live-page chimes, live mic, interruption/resume, missing/invalid audio handling, underrun behavior, and timing comparisons against the current implementation pass. Keep the current FFmpeg path available as rollback during evaluation.