Watch
1
0
Fork
You've already forked SouveraineOS
0

DUMP: correct the charge-type record; kernel pipeline is not one step

The N/A reading was from the charger, not the battery. upower reads the
battery, and on SDM845 that is the fuel gauge, which has no charge_type at
all - so 628283f could never move the symptom. Records the device-link fix,
the three blockers actually in front of repo-add --sign, and the one
hand-copied header that had been blocking -Syu.
This commit is contained in:
Fimeg 2026-07-25 07:08:15 -04:00
commit 182368014e

View file

@ -38,6 +38,18 @@ survived a cold boot. Charge control is live for the first time:
real hardware, not just inferred. **This unblocked TASK-08(b)** — that task
still said mainline exposes no charge-threshold sysfs; corrected.
> **Corrected 2026-07-25.** That `N/A` was read by hand from the **charger**.
> upower reads `charge_type` from the *battery*, and on SDM845 the battery is
> the fuel gauge (`fuel-gauge@4000`), which exposes **no `charge_type` at
> all** — only `pmi8998-charger` (`charger@1000`) has it. So `628283f` is a
> correct kernel-spelling fix that could never change the symptom: installing
> it left `charge-type: unknown` exactly as before, verified on device.
> The real fix is `718e921`, which walks the device links the kernel already
> publishes (`battery/device/supplier:*` → devlink node → `supplier`
> `charger/power_supply/*/charge_type`). Note the `supplier:` symlink lands on
> a devlink node, not the device — there is an extra hop — and the SPMI bus
> controller is a supplier too, with no `power_supply/` child to skip.
**Why no flash was needed.** pocketboot reads `/boot/extlinux/extlinux.conf`
off `Arch_root` (XBOOTLDR type GUID) and boots the fixed names
`/boot/vmlinuz-blueline` + `initramfs-blueline.img`. `boot_a` is **stale**
@ -114,11 +126,33 @@ soname deps, but is **not yet packaged**.
## Open
1. **upower still not installed.** CI run `155288d` carries the `.r` version
fix; once green, `pacman -Syu` upgrades it and `charge-type` goes live.
2. **`kernel.yml` has no `repo-add --sign`** — it publishes raw packages, so
kernels are still fetched and `pacman -U`'d by hand. This is the last piece
of TASK-25.
1. ~~**upower still not installed.**~~ **DONE 2026-07-25.** Run `155288d` went
green; the asset republished as
`upower-souveraine-1.91.3.r628283f-1-aarch64.pkg.tar.zst` — no space, HTTP
200, sig verifies, and `vercmp` ranks it above the hand-built
`1.91.3+f18b1a4`. Installed from the repo with `pacman -S`. The `+`-in-
asset-name trap is closed end to end. **But `charge-type` still read
`unknown` afterwards** — see the correction above; that needed `718e921`,
pinned into souveraine at `16aa469`.
2. **`kernel.yml` needs more than `repo-add --sign`.** Parked by Casey
2026-07-25. Three blockers sit in front of it, all verified that day:
(a) the job **has never once passed** — 11 runs, 11 failures, none since
Jul 14, and `kernel-latest` is a 404 that has never been published; the
Jul 14 chain was gitea-credential fixes to `build.sh` whose last fix
(`9c51f3f`) was never re-run, so it may already work.
(b) `kernel/PKGBUILD` is `pkgver=7.1.1` / `pkgrel=1` — the commit lives only
in the kernelrelease, so every build is `7.1.1-1` and `-Syu` can never see
an upgrade. `build.sh:27-28` hardcodes both artifact names too.
(c) the obvious fix is non-monotonic: `vercmp 7.1.1.g588929024
7.1.1.gaaa111222` → `-1`, because a bare `.g<sha>` sorts as hex. Use
`7.1.1.r<count>.g<sha>`, matching souveraine's own scheme.
Casey chose the **additive shared archive** (2026-07-25): ci.yml must stop
deleting the `edge` release — today it deletes release+tag and re-uploads
only its own `pacman-repo`, so anything else published there is erased on
the next souveraine push. Each producer instead does read-modify-write on
`souveraine-<arch>.db` under a shared archdev flock. The archive key is
already in casey's gpg keyring on archdev, so no new signing secret is
needed; Pixel3Arch CI does need a token that can write to `Fimeg/souveraine`.
3. **Unpackaged:** squeekboard, stevia, `souveraine-player` (own repo),
`souveraine-splash` (aarch64 ELF, source not located in `~/Projects`).
4. **The shell surfaces, settings included, are unpackaged** and live in
@ -126,7 +160,36 @@ soname deps, but is **not yet packaged**.
Ordering matters: charge control can be exposed honestly *now*;
state-machine controls must wait for TASK-15/08 to give it actuators, or
they are the "success-shaped switches" TASK-19 forbids.
5. **Docs corrected this session:** TASK-08(b) (charge control unblocked),
5. **5,624 unowned files still sit in package territory** (2026-07-25 sweep of
`/usr /etc /opt /boot`: 379,153 files on disk, 5,624 owned by nothing).
The same disease as the eleven binaries, just not yet colliding: 16
`/usr/bin/blueline-*` scripts, the `gadget-*` set, `clatd`, `mmsdtng`,
`qmic`, `qrtr-*`, `rmtfs`, a hand-installed `Qt6Contacts` cmake tree,
`libcmatrix.so.0u` (the `ldconfig` warning on every transaction), and stale
`chatty.orig-pacman` / `chatty.pacman-orig` leftovers. Package fodder for
TASK-25.
**`pacman -Syu` was blocked by exactly one of them** — Casey had been unable
to upgrade for days. Intersecting the unowned set against the 112,051 files
the 199 pending packages ship gave a conflict set of ONE:
`/usr/include/aquamarine/backend/FrameScheduler.hpp`, hand-dropped Jul 9
into a directory whose every other header is owned by `aquamarine 0.12.1-1`,
and shipped by `extra/aquamarine 0.13.0-2`. It was also a version-mismatched
header sitting in the include path the whole time. Backed up to
`/var/backups/unowned-preupgrade/` and removed; `-Syu` is clear.
**Reusable diagnostic** — don't guess at conflicts, compute them:
pacman -Ql | awk '{print $2}' | sed 's#/$##' | sort -u > owned
find /usr /etc /opt /boot -xdev \( -type f -o -type l \) | sort -u > ondisk
comm -13 owned ondisk > unowned
pacman -Qu | awk '{print $1}' > pending
xargs -a pending pacman -Fl | awk '{print "/" $2}' | sed 's#/$##' | sort -u > newfiles
comm -12 unowned newfiles # <- exactly what will abort -Syu
Needs `pacman -Fy` first. The phone's login shell is **zsh** — no `mapfile`;
run the script under `bash -s` over ssh.
6. **Docs corrected this session:** TASK-08(b) (charge control unblocked),
`Pixel3Arch/CLAUDE.md` (new — do not flash), `SouveraineOS/STATE.md`,
`souveraine/CLAUDE.md`. `Pixel3Arch/PAF/HANDOFF-upower-charge-control.md`
is now stale in two places: gitea has both "LOCAL ONLY" commits, and the