aboutsummaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org104
1 files changed, 70 insertions, 34 deletions
diff --git a/todo.org b/todo.org
index 179054a..0a45644 100644
--- a/todo.org
+++ b/todo.org
@@ -46,6 +46,47 @@ below):
input-side-spec.org (DRAFT, four decisions open).
* Archsetup Open Work
+** TODO [#B] Ship the Framework 13 AMD internal-mic workaround in the installer :bug:velox:audio:solo:
+:PROPERTIES:
+:CREATED: [2026-10-06 Tue]
+:LAST_REVIEWED: 2026-10-06
+:END:
+From home's 2026-10-06 handoff, verified live the same morning. On velox
+(Framework 13, Ryzen AI 9 HX 370, linux-lts 6.18.55, BIOS 04.02) the internal
+microphone was dead in every app. Root cause is a known upstream kernel bug in
+the AMD ACP PDM digital-mic path on the Ryzen AI 300 Framework 13: the DMIC
+card (=acp-pdm-mach=, =hw:acppdmmach=) emits a constant full-scale rail (rms
+0.99999) instead of audio, and with UCM on PipeWire exposes only that broken
+DMIC as the internal mic (Framework community threads 81866 and 75748).
+
+Workaround home applied by hand, now live on velox:
+=/etc/wireplumber/wireplumber.conf.d/50-disable-ucm.conf= sets
+=monitor.alsa.properties { alsa.use-ucm = false }= and a =monitor.alsa.rules=
+entry with =device.disabled = true= for
+=alsa_card.pci-0000_c1_00.5-platform-acp-pdm-mach=, then =systemctl --user
+restart wireplumber=. The ALC285 falls back to its analog-stereo profile whose
+Internal Microphone pin (0x12) carries real audio; the default source is
+=alsa_input.pci-0000_c1_00.6.analog-stereo=, port =analog-input-internal-mic=,
+with the source volume lowered because the analog path stacks +30 dB capture
+on +30 dB boost. Revert: delete the file and restart wireplumber.
+
+What the installer needs: write that drop-in on this hardware only (gate on
+the =acp-pdm-mach= card or the Framework 13 AMD board id, not on the
+hostname), beside the existing pipewire/wireplumber package install, with a
+fixture test in the installer-steps suite. The live file on velox is the
+reference content. The audio failure taxonomy already lists =use-ucm= both
+ways as an audio-doctor AUTO remedy
+([[file:docs/design/2026-07-10-audio-failure-taxonomy.org][docs/design/2026-07-10-audio-failure-taxonomy.org]]), so the
+doctor's remedy and this drop-in should agree. The standing re-check after
+each kernel update (remove the drop-in once the upstream fix lands, UCM back
+on) lives in velox's machine notes, the KB node "velox's internal mic needs
+UCM off and the ACP PDM card disabled until the AMD digital-mic kernel bug is
+fixed", linked from the velox hardware node's neighbourhood, not in this
+one-shot task.
+
+Verify: =pactl get-default-source= names the analog-stereo source, and a
+short =arecord= of the internal mic has an rms well below 0.99.
+
** TODO [#B] calendar-sync fails headless after every boot until authinfo is unlocked :bug:dotfiles:gpg:
:PROPERTIES:
:LAST_REVIEWED: 2026-10-04
@@ -1795,9 +1836,9 @@ Re-scope before building. The 1:7 ratio this task argues from is gone, and two
of the three things it cites as noise are fixed at the source rather than
filtered.
-=87ff0b7= gave check 2 a machine-local expected-disabled list, so the four unit
+=3397463= gave check 2 a machine-local expected-disabled list, so the four unit
findings are declared intent rather than noise, and an entry whose unit turns
-out to be enabled is itself reported so the list cannot rot. =3fbf3e0= dropped
+out to be enabled is itself reported so the list cannot rot. =3686500= dropped
=.claude= from check 4's expected set, since the gitignore sweep writes that
line into every project whether or not one exists. velox went 8 findings to 1.
@@ -2330,13 +2371,30 @@ anticipated this ("fresh clones automatically carry the post-purge rewritten
git history"); nobody closed the task once the reinstall took that route.
Verified rather than assumed: both repos are level with =origin/main= today —
-archsetup at =6faa31c=, dotfiles at =65940f2=, both trees clean.
+archsetup at =41fea69=, dotfiles at =65940f2=, both trees clean.
One thing the reinstall did leave, and it is filed separately: the installer
cloned both repos =--depth 1=, so the history was present-but-truncated until
today's =git fetch --unshallow= (see the shallow-clone =[#A]=). A reconcile
against the rewritten remote was still unnecessary — a shallow clone of the
right history is not a diverged clone of the wrong one.
+
+*** 2026-10-06 Tue @ 06:08:06 -0600 Scrubbed the Signal pager number from this repo's history
+The agent's Signal identity number sat in two tracked files from 08-17
+(a post-rebuild-check fixture) and 09-13 (a filed design note). A
+working-tree redaction landed on 10-05, but the number stayed reachable in
+history for anyone cloning over cgit, so I rewrote it out: =git filter-repo
+--replace-text= in a fresh clone, verified by content search, diff search and
+a grep over every revision (all zero) and by a byte-identical HEAD tree, then
+a force-push of main, a server-side reflog expire and =gc --prune=now= on the
+bare repo (the old head object is gone), and a hard reset of the velox and
+ratio clones, each followed by a reflog expire and =gc --prune=now= so the
+old objects are gone there too. 59 of 951 commits changed SHA, every
+descendant of the 08-17 post-rebuild-check commit; tag v0.5 predates it and
+is unchanged.
+The old-to-new map is =assets/2026-10-06-history-rewrite-commit-map.txt=,
+and the citations in this file, the task archive, the topgrade spec and the
+KB nodes are remapped. Session logs keep the old SHAs; use the map.
** TODO [#B] Move archsetup off cgit to cjennings@cjennings.net :chore:security:
:PROPERTIES:
:LAST_REVIEWED: 2026-08-17
@@ -2348,7 +2406,7 @@ Plan: create a bare repo under cjennings's control off the cgit scan-path (e.g.
Ran the task's own verification step as it stands today, which is the honest
way to check an unstarted task rather than reading its body back. Anonymous
=git ls-remote https://git.cjennings.net/archsetup.git= succeeded with no
-credentials and returned =6faa31c= — this afternoon's HEAD. So the repo is
+credentials and returned =41fea69= — this afternoon's HEAD. So the repo is
still world-cloneable and current to the commit, not a stale published
snapshot.
@@ -5356,6 +5414,11 @@ Rewrote the bare =if $var= boolean conditionals (=show_status_only=, =fresh_inst
*** 2026-05-26 Tue @ 15:27:09 -0500 eval task moot — the line-434 eval is gone, the survivor is deliberate
Verified: the only =eval= left in =archsetup= is line 578 in =retry_install=, and it's intentional and documented — it captures =$?= directly from =eval "$cmd"= to dodge the if-compound-swallows-exit-code trap. Replacing it with an array would reintroduce that bug. The line-434 eval this task pointed at no longer exists. Nothing to change.
+*** 2026-10-06 Tue @ 06:08:06 -0600 One secret scrubbed from history; the full pre-release scan is still owed
+The Signal pager number was rewritten out of every commit on 10-06 (details
+on the cgit audit task). That was one known string; before the public push,
+run a full-history secrets scan rather than trusting the tree alone.
+
** TODO [#C] The audio doctor never checks the microphone :bug:audio:
:PROPERTIES:
:LAST_REVIEWED: 2026-08-25
@@ -5622,33 +5685,6 @@ problem is separate and unchanged.
repair_tunnel_dot_off (dotfiles net/src/net/repair.py) puts a tunnel link back to its DoT mode when turning DoT off didn't bring names back, and the evidence says "put back to <mode>" only when that restore succeeded. The restore-declined branch has no direct test. Give fake-resolvectl a second failure switch (FAKE_RESOLVECTL_DOT_RESTORE_FAIL) so the wording can be asserted absent as well as present. Follow-up from the f56fd1a review.
* Archsetup Resolved
-** DONE [#B] Function keys issue media actions instead of F-keys :bug:velox:
-CLOSED: [2026-09-01 Tue]
-:PROPERTIES:
-:CREATED: [2026-08-19 Wed]
-:LAST_REVIEWED: 2026-08-19
-:END:
-
-From the roam inbox, Craig's words: "function keys should issue F+number
-functionality rather than their media functionality when the button is hit.
-currently it's reversed and I have to hit function and the f button for F+number
-functionality."
-
-Check first whether this belongs to archsetup at all. On a Framework the Fn-lock
-is a firmware-level toggle held in the keyboard itself (Fn+Esc on most
-revisions), not something the OS sets, in which case this is one keystroke
-rather than a change here. If it is instead a hid/keyboard-module quirk, it is
-ours.
-
-Grading: Minor severity (the keys work, they are on the wrong layer, and there
-is a workaround) x every user every time (every F-key press) = P2 = [#B].
-
-Resolved 2026-09-01: not ours, as the body suspected. The Fn layer is decided
-in the EC (the keyboard reaches Linux as a plain AT keyboard on i8042), so no
-OS-side knob exists. One keystroke: Fn+Esc toggles Fn Lock; Craig confirmed
-F1-F12 now send F-keys by default. The EC holds the state across reboots; it
-reverts only if the EC loses power (battery disconnect or mainboard reset),
-which is likely why it flipped around the August reinstall.
** DONE [#A] Lock-screen clock stale after a real sleep :bug:hyprland:dotfiles:velox:
CLOSED: [2026-09-13 Sun] SCHEDULED: <2026-08-25 Tue>
:PROPERTIES:
@@ -5702,13 +5738,13 @@ fix + verify the backup timer (runbook Phase 5).
*** 2026-09-13 Sun @ 07:16:27 -0500 Applied the two live convergence steps on velox
Ratio got both by hand on 2026-09-12 while velox was off the tailnet; velox
came back on 2026-09-13 and got them over ssh: =systemctl disable --now
-wsdd.service= (no Samba host to advertise; 43acf51 stops the installer
+wsdd.service= (no Samba host to advertise; 64cccef stops the installer
enabling it) and =systemctl mask passim.service= (the unit is static, so the
-09-12 disable was a no-op; 38b1758 masks it in the installer, but
+09-12 disable was a no-op; 495d16d masks it in the installer, but
supplemental_software is a completed step there and doesn't re-run).
Verified after: wsdd inactive/disabled, passim inactive/masked, zero
listeners on 5357 and 27500. Same pass fast-forwarded velox's dotfiles to
-f56fd1a and archsetup to dc00a62, and confirmed the headless Proton Bridge
+f56fd1a and archsetup to 9c77b07, and confirmed the headless Proton Bridge
service is still disabled there.
*** 2026-09-13 Sun @ 07:56:37 -0500 Closed the drill and filed its working-dir artifacts