Watch
1
0
Fork
You've already forked souveraine
0
souveraine/rescue/archdev-unversioned-copy-2026-08-09
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Fimeg c367a4dbd9 rescue: preserve unversioned source copy found on archdev
/home/casey/souveraine on the build box is a full copy of this repo with no
.git at all, newest sources 2026-08-09 21:07. Audited by hashing every file
and querying this repo's object database: 1545 checked, ten unknown after
excluding the vendored upower submodule.

Eight carry real deltas; roughly fifty substantive lines have no upstream
equivalent. They are the follow-up to b2774c8 that was never committed: a
logind capability query before firing a power verb, and a failure-path release
of the in-flight power latch without which a refused suspend deafens the verb
until the next boot.

Preserved verbatim, not merged. The tree has moved 100+ commits and the
sessiond power seam wants a human.
2026-08-11 11:06:11 -04:00
..
files rescue: preserve unversioned source copy found on archdev 2026-08-11 11:06:11 -04:00
README.md rescue: preserve unversioned source copy found on archdev 2026-08-11 11:06:11 -04:00
vs-HEAD-517d8c1.diff rescue: preserve unversioned source copy found on archdev 2026-08-11 11:06:11 -04:00

Rescue: unversioned source copy on archdev

Found 2026-08-11 while auditing archdev for uncommitted work.

What it is

/home/casey/souveraine on archdev (10.10.20.123) is a full copy of this repo with no .git directory at all. 236 Rust files, a live souveraine.toml and souveraine.log, newest source files timestamped 2026-08-09 21:07.

It is not a worktree and not a clone. Nothing tracks it. Anything written there was one rm -rf away from being gone, with no reflog and no remote.

Not to be confused with /home/casey/Projects/souveraine on the same box, which is a git repo (branch primary, HEAD d2f51e9, 107 commits behind). That tree's 499-line uncommitted sessiond diff was checked line by line and is already upstream — 356 of 359 substantive added lines present at HEAD, the 3 misses being later refinements. No loss there.

How it was audited

Every file under src/ surfaces/ packaging/ tools/ docs/ scripts/ in the copy was hashed with git hash-object and tested against this repo's object database with git cat-file -e. Content that has ever been committed — on any branch, at any point — is known to the object db. What isn't known has never been committed anywhere.

1545 files checked. 175 unknown, of which 165 belong to the vendored packaging/upower-souveraine submodule (separate object db — expected).

Ten files remained. Two are identical to HEAD (untracked paths). The rest are below.

This method generalises: to prove a stray tree holds nothing new, hash its files and ask the object db. Timestamps and diff cannot tell "never committed" from "committed then superseded". Blob identity can.

What is actually unique

The copy sits just after b2774c8 (sessiond: a power seam that cannot report an outcome it does not have, Aug 9 19:31) and carries follow-up work done at 21:07 that was never committed. That commit's own message says "Session.qml keeps the legacy executor until this is exercised on hardware" — this is the next step, orphaned.

Roughly 50 substantive lines with no upstream equivalent:

  • device_state.rspower_request_failed(). Releases the in-flight power latch only on the failure path, because success is the machine going down. Without it a refused suspend (lid policy, a blocking inhibitor) leaves the latch set and deafens the verb for the rest of the uptime.
  • protocol.rslogind_capability() plumbing for the capability query.
  • server.rslogind_can(): ask logind live (CanPowerOff etc.) before firing a power verb, and refuse honestly instead of firing one the machine cannot honour. Deliberately not cached: hibernate depends on swap that can change after boot, and a cached answer would be exactly the shadow copy doctrine §4 forbids. Carries a parse fix — an earlier version lived in sh behind two escaping layers, matched a literal \" busctl never emits, and left every capability reading "unknown" on the phone.
  • HidController.qml — 8 lines, _notReadyReason() threading.

Superseded, do not resurrect: Action::Dim => brightnessctl set 10. That is the absolute-value form eb0292c replaced with a percentage twelve minutes after this copy was made. Face.qml's joinHands landed upstream already.

Contents here

  • files/ — the ten files verbatim as found on archdev.
  • vs-HEAD-517d8c1.diff — their delta against this repo at rescue time.

Not merged. The tree has moved 100+ commits since; applying this needs a human who knows the sessiond power seam. Preserved so the decision can be made later instead of never.

Follow-ups

  • Decide whether the logind capability gate lands. If yes it wants rebasing by hand, not git apply.
  • Delete or convert /home/casey/souveraine once the decision is made — an unversioned copy of the repo on a build box is a standing hazard.
  • /home/casey/Projects/souveraine on archdev is 107 commits behind and holds .git.broken-2026-07-29/. Worth reconciling.
  • Paths differ per machine: the souveraine remote is gitea on the laptop and origin on archdev. Check git remote -v before blaming the network.