Five weeks of forge evidence per week rather than a rolling window, so a
finding survives under one key and "closed after three weeks" is computable.
Rules run deterministically; agent.py hands the packet to whoever writes the
prose and never calls a model itself.
Model choice fails closed — no default, no substitute, and the exact named
model must be served or the pass refuses to run.
Scoped from the 2026-08-17/18 revoked-token incident: a day of 401s healed only by claude code rewriting the spare. Souveraine can refresh, rotate, and adopt logins but cannot birth one — so it mint its own PKCE grant, outside the phone/laptop sync, and say so in the Panel when every login is dead. Full Providers subsection is a later expansion.
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
The current user unit wins the boot race but still runs as the human whose Personal key the lock is meant to evict. Record the target souveraine-session principal, its narrow Wayland/PAM/data reach, and the fact that the rich shell is presentation—not release authority.
Join the older storage and authority audits to the SAF principal contract. Passwd entries are not isolation while one human-owned process still executes every agent, and the existing souveraine account is machined's—not Souvie's.\n\nKeep the readiness task honest: its current health fields inventory paths, but do not yet prove admission or the UID handling a live turn.
3431223 supplies tiled edges and closes the 504-of-540 draw; 41f07b1 removes 3,034 false touch-frame warnings.\n\nBoth are on ViewTop main. Package and glass proof remain separate.
Twelve completed or superseded task records leave the live queue; the byte-identical rename duplicate is removed.\n\nThe authority and somatic source records now point at SAF, while tasks 33, 48, 49, 53, 60, and 76 say what is actually left.
Split's chooser and Home both landed; the sheet carries six verbs and
lets go of a dead subject. One acceptance line is left and it is not
this task's to close — the entries are still a third hand-written list,
which is TASK-30's table and TASK-31's ring.
kernel r162 routed capture strictly mono 48k; undeclared UCM Mic
probe failed, no profiles formed at boot, card fell to pro-audio.
CaptureChannels/CaptureRate in both Mic devices restores the probe;
probe mechanics recorded for the next time.
RefuseManualStart killed every session start since 08-15. The control socket
answers in 0.47ms median and drops whole queues — 52 in one boot — which is what
strands a window. Detent, velocity and settle now come from the destination.
Six items left open, including Bitwarden, where the position theory is exhausted.
The twenty frames in AniAvatar carry no alpha, so one composited at the blink's
0.12 is a 12% black wash over the whole panel — indistinguishable from expose
dimming the screen. At that alpha the image lands inside 30 of the panel's 255
code values, so anything under 8/255 in the file is simply not there.
The shader half landed (viewtop 5d6f0f0, smithay 48adf6f) — dissonance is a
verb, the clock is shared with the dim, nobody has seen it on the panel.
Three corrections that came from opening the tree instead of the assessment:
The reference compositor has no post-process pass and no patched texture
shader. Windows are external textures inside the Flutter scene, so effects are
scene-graph filters — and their backdrop widget carries the grouped-blur rule
and a bounded ImageFilterConfig that are engine API, not stock Flutter. The
expensive half of #2 is already written upstream of us.
Our clone of it is 64 commits stale and they moved to Impeller as the default
renderer, so the eleven-patch DMSAA series our pins inherit is now a question
rather than an asset.
And atmosphere is not a thing this task invents. FELT_STATE_ARCHITECTURE.md has
had fourteen presets and a tool she calls since May. This is that instrument
moved down the stack, which means the preset layer is the deliverable and the
fifteen techniques are its renderer. Mood stays underived — the gap between what
she shows and what she carries is load-bearing.
Folder/subcategory support and inbox capture landed in souveraine-lens (61cf534, c71c7e4); this files the owner doc the build was missing and indexes it.
The r506 build had ChargeEvidence reading sysfs from sessiond's clock with
conclusion() inside the driver type — the rule violated four times in one
object. Recorded here: the ruling (§4), the task reconciliation, and the
bearer audit under the same rule. Also the corrected cutover answer: the
laptop is the test bed, the chooser is phone-shaped, mechanism undecided.
Four docs recorded 'nothing starts it' as settled fact and concluded don't use
the target, where the conclusion available was light the target. viewtop's
session launcher starts it now.
Five souveraine files own no package across the two live devices, and
/etc/systemd/system/souveraine-machined.service shadows the packaged
signer unit on both — measured, not inferred. Retires the Phase C deploy
checklist: CLAUDE.md banned its build step on 2026-07-24, START-HERE §5
bans its deploy step.
Sessiond's idle dimming now runs on the laptop (2026-08-15, first
observation) — keep or change is open. Casey stated the laptop moves
to viewtop as the real test bed; Hyprland stays as fallback so a
broken viewtop update can never lock the box.
The aarch64-only line traced to a partial install on 07-24 (no unit,
no PAM, no hook); the correction was already written down in the
08-09 power-authority handoff. Enabled from the hyprland.start hook
2026-08-15, lock cycle verified live, recovery doc on disk.
Sweep of five roots found 90+ bearing documents; tier 1 is six of them.
The anchor doc's prerequisite went stale 15 min after writing — halt was
fixed at 13:58, doc touched 14:13 — so a cold read would treat a cleared
blocker as blocking. Corrected, with the staleness kept as the specimen.
Resolves open question 1 outright. A second daemon with its own view of
the body would be the fifth instance of two actors deciding one thing,
and the hardest to debug — the disagreement would surface as feeling.
Relevance-fired memory is a plexus: same contract, same notability gate.
Fills the mood slot FELT_STATE_ARCHITECTURE deferred on 2026-05-15.
A belief ladder under both cadences, reusing the device_state doctrine:
actors are inputs, not authorities. Four types kept apart — exudate,
belief, impulse, intention — so mood and atmosphere cannot reconflate.
TASK-36 said the load path had never executed. It ran 2026-08-11 —
LoadNanoappResponse decoded, success byte set, and six gauges came off a flat
baseline at 2502 and 2990 against a 2500 floor. Recorded with Casey's numbers
and the two things that would otherwise compress away: the margin carries
intent, and the proximity veto is a separate job from the threshold.
TASK-66 corrected. The shipped front page promoted ViewTop to a peer of the
substrate, the OS and the agent; the canonical map never agreed. Three layers
now, plus the delivery defects found by auditing served bytes.
Reconciles the two owning docs with souveraine cfad688. Sub-scope A was
always half-landed: the substrate was multimodal end to end and the HTTP
door was text-only, so the TUI could see and every other surface was
blind. The door opens; nothing walks through it yet.
TASK-72 keeps image intake — picker, chip, base64, rendering — and now
has a server to call.