Librem 14: charging stalls, end threshold ignored, battery percentage erratic

I have a Librem 14 (DMI product version 1.0, BIOS 4.16-8-gf88975265a dated 04/25/2022, which I may have updated myself). It runs Debian trixie with kernel 6.12.111, and I installed librem-ec-acpi-dkms 0.9.2 to read the charge thresholds.

Battery history: The original Purism 4-cell pack showed the same behavior for years, then swelled. I replaced it with a third-party 3-cell pack. Both stopped at 91% while plugged in.

What I see:

While charging, the percentage stalls at 91% and stays there for hours. The status stays “Charging” and the battery keeps accepting current, around 1.2 to 2.7 A. The charge count (charge_now) sits at exactly 4.004 Ah during the stall.
After unplugging, the percentage reads 100% and holds for about 20 minutes while the battery supplies 2.5 to 3 A. Then it drops in steps, sometimes 6 points in a few seconds.
Charging voltage with the 3-cell pack reads about 13.0 V.
The thresholds read back as start 90 and end 100 when I first checked. I changed them to 40/90, then 80/90, 70/80, and 30/50. Every write reads back correctly, but charging continues past the end threshold. At 91% with an end of 90, the status still said “Charging.” At 73% with an end of 50, it still said “Charging,” and the wall meter stayed at the charging level.
Idle draw on the wall is about 14 to 15 W with the battery at 91%. The power draw does track CPU load (dictation adds about 10 W), so the meter is consistent.
What I haven’t confirmed: whether the pack’s per-cell rating is 4.2 V or 4.35 V. I also don’t know whether the EC firmware has a known bug affecting charge control in this version, or whether a newer EC firmware exists for this model.

Questions:

Is this a known issue with the charge controller or EC firmware on the Librem 14?
Is there an EC firmware version that enforces the charge thresholds?
Is the 91% stall and the 100%-then-drop behavior a known gauge problem, and is there a safe calibration procedure?
I can attach /sys/class/power_supply/BAT0 readings and a battery log if that helps.

Have you checked that you have the latest EC firmware flashed (https://source.puri.sm/firmware/releases/-/tree/master/librem_14)?
Anything power, batteries, charging, etc… is handled by the EC. The rest are just values/events being passed on to the OS.
Once sure you have the latest EC firmware, I would boot on a liveUSB PureOS Crimson and observe what happens - this in order to rule out any software problems with your installed Debian trixie.
If the same behaviour happens under these conditions (right EC version + official Crimson live), most likely you have a hardware problem somewhere. The battery pack could also be the problem (and only a swap with a known good one could confirm this)
I also suggest that you search the forum - there have been several threads about similar issues with the Librem 14.

It sounds like an older ECC version, pull the newest one, put it on a flash drive and follow Purism’s instructions.