PAF becomes saf/device (history kept), STATE.md dissolves
into saf/state.md with the dated era archived, the substrate
SAF moves up from souveraine, and every agreement points at
saf/INDEX.md and nowhere else. one map, nothing to remember
souveraine-callaudiod routes ENABLE_SPEAKER through the hook, which writes the
amps directly instead of switching a sink port that cannot exist on this card.
Verified over D-Bus: enable -> both amps, disable -> earpiece, not headset.
A real call is the outstanding confirmation.
HiFi captures fine - 204136 nonzero, peak 32726 - once the channel map is
clean. The zeros were stale SLIM map state, which PAF/audio.md already
documents as the alternation law and the post-call unmapped-leg bug, and the
TX7 poke used to "test the decimator" recreated that bug on all three AIFs.
Device is back on HiFi; the Voice Call workaround is reverted.
None reached blueline. The new measurement rules out the decimator and the
front-end mixer, which favours the sysclk/SLIM-lifecycle direction of mic-fix
over the pad-configuration branches.
gnome-calls asks org.mobian_project.CallAudio, which callaudiod owns, and
callaudiod switches a sink port - which cannot work when ACP splits earpiece and
speaker across two profiles. The working toggle is the hook's speaker on|off and
nothing in the UI calls it. Fix is a shim that claims the name; it needs a real
call to test before enabling.
92133 frames at peak 0. Codec routing is correct and forcing the call profile's
TX7 decimator changes nothing, so it is neither the decimator nor the front end
- what is left in the 11-control diff is VoiceMMode1. Voice Call (Mic, Speaker)
gives working mic plus speakerphone and is the workaround. Capture gain is UCM's
to set; runtime amixer does not survive profile activation.
The card was stuck in the modem call profile, so audio came out of the earpiece
and read as a weak speaker. Restoring HiFi is manual; classifying when each
profile is wanted is the actual task. Also notes that the device runs pipewire
while pipewire-abi-provider claims PulseAudio owns the stack.
TASK-39 step 1 is done and clean — default-routes stores 0.49 cubed and
rewrites within 6s of a change. 'Pinned on boot' is a faithful restore
of a value lower than wanted, so this is defaults and roles. No second
writer.
TASK-19 gains Casey's ask: source health, evidence and confidence have
no surface anywhere. Readout now, controls after 08(g) decides.