Watch
1
0
Fork
You've already forked SouveraineOS
0
SouveraineOS/project-state/evidence/2026-W34.json
Fimeg a8caf27c14 project-state: weekly evidence, carried state, and an agent's door
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.
2026-08-18 19:53:19 -04:00

3603 lines
132 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"week": "2026-W34",
"range": {
"start": "2026-08-17",
"end": "2026-08-23",
"tz": "America/Toronto",
"start_utc": "2026-08-17T04:00:00Z",
"end_utc": "2026-08-24T04:00:00Z"
},
"collected_at": "2026-08-18T22:46:47Z",
"collector": {
"tool": "tools/project-state/collect.py",
"version": 1,
"forge": "gitea 1.25.5",
"api_calls": 85,
"redacted": false,
"repos": {
"souveraine": {
"commits": 32,
"checkout": true
},
"SouveraineOS": {
"commits": 9,
"checkout": true
},
"Pixel3Arch": {
"commits": 1,
"checkout": true
},
"souveraine-viewtop": {
"commits": 1,
"checkout": true
},
"souveraine-updater": {
"commits": 0,
"checkout": true
},
"souveraine-lens": {
"commits": 0,
"checkout": true
},
"souveraine-speech": {
"commits": 0,
"checkout": true
},
"souveraine-player": {
"commits": 0,
"checkout": true
},
"souveraine-usb": {
"commits": 0,
"checkout": true
},
"culver": {
"commits": 0,
"checkout": true
},
"linux-blueline": {
"commits": 0,
"checkout": false
},
"hexagonrpc": {
"commits": 0,
"checkout": true
},
"smithay": {
"commits": 0,
"checkout": true
},
"pocketboot": {
"commits": 0,
"checkout": true
},
"libcmatrix": {
"commits": 0,
"checkout": false
},
"upower": {
"commits": 0,
"checkout": true
}
},
"notes": []
},
"commits": [
{
"id": "c:souveraine:06a1a035",
"repo": "souveraine",
"sha": "06a1a035a60a2f351c245e3f07ce5e23dae0250f",
"branch": "primary",
"at": "2026-08-17T08:40:35-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "memory: append creates the directory it writes into",
"detail": "write has always called create_dir_all; append never did, so an append under\na directory that did not exist yet failed ENOENT. Every subconscious surfacing\nto system/metacognition/subconscious.md was lost this way — three WARNs at\n00:01:40 on 2026-08-17, and the directory had never existed in the repo's\nhistory.",
"dimension": "memory",
"basis": "paths",
"paths": [
"src/core/memory/mod.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/06a1a035a60a2f351c245e3f07ce5e23dae0250f"
},
{
"id": "c:souveraine:b3bbfeea",
"repo": "souveraine",
"sha": "b3bbfeeac42b8d3bbaca07940a20e4191557098f",
"branch": "primary",
"at": "2026-08-17T08:42:19-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "atmosphere: say the NaN case out loud",
"detail": "!(t > 0.0) trips clippy's partial-ord lint under the pinned 1.94 toolchain,\nwhich blocks the whole gate. t.is_nan() || t <= 0.0 is the same predicate\nwritten so the NaN intent is legible, with a test pinning both ends.",
"dimension": "runtime",
"basis": "repo",
"paths": [
"src/ui/atmosphere.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/b3bbfeeac42b8d3bbaca07940a20e4191557098f"
},
{
"id": "c:souveraine:5a5b647b",
"repo": "souveraine",
"sha": "5a5b647bde750681471c4e615562e7d50174c7fb",
"branch": "primary",
"at": "2026-08-17T08:42:19-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "subconscious: strain reaches the wire, not just the log",
"detail": "turn.rs sends InferenceStrain to the stream; the subconscious path only ever\nlogged it, so a provider refusing her was invisible to every surface. Same\nevent, same shape, emitted where the primary emits it.",
"dimension": "reflection",
"basis": "subject",
"paths": [
"src/server/consciousness_engine.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/5a5b647bde750681471c4e615562e7d50174c7fb"
},
{
"id": "c:souveraine:3b119033",
"repo": "souveraine",
"sha": "3b1190336594d164dc9176db4094cdef52d7f2e4",
"branch": "primary",
"at": "2026-08-17T08:42:19-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "bifrost: stop sleeping on a spent quota window",
"detail": "retry-after was honoured unclamped, so an 11997s header on 2026-08-16 parked\nthe subconscious pass for 3h20m with no cancel path. A 429 asking for more\nthan 60s is a spent window, not a burst, and it does not clear inside the\nretry loop — fail it and name the number. claude_subscription answers the\nsame header by rotating logins; bifrost has nothing to rotate to, so an\nabsent header keeps the ordinary backoff.",
"dimension": "surface",
"basis": "subject",
"paths": [
"src/bridge/bifrost.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/3b1190336594d164dc9176db4094cdef52d7f2e4"
},
{
"id": "c:souveraine:da8d69af",
"repo": "souveraine",
"sha": "da8d69af2fc5ead3cedd75c9cb2254849712432d",
"branch": "primary",
"at": "2026-08-17T09:16:11-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "panel: a message typed mid-turn reaches her",
"detail": "Souveraine.send returns false for a busy turn exactly as it does for a dead\nserver, and the sidebar rendered every false as \"server unreachable\" — so\ntyping while she worked showed the words, then a lie, and dropped the text.\nThe verbs existed on both sides since 93fe30a and nothing called them.",
"dimension": "surface",
"basis": "paths",
"paths": [
"surfaces/quickshell/modules/ii/sidebarLeft/AiChat.qml",
"surfaces/quickshell/services/Ai.qml"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/da8d69af2fc5ead3cedd75c9cb2254849712432d"
},
{
"id": "c:souveraine:5237039c",
"repo": "souveraine",
"sha": "5237039cb623e94b7911404f20fa4a03845bf3f8",
"branch": "primary",
"at": "2026-08-17T10:28:26-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "shell: compose resize and pose helpers",
"detail": "",
"dimension": "surface",
"basis": "paths",
"paths": [
"surfaces/quickshell/deploy.sh"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/5237039cb623e94b7911404f20fa4a03845bf3f8"
},
{
"id": "c:souveraine-viewtop:e8e3f9b1",
"repo": "souveraine-viewtop",
"sha": "e8e3f9b1b471a2c1ed43a53257686d766b459d15",
"branch": "main",
"at": "2026-08-17T10:51:56-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "package: carry the whole session start path",
"detail": "",
"dimension": "release",
"basis": "paths",
"paths": [
".gitea/workflows/ci.yml",
"packaging/arch/PKGBUILD.prebuilt",
"packaging/arch/PKGBUILD.prebuilt.aarch64"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/e8e3f9b1b471a2c1ed43a53257686d766b459d15"
},
{
"id": "c:souveraine:799f0650",
"repo": "souveraine",
"sha": "799f0650edafdad8a65e2f881119b22228713556",
"branch": "primary",
"at": "2026-08-17T11:03:35-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "saf: make session start one owned graph",
"detail": "",
"dimension": "surface",
"basis": "paths",
"paths": [
"saf/INDEX.md",
"saf/surface/02-session-start.md"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/799f0650edafdad8a65e2f881119b22228713556"
},
{
"id": "c:souveraine:59b52a81",
"repo": "souveraine",
"sha": "59b52a818bf2e3436b08ea604a9f985a8a2ed03a",
"branch": "primary",
"at": "2026-08-17T11:08:36-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "hands: arm the wire before opening the pad",
"detail": "",
"dimension": "surface",
"basis": "paths",
"paths": [
"assets/face/index.html",
"saf/INDEX.md",
"saf/surface/03-usb-hands.md",
"surfaces/quickshell/modules/ii/dock/Dock.qml",
"surfaces/quickshell/modules/souveraine/windowSheet/PowerMenu.qml",
"surfaces/quickshell/services/Face.qml",
"surfaces/quickshell/services/HidController.qml"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/59b52a818bf2e3436b08ea604a9f985a8a2ed03a"
},
{
"id": "c:souveraine:707a2772",
"repo": "souveraine",
"sha": "707a277273342039b63b3e05406e1f16bd451dcf",
"branch": "primary",
"at": "2026-08-17T11:19:39-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "replay: never turn thinking into speech",
"detail": "",
"dimension": "memory",
"basis": "paths",
"paths": [
"saf/memory/02-replay.md",
"src/core/session/mod.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/707a277273342039b63b3e05406e1f16bd451dcf"
},
{
"id": "c:souveraine:2bd61ec4",
"repo": "souveraine",
"sha": "2bd61ec4b3f45d671f5ffe1d4c80923f3108db83",
"branch": "primary",
"at": "2026-08-17T11:51:43-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "panel: put Souveraine controls at the hand",
"detail": "Move agent and conversation authority into truthful footer controls, keep external sessions observed-only, and give recent server conversations an explicit picker.\\n\\nProject itinerary state into a persistent ribbon, invalidate it on every itinerary mutation, and keep failures in the transcript while successful route chatter yields to the ribbon. Long tool returns now scroll in place.\\n\\nThe SAF now owns the full Panel contract and parity boundary; the abandoned green observer card is removed.",
"dimension": "surface",
"basis": "paths",
"paths": [
"saf/INDEX.md",
"saf/surface/04-agent-pane.md",
"src/api/handlers.rs",
"src/api/mod.rs",
"src/api/models.rs",
"src/server/turn.rs",
"surfaces/quickshell/deploy.sh",
"surfaces/quickshell/modules/ii/sidebarLeft/AiChat.qml",
"surfaces/quickshell/modules/souveraine/agent/AgentPaneMenu.qml",
"surfaces/quickshell/modules/souveraine/agent/ConversationMenu.qml",
"surfaces/quickshell/modules/souveraine/agent/ItineraryRibbon.qml",
"surfaces/quickshell/modules/souveraine/agent/ToolCard.qml",
"surfaces/quickshell/modules/souveraine/agent/qmldir",
"surfaces/quickshell/modules/souveraine/island/AgentSessionPanel.qml",
"surfaces/quickshell/modules/souveraine/island/qmldir",
"surfaces/quickshell/services/Ai.qml",
"surfaces/quickshell/services/Souveraine.qml"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/2bd61ec4b3f45d671f5ffe1d4c80923f3108db83"
},
{
"id": "c:souveraine:184a4497",
"repo": "souveraine",
"sha": "184a44973194691d44b6ef6f369454898a4212e2",
"branch": "primary",
"at": "2026-08-17T12:04:49-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "saf: give the panel's next cuts an owner",
"detail": "",
"dimension": "surface",
"basis": "paths",
"paths": [
"saf/INDEX.md",
"saf/surface/04-agent-pane.md",
"saf/surface/05-agent-presence.md",
"saf/surface/06-surface-lifetimes.md",
"surfaces/quickshell/modules/souveraine/island/IslandExpansion.qml",
"surfaces/quickshell/scripts/agent/agent-sessions.sh",
"surfaces/quickshell/services/AgentSessions.qml"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/184a44973194691d44b6ef6f369454898a4212e2"
},
{
"id": "c:SouveraineOS:7fc623c5",
"repo": "SouveraineOS",
"sha": "7fc623c5988ae6406fd341f24bd795b5f714ad3b",
"branch": "main",
"at": "2026-08-17T12:05:17-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "docs: retire panel tasks into the SAF",
"detail": "",
"dimension": "surface",
"basis": "paths",
"paths": [
"docs/substrate/tasks/INDEX.md",
"docs/substrate/tasks/archive/itinerary-persistent-ui.md",
"docs/substrate/tasks/archive/qml-panel-conversation-resume.md",
"docs/substrate/tasks/itinerary-persistent-ui.md",
"docs/substrate/tasks/itinerary-system.md",
"docs/substrate/tasks/qml-panel-conversation-resume.md",
"docs/tasks/69-agent-usage-session-daemon.md",
"docs/tasks/70-the-island-agent-surfacing.md",
"docs/tasks/72-surfacing-pane-tool-primitives.md",
"docs/tasks/75-the-shell-must-have-a-memory-budget.md",
"docs/tasks/README.md",
"docs/tasks/archive/69-agent-usage-session-daemon.md",
"docs/tasks/archive/70-the-island-agent-surfacing.md",
"docs/tasks/archive/72-surfacing-pane-tool-primitives.md",
"docs/tasks/archive/75-the-shell-must-have-a-memory-budget.md",
"docs/tasks/archive/README.md"
],
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/7fc623c5988ae6406fd341f24bd795b5f714ad3b"
},
{
"id": "c:souveraine:21ef10e8",
"repo": "souveraine",
"sha": "21ef10e883fc95eb85d2c032da866cc3b202a38e",
"branch": "primary",
"at": "2026-08-17T12:26:09-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "saf: join authority, belief, and the panel",
"detail": "Session and device authority now have living owners; belief and felt state match the Rust that actually runs.\\n\\nThe Panel audit keeps three real commands, names the image seam, and refuses to call inherited ii stubs parity.",
"dimension": "identity",
"basis": "paths",
"paths": [
"saf/INDEX.md",
"saf/authority/01-session.md",
"saf/authority/02-device-state.md",
"saf/nervous/01-eventbus.md",
"saf/nervous/02-belief.md",
"saf/nervous/03-felt-state.md",
"saf/surface/01-motion.md",
"saf/surface/02-session-start.md",
"saf/surface/04-agent-pane.md"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/21ef10e883fc95eb85d2c032da866cc3b202a38e"
},
{
"id": "c:SouveraineOS:f5122cb5",
"repo": "SouveraineOS",
"sha": "f5122cb59d3c87e34166c99f210603cfde584f21",
"branch": "main",
"at": "2026-08-17T12:27:53-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "docs: retire the task queue's dead branches",
"detail": "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.",
"dimension": "surface",
"basis": "paths",
"paths": [
"HANDOFF-2026-08-16-gesture-and-transport.md",
"docs/DEVICE-STATE-MACHINE.md",
"docs/SESSION-AUTHORITY-DOCTRINE.md",
"docs/archive/HANDOFF-2026-08-16-gesture-and-transport.md",
"docs/substrate/FELT_STATE_ARCHITECTURE.md",
"docs/substrate/INDEX.md",
"docs/substrate/SOMATIC_NERVOUS_SYSTEM.md",
"docs/substrate/tasks/INDEX.md",
"docs/substrate/tasks/archive/code-mode-tool-rendering.md",
"docs/substrate/tasks/archive/federation-summon.md",
"docs/substrate/tasks/archive/mid-turn-subconscious-checkpoint.md",
"docs/substrate/tasks/archive/primitive-refactor-super-task.md",
"docs/substrate/tasks/archive/rename-aster-to-subconscious.md",
"docs/substrate/tasks/archive/somatic-lane-planning.md",
"docs/substrate/tasks/archive/todo-system-fix.md",
"docs/substrate/tasks/archive/user-nickname-system.md",
"docs/substrate/tasks/code-mode-tool-rendering.md",
"docs/substrate/tasks/federation-summon.md",
"docs/substrate/tasks/mid-turn-subconscious-checkpoint.md",
"docs/substrate/tasks/primitive-refactor-super-task.md",
"docs/substrate/tasks/rename-aster-to-subconscious.md",
"docs/substrate/tasks/somatic-lane-planning.md",
"docs/substrate/tasks/todo-system-fix.md",
"docs/substrate/tasks/user-nickname-system.md",
"docs/tasks/24-keyboard-layout-rethink.md",
"docs/tasks/38-pill-swipe-osk-swap.md",
"docs/tasks/48-lock-surface-reload-fatal.md",
"docs/tasks/49-bearer-selection-as-device-state.md",
"docs/tasks/53-viewtop-audit-open.md",
"docs/tasks/55-hand-verbs-on-the-glass.md",
"docs/tasks/66-souveraineai-overhaul.md",
"docs/tasks/76-provisioning-by-package.md",
"docs/tasks/README.md",
"docs/tasks/archive/24-keyboard-layout-rethink.md",
"docs/tasks/archive/38-pill-swipe-osk-swap.md",
"docs/tasks/archive/55-hand-verbs-on-the-glass.md",
"docs/tasks/archive/66-souveraineai-overhaul.md",
"docs/tasks/archive/README.md",
"docs/tasks/archive/unify-shell-trees-laptop-phone.md",
"docs/tasks/unify-shell-trees-laptop-phone.md"
],
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/f5122cb59d3c87e34166c99f210603cfde584f21"
},
{
"id": "c:SouveraineOS:1d9f6297",
"repo": "SouveraineOS",
"sha": "1d9f62974ea3e83906c11e902d1f1ec3c715281a",
"branch": "main",
"at": "2026-08-17T12:29:30-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "task-53: mark the tiled Firefox fix pushed",
"detail": "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.",
"dimension": "surface",
"basis": "paths",
"paths": [
"docs/tasks/53-viewtop-audit-open.md",
"docs/tasks/README.md"
],
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/1d9f62974ea3e83906c11e902d1f1ec3c715281a"
},
{
"id": "c:souveraine:91ab8053",
"repo": "souveraine",
"sha": "91ab8053e5001ce671b5d0edc96e98bfd4a33860",
"branch": "primary",
"at": "2026-08-17T12:36:45-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "saf: give every agent her own principal",
"detail": "A SeedID says who she is; it cannot tell the kernel whose hands are on the files. Split logical identity, node commission, and the local Unix principal, then make creation and health prove all three.\\n\\nSouvie, Annie, and Vanguard get distinct node-local accounts. The existing souveraine user stays where it belongs: under the machine signer. The boundary has teeth only when each turn and its tools run in an agent-owned worker, so the shared-UID compatibility state is named acting-as-human instead of polished green.\\n\\nAdmission projects an operating skill from real capabilities. The prose teaches the reach; it never grants it.",
"dimension": "identity",
"basis": "paths",
"paths": [
"saf/INDEX.md",
"saf/authority/01-session.md",
"saf/identity/01-seed-identity.md",
"saf/identity/02-agent-principal.md"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/91ab8053e5001ce671b5d0edc96e98bfd4a33860"
},
{
"id": "c:SouveraineOS:9815185c",
"repo": "SouveraineOS",
"sha": "9815185caa3002408db0516212d27b951bb5e8ae",
"branch": "main",
"at": "2026-08-17T12:36:45-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "docs: put agent identity behind a real uid",
"detail": "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.",
"dimension": "identity",
"basis": "paths",
"paths": [
"docs/STORAGE-ENCRYPTION.md",
"docs/souveraine-components/INVENTORY.md",
"docs/souveraine-components/audit-status.md",
"docs/souveraine-components/machined.md",
"docs/souveraine-components/sessiond.md",
"docs/substrate/tasks/alpha-tester-readiness.md"
],
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/9815185caa3002408db0516212d27b951bb5e8ae"
},
{
"id": "c:souveraine:af60d9e4",
"repo": "souveraine",
"sha": "af60d9e40150511760be01be9c9c5b8a6fd03fc2",
"branch": "primary",
"at": "2026-08-17T12:36:53-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "packaging: bring machined's user with it",
"detail": "The development recipe installed the sysusers declaration; the CI package that devices consume quietly dropped it. Ship the machine-tier souveraine account in the prebuilt package and assert the file is present before publishing.\\n\\nThis account belongs to machined. Souvie gets her own principal through agent admission.",
"dimension": "identity",
"basis": "subject",
"paths": [
".gitea/workflows/ci.yml",
"packaging/arch/PKGBUILD.prebuilt"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/af60d9e40150511760be01be9c9c5b8a6fd03fc2"
},
{
"id": "c:souveraine:ee496a7c",
"repo": "souveraine",
"sha": "ee496a7c6ecb687a16c25d63721465a56fc12be2",
"branch": "primary",
"at": "2026-08-17T12:43:45-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "saf: name the borrowed hand and lock owner",
"detail": "Make the laptop and phone obey the same principal map: Souvie, Annie/Aster, and Vanguard are dedicated residents; Kitty, Gem, and Hal knowingly borrow Casey's UID. Their live posture is regenerated from actual credentials for every model request, outside memory, replay, and compaction.\\n\\nTake the lock boundary out of all of them. Casey authenticates, agents may request, and the dedicated souveraine-session principal holds the hostile pre-unlock edge with only Ambient and Revealable reach.",
"dimension": "identity",
"basis": "paths",
"paths": [
"saf/authority/01-session.md",
"saf/identity/02-agent-principal.md",
"saf/memory/02-replay.md",
"saf/surface/02-session-start.md"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/ee496a7c6ecb687a16c25d63721465a56fc12be2"
},
{
"id": "c:SouveraineOS:341a2fe0",
"repo": "SouveraineOS",
"sha": "341a2fe06059b395cc21650cc114815300109344",
"branch": "main",
"at": "2026-08-17T12:43:45-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "docs: take the lockscreen out of casey's uid",
"detail": "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.",
"dimension": "identity",
"basis": "paths",
"paths": [
"docs/SESSION-TRUST-ARCHITECTURE.md",
"docs/STORAGE-ENCRYPTION.md",
"docs/session-authority-boot-order.md",
"docs/souveraine-components/sessiond.md"
],
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/341a2fe06059b395cc21650cc114815300109344"
},
{
"id": "c:souveraine:14298e73",
"repo": "souveraine",
"sha": "14298e73f8334caaf181992bcc66413981674e61",
"branch": "primary",
"at": "2026-08-17T14:41:27-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "packaging: declare the lock authority's account",
"detail": "souveraine-session is machine-tier — one per install, like souveraine.\nAgent principals stay out: sysusers is per-install, admission is per\nagent and per node, and a line here would mint annie on every device the\npackage touches. sessiond stays a user unit until the lock handshake,\nPAM path and key-eviction order are proven under the new uid.",
"dimension": "identity",
"basis": "subject",
"paths": [
"packaging/arch/souveraine.sysusers"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/14298e73f8334caaf181992bcc66413981674e61"
},
{
"id": "c:souveraine:dcd44a0c",
"repo": "souveraine",
"sha": "dcd44a0c1db41d6074044e382e36e507a735d572",
"branch": "primary",
"at": "2026-08-17T14:41:27-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "agents: name the uid behind every model request",
"detail": "Intent lives in agent.json; posture is measured fresh from process\ncredentials per request, so resume and compaction cannot replay a stale\nuid as history. `isolated` needs account, uid, worker binding and the\nroot-owned mapping to agree — a passwd entry alone reads principal-drift.",
"dimension": "runtime",
"basis": "paths",
"paths": [
"src/api/handlers.rs",
"src/api/mod.rs",
"src/api/models.rs",
"src/backend/local/mod.rs",
"src/backend/mod.rs",
"src/backend/remote.rs",
"src/core/archivist/mod.rs",
"src/core/mod.rs",
"src/core/principal.rs",
"src/core/reflection/mod.rs",
"src/main.rs",
"src/server/agent_inventory.rs",
"src/server/consciousness_engine.rs",
"src/server/subagent.rs",
"src/server/turn.rs",
"src/ui/setup.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/dcd44a0c1db41d6074044e382e36e507a735d572"
},
{
"id": "c:souveraine:0f8fe22a",
"repo": "souveraine",
"sha": "0f8fe22ab6e4ead5cd47edce27db6f9536598865",
"branch": "primary",
"at": "2026-08-17T15:16:30-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "admit: give an agent her own uid through one writer",
"detail": "souveraine-admit creates or adopts one account via systemd-sysusers, writes\nthe root-owned mapping health reads, and reports what NSS says afterwards\ninstead of what it asked for. An account belongs to one agent: handing\nannie's to souvie is refused in both directions, as is adopting a uid >=1000.\nBinding is by SeedID, not the UUID filename — a mismatch is identity-drift.",
"dimension": "identity",
"basis": "paths",
"paths": [
".gitea/workflows/ci.yml",
"Cargo.toml",
"packaging/arch/PKGBUILD",
"packaging/arch/PKGBUILD.prebuilt",
"src/api/models.rs",
"src/bin/souveraine-admit.rs",
"src/core/mod.rs",
"src/core/principal.rs",
"src/core/principal_map.rs",
"src/ui/setup.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/0f8fe22ab6e4ead5cd47edce27db6f9536598865"
},
{
"id": "c:souveraine:fb96f210",
"repo": "souveraine",
"sha": "fb96f210f3860ca84474a834dbb3a6570c9e37dd",
"branch": "primary",
"at": "2026-08-17T18:39:19-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "identity: write the contract, not the household",
"detail": "The chapter named one person's agents in the design of record: a table of\nAnnie, Vanguard, Souvie against one human's devices, and a dozen sentences\nthat read \"Casey\" where they meant \"the human\". A future reader learning the\narchitecture from this file would learn a household along with it.",
"dimension": "identity",
"basis": "paths",
"paths": [
"saf/identity/02-agent-principal.md"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/fb96f210f3860ca84474a834dbb3a6570c9e37dd"
},
{
"id": "c:souveraine:8e242a70",
"repo": "souveraine",
"sha": "8e242a7083f9552ea19427568e17fe83bfb0245f",
"branch": "primary",
"at": "2026-08-17T18:45:53-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "identity: the executor exists; the ceremony does not",
"detail": "The current-state list still said no admission executor existed. It has since\n0f8fe22, and a chapter that is the design of record cannot carry a fact that\nstopped being true two commits ago.",
"dimension": "identity",
"basis": "paths",
"paths": [
"saf/identity/02-agent-principal.md"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/8e242a7083f9552ea19427568e17fe83bfb0245f"
},
{
"id": "c:souveraine:9bee0e8a",
"repo": "souveraine",
"sha": "9bee0e8a944e521a0407a0387df066109c295474",
"branch": "primary",
"at": "2026-08-17T21:27:15-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "cadences: give reflection and the archivist bodies",
"detail": "Neither had ever completed a pass. Reflection's loop reserved no round for\nits report, so exhausting eight was the only exit; the archivist could not\nparse journal/YYYY/MM/DD, the layout its own mandate instructs. Its\nsub-500-token budget was a ratio frozen against an 8k model in May.",
"dimension": "reflection",
"basis": "paths",
"paths": [
"src/core/archivist/mod.rs",
"src/core/cadence.rs",
"src/core/config.rs",
"src/core/memory/mod.rs",
"src/core/mod.rs",
"src/core/prompt.rs",
"src/core/reflection/mod.rs",
"src/core/seeds.rs",
"src/server/agent_inventory.rs",
"src/server/consciousness_engine.rs",
"src/server/mod.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/9bee0e8a944e521a0407a0387df066109c295474"
},
{
"id": "c:souveraine:49c6a6a8",
"repo": "souveraine",
"sha": "49c6a6a8dda4b43ab9376fed08de08c6e16edf83",
"branch": "primary",
"at": "2026-08-17T22:20:10-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "clippy: shed dead archivist handle, drop needless borrow",
"detail": "the mandate that 'own' promised to open is already read via\ncadence_root; the & in front of format! trips\nneedless_borrows_for_generic_args on 1.94",
"dimension": "memory",
"basis": "paths",
"paths": [
"src/core/archivist/mod.rs",
"src/core/reflection/mod.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/49c6a6a8dda4b43ab9376fed08de08c6e16edf83"
},
{
"id": "c:souveraine:04ceac79",
"repo": "souveraine",
"sha": "04ceac79bf6f018fc80d53a1c2d643ba450f02be",
"branch": "primary",
"at": "2026-08-17T22:27:55-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "memory tool: tree names the door past the fence",
"detail": "reflection's context now registers all four trees, and a\ntree param on the memory verb lands reads and writes in the\nnamed memfs, committed under her own name. an unknown tree\nrefuses and lists the doors, so a typo costs one error\ninstead of a wrong-tree write",
"dimension": "memory",
"basis": "paths",
"paths": [
"src/core/memory/mod.rs",
"src/core/reflection/mod.rs",
"src/core/tools/body.rs",
"src/core/tools/defs.rs",
"src/core/tools/mod.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/04ceac79bf6f018fc80d53a1c2d643ba450f02be"
},
{
"id": "c:souveraine:0398f9f1",
"repo": "souveraine",
"sha": "0398f9f190ad7cb6e38e68fa506ef0a4453b03a5",
"branch": "primary",
"at": "2026-08-17T23:29:43-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "claude: don't fall back onto a login that cannot speak",
"detail": "Rotation picked the spare on has_credential — a string check — and took\none whose token had expired four days earlier; every call after 21:51\ncame back 401 revoked, reading as a dead subscription. A candidate now\nhas to authenticate, and the window it left is recorded so the same\nround-robin can wrap back to it once the window returns.",
"dimension": "identity",
"basis": "subject",
"paths": [
"src/bridge/claude_subscription.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/0398f9f190ad7cb6e38e68fa506ef0a4453b03a5"
},
{
"id": "c:souveraine:7b45054f",
"repo": "souveraine",
"sha": "7b45054f93af3136e2f0eee006df2803fcc0c342",
"branch": "primary",
"at": "2026-08-18T09:34:18-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "felt state: the observing act, and agency as two events",
"detail": "Adopts four things from the instance-map exercise that the chapter did not\ncarry: agency congruence split into authorship and answer, unresolved as an\ninner field the status marker regulates, introspection typed as a secretion\nwith its own provenance, and coincidence as part of the same notability gate.",
"dimension": "runtime",
"basis": "repo",
"paths": [
"saf/nervous/03-felt-state.md"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/7b45054f93af3136e2f0eee006df2803fcc0c342"
},
{
"id": "c:souveraine:5f7f23f3",
"repo": "souveraine",
"sha": "5f7f23f30ce4136430e83ead918b6c54b5ec0428",
"branch": "primary",
"at": "2026-08-18T09:34:39-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "memory tool: point the tree test at real roots",
"detail": "MemoryRepo::new roots at {base}/{agent}/memory; the context\nhad to carry those roots, not the bare temp dirs. run 1795\nwent red because the handler opened a path that was never\na repository",
"dimension": "memory",
"basis": "paths",
"paths": [
"src/core/memory/mod.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/5f7f23f30ce4136430e83ead918b6c54b5ec0428"
},
{
"id": "c:souveraine:b7513768",
"repo": "souveraine",
"sha": "b75137689f10ec3ebbaf2f9bfe39c081b5698a46",
"branch": "primary",
"at": "2026-08-18T09:47:30-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "saf: the architecture moved up to the umbrella",
"detail": "the spine lives at SouveraineOS/saf/INDEX.md now; this\ndirectory is a pointer, and the map line in AGENTS.md\nfollows it",
"dimension": "identity",
"basis": "paths",
"paths": [
"AGENTS.md",
"saf/INDEX.md",
"saf/README.md",
"saf/archive/architecture.md",
"saf/archive/atproto-federation.md",
"saf/archive/config.md",
"saf/archive/consciousness.md",
"saf/archive/gaps.md",
"saf/archive/glossary.md",
"saf/archive/identity.md",
"saf/archive/laws.md",
"saf/archive/modules.md",
"saf/archive/per-agent-compaction-provider.md",
"saf/archive/plan.md",
"saf/archive/server.md",
"saf/archive/tui-model-picker-provider.md",
"saf/archive/update-agent-request-souveraine.md",
"saf/authority/01-session.md",
"saf/authority/02-device-state.md",
"saf/core/01-substrate.md",
"saf/core/02-duality.md",
"saf/federation/01-node-enrollment.md",
"saf/identity/01-seed-identity.md",
"saf/identity/02-agent-principal.md",
"saf/memory/01-compaction.md",
"saf/memory/02-replay.md",
"saf/nervous/01-eventbus.md",
"saf/nervous/02-belief.md",
"saf/nervous/03-felt-state.md",
"saf/surface/01-motion.md",
"saf/surface/02-session-start.md",
"saf/surface/03-usb-hands.md",
"saf/surface/04-agent-pane.md",
"saf/surface/05-agent-presence.md",
"saf/surface/06-surface-lifetimes.md"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/b75137689f10ec3ebbaf2f9bfe39c081b5698a46"
},
{
"id": "c:SouveraineOS:bde961c6",
"repo": "SouveraineOS",
"sha": "bde961c6f2f9050cb64ee007ac0d3b753656b4a7",
"branch": "main",
"at": "2026-08-18T09:47:30-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "saf: one spine — device, state, and work under the index",
"detail": "PAF becomes saf/device (history kept), STATE.md dissolves\ninto saf/state.md with the dated era archived, the substrate\nSAF moves up from souveraine, and every agreement points at\nsaf/INDEX.md and nowhere else. one map, nothing to remember",
"dimension": "sensorium",
"basis": "paths",
"paths": [
"AGENTS.md",
"CLAUDE.md",
"PAF/README.md",
"PAF/audio.md",
"PAF/build.md",
"PAF/display.md",
"PAF/edge-sense.md",
"PAF/evidence/README-pmos-era.md",
"PAF/evidence/README.md",
"PAF/evidence/android_modem_bringup_capture.md",
"PAF/evidence/audio/HANDOFF-audio-finish-20260719-evening.md",
"PAF/evidence/audio/HANDOFF-mic-unpin.md",
"PAF/evidence/audio/audio-2026-07-19-LIVE-reconciliation.md",
"PAF/evidence/build-pmos-era.md",
"PAF/evidence/captures/glink_trace_pmos-20260702.txt",
"PAF/evidence/d10-adp-touch-2026-08-09.patch",
"PAF/evidence/diag_capture.md",
"PAF/evidence/first_provision_capture.md",
"PAF/evidence/los-mss-translated.c",
"PAF/evidence/modem_community_research_20260622.md",
"PAF/evidence/modem_community_research_20260626.md",
"PAF/evidence/modem_consumer_chain_20260626.md",
"PAF/evidence/modem_dt_rf_analysis_20260622.md",
"PAF/evidence/platform-pmos-era.md",
"PAF/evidence/pmos_fix_plan.md",
"PAF/evidence/power/HANDOFF-upower-charge-control.md",
"PAF/evidence/qcril_bringup_capture.md",
"PAF/evidence/qcril_full_provisioning.md",
"PAF/evidence/qcril_online_sequence.md",
"PAF/evidence/qrtr_tools_reference.md",
"PAF/evidence/secure_load_tz_frontier.md",
"PAF/evidence/tier1_los_vs_mainline_diff.md",
"PAF/evidence/tz_listener_archaeology.md",
"PAF/mms.md",
"PAF/modem.md",
"PAF/platform.md",
"PAF/slpi.md",
"PAF/touch.md",
"START-HERE.md",
"STATE.md"
],
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/bde961c6f2f9050cb64ee007ac0d3b753656b4a7"
},
{
"id": "c:SouveraineOS:b1c9494f",
"repo": "SouveraineOS",
"sha": "b1c9494f12b4997d67d7ecedab6f727c820c6a0f",
"branch": "main",
"at": "2026-08-18T09:47:35-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "tools: keep python cache out of the record",
"detail": "",
"dimension": "release",
"basis": "paths",
"paths": [
"tools/.gitignore",
"tools/__pycache__/validate-distribution.cpython-314.pyc"
],
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/b1c9494f12b4997d67d7ecedab6f727c820c6a0f"
},
{
"id": "c:SouveraineOS:3bdfba84",
"repo": "SouveraineOS",
"sha": "3bdfba8468a5f6860ea53080ec597a96bd6b4b58",
"branch": "main",
"at": "2026-08-18T10:02:12-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "claude: the card replaces the reading order",
"detail": "the map is saf/INDEX.md; the rest of what an agent needs\ncomes from asking. response rules + no invented memory\nlocations, in every repo",
"dimension": "surface",
"basis": "subject",
"paths": [
"CLAUDE.md"
],
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/3bdfba8468a5f6860ea53080ec597a96bd6b4b58"
},
{
"id": "c:Pixel3Arch:05c389a7",
"repo": "Pixel3Arch",
"sha": "05c389a769a8099044af11b11efe4386a4fd8998",
"branch": "main",
"at": "2026-08-18T10:02:25-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "claude: the card replaces the essay",
"detail": "",
"dimension": "surface",
"basis": "subject",
"paths": [
"CLAUDE.md"
],
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/05c389a769a8099044af11b11efe4386a4fd8998"
},
{
"id": "c:SouveraineOS:1c565ce0",
"repo": "SouveraineOS",
"sha": "1c565ce0e2cdb465d1f93249d2369e9a9d88ff4f",
"branch": "main",
"at": "2026-08-18T10:33:36-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "task 78: the claude login belongs to souveraine, not to claude",
"detail": "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.",
"dimension": "identity",
"basis": "paths",
"paths": [
"docs/tasks/78-claude-login-owned-by-souveraine.md",
"docs/tasks/README.md"
],
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/1c565ce0e2cdb465d1f93249d2369e9a9d88ff4f"
},
{
"id": "c:souveraine:727c4969",
"repo": "souveraine",
"sha": "727c49694926ebab7e8a63e785994608a7231465",
"branch": "primary",
"at": "2026-08-18T10:54:44-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "reflection: catch-up cadence so a missed boundary cannot be lost",
"detail": "is_multiple_of fired only at the exact boundary turn; an interrupt, a\nfailed pass, or a restart rehydrating past it lost the cadence forever\nand the N+25 pass never ran. The reflection tree now holds a marker of\nthe last successful and last attempted turns; a due-but-missed pass\nstays due, and a failed one backs off five turns instead of burning a\ncall per turn. Outcomes are recorded from on_response.",
"dimension": "reflection",
"basis": "paths",
"paths": [
"src/core/reflection/mod.rs",
"src/server/consciousness_engine.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/727c49694926ebab7e8a63e785994608a7231465"
},
{
"id": "c:souveraine:7089dfb8",
"repo": "souveraine",
"sha": "7089dfb824d8e1f6cc4ec4538614d54df6632eec",
"branch": "primary",
"at": "2026-08-18T10:54:48-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "server: announce restarts and resume with history hydrated",
"detail": "POST /v1/server/restart writes a reason marker and asks systemd; boot\nreads it, announces resumed (or started) on the event bus and the new\nstatus endpoint, and the panel says why it is back instead of\npretending. Conversations hydrate at boot and on a lazy miss, so a\nheld conversation id resolves after a restart instead of 404ing.",
"dimension": "runtime",
"basis": "paths",
"paths": [
"src/api/handlers.rs",
"src/api/mod.rs",
"src/api/models.rs",
"src/backend/mod.rs",
"src/backend/remote.rs",
"src/server/mod.rs",
"src/server/restart.rs",
"src/server/session_manager.rs",
"src/ui/chat/mod.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/7089dfb824d8e1f6cc4ec4538614d54df6632eec"
},
{
"id": "c:souveraine:9e147093",
"repo": "souveraine",
"sha": "9e147093ec77e3e49c1f56038c5e41d871fab5c3",
"branch": "primary",
"at": "2026-08-18T11:01:37-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "handlers: session_or_hydrate returns the dashmap guard, not Arc",
"detail": "the session index holds values; get() hands back a Ref tied to the map\nborrow. The Arc-typed helper was a type error on its first CI run.",
"dimension": "runtime",
"basis": "paths",
"paths": [
"src/api/handlers.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/9e147093ec77e3e49c1f56038c5e41d871fab5c3"
},
{
"id": "c:souveraine:f32f00c6",
"repo": "souveraine",
"sha": "f32f00c6e3dff220d837c52cef3fbe8deb5ea98d",
"branch": "primary",
"at": "2026-08-18T14:34:16-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "bifrost: a base url with a path is the complete api root",
"detail": "Appending /v1 by testing only the last path segment doubled Google's\n/v1beta/openai into /v1beta/openai/v1, where a POST hangs with zero\nbytes and GET /models still answers 200. Only a bare authority now\ngets the default; /v1, /v4 and /zen/go/v1 roots pass through.",
"dimension": "runtime",
"basis": "repo",
"paths": [
"src/bridge/bifrost.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/f32f00c6e3dff220d837c52cef3fbe8deb5ea98d"
},
{
"id": "c:souveraine:76e12045",
"repo": "souveraine",
"sha": "76e12045a4a48fb38fcaaf1f1b42c117c542f274",
"branch": "primary",
"at": "2026-08-18T14:57:47-04:00",
"author": "casey.tunturi@gmail.com",
"subject": "bridge: generic openai client stops calling itself bifrost",
"detail": "OpenAiCompatibleClient serves every openai-compatible provider, so Gem's\nturns to Google logged as \"Bifrost client initialized\" and \"Bifrost\nconnection failed\" without touching the gateway at all. Logs and errors\nnow name the configured [providers.<id>] and the endpoint. The real\n[providers.bifrost], its config section and its key are untouched.",
"dimension": "runtime",
"basis": "paths",
"paths": [
"src/api/models.rs",
"src/backend/local/mod.rs",
"src/bridge/bifrost.rs",
"src/bridge/claude_subscription.rs",
"src/bridge/mod.rs",
"src/bridge/model_router.rs",
"src/bridge/openai_compatible.rs",
"src/bridge/provider.rs",
"src/bridge/providers/mod.rs",
"src/bridge/providers/openai_oauth.rs",
"src/bridge/providers/responses.rs",
"src/core/archivist/mod.rs",
"src/core/compact/strategy.rs",
"src/core/reflection/mod.rs",
"src/core/session/mod.rs",
"src/core/tools/mod.rs",
"src/server/consciousness_engine.rs",
"src/server/subagent.rs",
"src/server/turn.rs",
"src/tui/state.rs"
],
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/76e12045a4a48fb38fcaaf1f1b42c117c542f274"
}
],
"ci": [
{
"id": "ci:souveraine:1729",
"repo": "souveraine",
"run": 1729,
"workflow": "primary",
"branch": "primary",
"sha": "b3bbfeeac42b8d3bbaca07940a20e4191557098f",
"commit": "c:souveraine:b3bbfeea",
"conclusion": "failure",
"started": "2026-08-17T08:42:36-04:00",
"completed": "2026-08-17T08:45:07-04:00",
"title": "atmosphere: say the NaN case out loud"
},
{
"id": "ci:souveraine-viewtop:1734",
"repo": "souveraine-viewtop",
"run": 1734,
"workflow": "main",
"branch": "main",
"sha": "e8e3f9b1b471a2c1ed43a53257686d766b459d15",
"commit": "c:souveraine-viewtop:e8e3f9b1",
"conclusion": "success",
"started": "2026-08-17T10:52:08-04:00",
"completed": "2026-08-17T10:56:05-04:00",
"title": "package: carry the whole session start path"
},
{
"id": "ci:souveraine:1738",
"repo": "souveraine",
"run": 1738,
"workflow": "primary",
"branch": "primary",
"sha": "59b52a818bf2e3436b08ea604a9f985a8a2ed03a",
"commit": "c:souveraine:59b52a81",
"conclusion": "cancelled",
"started": "2026-08-17T11:10:17-04:00",
"completed": "2026-08-17T11:20:00-04:00",
"title": "hands: arm the wire before opening the pad"
},
{
"id": "ci:souveraine:1739",
"repo": "souveraine",
"run": 1739,
"workflow": "primary",
"branch": "primary",
"sha": "707a277273342039b63b3e05406e1f16bd451dcf",
"commit": "c:souveraine:707a2772",
"conclusion": "success",
"started": "2026-08-17T11:20:01-04:00",
"completed": "2026-08-17T11:44:48-04:00",
"title": "replay: never turn thinking into speech"
},
{
"id": "ci:souveraine:1740",
"repo": "souveraine",
"run": 1740,
"workflow": "primary",
"branch": "primary",
"sha": "2bd61ec4b3f45d671f5ffe1d4c80923f3108db83",
"commit": "c:souveraine:2bd61ec4",
"conclusion": "cancelled",
"started": "2026-08-17T11:56:08-04:00",
"completed": "2026-08-17T12:05:05-04:00",
"title": "panel: put Souveraine controls at the hand"
},
{
"id": "ci:souveraine:1741",
"repo": "souveraine",
"run": 1741,
"workflow": "primary",
"branch": "primary",
"sha": "184a44973194691d44b6ef6f369454898a4212e2",
"commit": "c:souveraine:184a4497",
"conclusion": "cancelled",
"started": "2026-08-17T12:05:07-04:00",
"completed": "2026-08-17T12:27:34-04:00",
"title": "saf: give the panel's next cuts an owner"
},
{
"id": "ci:souveraine:1745",
"repo": "souveraine",
"run": 1745,
"workflow": "primary",
"branch": "primary",
"sha": "21ef10e883fc95eb85d2c032da866cc3b202a38e",
"commit": "c:souveraine:21ef10e8",
"conclusion": "cancelled",
"started": "2026-08-17T12:27:38-04:00",
"completed": "2026-08-17T12:37:07-04:00",
"title": "saf: join authority, belief, and the panel"
},
{
"id": "ci:souveraine-viewtop:1746",
"repo": "souveraine-viewtop",
"run": 1746,
"workflow": "main",
"branch": "main",
"sha": "b8a56049c84b01f9012a67c4bb70e5a464971406",
"commit": "c:souveraine-viewtop:b8a56049",
"conclusion": "success",
"started": "2026-08-17T12:29:10-04:00",
"completed": "2026-08-17T12:33:08-04:00",
"title": "merge the packaged session start path"
},
{
"id": "ci:souveraine:1747",
"repo": "souveraine",
"run": 1747,
"workflow": "primary",
"branch": "primary",
"sha": "af60d9e40150511760be01be9c9c5b8a6fd03fc2",
"commit": "c:souveraine:af60d9e4",
"conclusion": "cancelled",
"started": "2026-08-17T12:37:07-04:00",
"completed": "2026-08-17T12:44:10-04:00",
"title": "packaging: bring machined's user with it"
},
{
"id": "ci:souveraine:1748",
"repo": "souveraine",
"run": 1748,
"workflow": "primary",
"branch": "primary",
"sha": "ee496a7c6ecb687a16c25d63721465a56fc12be2",
"commit": "c:souveraine:ee496a7c",
"conclusion": "success",
"started": "2026-08-17T12:44:12-04:00",
"completed": "2026-08-17T13:09:19-04:00",
"title": "saf: name the borrowed hand and lock owner"
},
{
"id": "ci:souveraine:1753",
"repo": "souveraine",
"run": 1753,
"workflow": "primary",
"branch": "primary",
"sha": "14298e73f8334caaf181992bcc66413981674e61",
"commit": "c:souveraine:14298e73",
"conclusion": "failure",
"started": "2026-08-17T14:41:35-04:00",
"completed": "2026-08-17T14:49:33-04:00",
"title": "packaging: declare the lock authority's account"
},
{
"id": "ci:souveraine:1757",
"repo": "souveraine",
"run": 1757,
"workflow": "primary",
"branch": "primary",
"sha": "0f8fe22ab6e4ead5cd47edce27db6f9536598865",
"commit": "c:souveraine:0f8fe22a",
"conclusion": "success",
"started": "2026-08-17T15:16:36-04:00",
"completed": "2026-08-17T15:43:21-04:00",
"title": "admit: give an agent her own uid through one writer"
},
{
"id": "ci:souveraine:1763",
"repo": "souveraine",
"run": 1763,
"workflow": "primary",
"branch": "primary",
"sha": "fb96f210f3860ca84474a834dbb3a6570c9e37dd",
"commit": "c:souveraine:fb96f210",
"conclusion": "cancelled",
"started": "2026-08-17T18:39:26-04:00",
"completed": "2026-08-17T18:45:56-04:00",
"title": "identity: write the contract, not the household"
},
{
"id": "ci:souveraine:1764",
"repo": "souveraine",
"run": 1764,
"workflow": "primary",
"branch": "primary",
"sha": "8e242a7083f9552ea19427568e17fe83bfb0245f",
"commit": "c:souveraine:8e242a70",
"conclusion": "success",
"started": "2026-08-17T18:45:57-04:00",
"completed": "2026-08-17T19:10:15-04:00",
"title": "identity: the executor exists; the ceremony does not"
},
{
"id": "ci:souveraine:1790",
"repo": "souveraine",
"run": 1790,
"workflow": "primary",
"branch": "primary",
"sha": "9bee0e8a944e521a0407a0387df066109c295474",
"commit": "c:souveraine:9bee0e8a",
"conclusion": "failure",
"started": "2026-08-17T21:30:08-04:00",
"completed": "2026-08-17T21:39:14-04:00",
"title": "cadences: give reflection and the archivist bodies"
},
{
"id": "ci:souveraine:1794",
"repo": "souveraine",
"run": 1794,
"workflow": "primary",
"branch": "primary",
"sha": "49c6a6a8dda4b43ab9376fed08de08c6e16edf83",
"commit": "c:souveraine:49c6a6a8",
"conclusion": "cancelled",
"started": "2026-08-17T22:20:24-04:00",
"completed": "2026-08-17T22:27:57-04:00",
"title": "clippy: shed dead archivist handle, drop needless borrow"
},
{
"id": "ci:souveraine:1795",
"repo": "souveraine",
"run": 1795,
"workflow": "primary",
"branch": "primary",
"sha": "04ceac79bf6f018fc80d53a1c2d643ba450f02be",
"commit": "c:souveraine:04ceac79",
"conclusion": "failure",
"started": "2026-08-17T22:28:00-04:00",
"completed": "2026-08-17T22:32:01-04:00",
"title": "memory tool: tree names the door past the fence"
},
{
"id": "ci:souveraine:1799",
"repo": "souveraine",
"run": 1799,
"workflow": "primary",
"branch": "primary",
"sha": "0398f9f190ad7cb6e38e68fa506ef0a4453b03a5",
"commit": "c:souveraine:0398f9f1",
"conclusion": "failure",
"started": "2026-08-17T23:30:04-04:00",
"completed": "2026-08-17T23:33:25-04:00",
"title": "claude: don't fall back onto a login that cannot speak"
},
{
"id": "ci:souveraine:1814",
"repo": "souveraine",
"run": 1814,
"workflow": "primary",
"branch": "primary",
"sha": "7b45054f93af3136e2f0eee006df2803fcc0c342",
"commit": "c:souveraine:7b45054f",
"conclusion": "cancelled",
"started": "2026-08-18T09:34:21-04:00",
"completed": "2026-08-18T09:34:41-04:00",
"title": "felt state: the observing act, and agency as two events"
},
{
"id": "ci:souveraine:1815",
"repo": "souveraine",
"run": 1815,
"workflow": "primary",
"branch": "primary",
"sha": "5f7f23f30ce4136430e83ead918b6c54b5ec0428",
"commit": "c:souveraine:5f7f23f3",
"conclusion": "cancelled",
"started": "2026-08-18T09:34:42-04:00",
"completed": "2026-08-18T09:47:37-04:00",
"title": "memory tool: point the tree test at real roots"
},
{
"id": "ci:souveraine:1816",
"repo": "souveraine",
"run": 1816,
"workflow": "primary",
"branch": "primary",
"sha": "b75137689f10ec3ebbaf2f9bfe39c081b5698a46",
"commit": "c:souveraine:b7513768",
"conclusion": "success",
"started": "2026-08-18T09:47:40-04:00",
"completed": "2026-08-18T10:13:47-04:00",
"title": "saf: the architecture moved up to the umbrella"
},
{
"id": "ci:souveraine:1820",
"repo": "souveraine",
"run": 1820,
"workflow": "primary",
"branch": "primary",
"sha": "7089dfb824d8e1f6cc4ec4538614d54df6632eec",
"commit": "c:souveraine:7089dfb8",
"conclusion": "failure",
"started": "2026-08-18T10:54:53-04:00",
"completed": "2026-08-18T10:59:40-04:00",
"title": "server: announce restarts and resume with history hydrated"
},
{
"id": "ci:souveraine:1821",
"repo": "souveraine",
"run": 1821,
"workflow": "primary",
"branch": "primary",
"sha": "9e147093ec77e3e49c1f56038c5e41d871fab5c3",
"commit": "c:souveraine:9e147093",
"conclusion": "success",
"started": "2026-08-18T11:01:40-04:00",
"completed": "2026-08-18T11:26:37-04:00",
"title": "handlers: session_or_hydrate returns the dashmap guard, not Arc"
},
{
"id": "ci:souveraine:1828",
"repo": "souveraine",
"run": 1828,
"workflow": "primary",
"branch": "primary",
"sha": "f32f00c6e3dff220d837c52cef3fbe8deb5ea98d",
"commit": "c:souveraine:f32f00c6",
"conclusion": "success",
"started": "2026-08-18T14:34:19-04:00",
"completed": "2026-08-18T14:59:06-04:00",
"title": "bifrost: a base url with a path is the complete api root"
},
{
"id": "ci:souveraine:1829",
"repo": "souveraine",
"run": 1829,
"workflow": "primary",
"branch": "primary",
"sha": "76e12045a4a48fb38fcaaf1f1b42c117c542f274",
"commit": "c:souveraine:76e12045",
"conclusion": "success",
"started": "2026-08-18T15:00:49-04:00",
"completed": "2026-08-18T15:27:30-04:00",
"title": "bridge: generic openai client stops calling itself bifrost"
}
],
"issues": [
{
"id": "i:SouveraineOS:6",
"repo": "SouveraineOS",
"number": 6,
"title": "Subconscious ledger stamps UTC while the room runs local time — the agent misreads her own timestamps as wall clock",
"state": "open",
"labels": [],
"created": "2026-08-16T09:12:14-04:00",
"closed": null,
"age_days": 7,
"opened_this_week": false,
"closed_this_week": false,
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/issues/6"
},
{
"id": "i:SouveraineOS:5",
"repo": "SouveraineOS",
"number": 5,
"title": "`hand` acting verbs are unimplemented, and the missing-function error masquerades as `refused_by_state`",
"state": "open",
"labels": [],
"created": "2026-08-16T09:12:13-04:00",
"closed": null,
"age_days": 7,
"opened_this_week": false,
"closed_this_week": false,
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/issues/5"
},
{
"id": "i:SouveraineOS:4",
"repo": "SouveraineOS",
"number": 4,
"title": "Conversation header keeps showing \"Souveraine\" after reverting to the default agent",
"state": "open",
"labels": [],
"created": "2026-08-16T09:12:13-04:00",
"closed": null,
"age_days": 7,
"opened_this_week": false,
"closed_this_week": false,
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/issues/4"
},
{
"id": "i:SouveraineOS:3",
"repo": "SouveraineOS",
"number": 3,
"title": "Expression state vocabulary is split across three layers that disagree — and there is no state machine underneath",
"state": "open",
"labels": [],
"created": "2026-08-13T13:43:55-04:00",
"closed": null,
"age_days": 10,
"opened_this_week": false,
"closed_this_week": false,
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/issues/3"
},
{
"id": "i:SouveraineOS:2",
"repo": "SouveraineOS",
"number": 2,
"title": "Memory-territory binaries are unreachable by both sensors — the boundary message routes to a dead end",
"state": "open",
"labels": [],
"created": "2026-08-13T13:42:53-04:00",
"closed": null,
"age_days": 10,
"opened_this_week": false,
"closed_this_week": false,
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/issues/2"
},
{
"id": "i:SouveraineOS:1",
"repo": "SouveraineOS",
"number": 1,
"title": "`read` returns a text placeholder for images — vision never actually arrives",
"state": "open",
"labels": [],
"created": "2026-08-13T13:42:53-04:00",
"closed": null,
"age_days": 10,
"opened_this_week": false,
"closed_this_week": false,
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/issues/1"
}
],
"pulls": [
{
"id": "p:souveraine:2",
"repo": "souveraine",
"number": 2,
"title": "sessiond: squeeze is input, and a pocket can veto it",
"state": "open",
"created": "2026-07-28T13:04:03-04:00",
"merged": null,
"age_days": 26,
"opened_this_week": false,
"merged_this_week": false,
"url": "https://gitea.wiuf.net/Fimeg/souveraine/pulls/2"
},
{
"id": "p:souveraine:1",
"repo": "souveraine",
"number": 1,
"title": "machined: system-tier machine identity daemon",
"state": "open",
"created": "2026-07-16T10:12:03-04:00",
"merged": null,
"age_days": 38,
"opened_this_week": false,
"merged_this_week": false,
"url": "https://gitea.wiuf.net/Fimeg/souveraine/pulls/1"
}
],
"releases": [
{
"id": "r:souveraine:edge",
"repo": "souveraine",
"tag": "edge",
"name": "edge (edge-1-g9d8bce2)",
"published": "2026-07-25T15:26:08-04:00",
"assets": 93,
"draft": false,
"cut_this_week": false,
"age_days": 29,
"url": "https://gitea.wiuf.net/Fimeg/souveraine/releases/tag/edge"
},
{
"id": "r:Pixel3Arch:kernel-latest",
"repo": "Pixel3Arch",
"tag": "kernel-latest",
"name": "kernel-latest (g31eb5aa2ace7)",
"published": "2026-07-28T19:58:24-04:00",
"assets": 2,
"draft": false,
"cut_this_week": false,
"age_days": 26,
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/releases/tag/kernel-latest"
}
],
"declared": [
{
"id": "d:task-24",
"kind": "task-index",
"task": "24",
"title": "Keyboard layout rethink",
"file": "24-keyboard-layout-rethink.md",
"change": "delisted",
"detail": "Open",
"section": "Open",
"was": "Superseded by TASK-17's reference-led Daily/Terminal Squeekboard layouts. Retained as design evidence; do not resume its Stevia patch plan.",
"now": null,
"dimension": "surface"
},
{
"id": "d:task-33",
"kind": "task-index",
"task": "33",
"title": "Battery belongs to the state machine",
"file": "33-battery-as-device-state.md",
"change": "restated",
"detail": "what's left rewritten",
"section": "Open",
"was": "Last raw feed going straight to the glass. The charge ceiling is writable today.",
"now": "Charge now enters as `SensorSource::Charge` through sensord and sessiond interprets it. Open: UPower supplier-walk threshold write support and the step-up-gated charge policy.",
"dimension": "sensorium"
},
{
"id": "d:task-38",
"kind": "task-index",
"task": "38",
"title": "Pill swipe-to-max swaps the keyboard",
"file": "38-pill-swipe-osk-swap.md",
"change": "delisted",
"detail": "Open",
"section": "Open",
"was": "Superseded: Squeekboard's own visible mode chooser selects Daily/Terminal inside one process. Archive after TASK-17 glass acceptance.",
"now": null,
"dimension": "surface"
},
{
"id": "d:task-48",
"kind": "task-index",
"task": "48",
"title": "Shell dies on any reload that owes a lock",
"file": "48-lock-surface-reload-fatal.md",
"change": "restated",
"detail": "what's left rewritten",
"section": "Open",
"was": "Fully diagnosed 07-29, 11 crashes since 07-17. A reload re-requests ext-session-lock while the outgoing instance still holds it → `FATAL: Tried to show lockscreen surfaces without active lock`. **Sync with TASK-43 before touching the lock path.**",
"now": "**Unblocked.** Viewtop's lock admission/restore and two-client handoff now exist. The QML root still lacks the reload identity its children carry; the locked reload acceptance has not been rerun.",
"dimension": "surface"
},
{
"id": "d:task-49",
"kind": "task-index",
"task": "49",
"title": "Bearer selection and DNS",
"file": "49-bearer-selection-as-device-state.md",
"change": "listed",
"detail": "In progress",
"section": "In progress",
"was": null,
"now": "Machine evidence, settle window, `PreferLink`, tunnel-underlay pinning, readout, and the first two hardware checks landed. Open: split DNS through resolved, wifi/LTE transition, and honest deaf-tunnel proof.",
"dimension": "surface"
},
{
"id": "d:task-53",
"kind": "task-index",
"task": "53",
"title": "viewtop audit: what it left open",
"file": "53-viewtop-audit-open.md",
"change": "restated",
"detail": "what's left rewritten",
"section": "Live",
"was": "All ten fixed and **packaged onto the phone** (`r74.g6c9614c20471`). The cold boot then exposed a *third*: a lost sessiond race had left the power button dead — discovery waits now. Hardware found two more the gates did not — `delivered` reported true for a withheld contact, and a drift warning that fired on every normal close. What is left needs the PIN.",
"now": "The original ten and cold-boot follow-ups are fixed. Firefox's 504/540 mismatch and the false touch-frame storm are source-fixed and pushed (`3431223`, `41f07b1`), awaiting package/glass proof. Open: overshoot clamp, persistent control connection, popup hit testing, and transparent-layer fallthrough.",
"dimension": "surface"
},
{
"id": "d:task-55",
"kind": "task-index",
"task": "55",
"title": "The hand's verbs: a window action sheet",
"file": "55-hand-verbs-on-the-glass.md",
"change": "delisted",
"detail": "Open",
"section": "Open",
"was": "**Sheet built and deployed 2026-08-05.** The tap carries its window now (the centroid was being dropped, which is why it could only reach the overview); `Kill` added because `Close` is a request a hung client never reads; `ViewtopControl.qml` is the shell's one path to the scene verbs. Split's chooser, Home-via-compositor, and Move-as-a-mode (`grab`/`drop`) all landed the same day; the three-finger **drag was deleted outright** — it beat the tap to nearly every gesture, and zones now move only when something says so. Left: a real resize handle, widgets on the cleared home zone, and shipping the drag-removal package (viewtop CI 1165 failed in checkout). Also surfaced a runtime-lock paint gap — black until the lockscreen draws, because only boot has a splash→glance→lockscreen chain.",
"now": null,
"dimension": "surface"
},
{
"id": "d:task-60",
"kind": "task-index",
"task": "60",
"title": "Multitasking is a place, not a transition",
"file": "60-the-multitasking-view.md",
"change": "restated",
"detail": "what's left rewritten",
"section": "Live",
"was": "One-owner compositor and shell halves are built; strand repro and measured landing pass on glass. `16c6ee1` is pushed and CI 1236 is green. What remains is Casey's thumb on the settle/fade and a real split-zone card check.",
"now": "One-owner carry, measured card geometry, velocity-seeded spring, tray, Home, and the strand repro are on glass. What remains is a real split-zone card check; the inert 1.22 overshoot clamp is a TASK-53 compositor defect.",
"dimension": "surface"
},
{
"id": "d:task-66",
"kind": "task-index",
"task": "66",
"title": "souveraineai.com overhaul",
"file": "66-souveraineai-overhaul.md",
"change": "delisted",
"detail": "Live",
"section": "Live",
"was": "Rework landed 2026-08-10, waiting on push. Nested Astro docs repo folded into `souveraine-website` with history; the static `public/*.html` shell archived, not deleted. Left: `astro build` green in the merged repo and the server rebuilding from the merged tree.",
"now": null,
"dimension": "runtime"
},
{
"id": "d:task-67",
"kind": "task-index",
"task": "67",
"title": "The caching landed blind, and compaction drifted",
"file": "67-caching-landed-blind-and-compaction-drift.md",
"change": "restated",
"detail": "what's left rewritten",
"section": "Open",
"was": "Prompt caching works — one turn shows `cache_write=22585` then `cache_read=22585` — and **nothing reads the counters**: `assistant_with_usage` has zero callers, so the only proof is a log line. Separately, the live config hands the subconscious `sliding_window` where the doc and the code default both say `sliding_reflect`, and the `memory` tool's enum exposes the blind strategy while hiding the safe one. §1 needs Casey's word, not a fix.",
"now": "Prompt caching is measured and per-turn usage now persists through `assistant_with_usage`; context occupancy reaches both TUI and Panel. Still open: render the provider cache split, regression-test a stable second-round read, settle the wide-tool-round breakpoint trade, and record the live subconscious strategy decision.",
"dimension": "runtime"
},
{
"id": "d:task-69",
"kind": "task-index",
"task": "69",
"title": "Agent usage, one spine: the session daemon",
"file": "69-agent-usage-session-daemon.md",
"change": "delisted",
"detail": "Open",
"section": "Open",
"was": "Recon 2026-08-11, nothing built. One collector tracks Souveraine + Claude Code + Codex from their local truth (`~/.codex/sessions` JSONL, `~/.claude/projects` JSONL, substrate `core/session`). Two gaps are one shape: the substrate records usage nobody reads (TASK-67). Shell services become projections of one socket.",
"now": null,
"dimension": "runtime"
},
{
"id": "d:task-70",
"kind": "task-index",
"task": "70",
"title": "The island: agent surfacing for the shell",
"file": "70-the-island-agent-surfacing.md",
"change": "delisted",
"detail": "Open",
"section": "Open",
"was": "Recon 2026-08-11. \"Open Agent Island\" — end-4 fork (same ancestor as ii-base) with a morphing notch, Claude Code status, and permission Allow/Deny from the notch. Take the mechanisms (AgentService + bridge, 13/13 safety) onto ii-base, not the shell. Twines with TASK-59: the notch can host Annie as a morph state. Adjacent to TASK-69.",
"now": null,
"dimension": "surface"
},
{
"id": "d:task-75",
"kind": "task-index",
"task": "75",
"title": "The shell must have a memory budget",
"file": "75-the-shell-must-have-a-memory-budget.md",
"change": "delisted",
"detail": "Open",
"section": "Open",
"was": "**Scoped 2026-08-13.** QuickShell's resident core must stay small; the AI panel is the first separately supervised, genuinely unloadable surface. Measure before choosing a full native-Rust shell rewrite.",
"now": null,
"dimension": "surface"
},
{
"id": "d:task-76",
"kind": "task-index",
"task": "76",
"title": "Provisioning belongs to a package",
"file": "76-provisioning-by-package.md",
"change": "restated",
"detail": "what's left rewritten",
"section": "Open",
"was": "Five hand-placed files own no package on the two live devices, and `/etc/systemd/system/souveraine-machined.service` shadows the packaged signer unit on **both**. Activation is two unversioned lua lines. `blueline-edge-sense` already ships the correct `.wants` pattern.",
"now": "The viewtop-owned session edge and legal wrapper targets landed. Still open: package-owned QuickShell content, commission-time activation on each device, removal of `/etc` and user-unit shadows, and fresh-install proof.",
"dimension": "adoption"
},
{
"id": "d:task-78",
"kind": "task-index",
"task": "78",
"title": "The claude login belongs to souveraine, not to `claude`",
"file": "78-claude-login-owned-by-souveraine.md",
"change": "listed",
"detail": "Open",
"section": "Open",
"was": null,
"now": "Scoped 2026-08-18, nothing built. Headless PKCE `souveraine login` (flow verified), a souveraine-owned credential file outside the phone/laptop sync, and a Panel notice when no login can speak. Full Providers subsection in the Panel is a later expansion.",
"dimension": "identity"
},
{
"id": "d:docs/AUDIO-PRIVACY.md",
"kind": "document",
"file": "docs/AUDIO-PRIVACY.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:docs/DEVICE-STATE-MACHINE.md",
"kind": "document",
"file": "docs/DEVICE-STATE-MACHINE.md",
"change": "revised",
"detail": "2 commit(s)",
"commits": [
"bde961c",
"f5122cb"
],
"subjects": [
"saf: one spine — device, state, and work under the index",
"docs: retire the task queue's dead branches"
],
"dimension": "unassigned"
},
{
"id": "d:docs/README.md",
"kind": "document",
"file": "docs/README.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:docs/SESSION-AUTHORITY-DOCTRINE.md",
"kind": "document",
"file": "docs/SESSION-AUTHORITY-DOCTRINE.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "identity"
},
{
"id": "d:docs/SESSION-TRUST-ARCHITECTURE.md",
"kind": "document",
"file": "docs/SESSION-TRUST-ARCHITECTURE.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"341a2fe"
],
"subjects": [
"docs: take the lockscreen out of casey's uid"
],
"dimension": "surface"
},
{
"id": "d:docs/SHELL-SURFACES.md",
"kind": "document",
"file": "docs/SHELL-SURFACES.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "surface"
},
{
"id": "d:docs/STORAGE-ENCRYPTION.md",
"kind": "document",
"file": "docs/STORAGE-ENCRYPTION.md",
"change": "revised",
"detail": "2 commit(s)",
"commits": [
"341a2fe",
"9815185"
],
"subjects": [
"docs: take the lockscreen out of casey's uid",
"docs: put agent identity behind a real uid"
],
"dimension": "surface"
},
{
"id": "d:docs/archive/HANDOFF-2026-08-16-gesture-and-transport.md",
"kind": "document",
"file": "docs/archive/HANDOFF-2026-08-16-gesture-and-transport.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "surface"
},
{
"id": "d:docs/session-authority-boot-order.md",
"kind": "document",
"file": "docs/session-authority-boot-order.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"341a2fe"
],
"subjects": [
"docs: take the lockscreen out of casey's uid"
],
"dimension": "surface"
},
{
"id": "d:docs/souveraine-components/INVENTORY.md",
"kind": "document",
"file": "docs/souveraine-components/INVENTORY.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"9815185"
],
"subjects": [
"docs: put agent identity behind a real uid"
],
"dimension": "identity"
},
{
"id": "d:docs/souveraine-components/audit-status.md",
"kind": "document",
"file": "docs/souveraine-components/audit-status.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"9815185"
],
"subjects": [
"docs: put agent identity behind a real uid"
],
"dimension": "identity"
},
{
"id": "d:docs/souveraine-components/machined.md",
"kind": "document",
"file": "docs/souveraine-components/machined.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"9815185"
],
"subjects": [
"docs: put agent identity behind a real uid"
],
"dimension": "identity"
},
{
"id": "d:docs/souveraine-components/sessiond.md",
"kind": "document",
"file": "docs/souveraine-components/sessiond.md",
"change": "revised",
"detail": "2 commit(s)",
"commits": [
"341a2fe",
"9815185"
],
"subjects": [
"docs: take the lockscreen out of casey's uid",
"docs: put agent identity behind a real uid"
],
"dimension": "identity"
},
{
"id": "d:docs/substrate/FELT_STATE_ARCHITECTURE.md",
"kind": "document",
"file": "docs/substrate/FELT_STATE_ARCHITECTURE.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/INDEX.md",
"kind": "document",
"file": "docs/substrate/INDEX.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/SOMATIC_NERVOUS_SYSTEM.md",
"kind": "document",
"file": "docs/substrate/SOMATIC_NERVOUS_SYSTEM.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/INDEX.md",
"kind": "document",
"file": "docs/substrate/tasks/INDEX.md",
"change": "revised",
"detail": "2 commit(s)",
"commits": [
"f5122cb",
"7fc623c"
],
"subjects": [
"docs: retire the task queue's dead branches",
"docs: retire panel tasks into the SAF"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/alpha-tester-readiness.md",
"kind": "document",
"file": "docs/substrate/tasks/alpha-tester-readiness.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"9815185"
],
"subjects": [
"docs: put agent identity behind a real uid"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/archive/code-mode-tool-rendering.md",
"kind": "document",
"file": "docs/substrate/tasks/archive/code-mode-tool-rendering.md",
"change": "moved",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/archive/federation-summon.md",
"kind": "document",
"file": "docs/substrate/tasks/archive/federation-summon.md",
"change": "moved",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "federation"
},
{
"id": "d:docs/substrate/tasks/archive/itinerary-persistent-ui.md",
"kind": "document",
"file": "docs/substrate/tasks/archive/itinerary-persistent-ui.md",
"change": "moved",
"detail": "1 commit(s)",
"commits": [
"7fc623c"
],
"subjects": [
"docs: retire panel tasks into the SAF"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/archive/mid-turn-subconscious-checkpoint.md",
"kind": "document",
"file": "docs/substrate/tasks/archive/mid-turn-subconscious-checkpoint.md",
"change": "moved",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/archive/primitive-refactor-super-task.md",
"kind": "document",
"file": "docs/substrate/tasks/archive/primitive-refactor-super-task.md",
"change": "moved",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/archive/qml-panel-conversation-resume.md",
"kind": "document",
"file": "docs/substrate/tasks/archive/qml-panel-conversation-resume.md",
"change": "moved",
"detail": "1 commit(s)",
"commits": [
"7fc623c"
],
"subjects": [
"docs: retire panel tasks into the SAF"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/archive/rename-aster-to-subconscious.md",
"kind": "document",
"file": "docs/substrate/tasks/archive/rename-aster-to-subconscious.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "reflection"
},
{
"id": "d:docs/substrate/tasks/archive/somatic-lane-planning.md",
"kind": "document",
"file": "docs/substrate/tasks/archive/somatic-lane-planning.md",
"change": "moved",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/archive/todo-system-fix.md",
"kind": "document",
"file": "docs/substrate/tasks/archive/todo-system-fix.md",
"change": "moved",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/archive/user-nickname-system.md",
"kind": "document",
"file": "docs/substrate/tasks/archive/user-nickname-system.md",
"change": "moved",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/itinerary-system.md",
"kind": "document",
"file": "docs/substrate/tasks/itinerary-system.md",
"change": "revised",
"detail": "1 commit(s)",
"commits": [
"7fc623c"
],
"subjects": [
"docs: retire panel tasks into the SAF"
],
"dimension": "runtime"
},
{
"id": "d:docs/substrate/tasks/rename-aster-to-subconscious.md",
"kind": "document",
"file": "docs/substrate/tasks/rename-aster-to-subconscious.md",
"change": "deleted",
"detail": "1 commit(s)",
"commits": [
"f5122cb"
],
"subjects": [
"docs: retire the task queue's dead branches"
],
"dimension": "reflection"
},
{
"id": "d:saf/INDEX.md",
"kind": "document",
"file": "saf/INDEX.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/archive/architecture.md",
"kind": "document",
"file": "saf/archive/architecture.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/archive/atproto-federation.md",
"kind": "document",
"file": "saf/archive/atproto-federation.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "federation"
},
{
"id": "d:saf/archive/config.md",
"kind": "document",
"file": "saf/archive/config.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/archive/consciousness.md",
"kind": "document",
"file": "saf/archive/consciousness.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/archive/gaps.md",
"kind": "document",
"file": "saf/archive/gaps.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/archive/glossary.md",
"kind": "document",
"file": "saf/archive/glossary.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/archive/identity.md",
"kind": "document",
"file": "saf/archive/identity.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "identity"
},
{
"id": "d:saf/archive/laws.md",
"kind": "document",
"file": "saf/archive/laws.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/archive/modules.md",
"kind": "document",
"file": "saf/archive/modules.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/archive/per-agent-compaction-provider.md",
"kind": "document",
"file": "saf/archive/per-agent-compaction-provider.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "memory"
},
{
"id": "d:saf/archive/plan.md",
"kind": "document",
"file": "saf/archive/plan.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/archive/server.md",
"kind": "document",
"file": "saf/archive/server.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "runtime"
},
{
"id": "d:saf/archive/state-history-2026-08-16.md",
"kind": "document",
"file": "saf/archive/state-history-2026-08-16.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/archive/tui-model-picker-provider.md",
"kind": "document",
"file": "saf/archive/tui-model-picker-provider.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "runtime"
},
{
"id": "d:saf/archive/update-agent-request-souveraine.md",
"kind": "document",
"file": "saf/archive/update-agent-request-souveraine.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/authority/01-session.md",
"kind": "document",
"file": "saf/authority/01-session.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "identity"
},
{
"id": "d:saf/authority/02-device-state.md",
"kind": "document",
"file": "saf/authority/02-device-state.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "identity"
},
{
"id": "d:saf/core/01-substrate.md",
"kind": "document",
"file": "saf/core/01-substrate.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "runtime"
},
{
"id": "d:saf/core/02-duality.md",
"kind": "document",
"file": "saf/core/02-duality.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/README.md",
"kind": "document",
"file": "saf/device/README.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/audio.md",
"kind": "document",
"file": "saf/device/audio.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/build.md",
"kind": "document",
"file": "saf/device/build.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/display.md",
"kind": "document",
"file": "saf/device/display.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/edge-sense.md",
"kind": "document",
"file": "saf/device/edge-sense.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/README-pmos-era.md",
"kind": "document",
"file": "saf/device/evidence/README-pmos-era.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/README.md",
"kind": "document",
"file": "saf/device/evidence/README.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/android_modem_bringup_capture.md",
"kind": "document",
"file": "saf/device/evidence/android_modem_bringup_capture.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/evidence/audio/HANDOFF-audio-finish-20260719-evening.md",
"kind": "document",
"file": "saf/device/evidence/audio/HANDOFF-audio-finish-20260719-evening.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/evidence/audio/HANDOFF-mic-unpin.md",
"kind": "document",
"file": "saf/device/evidence/audio/HANDOFF-mic-unpin.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/evidence/audio/audio-2026-07-19-LIVE-reconciliation.md",
"kind": "document",
"file": "saf/device/evidence/audio/audio-2026-07-19-LIVE-reconciliation.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/evidence/build-pmos-era.md",
"kind": "document",
"file": "saf/device/evidence/build-pmos-era.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/captures/glink_trace_pmos-20260702.txt",
"kind": "document",
"file": "saf/device/evidence/captures/glink_trace_pmos-20260702.txt",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/d10-adp-touch-2026-08-09.patch",
"kind": "document",
"file": "saf/device/evidence/d10-adp-touch-2026-08-09.patch",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/evidence/diag_capture.md",
"kind": "document",
"file": "saf/device/evidence/diag_capture.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/first_provision_capture.md",
"kind": "document",
"file": "saf/device/evidence/first_provision_capture.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "adoption"
},
{
"id": "d:saf/device/evidence/los-mss-translated.c",
"kind": "document",
"file": "saf/device/evidence/los-mss-translated.c",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/modem_community_research_20260622.md",
"kind": "document",
"file": "saf/device/evidence/modem_community_research_20260622.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/evidence/modem_community_research_20260626.md",
"kind": "document",
"file": "saf/device/evidence/modem_community_research_20260626.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/evidence/modem_consumer_chain_20260626.md",
"kind": "document",
"file": "saf/device/evidence/modem_consumer_chain_20260626.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/evidence/modem_dt_rf_analysis_20260622.md",
"kind": "document",
"file": "saf/device/evidence/modem_dt_rf_analysis_20260622.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/evidence/platform-pmos-era.md",
"kind": "document",
"file": "saf/device/evidence/platform-pmos-era.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/pmos_fix_plan.md",
"kind": "document",
"file": "saf/device/evidence/pmos_fix_plan.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/power/HANDOFF-upower-charge-control.md",
"kind": "document",
"file": "saf/device/evidence/power/HANDOFF-upower-charge-control.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/evidence/qcril_bringup_capture.md",
"kind": "document",
"file": "saf/device/evidence/qcril_bringup_capture.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/qcril_full_provisioning.md",
"kind": "document",
"file": "saf/device/evidence/qcril_full_provisioning.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "adoption"
},
{
"id": "d:saf/device/evidence/qcril_online_sequence.md",
"kind": "document",
"file": "saf/device/evidence/qcril_online_sequence.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/qrtr_tools_reference.md",
"kind": "document",
"file": "saf/device/evidence/qrtr_tools_reference.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/secure_load_tz_frontier.md",
"kind": "document",
"file": "saf/device/evidence/secure_load_tz_frontier.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/tier1_los_vs_mainline_diff.md",
"kind": "document",
"file": "saf/device/evidence/tier1_los_vs_mainline_diff.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/evidence/tz_listener_archaeology.md",
"kind": "document",
"file": "saf/device/evidence/tz_listener_archaeology.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/mms.md",
"kind": "document",
"file": "saf/device/mms.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/modem.md",
"kind": "document",
"file": "saf/device/modem.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/device/platform.md",
"kind": "document",
"file": "saf/device/platform.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/slpi.md",
"kind": "document",
"file": "saf/device/slpi.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/device/touch.md",
"kind": "document",
"file": "saf/device/touch.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "sensorium"
},
{
"id": "d:saf/federation/01-node-enrollment.md",
"kind": "document",
"file": "saf/federation/01-node-enrollment.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "federation"
},
{
"id": "d:saf/identity/01-seed-identity.md",
"kind": "document",
"file": "saf/identity/01-seed-identity.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "identity"
},
{
"id": "d:saf/identity/02-agent-principal.md",
"kind": "document",
"file": "saf/identity/02-agent-principal.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "identity"
},
{
"id": "d:saf/memory/01-compaction.md",
"kind": "document",
"file": "saf/memory/01-compaction.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "memory"
},
{
"id": "d:saf/memory/02-replay.md",
"kind": "document",
"file": "saf/memory/02-replay.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "memory"
},
{
"id": "d:saf/nervous/01-eventbus.md",
"kind": "document",
"file": "saf/nervous/01-eventbus.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/nervous/02-belief.md",
"kind": "document",
"file": "saf/nervous/02-belief.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/nervous/03-felt-state.md",
"kind": "document",
"file": "saf/nervous/03-felt-state.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/state.md",
"kind": "document",
"file": "saf/state.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "unassigned"
},
{
"id": "d:saf/surface/01-motion.md",
"kind": "document",
"file": "saf/surface/01-motion.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "surface"
},
{
"id": "d:saf/surface/02-session-start.md",
"kind": "document",
"file": "saf/surface/02-session-start.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "surface"
},
{
"id": "d:saf/surface/03-usb-hands.md",
"kind": "document",
"file": "saf/surface/03-usb-hands.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "surface"
},
{
"id": "d:saf/surface/04-agent-pane.md",
"kind": "document",
"file": "saf/surface/04-agent-pane.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "surface"
},
{
"id": "d:saf/surface/05-agent-presence.md",
"kind": "document",
"file": "saf/surface/05-agent-presence.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "surface"
},
{
"id": "d:saf/surface/06-surface-lifetimes.md",
"kind": "document",
"file": "saf/surface/06-surface-lifetimes.md",
"change": "added",
"detail": "1 commit(s)",
"commits": [
"bde961c"
],
"subjects": [
"saf: one spine — device, state, and work under the index"
],
"dimension": "surface"
}
],
"index": {
"60": {
"section": "Live",
"title": "Multitasking is a place, not a transition",
"file": "60-the-multitasking-view.md",
"left": "One-owner carry, measured card geometry, velocity-seeded spring, tray, Home, and the strand repro are on glass. What remains is a real split-zone card check; the inert 1.22 overshoot clamp is a TASK-53 compositor defect."
},
"53": {
"section": "Live",
"title": "viewtop audit: what it left open",
"file": "53-viewtop-audit-open.md",
"left": "The original ten and cold-boot follow-ups are fixed. Firefox's 504/540 mismatch and the false touch-frame storm are source-fixed and pushed (`3431223`, `41f07b1`), awaiting package/glass proof. Open: overshoot clamp, persistent control connection, popup hit testing, and transparent-layer fallthrough."
},
"43": {
"section": "Live",
"title": "viewtop: the Souveraine compositor",
"file": "43-viewtop-compositor.md",
"left": "Runs on the phone. Next lane is the ext-session-lock admission gate. The two-client lock handoff is the thing not to get wrong."
},
"29": {
"section": "Live",
"title": "SouveraineOS Updater",
"file": "29-souveraine-updater.md",
"left": "Ships and installs by `pacman -Syu`. **Read-only on device** until something runs a polkit agent — that is the shell's job. Also owns TASK-42's layer 2."
},
"77": {
"section": "In progress",
"title": "The lens: a human-first garden over a git vault",
"file": "77-lens-garden.md",
"left": "Built + packaged 2026-08-15 — folder/subcategory support and inbox capture landed (`61cf534`), publisher chmod fix (`c71c7e4`). Left: lens CI green + `edge` asset published, `pacman -U` on the laptop, then edge-repo DB wiring."
},
"65": {
"section": "In progress",
"title": "A stalled subconscious wedges the surface",
"file": "65-subconscious-stall-wedges-the-surface.md",
"left": "Reproduced and measured, not diagnosed. The reply commits and `PrimaryComplete` fires, then the N+1 pass stalls at round 3 of 10 with a fully idle runtime — and because it runs inside `run_turn`, the SSE stream never closes and Surfaces spins forever. Lead is the `todo` tool. Needs a backtrace; the stream-lifetime coupling is a fix in its own right."
},
"63": {
"section": "In progress",
"title": "The second body: SouveraineOS on the iPhone 7",
"file": "63-d10-second-body.md",
"left": "**The shell is on the glass 2026-08-09** — viewtop, sessiond and `qs -c souveraine` all run on a T8010 with no GPU, drawn by llvmpipe, over one USB cable. Hoolock is the bootloader and nothing else. The build half of this is TASK-64."
},
"62": {
"section": "In progress",
"title": "Full USB KVM",
"file": "62-full-usb-kvm.md",
"left": "GUD + HID + NCM + smoo and the signed package path are green. Still open: install and cable/glass acceptance; real Session Authority gates (peer identity, probe lease, step-up, D-Bus enforcement); cold-boot SSH-over-NCM proof. Type-C/TCPM host negotiation remains TASK-58."
},
"8": {
"section": "In progress",
"title": "Device state manager / power profiles",
"file": "08-device-state-manager.md",
"left": "Largest task; sub-divide before starting. (e) lease missing, (f) **surfaced 2026-07-31** — health, evidence and the decision trail render on the Device page; last-seen and grip still absent from `device_state`. (g) confidence gates need a decision before code."
},
"16": {
"section": "In progress",
"title": "culver: messenger + contacts",
"file": "16-culver-messenger-contacts.md",
"left": "A/B/D landed. C (contact card) builds and awaits phone acceptance. F is the folded-in TASK-01."
},
"19": {
"section": "In progress",
"title": "First-party Settings control center",
"file": "19-settings-control-center.md",
"left": "State-machine + source-health readout **built 2026-07-31**, unverified on glass. 34 and 42's layer 3 still surface here."
},
"31": {
"section": "In progress",
"title": "The radial dial",
"file": "31-radial-dial.md",
"left": "Component, gestures and squeeze invocation are live. **Entries are still a list in `DialHost.qml`** — they must come from the verb tables."
},
"30": {
"section": "In progress",
"title": "Agent reach: verb tables",
"file": "30-agent-reach-verb-tables.md",
"left": "sessiond has describe + refusal codes + intent. Dock, apps, shell and settings do not. One session per surface."
},
"42": {
"section": "In progress",
"title": "Build outcomes are invisible",
"file": "42-build-outcomes-are-invisible.md",
"left": "Layer 1 built (`tools/ci-status.sh` + push hook). Layer 2 is TASK-29's, layer 3 is TASK-19's. Pin-rot prevention unbuilt."
},
"2": {
"section": "In progress",
"title": "Lockscreen-as-Rust-system",
"file": "02-lockscreen-rust-system.md",
"left": "sessiond's fallback should render the glance, not a second PIN pad. Stopgap shipped 07-17."
},
"14": {
"section": "In progress",
"title": "Overview → phone app grid",
"file": "14-overview-appgrid.md",
"left": "Paged app grid replacing the desktop workspace pane; Auxo-style running cards; unconditional Home path."
},
"49": {
"section": "In progress",
"title": "Bearer selection and DNS",
"file": "49-bearer-selection-as-device-state.md",
"left": "Machine evidence, settle window, `PreferLink`, tunnel-underlay pinning, readout, and the first two hardware checks landed. Open: split DNS through resolved, wifi/LTE transition, and honest deaf-tunnel proof."
},
"15": {
"section": "Blocked or gated",
"title": "Idle coordinator",
"file": "15-idle-coordinator.md",
"left": "Freezing `app.slice` would freeze sessiond, shell and secrets. Needs slice separation first (measured 07-25)."
},
"28": {
"section": "Blocked or gated",
"title": "Handover on upgrade",
"file": "28-upgrade-handover.md",
"left": "TASK-27's packaging. Also owns TASK-13's outstanding cold-boot handshake check."
},
"25": {
"section": "Blocked or gated",
"title": "One repo, all packages",
"file": "25-one-repo-all-packages.md",
"left": "Parked 07-25 — four blockers before `repo-add --sign`. See TASK-27."
},
"40": {
"section": "Blocked or gated",
"title": "Inference tiering for the sensors",
"file": "40-inference-tiering-sensors.md",
"left": "Nothing — **it is the gate.** P1 applied to sensord/grip/dial; gates the grip raw stream and TASK-31's IPC. Decisions first, then small code."
},
"78": {
"section": "Open",
"title": "The claude login belongs to souveraine, not to `claude`",
"file": "78-claude-login-owned-by-souveraine.md",
"left": "Scoped 2026-08-18, nothing built. Headless PKCE `souveraine login` (flow verified), a souveraine-owned credential file outside the phone/laptop sync, and a Panel notice when no login can speak. Full Providers subsection in the Panel is a later expansion."
},
"74": {
"section": "Open",
"title": "LibrePods: an admitted accessory",
"file": "74-librepods-as-an-admitted-accessory.md",
"left": "**Scoped 2026-08-13.** AirPods protocol stays in LibrePods; sessiond must admit/audit presentation events and Quickshell projects the card. First gate: capture a redacted case-open fixture — connection is not proof of opening."
},
"73": {
"section": "Open",
"title": "One spine, two skins: the self-dashboard",
"file": "73-self-dashboard.md",
"left": "Designed 2026-08-11, nothing built. RedFlag Desktop (Tauri, public) + house Gatehouse (wry + QML glance, lens skeleton), spine is agent-side pacman closure resolution that retires souveraine-updater's `pkexec --noconfirm`. Name and home-repo decisions are Casey's."
},
"71": {
"section": "Open",
"title": "QmlMobileScanner as a components app candidate",
"file": "71-qml-mobile-scanner-candidate.md",
"left": "Recon 2026-08-11, verdict owed. GPL-3.0 Qt Quick scanner+writer (zxing-cpp/QZXing/zint, SQLite history). Compatible inside AGPL; camera gate is TASK-46; ffmpeg backend needs a freedreno check; fontawesome-qml likely **not** needed (no FontLoader in the tree — unverified)."
},
"68": {
"section": "Open",
"title": "Shared household state: tasks first",
"file": "68-shared-household-state.md",
"left": "Canonical plan landed 2026-08-10. First slice is an admitted local task trail + materialized QML app/sidebar view; Culver is the Personal-class client, not the authority."
},
"67": {
"section": "Open",
"title": "The caching landed blind, and compaction drifted",
"file": "67-caching-landed-blind-and-compaction-drift.md",
"left": "Prompt caching is measured and per-turn usage now persists through `assistant_with_usage`; context occupancy reaches both TUI and Panel. Still open: render the provider cache split, regression-test a stable second-round read, settle the wide-tool-round breakpoint trade, and record the live subconscious strategy decision."
},
"64": {
"section": "Open",
"title": "One SouveraineOS build for the iPhone",
"file": "64-one-iphone-build.md",
"left": "Scoped 2026-08-10, not started. `linux-pauli` is not a repository, reaches the phone by `scp`, and CI has never built it. The display work that day is worth more than its code: the raster is **derived, not guessed** — 888×1845 @ 60 off `adp_mipi_regs` — and `aperture_remove_all_conflicting_devices()` is the correct handoff. ADP still shows nothing with everything else correct; the `adp16` kernel is staged and has never booted."
},
"59": {
"section": "Open",
"title": "Her face on the glass: a Live2D presence",
"file": "59-her-face-on-the-glass.md",
"left": "**Phase 1 passed on hardware 2026-08-05: ~58 fps, rig verified drawing (`painted_px` 23.6k/24k), 283 MB WebKit RSS.** Scoped from a Live2D board-girl found in a cloned blog. The reference streams its chat over **SSE terminated by `[DONE]`** — the contract souveraine's server already speaks, so the integration is accidentally done. Base layer is **wry**, not the Chromium already on the phone; the first deliverable is a measured frame rate for the Cubism runtime in WebKit on freedreno, and if that fails the task stops there. Replaces ani-avatar's 2.5 GB of sprite states with one rig. Reference rig ships as the working placeholder and gets edited toward Annie — it just stays out of any public repo. Summoned by app launch and/or the radial dial, not always-on."
},
"58": {
"section": "Open",
"title": "Host power: the SMB2 OTG boost",
"file": "58-host-power-smb2-boost.md",
"left": "Host data works; the boost isn't. The SMB2 5 V boost exists in silicon and mainline's `qcom-smbx-charger` never registers it. Investigation first (which tree builds the running kernel, does smb2 touch the boost, does `qcom_pmic_typec` bind pmi8998), then vbus-supply + regulator + typec. Unlocks host-mode power, power-bank mode, and the Pi without a wall wart."
},
"57": {
"section": "Open",
"title": "The Pi dock head",
"file": "57-pi-dock-head.md",
"left": "Phone stays a gadget; the Pi 4 drives the monitor + dock. NCM link is default, Venus encoder is present, compositor capture landed — the unproven seams are `zwlr_screencopy` vs our own capture IPC, and the Pi's own bring-up (\"major malfunctions TBD\"). Four phases: Pi bring-up, static chain, real capture + udev trigger, input injection."
},
"56": {
"section": "Open",
"title": "The island, and the bar's honest face",
"file": "56-island-and-the-bars-honest-face.md",
"left": "Bar clears a region for sprawling notification banners, agent-controlled (Part A: design questions). Part B is buildable now: drop the LTE suffix, tap-to-cycle the carrier name (Fido → Casey → Fimeg), and a network-type indicator that shows the live connection instead of a wifi glyph that never reflects cellular."
},
"52": {
"section": "Open",
"title": "Atmosphere",
"file": "52-atmosphere.md",
"left": "Attention as a compositor capability — the fifteen-technique vocabulary. Two are **already landed** (`expose` is negative space, `pose` is gravity wells), and `compile_custom_pixel_shader` + `PixelShaderElement` are already in our smithay, so most of the rest needs no new machinery. Build the attention model and one clock **first**; fifteen uncoordinated animators is §1's blind actors in the render path."
},
"50": {
"section": "Open",
"title": "Her hand on the glass",
"file": "50-agent-hand-on-the-glass.md",
"left": "Every scene intent reaches the compositor now **except touch** — so she can move, scale, dim and close a window and cannot press anything inside one. The receiving end is built (`Origin::Agent`, the disjoint slot namespace, the evidence predicate); nothing calls it, so she still reaches touch through uinput, which is the exact conflation `input.rs` exists to prevent. Also owns the inverse mapping `pose` owes the hit test."
},
"51": {
"section": "Open",
"title": "viewtop to daily driver",
"file": "51-viewtop-to-daily-driver.md",
"left": "The punch list between *runs* and *stable*, all of it found by using the phone: windows stack with nothing to tell them apart, screen capture is written and unmerged (so no UI change can be verified), volume buttons are recognised and dropped, and five named holes that are one decision each."
},
"48": {
"section": "Open",
"title": "Shell dies on any reload that owes a lock",
"file": "48-lock-surface-reload-fatal.md",
"left": "**Unblocked.** Viewtop's lock admission/restore and two-client handoff now exist. The QML root still lacks the reload identity its children carry; the locked reload acceptance has not been rerun."
},
"47": {
"section": "Open",
"title": "Auto-brightness: anchors, none of it built",
"file": "47-auto-brightness-anchors.md",
"left": "§12 reads as settled and has **zero** code behind its actuation half — no brightness `Action`, no anchors, `grep anchor src/` is empty. The evidence half (lux in, health tracked) is live."
},
"46": {
"section": "Open",
"title": "Camera: **the front camera works**",
"file": "46-camera-imx363.md",
"left": "**First frame captured 2026-07-29** on the running kernel — no reboot, no DT change. Both front IMX355 were already bound; nobody had tried streaming. Recipe + the stride/packing gotchas are in the task. Next: exposure controls, then libcamera. Rear IMX363 DT (`c7784b716`) still unbuilt but no longer the blocker."
},
"44": {
"section": "Open",
"title": "Fingerprint (FPC1020)",
"file": "44-fingerprint-fpc1020.md",
"left": "Piece 1 (wake source / input) is a session — DT + shim already extracted. Piece 2 (biometrics) is a TrustZone question, answer it before scheduling it."
},
"45": {
"section": "Open",
"title": "Haptics (CS40L20)",
"file": "45-haptics-cs40l20.md",
"left": "**First: which chip actually drives the motor** — `pmi8998_haptics` is what the dial's detents use today. Then port `cs40l2x` from Kirisakura; firmware blobs are committed."
},
"41": {
"section": "Open",
"title": "Producers must be attested",
"file": "41-attested-producers.md",
"left": "Design first. Demonstrated live 07-28 — a squeeze and a dial-open both accepted from an SSH shell."
},
"36": {
"section": "Open",
"title": "CHRE nanoapp host for the SLPI",
"file": "36-chre-nanoapp-host.md",
"left": "Three methods to add; method table recovered 07-27. No longer on grip's critical path — wanted for DozeDeep detection and `elmyra_haptics_control`."
},
"34": {
"section": "Open",
"title": "SLPI FastRPC session wedge",
"file": "34-slpi-bringup-sequencing.md",
"left": "Re-diagnose. The real symptom: a DSP session survives its host daemon's death and only a cold boot clears it. **No longer blocks grip.**"
},
"3": {
"section": "Open",
"title": "Boot timing: splash → lock",
"file": "03-boot-timing-splash-to-lock.md",
"left": "The EBUSY handoff race is the last timing bug. Splash text killed, holder added."
},
"7": {
"section": "Open",
"title": "WCD9340 mic",
"file": "07-mic-wcd9340-slim-tx.md",
"left": "Functional and in daily STT use. One defect: the permanent sysclk + MICB2 power pin. Kernel branch `mic-race-fix`."
},
"9": {
"section": "Open",
"title": "Suspend-resume FTS calibration race",
"file": "09-suspend-resume-fts.md",
"left": "Kernel-side real fix; interim fix shipped. Cold-boot only."
},
"12": {
"section": "Open",
"title": "Face auth as a capability factor",
"file": "12-gaze-reference-face-auth.md",
"left": "Per-target. Phone needs front-camera bring-up — **that is TASK-46's IMX355 half.**"
},
"17": {
"section": "Open",
"title": "Squeekboard + dictation polish",
"file": "17-keyboard-squeekboard-dictation.md",
"left": "Sole OSK installed at pkgrel 4. Pkgrel 5 adds Daily's visible mode key and chooser for the separate five-row Terminal board; CI, install, repeated reopen, mic-state, and side-panel focus proof remain. Native completion follows."
},
"18": {
"section": "Open",
"title": "Selection/highlight action menu",
"file": "18-selection-menu.md",
"left": "Component first, fluid before functional. **Read Aloud is unblocked** — TTS is live."
},
"20": {
"section": "Open",
"title": "Player: video + agent control",
"file": "20-player-video-agent.md",
"left": "Video, snapshot, manifest. Preserve the music path."
},
"21": {
"section": "Open",
"title": "Reboot-to-Android confirmation",
"file": "21-reboot-android-confirmation.md",
"left": "Scoped 07-22. A one-tap irreversible slot flip still sits bare in app search."
},
"23": {
"section": "Open",
"title": "culver locked-notification nudge",
"file": "23-culver-locked-notification-nudge.md",
"left": "Needs `SyncBurst()` + an IdleCoordinator schedule (TASK-15)."
},
"27": {
"section": "Open",
"title": "Gitea pipeline audit",
"file": "27-gitea-pipeline-audit.md",
"left": "The fixes. Overlay is not a package; no `primary` branch; poisoned build sysroot."
},
"76": {
"section": "Open",
"title": "Provisioning belongs to a package",
"file": "76-provisioning-by-package.md",
"left": "The viewtop-owned session edge and legal wrapper targets landed. Still open: package-owned QuickShell content, commission-time activation on each device, removal of `/etc` and user-unit shadows, and fresh-install proof."
},
"32": {
"section": "Open",
"title": "Pill and keyboard as owned apps",
"file": "32-pill-and-osk-as-apps.md",
"left": "Keyboard now has one runtime/package owner and no dual-OSK provisioning; glass proof remains. Pill ownership and package-owned shell delivery remain open."
},
"33": {
"section": "Open",
"title": "Battery belongs to the state machine",
"file": "33-battery-as-device-state.md",
"left": "Charge now enters as `SensorSource::Charge` through sensord and sessiond interprets it. Open: UPower supplier-walk threshold write support and the step-up-gated charge policy."
},
"37": {
"section": "Open",
"title": "\"Back\" as a first-class verb",
"file": "37-navigation-back-verb.md",
"left": "Our `Gestures.qml` is already the compositor half; `can_go_back` is the dial's enabled/reason."
},
"39": {
"section": "Open",
"title": "Audio levels as tracked state",
"file": "39-audio-levels-as-state.md",
"left": "Open policy: roles, defaults, lock tiers, and state-driven profile intent. WirePlumber persistence works; do not add a second writer."
}
},
"rollup": {
"by_dimension": {
"memory": {
"commits": 5,
"repos": [
"souveraine"
],
"authors": [
"casey.tunturi@gmail.com"
],
"declared": 3
},
"runtime": {
"commits": 7,
"repos": [
"souveraine"
],
"authors": [
"casey.tunturi@gmail.com"
],
"declared": 20
},
"reflection": {
"commits": 3,
"repos": [
"souveraine"
],
"authors": [
"casey.tunturi@gmail.com"
],
"declared": 2
},
"surface": {
"commits": 12,
"repos": [
"souveraine",
"SouveraineOS",
"Pixel3Arch"
],
"authors": [
"casey.tunturi@gmail.com"
],
"declared": 20
},
"release": {
"commits": 2,
"repos": [
"souveraine-viewtop",
"SouveraineOS"
],
"authors": [
"casey.tunturi@gmail.com"
]
},
"identity": {
"commits": 13,
"repos": [
"souveraine",
"SouveraineOS"
],
"authors": [
"casey.tunturi@gmail.com"
],
"declared": 11
},
"sensorium": {
"commits": 1,
"repos": [
"SouveraineOS"
],
"authors": [
"casey.tunturi@gmail.com"
],
"declared": 15
},
"adoption": {
"commits": 0,
"repos": [],
"authors": [],
"declared": 3
},
"unassigned": {
"commits": 0,
"repos": [],
"authors": [],
"declared": 39
},
"federation": {
"commits": 0,
"repos": [],
"authors": [],
"declared": 3
}
},
"ci": {
"souveraine": {
"runs": 23,
"success": 8,
"failure": 6,
"other": 9,
"newest": {
"id": "ci:souveraine:1829",
"conclusion": "success"
}
},
"souveraine-viewtop": {
"runs": 2,
"success": 2,
"failure": 0,
"other": 0,
"newest": {
"id": "ci:souveraine-viewtop:1746",
"conclusion": "success"
}
}
},
"issues": {
"open": 6,
"opened_this_week": 0,
"closed_this_week": 0,
"ever_closed": 0,
"oldest_open": "i:SouveraineOS:3",
"oldest_open_days": 10
},
"pulls": {
"open": 2,
"merged_this_week": 0,
"oldest_open_days": 38
},
"releases": {
"cut_this_week": [],
"newest_age_days": 26
},
"dimension_basis": {
"paths": 33,
"repo": 3,
"subject": 7
}
}
}