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.
8127 lines
357 KiB
JSON
8127 lines
357 KiB
JSON
{
|
|
"week": "2026-W31",
|
|
"range": {
|
|
"start": "2026-07-27",
|
|
"end": "2026-08-02",
|
|
"tz": "America/Toronto",
|
|
"start_utc": "2026-07-27T04:00:00Z",
|
|
"end_utc": "2026-08-03T04:00:00Z"
|
|
},
|
|
"collected_at": "2026-08-18T22:46:32Z",
|
|
"collector": {
|
|
"tool": "tools/project-state/collect.py",
|
|
"version": 1,
|
|
"forge": "gitea 1.25.5",
|
|
"api_calls": 99,
|
|
"redacted": false,
|
|
"repos": {
|
|
"souveraine": {
|
|
"commits": 63,
|
|
"checkout": true
|
|
},
|
|
"SouveraineOS": {
|
|
"commits": 65,
|
|
"checkout": true
|
|
},
|
|
"Pixel3Arch": {
|
|
"commits": 55,
|
|
"checkout": true
|
|
},
|
|
"souveraine-viewtop": {
|
|
"commits": 52,
|
|
"checkout": true
|
|
},
|
|
"souveraine-updater": {
|
|
"commits": 1,
|
|
"checkout": true
|
|
},
|
|
"souveraine-lens": {
|
|
"commits": 0,
|
|
"checkout": true
|
|
},
|
|
"souveraine-speech": {
|
|
"commits": 8,
|
|
"checkout": true
|
|
},
|
|
"souveraine-player": {
|
|
"commits": 0,
|
|
"checkout": true
|
|
},
|
|
"souveraine-usb": {
|
|
"commits": 0,
|
|
"checkout": true
|
|
},
|
|
"culver": {
|
|
"commits": 0,
|
|
"checkout": true
|
|
},
|
|
"linux-blueline": {
|
|
"commits": 21,
|
|
"checkout": false
|
|
},
|
|
"hexagonrpc": {
|
|
"commits": 20,
|
|
"checkout": true
|
|
},
|
|
"smithay": {
|
|
"commits": 2,
|
|
"checkout": true
|
|
},
|
|
"pocketboot": {
|
|
"commits": 0,
|
|
"checkout": true
|
|
},
|
|
"libcmatrix": {
|
|
"commits": 0,
|
|
"checkout": false
|
|
},
|
|
"upower": {
|
|
"commits": 0,
|
|
"checkout": true
|
|
}
|
|
},
|
|
"notes": []
|
|
},
|
|
"commits": [
|
|
{
|
|
"id": "c:hexagonrpc:6c0fa9cb",
|
|
"repo": "hexagonrpc",
|
|
"sha": "6c0fa9cb71dff92324f2fdcdef8c96f655c39845",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-03-06T17:03:00+01:00",
|
|
"author": "luca.weiss@fairphone.com",
|
|
"subject": "WIP Initial implementation for fwrite",
|
|
"detail": "Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/apps_std.c",
|
|
"hexagonrpcd/interfaces/apps_std.def"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/6c0fa9cb71dff92324f2fdcdef8c96f655c39845"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:55c0d186",
|
|
"repo": "hexagonrpc",
|
|
"sha": "55c0d186bc44d7d0e1bbc7f69c5f7ed20fc95271",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-03-20T11:15:44+01:00",
|
|
"author": "luca.weiss@fairphone.com",
|
|
"subject": "WIP Initial implementation for fremove",
|
|
"detail": "Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/apps_std.c",
|
|
"hexagonrpcd/interfaces/apps_std.def"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/55c0d186bc44d7d0e1bbc7f69c5f7ed20fc95271"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:c314f76f",
|
|
"repo": "hexagonrpc",
|
|
"sha": "c314f76f5438afc4a76122060362b91a33cb1e96",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-03-20T13:54:47+01:00",
|
|
"author": "luca.weiss@fairphone.com",
|
|
"subject": "WIP Initial handling for methods > 31",
|
|
"detail": "Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/listener.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/c314f76f5438afc4a76122060362b91a33cb1e96"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:8d76b8f5",
|
|
"repo": "hexagonrpc",
|
|
"sha": "8d76b8f57ebb98bb4d67222f15cefda373136cae",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-03-20T15:21:52+01:00",
|
|
"author": "luca.weiss@fairphone.com",
|
|
"subject": "WIP Initial implementation for fopen_with_env_fd",
|
|
"detail": "Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/apps_std.c",
|
|
"hexagonrpcd/interfaces/apps_std.def"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/8d76b8f57ebb98bb4d67222f15cefda373136cae"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:0aa66cf8",
|
|
"repo": "hexagonrpc",
|
|
"sha": "0aa66cf8df66f58abc444c02fc159aeabe75bbbb",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-03-20T16:05:41+01:00",
|
|
"author": "luca.weiss@fairphone.com",
|
|
"subject": "WIP Initial implementation for fclose_fd",
|
|
"detail": "Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/apps_std.c",
|
|
"hexagonrpcd/interfaces/apps_std.def"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/0aa66cf8df66f58abc444c02fc159aeabe75bbbb"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:c875a342",
|
|
"repo": "hexagonrpc",
|
|
"sha": "c875a342be6187572dae1d6476c2cbbd4c00bd81",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-08T12:46:27-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sscregistrygen: filter configs by platform_version (+ -platform_version)",
|
|
"detail": "check_config_filter only matched hw_platform and soc_id, so configs gated on\nplatform_version leaked into the generated registry regardless of the device\nrevision. On blueline (plat_ver 0x20028) this pulled in the wrong sx932x SAR\nplatform config (the base b1_sx932x_0 variant excludes 0x20028; the no_pullup\nvariant includes it) and CHRE crashed bringing up the SAR sensor.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"tools/sscregistrygen.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/c875a342be6187572dae1d6476c2cbbd4c00bd81"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:3abf45a5",
|
|
"repo": "SouveraineOS",
|
|
"sha": "3abf45a5a40816c7bea2e568885c22a818a0edcc",
|
|
"branch": "main",
|
|
"at": "2026-07-27T02:03:19-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-13: registry and vddio ruled out; pad VIN selection is the open question",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/13-active-edge-squeeze.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/3abf45a5a40816c7bea2e568885c22a818a0edcc"
|
|
},
|
|
{
|
|
"id": "c:souveraine:53dcb40c",
|
|
"repo": "souveraine",
|
|
"sha": "53dcb40c5d97a23164705606a5d683f750051017",
|
|
"branch": "primary",
|
|
"at": "2026-07-27T08:29:44-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "dial: bind the ring origin instead of assigning it before the surface is sized",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/modules/souveraine/dial/DialHost.qml",
|
|
"surfaces/quickshell/modules/souveraine/dial/RadialDial.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/53dcb40c5d97a23164705606a5d683f750051017"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:ccf02e3b",
|
|
"repo": "SouveraineOS",
|
|
"sha": "ccf02e3bae3efeab03806827864fd826b038a554",
|
|
"branch": "main",
|
|
"at": "2026-07-27T08:36:58-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-13: PM8998 gpio2 power-source is VIN0 on both stacks; no DT patch fixes excitation",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/13-active-edge-squeeze.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/ccf02e3bae3efeab03806827864fd826b038a554"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:84adb458",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "84adb45854fdfba8e3cd70649769dc4018f6f46f",
|
|
"branch": "main",
|
|
"at": "2026-07-27T08:45:02-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "stevia 0.56.0-8: drop the 5th symbol-page row that shrank every key",
|
|
"detail": "",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/stevia/0004-ios-daily-layout-menu-input.patch",
|
|
"pkgs/stevia/PKGBUILD"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/84adb45854fdfba8e3cd70649769dc4018f6f46f"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:78c62a60",
|
|
"repo": "SouveraineOS",
|
|
"sha": "78c62a602df429769a827a341fc01e1376d7bf38",
|
|
"branch": "main",
|
|
"at": "2026-07-27T08:46:12-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-24: dead band above the letters page was max_rows across layers",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/24-keyboard-layout-rethink.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/78c62a602df429769a827a341fc01e1376d7bf38"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:33da1d8b",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "33da1d8b36580a5d1992935d95eb35973a2e6a92",
|
|
"branch": "main",
|
|
"at": "2026-07-27T08:58:46-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "blobs: full vendor /firmware set, plus the CHRE daemon and contexthub HAL",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"blobs/README.md",
|
|
"blobs/los-vendor/bin/adsprpcd",
|
|
"blobs/los-vendor/bin/cdsprpcd",
|
|
"blobs/los-vendor/bin/chre_daemon_msm",
|
|
"blobs/los-vendor/bin/hw/android.hardware.contexthub@1.2-service.generic",
|
|
"blobs/los-vendor/bin/hw/android.hardware.sensors@2.0-service",
|
|
"blobs/los-vendor/firmware/Data.msc",
|
|
"blobs/los-vendor/firmware/a630_gmu.bin",
|
|
"blobs/los-vendor/firmware/a630_sqe.fw",
|
|
"blobs/los-vendor/firmware/a630_zap.b00",
|
|
"blobs/los-vendor/firmware/a630_zap.b01",
|
|
"blobs/los-vendor/firmware/a630_zap.b02",
|
|
"blobs/los-vendor/firmware/a630_zap.elf",
|
|
"blobs/los-vendor/firmware/a630_zap.mdt",
|
|
"blobs/los-vendor/firmware/adsp.b00",
|
|
"blobs/los-vendor/firmware/adsp.b01",
|
|
"blobs/los-vendor/firmware/adsp.b02",
|
|
"blobs/los-vendor/firmware/adsp.b03",
|
|
"blobs/los-vendor/firmware/adsp.b04",
|
|
"blobs/los-vendor/firmware/adsp.b05",
|
|
"blobs/los-vendor/firmware/adsp.b06",
|
|
"blobs/los-vendor/firmware/adsp.b07",
|
|
"blobs/los-vendor/firmware/adsp.b08",
|
|
"blobs/los-vendor/firmware/adsp.b09",
|
|
"blobs/los-vendor/firmware/adsp.b10",
|
|
"blobs/los-vendor/firmware/adsp.b11",
|
|
"blobs/los-vendor/firmware/adsp.b12",
|
|
"blobs/los-vendor/firmware/adsp.b13",
|
|
"blobs/los-vendor/firmware/adsp.b14",
|
|
"blobs/los-vendor/firmware/adsp.b15",
|
|
"blobs/los-vendor/firmware/adsp.mdt",
|
|
"blobs/los-vendor/firmware/adspr.jsn",
|
|
"blobs/los-vendor/firmware/adspua.jsn",
|
|
"blobs/los-vendor/firmware/bdwlan-blueline-EVT1.0.bin",
|
|
"blobs/los-vendor/firmware/bdwlan-blueline-EVT1.1.bin",
|
|
"blobs/los-vendor/firmware/bdwlan-blueline.bin",
|
|
"blobs/los-vendor/firmware/bdwlan-crosshatch-EVT1.0.bin",
|
|
"blobs/los-vendor/firmware/bdwlan-crosshatch.bin",
|
|
"blobs/los-vendor/firmware/cdsp.b00",
|
|
"blobs/los-vendor/firmware/cdsp.b01"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/33da1d8b36580a5d1992935d95eb35973a2e6a92"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:ed21db0f",
|
|
"repo": "SouveraineOS",
|
|
"sha": "ed21db0f44e98dcc819f830ea8ac7a6d754ec684",
|
|
"branch": "main",
|
|
"at": "2026-07-27T09:00:33-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-13: elmyra nanoapp imports ash*ElmyraFilters; task-36 CHRE host",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/13-active-edge-squeeze.md",
|
|
"docs/tasks/36-chre-nanoapp-host.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/ed21db0f44e98dcc819f830ea8ac7a6d754ec684"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:c8b0287b",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "c8b0287bdab5ac4e3d1e31c20e8e376526d3eb1b",
|
|
"branch": "main",
|
|
"at": "2026-07-27T09:00:33-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "blobs: chre preloaded_nanoapps manifest",
|
|
"detail": "",
|
|
"dimension": "release",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"blobs/los-vendor/etc/chre/preloaded_nanoapps.json"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/c8b0287bdab5ac4e3d1e31c20e8e376526d3eb1b"
|
|
},
|
|
{
|
|
"id": "c:souveraine:2170ba68",
|
|
"repo": "souveraine",
|
|
"sha": "2170ba686febc362ab7b85f2376ae915831c2c55",
|
|
"branch": "primary",
|
|
"at": "2026-07-27T09:15:48-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "deploy: fail loudly when a qmldir names a file the composed tree lacks",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/deploy.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/2170ba686febc362ab7b85f2376ae915831c2c55"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:a07801b5",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "a07801b5d9469553cb873073c7bff96eec8c72f2",
|
|
"branch": "main",
|
|
"at": "2026-07-27T09:27:11-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "squeekboard 1.43.1-5; cross linker wrapper so makepkg RUSTFLAGS cannot shadow --sysroot",
|
|
"detail": "stevia 0.56.0-9: drop the terminal layout (0005).",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/squeekboard/PKGBUILD",
|
|
"pkgs/squeekboard/build-cross.sh",
|
|
"pkgs/stevia/0005-drop-terminal-layout.patch",
|
|
"pkgs/stevia/PKGBUILD"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/a07801b5d9469553cb873073c7bff96eec8c72f2"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:49733937",
|
|
"repo": "SouveraineOS",
|
|
"sha": "49733937363c7df24c2c9690f59a14a227bc9a62",
|
|
"branch": "main",
|
|
"at": "2026-07-27T09:29:10-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tasks 37-39: back verb, pill swipe osk swap, audio levels as state",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/37-navigation-back-verb.md",
|
|
"docs/tasks/38-pill-swipe-osk-swap.md",
|
|
"docs/tasks/39-audio-levels-as-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/49733937363c7df24c2c9690f59a14a227bc9a62"
|
|
},
|
|
{
|
|
"id": "c:souveraine:7eb21359",
|
|
"repo": "souveraine",
|
|
"sha": "7eb2135906ca12f5515f291cd33a061ce9d85859",
|
|
"branch": "primary",
|
|
"at": "2026-07-27T10:11:14-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "upower: relocate the cross-install udev leak, and assert it stays gone",
|
|
"detail": "udev rules and hwdb installed under the sysroot prefix, so none of the\nfork's quirks were ever active on the phone.",
|
|
"dimension": "reliability",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml",
|
|
"packaging/arch/PKGBUILD.upower.prebuilt"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/7eb2135906ca12f5515f291cd33a061ce9d85859"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:84673db7",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "84673db7321652951e62b87f714046927c4738fd",
|
|
"branch": "main",
|
|
"at": "2026-07-27T10:11:15-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "squeekboard: relocate the cross-install leak before stripping the OSK unit",
|
|
"detail": "",
|
|
"dimension": "reliability",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"pkgs/squeekboard/PKGBUILD"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/84673db7321652951e62b87f714046927c4738fd"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:31eb5aa2",
|
|
"repo": "linux-blueline",
|
|
"sha": "31eb5aa2ace78c6d7e9abd9352b2f78c1042cf6f",
|
|
"branch": "blueline",
|
|
"at": "2026-07-27T10:19:20-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "arm64: dts: sdm845-google: hog the Active Edge power rail",
|
|
"detail": "PM8998 GPIO 2 gates the MAX11261 strain-gauge supply and nothing raised it\nfrom the kernel. Replaces a systemd unit holding the line with gpioset.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/31eb5aa2ace78c6d7e9abd9352b2f78c1042cf6f"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:318f7d08",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "318f7d08c0735d9986f64c4eafc7a8d39c35fc2f",
|
|
"branch": "main",
|
|
"at": "2026-07-27T10:19:31-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "edge-sense: the rail is a DT gpio-hog now, drop the gpioset unit",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"rootfs-overlay/etc/systemd/system/blueline-edge-sense-power.service",
|
|
"rootfs-overlay/etc/systemd/user/blueline-edge-sense.service"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/318f7d08c0735d9986f64c4eafc7a8d39c35fc2f"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:0533f9fa",
|
|
"repo": "SouveraineOS",
|
|
"sha": "0533f9faa95f70886043a87e1561702047af87fc",
|
|
"branch": "main",
|
|
"at": "2026-07-27T10:23:11-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-36: chrecd already runs CHRE; the gap is three chre_slpi methods",
|
|
"detail": "",
|
|
"dimension": "unassigned",
|
|
"basis": "none",
|
|
"paths": [
|
|
"docs/tasks/36-chre-nanoapp-host.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/0533f9faa95f70886043a87e1561702047af87fc"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:ab09c5ea",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "ab09c5eae1273c5304c0abb1f4f0dc274b518341",
|
|
"branch": "main",
|
|
"at": "2026-07-27T11:15:32-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "hexagonrpc: chrecd load_nanoapp (method 4) + cross-build",
|
|
"detail": "chrecd now loads the elmyra nanoapp after starting CHRE:\n- Method 4 (load_nanoapp): SC=0x40100200, 1 in-scalar (size), 2 out-scalars\n (txn_id, result). Binary delivered through HexagonFS file bridge.\n- chrecd accepts optional argv[1] for nanoapp path, defaults to\n /usr/share/qcom/sensors/sdsp/elmyra.so.\n- initialize_reverse_monitor (method 2) called before start_thread.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/hexagonrpc/PKGBUILD",
|
|
"pkgs/hexagonrpc/build.sh",
|
|
"pkgs/hexagonrpc/patches/0016-chrecd-load-nanoapp.patch"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/ab09c5eae1273c5304c0abb1f4f0dc274b518341"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:1561d216",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "1561d216eb5216066dca4bdd2bc4f326242d8204",
|
|
"branch": "main",
|
|
"at": "2026-07-27T11:47:02-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "hexagonrpc: fix 0015 corrupt patch, regenerate against post-0014 state",
|
|
"detail": "0015-apps-std-implement-ftell.patch was written against upstream but patches\n0007-0014 shifted the apps_std.c line numbers. Regenerated against the actual\npost-0014 state. Full sequence 0001-0016 verified clean.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/hexagonrpc/patches/0015-apps-std-implement-ftell.patch",
|
|
"pkgs/hexagonrpc/patches/0016-chrecd-load-nanoapp.patch"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/1561d216eb5216066dca4bdd2bc4f326242d8204"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:2dbe9c4f",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "2dbe9c4f0f3da0d3ab61239a6ea4924a796efe89",
|
|
"branch": "main",
|
|
"at": "2026-07-27T11:51:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "hexagonrpc: use existing ~/build/aarch64-cross.ini for cross-build",
|
|
"detail": "",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/hexagonrpc/build.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/2dbe9c4f0f3da0d3ab61239a6ea4924a796efe89"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:b4a45ff9",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "b4a45ff95a16ac8d49a3509f55a91e25937f1493",
|
|
"branch": "main",
|
|
"at": "2026-07-27T11:56:29-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "hexagonrpc: regenerate 0016 patch against post-0015 state, clean heredoc",
|
|
"detail": "0016 was generated via Python heredoc which mangled escape sequences.\nRegenerated from hand-written files via git diff --cached. Full 0001-0016\nsequence verified clean on fresh upstream clone.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/hexagonrpc/patches/0016-chrecd-load-nanoapp.patch"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/b4a45ff95a16ac8d49a3509f55a91e25937f1493"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:c0ff2b48",
|
|
"repo": "hexagonrpc",
|
|
"sha": "c0ff2b484d1191540403e0f14f7fae606f3e1c18",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T12:16:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "0015-apps-std-implement-ftell",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/apps_std.c",
|
|
"hexagonrpcd/interfaces/apps_std.def"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/c0ff2b484d1191540403e0f14f7fae606f3e1c18"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:e62ce22d",
|
|
"repo": "hexagonrpc",
|
|
"sha": "e62ce22da175387c840b9f54ac3bc2f7e5d04f9b",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T12:16:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "0014-lazy-truncate-reverse-writes",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/apps_std.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/e62ce22da175387c840b9f54ac3bc2f7e5d04f9b"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:97097c32",
|
|
"repo": "hexagonrpc",
|
|
"sha": "97097c32d991e40c914c95bbda3195e6e1bec347",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T12:16:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "0013-trace-write-fd-assignment",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/apps_std.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/97097c32d991e40c914c95bbda3195e6e1bec347"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:d5eb8d57",
|
|
"repo": "hexagonrpc",
|
|
"sha": "d5eb8d57152d136d01a99f4e3d8274d6117cca78",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T12:16:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "0012-trace-write-newlines",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/apps_std.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/d5eb8d57152d136d01a99f4e3d8274d6117cca78"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:f76e1437",
|
|
"repo": "hexagonrpc",
|
|
"sha": "f76e143723b6d284bd61385ed32fe2848d180b43",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T12:16:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "0011-trace-write-size-format",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/apps_std.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/f76e143723b6d284bd61385ed32fe2848d180b43"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:73960719",
|
|
"repo": "hexagonrpc",
|
|
"sha": "739607199fa50e836fe8d18045a8b2c3cc933fc0",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T12:16:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "0010-trace-reverse-writes",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/apps_std.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/739607199fa50e836fe8d18045a8b2c3cc933fc0"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:21b732a7",
|
|
"repo": "hexagonrpc",
|
|
"sha": "21b732a7942ebe9650d746a944e20a860dcef7a8",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T12:16:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "0009-trace-dsp-file-requests",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/apps_std.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/21b732a7942ebe9650d746a944e20a860dcef7a8"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:4a89ab8d",
|
|
"repo": "hexagonrpc",
|
|
"sha": "4a89ab8dc2c596a904a450cbec019dc8d8bd9e9b",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T12:16:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "0008-blueline-map-registry-control-nodes",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"hexagonrpcd/rpcd_builder.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/4a89ab8dc2c596a904a450cbec019dc8d8bd9e9b"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:1a39c816",
|
|
"repo": "hexagonrpc",
|
|
"sha": "1a39c8168c99ae5809d7f0617bc292e8a7b5f5e6",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T12:16:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "0007-real-write-and-reverse-monitor",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"chrecd/interfaces/chre_slpi.def",
|
|
"chrecd/main.c",
|
|
"hexagonrpcd/apps_std.c",
|
|
"hexagonrpcd/hexagonfs.h",
|
|
"hexagonrpcd/hexagonfs_mapped.c",
|
|
"hexagonrpcd/listener.c",
|
|
"hexagonrpcd/rpcd.c",
|
|
"hexagonrpcd/rpcd_builder.c",
|
|
"tools/sscregistrygen.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/1a39c8168c99ae5809d7f0617bc292e8a7b5f5e6"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:37437453",
|
|
"repo": "hexagonrpc",
|
|
"sha": "374374537b3633f1d50a8fac16e34db5ab1f9783",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T13:41:41-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "chrecd: the real chre_slpi method table, from vendor daemon disassembly",
|
|
"detail": "Methods 3-5 recovered by reading the six invoke scalars out of the vendor\nhost daemon. Method 4 is get_message_to_host, not load_nanoapp: there is no\nload_nanoapp RPC, loading is a LoadNanoappRequest flatbuffer sent over\ndeliver_message_from_host.",
|
|
"dimension": "runtime",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"chrecd/interfaces/chre_slpi.def"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/374374537b3633f1d50a8fac16e34db5ab1f9783"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:c18be31f",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "c18be31fad8ea2c5b3fd206ccf7953c8aa691998",
|
|
"branch": "main",
|
|
"at": "2026-07-27T13:42:37-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "hexagonrpc pkgrel 5: real chre_slpi method table, drop the invented load_nanoapp",
|
|
"detail": "",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/hexagonrpc/PKGBUILD",
|
|
"pkgs/hexagonrpc/patches/0016-chrecd-chre-slpi-method-table.patch",
|
|
"pkgs/hexagonrpc/patches/0016-chrecd-load-nanoapp.patch"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/c18be31fad8ea2c5b3fd206ccf7953c8aa691998"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:04831db5",
|
|
"repo": "SouveraineOS",
|
|
"sha": "04831db5ff48960be9c79e720883a50f16f86bb1",
|
|
"branch": "main",
|
|
"at": "2026-07-27T13:43:14-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-36: the chre_slpi method table, recovered by disassembly",
|
|
"detail": "",
|
|
"dimension": "runtime",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"docs/tasks/36-chre-nanoapp-host.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/04831db5ff48960be9c79e720883a50f16f86bb1"
|
|
},
|
|
{
|
|
"id": "c:souveraine:25d1e192",
|
|
"repo": "souveraine",
|
|
"sha": "25d1e1924612cd59ffb6d06fa1534cd9484e78d6",
|
|
"branch": "primary",
|
|
"at": "2026-07-27T13:46:48-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "upower: var/ is a legitimate prefix, not a leak",
|
|
"detail": "Run 1234 failed because the new stray check omitted var/lib/upower.",
|
|
"dimension": "reliability",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml",
|
|
"packaging/arch/PKGBUILD.upower.prebuilt"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/25d1e1924612cd59ffb6d06fa1534cd9484e78d6"
|
|
},
|
|
{
|
|
"id": "c:souveraine:684d1f9f",
|
|
"repo": "souveraine",
|
|
"sha": "684d1f9fd57734540fa3087c2a466a934d7ed530",
|
|
"branch": "primary",
|
|
"at": "2026-07-27T14:54:04-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "upower: remove the emptied parents after relocating, not just the subtree",
|
|
"detail": "An empty home/casey still ships and still trips the stray check. Runs 1234\nand 1248 were both this guard, not the build.",
|
|
"dimension": "reliability",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/684d1f9fd57734540fa3087c2a466a934d7ed530"
|
|
},
|
|
{
|
|
"id": "c:souveraine:3d934005",
|
|
"repo": "souveraine",
|
|
"sha": "3d9340057faa9bccf11c4cfdaabb8ab3e1c5e504",
|
|
"branch": "primary",
|
|
"at": "2026-07-27T15:34:09-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: an expected source that never reports is Absent, not silent",
|
|
"detail": "sensord hung off graphical-session.target, which nothing on this device\nstarts, so it was enabled and dead from every boot. Down starts from a\nlast-seen stamp and structurally cannot see that. Bind the reporter to\nsessiond and make the machine say so.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"packaging/souveraine-sensord.service",
|
|
"src/sessiond/device_state.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/3d9340057faa9bccf11c4cfdaabb8ab3e1c5e504"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:b24963ad",
|
|
"repo": "SouveraineOS",
|
|
"sha": "b24963ad01160b330f6f377c8e383dab717b78d3",
|
|
"branch": "main",
|
|
"at": "2026-07-27T15:36:25-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "device-state §12: manual brightness override is anchors, not a bias",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"docs/DEVICE-STATE-MACHINE.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/b24963ad01160b330f6f377c8e383dab717b78d3"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:4287d876",
|
|
"repo": "SouveraineOS",
|
|
"sha": "4287d8765d8ee256641f42045532db2c0d2731d8",
|
|
"branch": "main",
|
|
"at": "2026-07-27T15:49:09-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tasks: index 36-40, correct TASK-34's invalid test, add inference tiering task",
|
|
"detail": "",
|
|
"dimension": "runtime",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/34-slpi-bringup-sequencing.md",
|
|
"docs/tasks/40-inference-tiering-sensors.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/4287d8765d8ee256641f42045532db2c0d2731d8"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:f2ab7b6c",
|
|
"repo": "hexagonrpc",
|
|
"sha": "f2ab7b6c060a24b9f9871d7409a0fd52d90ffd27",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T17:26:31-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "chrecd: load nanoapps by name, and read CHRE's outbound messages",
|
|
"detail": "Encodes LoadNanoappRequest by hand (verified field-for-field against a\nflatc-generated reader) and names the file rather than shipping it: the\nDSP opens it over HexagonFS, which hexagonrpcd already serves.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"chrecd/chre_host_message.c",
|
|
"chrecd/chre_host_message.h",
|
|
"chrecd/main.c",
|
|
"chrecd/meson.build"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/f2ab7b6c060a24b9f9871d7409a0fd52d90ffd27"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:8fff087b",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "8fff087babeb1dc315f4a764d49539d91038ddf5",
|
|
"branch": "main",
|
|
"at": "2026-07-27T18:32:22-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "hexagonrpc pkgrel 6: chrecd loads nanoapps; build only via build.sh",
|
|
"detail": "",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/hexagonrpc/PKGBUILD",
|
|
"pkgs/hexagonrpc/patches/0017-chrecd-load-nanoapp-and-message-pump.patch"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/8fff087babeb1dc315f4a764d49539d91038ddf5"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:6c5d39ba",
|
|
"repo": "SouveraineOS",
|
|
"sha": "6c5d39bac542f4eb2e8e61ad748e74d36a872ca9",
|
|
"branch": "main",
|
|
"at": "2026-07-27T18:35:24-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-36: nanoapp loader built and verified; task-34: SSR does not recover the wedge",
|
|
"detail": "",
|
|
"dimension": "unassigned",
|
|
"basis": "none",
|
|
"paths": [
|
|
"docs/tasks/34-slpi-bringup-sequencing.md",
|
|
"docs/tasks/36-chre-nanoapp-host.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/6c5d39bac542f4eb2e8e61ad748e74d36a872ca9"
|
|
},
|
|
{
|
|
"id": "c:souveraine:45fc69b5",
|
|
"repo": "souveraine",
|
|
"sha": "45fc69b56a0bbd467a22fa5869b222c43be730cb",
|
|
"branch": "primary",
|
|
"at": "2026-07-27T21:21:16-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sensord: decay accel motion, debounce light in both directions",
|
|
"detail": "Accel inferred moving from orientation edges, so Moving(false) was only\nreachable from the startup banner — boot 0 carried 165 true to 8 false and the\nkeepalive re-sent a stuck true every 30s, pinning +0.3 into observed_confidence\nfor the life of the process. Motion now decays over MOTION_WINDOW and the\nkeepalive re-derives it.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/bin/souveraine-sensord.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/45fc69b56a0bbd467a22fa5869b222c43be730cb"
|
|
},
|
|
{
|
|
"id": "c:souveraine:4ed8f3dd",
|
|
"repo": "souveraine",
|
|
"sha": "4ed8f3dd743d2a852b93500cc19fd5d7283af22f",
|
|
"branch": "primary",
|
|
"at": "2026-07-27T21:21:26-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell: resolve logind session via User.Display, re-register after sessiond restart",
|
|
"detail": "SessionEvents asked loginctl for -p ObjectPath, which is not a property — it\nreturned empty on every boot, so external lock signals were never monitored and\nthe shell had no unlock ingress. Resolve the graphical session the way\nlockhint.rs does; not GetSession(auto) (this shell is a session-less user unit)\nand not the /session/auto alias (PropertiesChanged only fires on the concrete\npath).",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/services/SessionEvents.qml",
|
|
"surfaces/quickshell/services/SessiondBridge.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/4ed8f3dd743d2a852b93500cc19fd5d7283af22f"
|
|
},
|
|
{
|
|
"id": "c:souveraine:deda4a7b",
|
|
"repo": "souveraine",
|
|
"sha": "deda4a7b6b6461558cf9b47e4113f51e6ad27839",
|
|
"branch": "primary",
|
|
"at": "2026-07-27T21:30:38-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell: send locked_ack on re-registration when the surface is already secure",
|
|
"detail": "onScreenLockSecureChanged is an edge. After a sessiond restart our lock surface\nis already secure, so the edge is in the past and the ack owed by the new\nhandoff was never sent — sessiond logged 'shell never confirmed its lock after\nhandoff' and retook the lock 15s later.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/services/SessiondBridge.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/deda4a7b6b6461558cf9b47e4113f51e6ad27839"
|
|
},
|
|
{
|
|
"id": "c:souveraine:68b60252",
|
|
"repo": "souveraine",
|
|
"sha": "68b6025226317c858b2070ddf8d1f1238e06214a",
|
|
"branch": "primary",
|
|
"at": "2026-07-27T21:38:18-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell: fail closed when the session authority cannot be reached",
|
|
"detail": "Every failure path in shellReady answered cb(false) — no lock owed — so a\nsocket that was not up, a duplicate handshake, or a 3s timeout all concluded\nthe session was open. The timeout logged 'proceeding without sessiond' and left\nthe phone unlocked at exactly the moment the authority was unreachable, while\nthe daemon side of the same contract retakes the lock on heartbeat EOF\n'whether or not the session was locked at the time. Fail closed.'",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/services/SessionEvents.qml",
|
|
"surfaces/quickshell/services/SessiondBridge.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/68b6025226317c858b2070ddf8d1f1238e06214a"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:6dec9321",
|
|
"repo": "hexagonrpc",
|
|
"sha": "6dec932173591ad57f58b54f587a73c7da3a3015",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-27T22:01:17-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "chrecd: hexdump the host message, not just its length",
|
|
"detail": "A byte count cannot tell a LoadNanoappResponse carrying success=true from\none carrying success=false. elmyra loads and answers 52 bytes, and a squeeze\nproduces nothing; without the bytes those two cases are indistinguishable.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"chrecd/main.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/6dec932173591ad57f58b54f587a73c7da3a3015"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:c6f74d0f",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "c6f74d0f2341d698172a3796a2763a89d1c3b877",
|
|
"branch": "main",
|
|
"at": "2026-07-28T00:49:34-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Scaffold workspace, sessiond client, cross-build, CI",
|
|
"detail": "sessiond-client is tested against the live daemon. No compiled-in verb\nvocabulary: describe returns the table and callers plan from it. Nothing\ncaches state the protocol owns.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".cargo/config.toml",
|
|
".gitea/workflows/ci.yml",
|
|
".gitignore",
|
|
"Cargo.toml",
|
|
"LICENSE",
|
|
"README.md",
|
|
"crates/compositor/Cargo.toml",
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/sessiond-client/Cargo.toml",
|
|
"crates/sessiond-client/src/lib.rs",
|
|
"crates/shell-host/Cargo.toml",
|
|
"crates/shell-host/src/lib.rs",
|
|
"crates/wire/Cargo.toml",
|
|
"crates/wire/src/lib.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/c6f74d0f2341d698172a3796a2763a89d1c3b877"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:36b6b2e7",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "36b6b2e7dee5b50e56ae2226654e3f2916d07245",
|
|
"branch": "main",
|
|
"at": "2026-07-28T00:49:53-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Trim README",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/36b6b2e7dee5b50e56ae2226654e3f2916d07245"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:e1c93a5e",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "e1c93a5ef3b5a1a89c63bad7dc9a7469747134a4",
|
|
"branch": "main",
|
|
"at": "2026-07-28T00:58:28-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Wire protocol and surface registry",
|
|
"detail": "Compositor sends facts, shell sends intents. The shell is one of several\nthings that can ask and none of them is the authority.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/registry.rs",
|
|
"crates/wire/src/lib.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/e1c93a5ef3b5a1a89c63bad7dc9a7469747134a4"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:d1a9d73e",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "d1a9d73e85fa6a14135d3449b81ff03e03d263de",
|
|
"branch": "main",
|
|
"at": "2026-07-28T01:00:17-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Reveal policy: tiers and step-up grants",
|
|
"detail": "Ambient, personal, step-up. Grants are bound to an action family, expire on a\npolicy window, and clear on lock. Cannot be minted from a boolean.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/shell-host/src/lib.rs",
|
|
"crates/shell-host/src/policy.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/d1a9d73e85fa6a14135d3449b81ff03e03d263de"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:70f1fc77",
|
|
"repo": "hexagonrpc",
|
|
"sha": "70f1fc77832c0acb6fc105d9f2ab3fa75391d93a",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-28T07:32:27-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "chrecd: start the gesture recognizer and act on GESTURE_DETECTED",
|
|
"detail": "A loaded nanoapp is not a running one. elmyra stays silent until a host client\nsends RECOGNIZER_START (200), which is why a squeeze produced nothing after a\nload that reported success=true.",
|
|
"dimension": "surface",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"chrecd/chre_host_message.c",
|
|
"chrecd/chre_host_message.h",
|
|
"chrecd/main.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/70f1fc77832c0acb6fc105d9f2ab3fa75391d93a"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:d1b7a16f",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "d1b7a16ff5756bf327c53061e0b3a869db358ce2",
|
|
"branch": "main",
|
|
"at": "2026-07-28T08:00:54-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "SessionFacts mirrors sessiond device_state; drop read_grant",
|
|
"detail": "SessionFacts carried {locked, lock_secure, read_grant} — a shape of our own\ninvention that the daemon never sends. It now matches the device_state reply\nfield for field, so it deserializes straight off the wire and a rename here is\na protocol change rather than a refactor: device_state, display_active, dimmed,\nobserved, observed_confidence, sensors_degraded.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/registry.rs",
|
|
"crates/sessiond-client/Cargo.toml",
|
|
"crates/sessiond-client/src/lib.rs",
|
|
"crates/sessiond-client/tests/live.rs",
|
|
"crates/shell-host/src/policy.rs",
|
|
"crates/wire/src/lib.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/d1b7a16ff5756bf327c53061e0b3a869db358ce2"
|
|
},
|
|
{
|
|
"id": "c:hexagonrpc:6bb99513",
|
|
"repo": "hexagonrpc",
|
|
"sha": "6bb99513b676ed28b91efe5ffbe8ce40f863a5e8",
|
|
"branch": "blueline-slpi",
|
|
"at": "2026-07-28T08:35:19-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tests: cover the CHRE host message encoder",
|
|
"detail": "Golden bytes verified against flatc-generated readers and\nVerifyMessageContainerBuffer; harness kept in tests/ but not wired\ninto meson since it needs flatc.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"tests/chre_host_message_flatc.cc",
|
|
"tests/meson.build",
|
|
"tests/test_chre_host_message.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/hexagonrpc/commit/6bb99513b676ed28b91efe5ffbe8ce40f863a5e8"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:f871a7fa",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "f871a7faabe43802d4d204065a7b642534a56cee",
|
|
"branch": "main",
|
|
"at": "2026-07-28T09:04:07-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "hexagonrpc: fix NanoappMessage alignment, add encoder tests",
|
|
"detail": "pkgrel 8 emitted a 76-byte NanoappMessage; app_id landed 4 mod 8 and\nCHRE's verifier rejected every one (recognizer start failed: -1, then\nthe SLPI took sensors down). The encoder never padded the buffer to its\nown max alignment. Verified against flatc + VerifyMessageContainerBuffer\non the laptop, 18 cases.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/hexagonrpc/PKGBUILD",
|
|
"pkgs/hexagonrpc/patches/0018-chrecd-hexdump-host-message.patch",
|
|
"pkgs/hexagonrpc/patches/0019-chrecd-gesture-recognizer.patch",
|
|
"pkgs/hexagonrpc/patches/0020-tests-chre-host-message.patch"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/f871a7faabe43802d4d204065a7b642534a56cee"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:c54e4d6b",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "c54e4d6ba29cc9d5a5f1cbb71eac2fecc09d3331",
|
|
"branch": "main",
|
|
"at": "2026-07-28T09:20:50-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "blueline: deliver CHRE gestures to the shell, arm elmyra",
|
|
"detail": "chrecd runs as root; the gesture consumer is in the user session.\nblueline-chre-gesture is that crossing and decides nothing — same\ncontract blueline-edge-sense already delivers (ipc call gesture squeeze).\nVerified live: 'squeeze -> dial' in the shell log.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"rootfs-overlay/etc/systemd/system/blueline-hexagonrpcd-sdsp.service.d/chre-nanoapps.conf",
|
|
"rootfs-overlay/usr/bin/blueline-chre-gesture"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/c54e4d6ba29cc9d5a5f1cbb71eac2fecc09d3331"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:79831623",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "79831623e83245547360aa27a0830ba8f76dcc5b",
|
|
"branch": "main",
|
|
"at": "2026-07-28T12:51:19-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "edge-sense: report to the session authority, and package it",
|
|
"detail": "The producer called the shell directly: no idle reset, no forensic\ntrail, no pocket veto, no source health. DEVICE-STATE-MACHINE 12 calls\nthat an eighth blind actor. It now asks sessiond (input, trigger\nsqueeze) and delivers only if admitted, failing closed when the\nauthority is unreachable.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/blueline-edge-sense/PKGBUILD",
|
|
"pkgs/blueline-edge-sense/blueline-edge-sense.service",
|
|
"pkgs/blueline-edge-sense/build.sh",
|
|
"pkgs/blueline-edge-sense/edge-sense.c"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/79831623e83245547360aa27a0830ba8f76dcc5b"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:4c6ba8fd",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "4c6ba8fdc8764c8bf60bf424cb22b7cdd9fd600f",
|
|
"branch": "main",
|
|
"at": "2026-07-28T12:51:55-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "edge-sense: reset x86 CFLAGS in build(), makepkg overrides the environment",
|
|
"detail": "",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/blueline-edge-sense/PKGBUILD"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/4c6ba8fdc8764c8bf60bf424cb22b7cdd9fd600f"
|
|
},
|
|
{
|
|
"id": "c:souveraine:c4873762",
|
|
"repo": "souveraine",
|
|
"sha": "c48737620e022ba82e9070e4493de1aeb9c74b1a",
|
|
"branch": "primary",
|
|
"at": "2026-07-28T13:03:53-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: squeeze is input, and a pocket can veto it",
|
|
"detail": "Active Edge becomes InputTrigger::Squeeze. It resets the idle budget\nand lands in the trail like any real input, but unlike a power button\nit is a sensor reading and a tight pocket is a squeezed chassis, so it\ncarries the same proximity veto as tap-to-wake (DEVICE-STATE-MACHINE\n4).",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/device_state.rs",
|
|
"src/sessiond/protocol.rs",
|
|
"src/sessiond/server.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/c48737620e022ba82e9070e4493de1aeb9c74b1a"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:0100fa34",
|
|
"repo": "SouveraineOS",
|
|
"sha": "0100fa34c8d6fbfd8d0d127d8af8e4ae4b238199",
|
|
"branch": "main",
|
|
"at": "2026-07-28T13:41:37-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "viewtop: assess denial as the base; the lock model is the one thing we cannot take",
|
|
"detail": "Our engine pins are already theirs. The embedder, the eleven-patch\nDMSAA/external-texture series, KMS and the GBM atlas path are the\nexpensive parts and they are readable.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/VIEWTOP-AND-DENIAL.md",
|
|
"docs/tasks/41-attested-producers.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/0100fa34c8d6fbfd8d0d127d8af8e4ae4b238199"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:7af82e4f",
|
|
"repo": "SouveraineOS",
|
|
"sha": "7af82e4f6e76dd283103d27d68ad86f8a1fa6d2a",
|
|
"branch": "main",
|
|
"at": "2026-07-28T13:50:06-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "TASK-13: force works, excitation closed by the gpio-hog ordering",
|
|
"detail": "07-27's 'ignores force' conclusion is superseded — same binary, no\nnanoapp, 2502-2990 deflection. Kept verbatim below the correction.\nThe nanoapp is off grip's critical path but still wanted for doze,\nthe real detector, haptics and TASK-40.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/13-active-edge-squeeze.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/7af82e4f6e76dd283103d27d68ad86f8a1fa6d2a"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:2b724efe",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "2b724efe04eb3d2a2ba3cd372bfa3d3de79ff7cb",
|
|
"branch": "main",
|
|
"at": "2026-07-28T13:59:14-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "PAF: Active Edge is a layer now, and it works",
|
|
"detail": "Force is detected without the nanoapp; the gpio-hog changed when the\nrail comes up relative to SSC enumerating the ADC, not what voltage it\nsits at. Records the calibration, the threshold model from Google's\nsweep, the sessiond gating, and the five gaps — doze being the real one.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"PAF/README.md",
|
|
"PAF/edge-sense.md",
|
|
"pkgs/blueline-edge-sense/build.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/2b724efe04eb3d2a2ba3cd372bfa3d3de79ff7cb"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:b7ea4334",
|
|
"repo": "SouveraineOS",
|
|
"sha": "b7ea4334671e870f9d4c22900024fe2f60139082",
|
|
"branch": "main",
|
|
"at": "2026-07-28T14:28:50-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "audio: WirePlumber persistence measured working; settings owes a state-machine readout",
|
|
"detail": "TASK-39 step 1 is done and clean — default-routes stores 0.49 cubed and\nrewrites within 6s of a change. 'Pinned on boot' is a faithful restore\nof a value lower than wanted, so this is defaults and roles. No second\nwriter.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/19-settings-control-center.md",
|
|
"docs/tasks/39-audio-levels-as-state.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/b7ea4334671e870f9d4c22900024fe2f60139082"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:3ef1bc43",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "3ef1bc43b2ba6b80dfb833e2c4b930d026efabd2",
|
|
"branch": "main",
|
|
"at": "2026-07-28T14:42:07-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "ext-session-lock-v1 state machine and the admission gate",
|
|
"detail": "- lock.rs: serves the protocol; sessiond keeps the decision, viewtop attests\n presentation. disclosure_locked() is the union of both answers, fail-closed.\n Abandoned locks are adoptable by the same uid so a sessiond restart while\n locked isn't unrecoverable — no unlocked frame across the handover.\n- gate.rs: replaces denial's secure_session_locked(). Splits routing /\n disclosure / composition. Composition is never gated by lock; unlock is never\n an agent verb, unconditionally.\n- Sensitivity is its own axis, off SurfaceKind — a toplevel can hold personal\n content. Defaults to Personal.\n- shell-host kept unreachable step-up grants the registry could never honour;\n enforcement is now only in gate.rs, shell-host classifies.\n- StepUp has no public constructor. sessiond has no step-up verb yet, so\n Reveal(Credential) is refused outright.\n- docs/SHELL-BOUNDARY.md: engine runs in-process (fbo/buffer-age/vsync callbacks\n are not portable across a process). Owes a fallback presenter — denial skips\n every frame when the engine is gone.\n- Workspace was never fmt-clean; formatted, so CI can pass.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"README.md",
|
|
"crates/compositor/Cargo.toml",
|
|
"crates/compositor/src/gate.rs",
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/lock.rs",
|
|
"crates/compositor/src/registry.rs",
|
|
"crates/sessiond-client/tests/live.rs",
|
|
"crates/shell-host/src/lib.rs",
|
|
"crates/shell-host/src/policy.rs",
|
|
"crates/wire/src/lib.rs",
|
|
"docs/LOCK-AUTHORITY.md",
|
|
"docs/SHELL-BOUNDARY.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/3ef1bc43b2ba6b80dfb833e2c4b930d026efabd2"
|
|
},
|
|
{
|
|
"id": "c:souveraine:21b602a7",
|
|
"repo": "souveraine",
|
|
"sha": "21b602a7d22fc0fe865cc16fa7f1d8760002a4e7",
|
|
"branch": "primary",
|
|
"at": "2026-07-28T14:50:52-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "ci: repin rust-toolchain to a master commit, not a moved stable tip",
|
|
"detail": "29eef336 was the tip of dtolnay's stable branch when pinned. That branch\nforce-moves each Rust release, orphaning the commit — reachable from no\nref, so act resolves 'reference not found' and rust-test dies before\ncompiling. That skipped aarch64-artifact and stopped edge publishing\nwith nothing saying why. master is append-only.",
|
|
"dimension": "reliability",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/21b602a7d22fc0fe865cc16fa7f1d8760002a4e7"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:6d1919df",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "6d1919df7bb7838fd96b47002fbbfe84b0c219b0",
|
|
"branch": "main",
|
|
"at": "2026-07-28T14:55:17-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Model the real lock handoff; viewtop holds the shell heartbeat",
|
|
"detail": "Read souveraine/src/sessiond/{lock,server}.rs and TASK-02/03/41 — the previous\ncommit's lock model was wrong about the common case.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/gate.rs",
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/lock.rs",
|
|
"crates/compositor/src/registry.rs",
|
|
"crates/sessiond-client/src/heartbeat.rs",
|
|
"crates/sessiond-client/src/lib.rs",
|
|
"crates/sessiond-client/tests/live.rs",
|
|
"docs/SHELL-BOUNDARY.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/6d1919df7bb7838fd96b47002fbbfe84b0c219b0"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:a308f39f",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "a308f39f72b0db939075fc3f0454f5d660722776",
|
|
"branch": "main",
|
|
"at": "2026-07-28T15:14:06-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Layer stack, back verb, and the compositor's intent table",
|
|
"detail": "- layers.rs: furniture stacking is a derived total order, not a z-index anyone\n configures. pill_outranks_dock is a test. INTERFACE-ARCHITECTURE's recurring\n defect is a documented guarantee the code doesn't enforce, and the pill one\n was a Lua layerrule in another repo. State gates visibility (Phosh model):\n locked drops the dock, overview and dial, keeps the pill.\n- navigation.rs: TASK-37. can_go_back is the state channel; the verb alone is\n the losing design. Two declared tiers — tier 2 gets XF86Back synthesised and\n BackOutcome::Synthesised carries no success flag, so tier 2 can't be reported\n as tier 1. Root policy is the compositor's, defaults to Overview not Close.\n Predictive back drag with progress/commit/cancel; refused on tier 2, not faked.\n- wire/verbs.rs: INTENTS with examples that parse, enforced by a test — same\n discipline as sessiond's describe. Variant count and table length must agree,\n so a new intent can't be silently unreachable. No sixth refusal code.\n- ToCompositor gains raise/lower/set_visible and the six navigation intents.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/layers.rs",
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/navigation.rs",
|
|
"crates/wire/src/lib.rs",
|
|
"crates/wire/src/verbs.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/a308f39f72b0db939075fc3f0454f5d660722776"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:32ed4fcf",
|
|
"repo": "SouveraineOS",
|
|
"sha": "32ed4fcf6c28d61302b4619290dfdbfb8ec2f6aa",
|
|
"branch": "main",
|
|
"at": "2026-07-28T17:22:28-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "TASK-42: viewtop compositor",
|
|
"detail": "Foundation landed: lock handoff, admission gate, layer stack, back verb,\nintent table. 123 tests, CI green for the first time (repo was never\nfmt-clean). No Wayland/DRM yet.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/42-viewtop-compositor.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/32ed4fcf6c28d61302b4619290dfdbfb8ec2f6aa"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:f7b4b045",
|
|
"repo": "SouveraineOS",
|
|
"sha": "f7b4b04525c6700b7299a4cb353c9054029c6476",
|
|
"branch": "main",
|
|
"at": "2026-07-28T17:38:44-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tools: read CI outcomes from the API, and do it automatically",
|
|
"detail": "A rotted action pin skipped the publish job rather than failing it, so\nedge stopped publishing and the phone sat on an old build for a working\nday with nothing saying why. The runner journal logs task pickup and\nnever outcome, which is what was being read.",
|
|
"dimension": "unassigned",
|
|
"basis": "none",
|
|
"paths": [
|
|
"docs/tasks/42-build-outcomes-are-invisible.md",
|
|
"docs/tasks/README.md",
|
|
"tools/README.md",
|
|
"tools/ci-status.sh",
|
|
"tools/claude-hook-push-ci.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/f7b4b04525c6700b7299a4cb353c9054029c6476"
|
|
},
|
|
{
|
|
"id": "c:souveraine-speech:6368a5b5",
|
|
"repo": "souveraine-speech",
|
|
"sha": "6368a5b5af7ee63f31116bfc5a2cce56442466b8",
|
|
"branch": "main",
|
|
"at": "2026-07-28T17:42:22-04:00",
|
|
"author": "ani@wiuf.net",
|
|
"subject": "Add chatterbox TTS + whisper STT services for RX 560",
|
|
"detail": "Stdlib-only daemons on ArchDev, API-compatible with the VibeVoice and\nfaster-whisper services they replace on .19. Includes systemd units and\nvoice-identity measurement tools.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"README.md",
|
|
"src/sttd.py",
|
|
"src/ttsd.py",
|
|
"systemd/chatterbox-ttsd.service",
|
|
"systemd/whisper-sttd.service",
|
|
"tools/cmp.py",
|
|
"tools/drift.py"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-speech/commit/6368a5b5af7ee63f31116bfc5a2cce56442466b8"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:73f749ec",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "73f749ec02418ddb0df2d0173d28e154bd45a338",
|
|
"branch": "main",
|
|
"at": "2026-07-28T17:51:07-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Smithay frontend and a nested binary; runs on the phone",
|
|
"detail": "viewtop now starts, serves a Wayland socket, and reads the live daemon. On\nblueline it came up with sessiond's real state: locked, display_active false,\ndimmed true.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml",
|
|
"Cargo.toml",
|
|
"crates/compositor/Cargo.toml",
|
|
"crates/compositor/src/bin/viewtop.rs",
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/wayland.rs",
|
|
"scripts/run-nested-phone.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/73f749ec02418ddb0df2d0173d28e154bd45a338"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:4daeef48",
|
|
"repo": "SouveraineOS",
|
|
"sha": "4daeef48ce7dfbacaadad34103ba76a6827fdabc",
|
|
"branch": "main",
|
|
"at": "2026-07-28T17:51:14-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "TASK-43: viewtop runs on the phone (renumbered; 42 was taken)",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/42-viewtop-compositor.md",
|
|
"docs/tasks/43-viewtop-compositor.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/4daeef48ce7dfbacaadad34103ba76a6827fdabc"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:1b7a14e4",
|
|
"repo": "SouveraineOS",
|
|
"sha": "1b7a14e4c298c162ae2c541a1f0fd74f07ae8dde",
|
|
"branch": "main",
|
|
"at": "2026-07-28T18:20:23-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tasks: archive what shipped, say what is left, add fingerprint/haptics/camera",
|
|
"detail": "13 (grip) and 35 (sessiond deadlock) are done; both moved to archive/ with\nclosing notes. Index regrouped by state with a one-line what's-left per task\ninstead of a flat table of history; the archive prose moved to archive/README.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/13-active-edge-squeeze.md",
|
|
"docs/tasks/17-keyboard-stevia-dictation.md",
|
|
"docs/tasks/18-selection-menu.md",
|
|
"docs/tasks/29-souveraine-updater.md",
|
|
"docs/tasks/31-radial-dial.md",
|
|
"docs/tasks/34-slpi-bringup-sequencing.md",
|
|
"docs/tasks/35-sessiond-handler-deadlock.md",
|
|
"docs/tasks/40-inference-tiering-sensors.md",
|
|
"docs/tasks/42-build-outcomes-are-invisible.md",
|
|
"docs/tasks/43-viewtop-compositor.md",
|
|
"docs/tasks/44-fingerprint-fpc1020.md",
|
|
"docs/tasks/45-haptics-cs40l20.md",
|
|
"docs/tasks/46-camera-imx363.md",
|
|
"docs/tasks/README.md",
|
|
"docs/tasks/archive/13-active-edge-squeeze.md",
|
|
"docs/tasks/archive/35-sessiond-handler-deadlock.md",
|
|
"docs/tasks/archive/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/1b7a14e4c298c162ae2c541a1f0fd74f07ae8dde"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:997f32d5",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "997f32d5c6c7fcc615c1e06a2e5c9a3bbdcad4d1",
|
|
"branch": "main",
|
|
"at": "2026-07-28T18:20:49-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "KMS backend, shell heartbeat, one binary for both paths",
|
|
"detail": "- kms.rs: libseat + udev + DrmDevice + GBM + GlesRenderer + connector scan,\n vblank as the frame clock. Single GPU, single panel, no hotplug or leasing —\n blueline has one soldered DSI panel and the rest is a laptop problem.\n Compiles and cross-compiles; not yet executed, since running it takes the\n panel from the live session. First run is the boot test.\n- viewtop takes --nested or --kms, sharing socket setup and the dispatch loop.\n- spawn_heartbeat: registers as the live shell and streams directives. Proven\n on blueline — sessiond answered `refused_by_state — shell authority is\n already registered`, which is the incumbent-wins path, not a bug.\n- Read live state off the phone twice: Locked/dimmed, then Observed with\n confidence 0.70.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/Cargo.toml",
|
|
"crates/compositor/src/bin/viewtop.rs",
|
|
"crates/compositor/src/kms.rs",
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/997f32d5c6c7fcc615c1e06a2e5c9a3bbdcad4d1"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:ac18200c",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "ac18200c1ec8fb14396f0ed2042b83d4ef18e82d",
|
|
"branch": "main",
|
|
"at": "2026-07-28T18:20:55-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "roadmap: refresh the hardware table; mic, sensors and autorotate shipped",
|
|
"detail": "Camera, fingerprint and haptics now point at their SouveraineOS task files\nand record the substrate that already exists for each.",
|
|
"dimension": "sensorium",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"docs/ROADMAP.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/ac18200c1ec8fb14396f0ed2042b83d4ef18e82d"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:c7784b71",
|
|
"repo": "linux-blueline",
|
|
"sha": "c7784b71651873c9d92b7067d284e90194332d2a",
|
|
"branch": "blueline",
|
|
"at": "2026-07-28T19:23:20-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "arm64: dts: sdm845-google: wire the rear IMX363",
|
|
"detail": "The front pair has been declared since the camera series landed; the rear\nsensor never was, so CSIPHY0 and CCI master 0 sat unused with the driver\nbuilt and enabled.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/c7784b71651873c9d92b7067d284e90194332d2a"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:91c9347b",
|
|
"repo": "linux-blueline",
|
|
"sha": "91c9347b264c7369a865c8b9036e307d83b874ea",
|
|
"branch": "fingerprint-fpc1020",
|
|
"at": "2026-07-28T19:23:20-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "arm64: dts: sdm845-google: wire the rear IMX363",
|
|
"detail": "The front pair has been declared since the camera series landed; the rear\nsensor never was, so CSIPHY0 and CCI master 0 sat unused with the driver\nbuilt and enabled.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/91c9347b264c7369a865c8b9036e307d83b874ea"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:ccb7f327",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "ccb7f32734b1cf72e190664da7db2bdfa061d5bf",
|
|
"branch": "main",
|
|
"at": "2026-07-28T19:28:11-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "kernel: don't fail the config guard on the builder's own clang version",
|
|
"detail": "CONFIG_CC_VERSION_TEXT and friends are stamped by kbuild from whatever\ntoolchain is installed, not chosen. archdev went 22.1.6 -> 22.1.8 and the\ndrift guard rejected every build. Filter the auto-derived version symbols\nout of the comparison; a real option appearing or disappearing still fails.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"kernel/PKGBUILD"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/ccb7f32734b1cf72e190664da7db2bdfa061d5bf"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:cc654841",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "cc65484102ff2d073c47e35e3dca41ac33d1dc30",
|
|
"branch": "main",
|
|
"at": "2026-07-28T19:28:41-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Lock handoff proven end to end; fix three bugs it found",
|
|
"detail": "lockprobe replays the boot handoff against a running viewtop without involving\nsessiond, so the server side is provable on a daily driver with no risk of\nlocking it. Result:",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/Cargo.toml",
|
|
"crates/compositor/src/bin/lockprobe.rs",
|
|
"crates/compositor/src/bin/viewtop.rs",
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/cc65484102ff2d073c47e35e3dca41ac33d1dc30"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:daad100e",
|
|
"repo": "SouveraineOS",
|
|
"sha": "daad100eeeaa819cbc2d4cbfd88fc0ecdda9af97",
|
|
"branch": "main",
|
|
"at": "2026-07-29T06:38:01-04:00",
|
|
"author": "casey@samaritansolutions.net",
|
|
"subject": "docs: session dump — squeekboard /usr/local prefix regression, pill lift across OSK swap, TASK-38 consolidation",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/DUMP-keyboards-2026-07-29.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/daad100eeeaa819cbc2d4cbfd88fc0ecdda9af97"
|
|
},
|
|
{
|
|
"id": "c:souveraine:5965c647",
|
|
"repo": "souveraine",
|
|
"sha": "5965c64781dd9a749eb750cd3a1000ee06d4f184",
|
|
"branch": "primary",
|
|
"at": "2026-07-29T08:27:27-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell: recover the phone-only edits into the repo",
|
|
"detail": "~/souveraine-surfaces/quickshell on the phone is not a git repo and was the\nonly copy of five files. Brought back verbatim:",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/ii-base/services/AppSearch.qml",
|
|
"surfaces/quickshell/modules/ii/dock/DockAppButton.qml",
|
|
"surfaces/quickshell/modules/ii/dock/DockStack.qml",
|
|
"surfaces/quickshell/modules/ii/onScreenKeyboard/OnScreenKeyboard.qml",
|
|
"surfaces/quickshell/modules/souveraine/navigation/SystemGestureRail.qml",
|
|
"surfaces/quickshell/services/Gestures.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/5965c64781dd9a749eb750cd3a1000ee06d4f184"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:16289157",
|
|
"repo": "SouveraineOS",
|
|
"sha": "162891571a9caeb673f04588b3a8dfb864253b39",
|
|
"branch": "main",
|
|
"at": "2026-07-29T08:28:23-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-46: the front pair was already wired; the rear IMX363 was the gap",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/46-camera-imx363.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/162891571a9caeb673f04588b3a8dfb864253b39"
|
|
},
|
|
{
|
|
"id": "c:souveraine:8db55cfc",
|
|
"repo": "souveraine",
|
|
"sha": "8db55cfc27dc413dc24abd1d1bf9a4ff71391f87",
|
|
"branch": "primary",
|
|
"at": "2026-07-29T08:39:53-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "surfaces: commit the quickshell README, stranded since 07-10",
|
|
"detail": "It existed only in archdev's checkout — never added, not gitignored, absent\nfrom the laptop. Two sections had gone stale against the code and are corrected\nin the same change: modules/ is no longer \"coming\", and deploy.sh composes the\nwhole config rather than swapping Ai.qml.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/8db55cfc27dc413dc24abd1d1bf9a4ff71391f87"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:e4219756",
|
|
"repo": "SouveraineOS",
|
|
"sha": "e4219756463f82a49c67b6db9bad7da85af9a561",
|
|
"branch": "main",
|
|
"at": "2026-07-29T08:46:22-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "dump 07-29: status — section 8 closed, grip answered, pkgs/ has no CI",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/DUMP-keyboards-2026-07-29.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/e4219756463f82a49c67b6db9bad7da85af9a561"
|
|
},
|
|
{
|
|
"id": "c:souveraine:de64480b",
|
|
"repo": "souveraine",
|
|
"sha": "de64480ba2475788837844538dc845674b43b09f",
|
|
"branch": "primary",
|
|
"at": "2026-07-29T09:14:22-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "gestures: osk-switch is packaged now, not a /usr/local stray",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/services/Gestures.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/de64480ba2475788837844538dc845674b43b09f"
|
|
},
|
|
{
|
|
"id": "c:souveraine:45fbbea4",
|
|
"repo": "souveraine",
|
|
"sha": "45fbbea400ae13d2889dd3c688b4d8b35cd049bb",
|
|
"branch": "primary",
|
|
"at": "2026-07-29T10:43:07-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell: \"already registered\" is a transient, not a verdict",
|
|
"detail": "A scene reload re-runs SessiondBridge while the outgoing connection is still\nopen, so the reload's shell_ready races its own predecessor's EOF and sessiond\nrefuses it — correctly, since the lease is genuinely held. The bug was the\nshell then giving up for good: it read the refusal as \"another shell owns the\nlease, we are not the authority\", cleared nothing, and left registerRetry\nidle. A second later that EOF landed, shell_alive dropped, and sessiond spent\nthe rest of the session believing there was no shell — while a live one sat on\na connected socket.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/services/SessiondBridge.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/45fbbea400ae13d2889dd3c688b4d8b35cd049bb"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:85b172aa",
|
|
"repo": "SouveraineOS",
|
|
"sha": "85b172aaf11f45cdb7bf47b31cc9730eca182804",
|
|
"branch": "main",
|
|
"at": "2026-07-29T10:45:06-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tasks 47/48: auto-brightness is unbuilt; the shell dies on a lock-owing reload",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/47-auto-brightness-anchors.md",
|
|
"docs/tasks/48-lock-surface-reload-fatal.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/85b172aaf11f45cdb7bf47b31cc9730eca182804"
|
|
},
|
|
{
|
|
"id": "c:souveraine:0a635ff9",
|
|
"repo": "souveraine",
|
|
"sha": "0a635ff984c44eea95be9fcf3d4518b49af25a9c",
|
|
"branch": "primary",
|
|
"at": "2026-07-29T10:54:45-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "lock: dismiss the boot bloom on a level, not only on an edge",
|
|
"detail": "bootBloomActive defaults true on every scene construction and bootDismissed\nresets with it, but the only thing that cleared them was the secure EDGE. A\nscene reload during an already-secure lock never moves `secure`, so nothing\ncleared the bloom and the phone sat under a full-screen white overlay until the\nshell was restarted. Casey hit it and reported it as \"the hyprland error\nscreen\"; `grim` returned a solid white 9KB frame, and hyprctl configerrors was\nempty the whole time.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/modules/common/panels/lock/LockScreen.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/0a635ff984c44eea95be9fcf3d4518b49af25a9c"
|
|
},
|
|
{
|
|
"id": "c:souveraine:c8507e92",
|
|
"repo": "souveraine",
|
|
"sha": "c8507e924b0c4c9d83c591222f656a94ef07dc93",
|
|
"branch": "primary",
|
|
"at": "2026-07-29T11:37:08-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: delete the fallback login; this daemon locks and never unlocks",
|
|
"detail": "It authenticated through PAM, called unlock_and_destroy(), and returned\nUnlocked — and then the shell, whose GlobalStates.screenLocked is a separate\nbool, re-registered, was told must_lock=true, and locked again. The protocol\nhas a lock directive and no unlock directive, so the fallback could open the\ncompositor's lock and had no way to tell the session it had. Casey hit it\nexactly that way: \"it logs in, and then qs says Locked still.\"",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/bin/souveraine-sessiond.rs",
|
|
"src/sessiond/auth.rs",
|
|
"src/sessiond/draw.rs",
|
|
"src/sessiond/lock.rs",
|
|
"src/sessiond/mod.rs",
|
|
"src/sessiond/protocol.rs",
|
|
"src/sessiond/server.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/c8507e924b0c4c9d83c591222f656a94ef07dc93"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:38c9be02",
|
|
"repo": "SouveraineOS",
|
|
"sha": "38c9be0262263999223a5977bad607390ea8aa08",
|
|
"branch": "main",
|
|
"at": "2026-07-29T11:57:12-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-46: the front camera works — first frame captured, recipe recorded",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/46-camera-imx363.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/38c9be0262263999223a5977bad607390ea8aa08"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:aef29b87",
|
|
"repo": "SouveraineOS",
|
|
"sha": "aef29b875dc85a234fd1b30c0509b4b0072b36d3",
|
|
"branch": "main",
|
|
"at": "2026-07-29T11:57:28-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tasks: 46 is no longer 'never produced a frame'",
|
|
"detail": "",
|
|
"dimension": "unassigned",
|
|
"basis": "none",
|
|
"paths": [
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/aef29b875dc85a234fd1b30c0509b4b0072b36d3"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:87efdd03",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "87efdd03e6713bbf2e10971c3405c7f6379daac8",
|
|
"branch": "main",
|
|
"at": "2026-07-29T12:34:14Z",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "squeekboard: restore meson --prefix=/usr, and guard the prefix",
|
|
"detail": "Dropping arch-meson (it injects host -march/-mtune) also dropped the\n--prefix=/usr it supplies, so meson used its default /usr/local. All 39 files\nshipped there: ExecStart=/usr/bin/squeekboard failed 203/EXEC, and the GSettings\nschema landed where glib never looks, so the paths that did reach the binary\ndied on g_error. Regression from the 2026-07-27 rebuild that went out as\n1.43.1-5; 1.43.1-1 shipped usr/bin correctly.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/squeekboard/PKGBUILD",
|
|
"pkgs/squeekboard/build-cross.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/87efdd03e6713bbf2e10971c3405c7f6379daac8"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:230d7dd7",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "230d7dd72eb18ac622a9d7bc3b2e788deb0b635e",
|
|
"branch": "main",
|
|
"at": "2026-07-29T13:00:49Z",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "edge-sense: bind the producer to sessiond, not graphical-session.target",
|
|
"detail": "Nothing on this device starts graphical-session.target — greetd runs Hyprland\ndirectly and hyprland.lua starts units by name, and this one is not in that\nlist. So the producer was `enabled` and dead from every boot. It ran on 07-28\nonly because a session started it by hand; that instance was stopped at\n21:40:52 and nothing brought it back, which is why grip \"stopped working\".",
|
|
"dimension": "identity",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"pkgs/blueline-edge-sense/PKGBUILD",
|
|
"pkgs/blueline-edge-sense/blueline-edge-sense-0.2.0-1-aarch64.pkg.tar.zst",
|
|
"pkgs/blueline-edge-sense/blueline-edge-sense-0.2.0-2-aarch64.pkg.tar.zst",
|
|
"pkgs/blueline-edge-sense/blueline-edge-sense-debug-0.2.0-1-aarch64.pkg.tar.zst",
|
|
"pkgs/blueline-edge-sense/blueline-edge-sense-debug-0.2.0-2-aarch64.pkg.tar.zst",
|
|
"pkgs/blueline-edge-sense/blueline-edge-sense.service"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/230d7dd72eb18ac622a9d7bc3b2e788deb0b635e"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:cd8b67ed",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "cd8b67ed8092ec4a0ddc1d180ac703043df335a0",
|
|
"branch": "main",
|
|
"at": "2026-07-29T13:13:39Z",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "keyboards: move both into the souveraine- namespace, and own their units",
|
|
"detail": "squeekboard sat at extra's exact version, 1.43.1-5, and stevia sat above it,\npkgrel 9 against 1. Both positions are bad: equal means pacman cannot tell our\nfixed build from the broken one it replaces, which is what stranded the\n/usr/local regression fix; above means a real upstream bump is hidden forever.\nUnder our own names the version is ours. provides/conflicts/replaces take over\nfrom the IgnorePkg entry, which stops being load-bearing.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/osk-switch/PKGBUILD",
|
|
"pkgs/osk-switch/osk-switch",
|
|
"pkgs/osk-switch/souveraine-osk-switch-1.0.0-1-any.pkg.tar.zst",
|
|
"pkgs/squeekboard/PKGBUILD",
|
|
"pkgs/squeekboard/dconf-profile",
|
|
"pkgs/squeekboard/souveraine-squeekboard-1.43.1-1-aarch64.pkg.tar.zst",
|
|
"pkgs/squeekboard/squeekboard-1.43.1-5-aarch64.pkg.tar.zst",
|
|
"pkgs/squeekboard/squeekboard-debug-1.43.1-5-aarch64.pkg.tar.zst",
|
|
"pkgs/squeekboard/squeekboard.service",
|
|
"pkgs/squeekboard/squeekboard/FETCH_HEAD",
|
|
"pkgs/squeekboard/squeekboard/HEAD",
|
|
"pkgs/squeekboard/squeekboard/config",
|
|
"pkgs/squeekboard/squeekboard/description",
|
|
"pkgs/squeekboard/squeekboard/hooks/applypatch-msg.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/commit-msg.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/fsmonitor-watchman.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/post-update.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-applypatch.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-commit.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-merge-commit.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-push.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-rebase.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-receive.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/prepare-commit-msg.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/push-to-checkout.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/sendemail-validate.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/update.sample",
|
|
"pkgs/squeekboard/squeekboard/info/attributes",
|
|
"pkgs/squeekboard/squeekboard/info/exclude",
|
|
"pkgs/squeekboard/squeekboard/objects/info/commit-graphs/commit-graph-chain",
|
|
"pkgs/squeekboard/squeekboard/objects/info/commit-graphs/graph-53920314ebdae3c344fd0d81f2cd8f4c31c50fbd.graph",
|
|
"pkgs/squeekboard/squeekboard/objects/pack/pack-405f00f9dfbdbc2c0c212bba1dfbbf9642fa068a.idx",
|
|
"pkgs/squeekboard/squeekboard/objects/pack/pack-405f00f9dfbdbc2c0c212bba1dfbbf9642fa068a.pack",
|
|
"pkgs/squeekboard/squeekboard/objects/pack/pack-405f00f9dfbdbc2c0c212bba1dfbbf9642fa068a.rev",
|
|
"pkgs/squeekboard/squeekboard/packed-refs",
|
|
"pkgs/stevia/PKGBUILD",
|
|
"pkgs/stevia/souveraine-stevia-0.56.0-1-aarch64.pkg.tar.zst",
|
|
"pkgs/stevia/stevia.service",
|
|
"pkgs/stevia/stevia/HEAD",
|
|
"pkgs/stevia/stevia/config"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/cd8b67ed8092ec4a0ddc1d180ac703043df335a0"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:796308ae",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "796308aeda5cd4fc21b39a7b732c8ab937b80dba",
|
|
"branch": "main",
|
|
"at": "2026-07-29T13:36:24-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "callaudio: package the call-route hook, drop it from the overlay",
|
|
"detail": "The hook and its unit shipped only via rootfs-overlay, so no package owned\nthem and /etc/systemd/system shadowed anything packaged later.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/blueline-callaudio/PKGBUILD",
|
|
"pkgs/blueline-callaudio/blueline-callaudio-hook",
|
|
"pkgs/blueline-callaudio/blueline-callaudio-hook.service",
|
|
"rootfs-overlay/etc/systemd/system/blueline-callaudio-hook.service",
|
|
"rootfs-overlay/usr/bin/blueline-callaudio-hook"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/796308aeda5cd4fc21b39a7b732c8ab937b80dba"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:0bf4cbdf",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "0bf4cbdfe57b88230e3b55c17433416e0539c0a8",
|
|
"branch": "main",
|
|
"at": "2026-07-29T13:57:51-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "callaudio: reconcile on call state, not on CallDeleted",
|
|
"detail": "First real call, 2026-07-29: the call terminated at 13:48:40 and\nModemManager did not emit CallDeleted until 13:49:11. For those 31s every\nstream on the device stayed routed into the modem.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/blueline-callaudio/PKGBUILD",
|
|
"pkgs/blueline-callaudio/blueline-callaudio-hook"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/0bf4cbdfe57b88230e3b55c17433416e0539c0a8"
|
|
},
|
|
{
|
|
"id": "c:souveraine-speech:48b5caa5",
|
|
"repo": "souveraine-speech",
|
|
"sha": "48b5caa584d632e406f2b29894a56f54c6fbfdbf",
|
|
"branch": "main",
|
|
"at": "2026-07-29T14:16:46-04:00",
|
|
"author": "ani@wiuf.net",
|
|
"subject": "ttsd: stream mp3 by sentence chunks",
|
|
"detail": "tts-cli is one-shot, so a paragraph meant minutes before the first byte.\nSplit on sentence boundaries and send each piece as it finishes via chunked\ntransfer. 499 chars: first audio at 43s instead of 167s.",
|
|
"dimension": "runtime",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"src/ttsd.py"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-speech/commit/48b5caa584d632e406f2b29894a56f54c6fbfdbf"
|
|
},
|
|
{
|
|
"id": "c:souveraine-speech:19c0e307",
|
|
"repo": "souveraine-speech",
|
|
"sha": "19c0e307711186d5fcf4d06ec22e28465b13473f",
|
|
"branch": "main",
|
|
"at": "2026-07-29T15:44:53-04:00",
|
|
"author": "ani@wiuf.net",
|
|
"subject": "ttsd: revert sentence chunking, set cfm-steps 7",
|
|
"detail": "The chunking duplicated tts-cli's own --max-sentence-chars splitting, which\nalready crossfades its segments; ours re-ran the process per chunk and joined\nseparately-encoded mp3s with no crossfade. Reverted.",
|
|
"dimension": "reliability",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"TASKS.md",
|
|
"src/ttsd.py"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-speech/commit/19c0e307711186d5fcf4d06ec22e28465b13473f"
|
|
},
|
|
{
|
|
"id": "c:souveraine-speech:02d2dd9f",
|
|
"repo": "souveraine-speech",
|
|
"sha": "02d2dd9f81bd0b241bd9ad9017440221ff666ff5",
|
|
"branch": "main",
|
|
"at": "2026-07-29T16:49:37-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Add Qwen3-TTS service: qwentts.cpp/Vulkan on the RX 560, Annie cloned voice",
|
|
"detail": "Replaces chatterbox for the dashboard. RTF 1.0 vs 3.36, first audio 0.33s vs 43s,\nso progressive playback works. Runs on :7865; chatterbox stays on :7863 until the\nphone is repointed. Voice registry is in-memory, so the unit re-registers on start.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"docs/QWEN-TTS-API.md",
|
|
"src/qwentts-register-voices.py",
|
|
"systemd/qwen-ttsd.service"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-speech/commit/02d2dd9f81bd0b241bd9ad9017440221ff666ff5"
|
|
},
|
|
{
|
|
"id": "c:souveraine-speech:a766683f",
|
|
"repo": "souveraine-speech",
|
|
"sha": "a766683f1997611c491f80384f159c3c2d660c45",
|
|
"branch": "main",
|
|
"at": "2026-07-29T16:51:52-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Retire chatterbox; shim :7863 to Qwen3-TTS so the phone keeps working",
|
|
"detail": "chatterbox-ttsd is disabled. The phone points at :7863 in config.toml and the\nshell config.json and speaks the old {input,voice,model} contract, so tts-compat.py\ntranslates it to the OpenAI shape on :7865. Any voice name maps to annie, matching\nthe old fallback-rather-than-400 behaviour.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"src/tts-compat.py",
|
|
"systemd/tts-compat.service"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-speech/commit/a766683f1997611c491f80384f159c3c2d660c45"
|
|
},
|
|
{
|
|
"id": "c:souveraine:147999a9",
|
|
"repo": "souveraine",
|
|
"sha": "147999a918c9db1398e1d1ad42b4218b08dd6398",
|
|
"branch": "primary",
|
|
"at": "2026-07-29T17:25:34-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Selection service: compositor-wide primary selection for TASK-18",
|
|
"detail": "Verified on blueline that Hyprland advertises primary-selection plus both\ndata-control managers, so wl-paste --primary --watch sees every selection with\nno per-app hooks. Settles TASK-18's selection-detection question as\ncompositor-level; viewtop is not needed.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/modules/common/Config.qml",
|
|
"surfaces/quickshell/services/Selection.qml",
|
|
"surfaces/quickshell/services/qmldir"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/147999a918c9db1398e1d1ad42b4218b08dd6398"
|
|
},
|
|
{
|
|
"id": "c:souveraine:0bebc779",
|
|
"repo": "souveraine",
|
|
"sha": "0bebc779c622bc6bb075a9b173a39ece0dffc1a5",
|
|
"branch": "primary",
|
|
"at": "2026-07-29T17:47:20-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Selection menu surface: chip that expands to actions (TASK-18)",
|
|
"detail": "Overlay layer following DialHost, keyboardFocus None throughout, and an input\nmask limited to the card so taps elsewhere reach the app underneath. Anchors to\nthe pointer hint above the touch point, clamped on screen.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/deploy.sh",
|
|
"surfaces/quickshell/modules/souveraine/selection/SelectionAction.qml",
|
|
"surfaces/quickshell/modules/souveraine/selection/SelectionActions.qml",
|
|
"surfaces/quickshell/modules/souveraine/selection/SelectionChip.qml",
|
|
"surfaces/quickshell/modules/souveraine/selection/SelectionHost.qml",
|
|
"surfaces/quickshell/modules/souveraine/selection/SelectionSeparator.qml",
|
|
"surfaces/quickshell/modules/souveraine/selection/qmldir",
|
|
"surfaces/quickshell/panelFamilies/SouveraineFamily.qml",
|
|
"surfaces/quickshell/services/DeviceEvidence.qml",
|
|
"surfaces/quickshell/services/qmldir"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/0bebc779c622bc6bb075a9b173a39ece0dffc1a5"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:00d2449a",
|
|
"repo": "SouveraineOS",
|
|
"sha": "00d2449acc3b895cbb7bdf510fc08fe8e73e5bfb",
|
|
"branch": "main",
|
|
"at": "2026-07-29T17:48:37-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "TASK-49: the shell surface has no package, and --phone deletes on-device edits",
|
|
"detail": "deploy.sh:246 rsyncs --delete into the phone's surface tree with no snapshot,\nunlike the local compose which snapshots to .ii-previous. Root cause is\ninstalling into $HOME, which has no file-ownership model. Payload belongs in\n/usr/share owned by a package; $HOME keeps only overrides.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/49-shell-surface-is-not-a-package.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/00d2449acc3b895cbb7bdf510fc08fe8e73e5bfb"
|
|
},
|
|
{
|
|
"id": "c:souveraine:808f0635",
|
|
"repo": "souveraine",
|
|
"sha": "808f06358e8c73e5701b535aab43bb4fc1c2afe3",
|
|
"branch": "primary",
|
|
"at": "2026-07-29T17:54:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Selection: import qs for GlobalStates",
|
|
"detail": "Deployed and verified on blueline: watcher starts, a selection settles with an\nanchor, and the lock gate kills the watcher.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/services/Selection.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/808f06358e8c73e5701b535aab43bb4fc1c2afe3"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:39c9a022",
|
|
"repo": "SouveraineOS",
|
|
"sha": "39c9a022b420033d97f95e42c3969ebdc71b3759",
|
|
"branch": "main",
|
|
"at": "2026-07-29T17:55:18-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "TASK-32: record that --phone rsyncs --delete with no snapshot",
|
|
"detail": "Folds in the 2026-07-29 finding instead of a new task file; TASK-32 already owns\nhow these surfaces ship.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/32-pill-and-osk-as-apps.md",
|
|
"docs/tasks/49-shell-surface-is-not-a-package.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/39c9a022b420033d97f95e42c3969ebdc71b3759"
|
|
},
|
|
{
|
|
"id": "c:souveraine:5a643d70",
|
|
"repo": "souveraine",
|
|
"sha": "5a643d705952f6d2665873b3c8c05701108f7a95",
|
|
"branch": "primary",
|
|
"at": "2026-07-29T18:05:49-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Selection: fix untappable chip and the chip that never cleared",
|
|
"detail": "Two bugs from the first on-device run.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/modules/souveraine/selection/SelectionHost.qml",
|
|
"surfaces/quickshell/services/Selection.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/5a643d705952f6d2665873b3c8c05701108f7a95"
|
|
},
|
|
{
|
|
"id": "c:souveraine:147f7f28",
|
|
"repo": "souveraine",
|
|
"sha": "147f7f28b1545ea3048bf5d2152a10e6fd274acd",
|
|
"branch": "primary",
|
|
"at": "2026-07-29T18:13:02-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "Selection: size the window to the chip instead of masking a fullscreen shield",
|
|
"detail": "The masked-fullscreen version was completely untappable on device. Rather than\nkeep guessing at the mask, the window is now sized to the card and moved by\nmargins, so every pixel of it is the chip. Also stops an invisible fullscreen\nsurface sitting over the app's own selection UI.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/modules/souveraine/selection/SelectionHost.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/147f7f28b1545ea3048bf5d2152a10e6fd274acd"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:d811870f",
|
|
"repo": "SouveraineOS",
|
|
"sha": "d811870fae83bfc289703d5838848e3cd4b5d244",
|
|
"branch": "main",
|
|
"at": "2026-07-29T18:17:13-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "TASK-18: shipped-partial; detection settled, chip still not tappable",
|
|
"detail": "",
|
|
"dimension": "unassigned",
|
|
"basis": "none",
|
|
"paths": [
|
|
"docs/tasks/18-selection-menu.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/d811870fae83bfc289703d5838848e3cd4b5d244"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:b9b2cc57",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "b9b2cc57f06719fde397c45174348d811c575c51",
|
|
"branch": "main",
|
|
"at": "2026-07-29T18:46:53-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "blueline-callaudio: unmap the outgoing capture leg on each verb switch",
|
|
"detail": "alsaucm keeps its UCM context in-process, so a one-shot `set _verb` has no\nprevious verb to dismantle and never runs its DisableSequence. TX5 (HiFi) and\nTX7 (VoiceCall) both stayed mapped into AIF1_CAP across a call; SLIM_0_TX then\ncarried two channels into a mono front-end and hw:0,1 read exact zeros. The\nmicrophone was dead after every call until TX7 was cleared by hand.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/blueline-callaudio/PKGBUILD",
|
|
"pkgs/blueline-callaudio/blueline-callaudio-hook"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/b9b2cc57f06719fde397c45174348d811c575c51"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:e2c2e153",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "e2c2e1537e84168aed28ed9cc7278714bd196042",
|
|
"branch": "main",
|
|
"at": "2026-07-29T22:00:35-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "q6voiced: do not latch a failed open",
|
|
"detail": "tinyalsa's pcm_open() returns a non-NULL handle even when the open failed, and\nq6voiced_open() stores it before checking, behind an \"if (v->tx) return\" guard.\nOne failed open therefore silences the whole call.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/q6voiced/0001-retry-after-a-failed-open.patch",
|
|
"pkgs/q6voiced/PKGBUILD"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/e2c2e1537e84168aed28ed9cc7278714bd196042"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:4e5dfb53",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "4e5dfb53a5e7a62acb4407cc80ac2831bd665b41",
|
|
"branch": "main",
|
|
"at": "2026-07-29T22:00:35-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "callaudio: tear down the voice backends on revert, rename to souveraine-callaudio",
|
|
"detail": "The unmap list now covers the QUAT voice mixer and puts MultiMedia1 back on the\namps, since a front-end takes one backend and losing it leaves the speakers\ndead.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/blueline-callaudio/PKGBUILD",
|
|
"pkgs/blueline-callaudio/blueline-callaudio-hook"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/4e5dfb53a5e7a62acb4407cc80ac2831bd665b41"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:eb48b7ad",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "eb48b7ad5bc866a392786ae9a7d78aedd4051709",
|
|
"branch": "main",
|
|
"at": "2026-07-29T22:00:35-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "ucm: name the voice verb \"Voice Call\", give it backends, route downlink to the amps",
|
|
"detail": "Three defects, all of which had to be fixed before a call could carry audio\nboth ways:",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"rootfs-overlay/usr/share/alsa/ucm2/Google/blueline/VoiceCall.conf",
|
|
"rootfs-overlay/usr/share/alsa/ucm2/conf.d/sdm845/Google-Pixel-3.conf"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/eb48b7ad5bc866a392786ae9a7d78aedd4051709"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:3d6f6ec1",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "3d6f6ec170f668ceb0088eadd20fb96bbf4b67f1",
|
|
"branch": "main",
|
|
"at": "2026-07-29T22:16:53-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "ucm: split the voice verb into Earpiece, Speaker and Mic devices",
|
|
"detail": "Calls came out of the loudspeaker with no way back, because the verb had one\ndevice named Speaker that carried both directions. callaudiod toggles\nspeakerphone by selecting a sink port (cad-pulse.c:961) and matches ports by\ntype, skipping any card without both a speaker and an earpiece port (:495).",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/blueline-callaudio/PKGBUILD",
|
|
"pkgs/blueline-callaudio/blueline-callaudio-hook",
|
|
"rootfs-overlay/usr/share/alsa/ucm2/Google/blueline/VoiceCall.conf"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/3d6f6ec170f668ceb0088eadd20fb96bbf4b67f1"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:f954b731",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "f954b73190984dc82ace163ed8899e8745906395",
|
|
"branch": "main",
|
|
"at": "2026-07-29T22:28:43-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "callaudio: add `speaker on|off`",
|
|
"detail": "Moves a live call between the loudspeaker and the earpiece by writing the two\namps directly. Not through alsaucm: enabling a UCM device from a one-shot\nprocess means setting the verb first, and re-running the verb EnableSequence\nmid-call would re-poke the Q6 voice mixers under a live session.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/blueline-callaudio/PKGBUILD",
|
|
"pkgs/blueline-callaudio/blueline-callaudio-hook"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/f954b73190984dc82ace163ed8899e8745906395"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:8417a2ce",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "8417a2ce2c2313cdb66b3581ae0bfcb513d6353a",
|
|
"branch": "main",
|
|
"at": "2026-07-29T22:31:13-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "PAF: phone calls carry two-way audio; correct the callaudiod verdict",
|
|
"detail": "The 'structurally dead on this card' line was wrong and cost real time: ACP\nnever probes hw:0,2, it probes the PCMs the verb declares. Records the five\ndefects, the one-backend-per-front-end rule, and why the earpiece/speaker\ntoggle cannot live in callaudiod here.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"PAF/HANDOFF-audio-finish-20260719-evening.md",
|
|
"PAF/audio.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/8417a2ce2c2313cdb66b3581ae0bfcb513d6353a"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:7647ff69",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "7647ff692cde46adcf3fd5e34c9bf6abef0405f2",
|
|
"branch": "main",
|
|
"at": "2026-07-29T22:39:57-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "souveraine-ucm-blueline: package the UCM tree",
|
|
"detail": "Every routing decision the device makes lives in these three files and none of\nthem was owned by a package -- they were hand-copied from rootfs-overlay, which\nis the failure mode TASK-25 exists to end. alsa-ucm-conf ships nothing for this\nboard, so there is no file conflict.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/souveraine-ucm-blueline/Google-Pixel-3.conf",
|
|
"pkgs/souveraine-ucm-blueline/HiFi.conf",
|
|
"pkgs/souveraine-ucm-blueline/PKGBUILD",
|
|
"pkgs/souveraine-ucm-blueline/VoiceCall.conf"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/7647ff692cde46adcf3fd5e34c9bf6abef0405f2"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:daa9d379",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "daa9d379a58b34b7adc17dc4855c7c3ebec49d0b",
|
|
"branch": "main",
|
|
"at": "2026-07-29T23:21:08-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "ci: publish the device packages into the edge archive",
|
|
"detail": "Everything in pkgs/ has been hand-built on archdev and installed with pacman -U,\nwhich is invisible to -Syu and to souveraine-updater -- it groups by the repo a\npackage came from (updater-core/src/pacman.rs:442), so a hand-installed package\nis never offered as an update whatever it is named. TASK-25.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/packages.yml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/daa9d379a58b34b7adc17dc4855c7c3ebec49d0b"
|
|
},
|
|
{
|
|
"id": "c:souveraine:e9bf33e6",
|
|
"repo": "souveraine",
|
|
"sha": "e9bf33e64a205b7c4a27bb41b392d5595a3e8287",
|
|
"branch": "primary",
|
|
"at": "2026-07-30T09:18:38-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "agent: per-agent voice_id on the public list",
|
|
"detail": "AgentSummary carries voice_id, sourced from agent.json (_souveraine) via\nget() rather than the DB config_json column, which is write-once at create\nand drifts on later edits. The list endpoint is the surface's only\nunauthenticated view of an agent, so voice travels there; /v1/agents/:id\nis token-gated.",
|
|
"dimension": "runtime",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/api/models.rs",
|
|
"src/server/agent_inventory.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/e9bf33e64a205b7c4a27bb41b392d5595a3e8287"
|
|
},
|
|
{
|
|
"id": "c:souveraine:0ef23951",
|
|
"repo": "souveraine",
|
|
"sha": "0ef239515f0824e906333603c51521fea08f6fdc",
|
|
"branch": "primary",
|
|
"at": "2026-07-30T09:18:56-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "surface: per-agent TTS voice + turn clock + reply-handler fix",
|
|
"detail": "Speech resolves voice per active agent (agents[].voice_id from the list),\nwith the system voice as fallback — two agents on a host need not match.\nSouveraine.qml carries voice_id into the agents map and adds a turn clock\n(turnStartedAt/turnElapsedMs) + a 60s agent-inventory refresh. Ai.qml\ndeclares pendingFilePath and imports qs.modules.common.functions so\nStringUtils.ttsClean no longer aborts the stream-finished handler.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/modules/ii/sidebarLeft/AiChat.qml",
|
|
"surfaces/quickshell/services/Ai.qml",
|
|
"surfaces/quickshell/services/Souveraine.qml",
|
|
"surfaces/quickshell/services/Speech.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/0ef239515f0824e906333603c51521fea08f6fdc"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:61cf90ac",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "61cf90ac4be92849c97d7281529452173112a210",
|
|
"branch": "main",
|
|
"at": "2026-07-30T11:22:22-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "wire: add pose and expose intents",
|
|
"detail": "pose — rotation and scale about a pivot. Geometry is the agent's outright\n(doctrine §13), so the compositor honors it rather than adjudicating it; it is\napplied to the paint and used for inverse input-mapping, which is the real cost\nof a rotated surface.",
|
|
"dimension": "surface",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"crates/wire/src/lib.rs",
|
|
"crates/wire/src/verbs.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/61cf90ac4be92849c97d7281529452173112a210"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:ad2b6cbb",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "ad2b6cbbd35f31f8337f12413cc17da1dcbb6e3a",
|
|
"branch": "main",
|
|
"at": "2026-07-30T11:30:16-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: enforce furniture z-order structurally in wlr-layer-shell",
|
|
"detail": "Serve wlr-layer-shell and, on new_layer_surface, override the requested layer\nwith the one derived from the surface's furniture role. INTERFACE-ARCHITECTURE\n§1 found the pill's z-order was a documented guarantee the code did not enforce\n— a layerrule in a Lua file a reload could lose, so an ii restart could bury\nthe pill under the dock and stop it taking touch. Being the compositor is the\nchance to derive the layer from what the surface IS rather than trust a rule.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/layers.rs",
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/ad2b6cbbd35f31f8337f12413cc17da1dcbb6e3a"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:234a6318",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "234a6318e9edab58af814562a9bbbd3bb373fa85",
|
|
"branch": "main",
|
|
"at": "2026-07-30T11:35:02-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: serve primary selection and wlr data-control",
|
|
"detail": "Brokers zwp_primary_selection_v1 and zwlr_data_control_manager_v1, the\ncombination wl-paste --primary --watch relies on to observe selections without\nfocus. data-control is created against the primary-selection state so a\ndata-control client sees primary selections too. This is the selection source\nthe shell's action menu (TASK-18) reads once viewtop is the session.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/234a6318e9edab58af814562a9bbbd3bb373fa85"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:d4ea5754",
|
|
"repo": "SouveraineOS",
|
|
"sha": "d4ea5754046b7281d6d68041cda8d774debfbb76",
|
|
"branch": "main",
|
|
"at": "2026-07-30T11:36:50-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tasks: settle viewtop scene composition + selection design; cross-link",
|
|
"detail": "TASK-43 gains the §Scene composition design settled 2026-07-30: the\ntexture/content wall, pose (geometry, the agent's) and expose (legibility,\ngate-veiled) as authority-split verbs, the selection surface as a scene element\nnot a layer surface, and the primary-selection/data-control source now wired\n(234a631) with its owed refinements named.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/17-keyboard-stevia-dictation.md",
|
|
"docs/tasks/18-selection-menu.md",
|
|
"docs/tasks/30-agent-reach-verb-tables.md",
|
|
"docs/tasks/43-viewtop-compositor.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/d4ea5754046b7281d6d68041cda8d774debfbb76"
|
|
},
|
|
{
|
|
"id": "c:souveraine-speech:ccc3cf7d",
|
|
"repo": "souveraine-speech",
|
|
"sha": "ccc3cf7d89745ea3ba36ddae8d441b874fa2cd82",
|
|
"branch": "main",
|
|
"at": "2026-07-30T12:39:59-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "docs: multi-voice registry, clone recipe, :7863 voice routing, per-agent voice",
|
|
"detail": "Voice is no longer annie-only. Document the registered clones (annie + the\nkyutai voice-donations set), the clone-from-reference recipe, the ref_text/ICL\nrepetition trap, the tts-compat voice-routing fix on :7863, and how an agent\nselects its own voice (_souveraine.voice_id -> agent list -> Speech.qml).",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"docs/QWEN-TTS-API.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-speech/commit/ccc3cf7d89745ea3ba36ddae8d441b874fa2cd82"
|
|
},
|
|
{
|
|
"id": "c:souveraine-speech:b1470cad",
|
|
"repo": "souveraine-speech",
|
|
"sha": "b1470cad52aa8b3b6082885c43aadd8ea0a70272",
|
|
"branch": "main",
|
|
"at": "2026-07-30T12:55:42-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tasks: remove the tts-compat shim — voice must be native, not translated",
|
|
"detail": "Casey's standing instruction was to delete the shim, not patch it. Document the\nremoval plan, the live lever-map (samplers work on base; instructions need a\nnon-base talker; speed is a no-op), and the verify-before-remove ordering.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"TASKS.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-speech/commit/b1470cad52aa8b3b6082885c43aadd8ea0a70272"
|
|
},
|
|
{
|
|
"id": "c:souveraine:25898a9d",
|
|
"repo": "souveraine",
|
|
"sha": "25898a9d14532d8a6e1857607ad76c8aa951da33",
|
|
"branch": "primary",
|
|
"at": "2026-07-30T12:57:19-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell: re-home the subconscious surface from the ii tree to souveraine",
|
|
"detail": "The subconscious three-tier surface (SubconsciousTicker + SubconsciousEventPanel)\nis Souveraine-original, not upstream ii. It lived under ii-base/modules/ii only\nbecause it had never been re-homed, so the ii -> souveraine shell migration\nsilently stranded it: the files survived, but the running shell (qs -c souveraine)\nnever loaded them, and the feature dropped off the device.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/ii-base/modules/ii/overlay/OverlayContext.qml",
|
|
"surfaces/quickshell/ii-base/modules/ii/overlay/OverlayWidgetDelegateChooser.qml",
|
|
"surfaces/quickshell/ii-base/modules/ii/overlay/subconsciousEventPanel/SubconsciousEventPanel.qml",
|
|
"surfaces/quickshell/ii-base/modules/ii/sidebarLeft/aiChat/SubconsciousTicker.qml",
|
|
"surfaces/quickshell/modules/ii/sidebarLeft/AiChat.qml",
|
|
"surfaces/quickshell/modules/souveraine/subconscious/SubconsciousEventPanel.qml",
|
|
"surfaces/quickshell/modules/souveraine/subconscious/SubconsciousTicker.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/25898a9d14532d8a6e1857607ad76c8aa951da33"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:66dbb601",
|
|
"repo": "SouveraineOS",
|
|
"sha": "66dbb601fa13914abca7ce2e3edeeda0d5478eb3",
|
|
"branch": "main",
|
|
"at": "2026-07-30T12:59:59-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "docs: add SHELL-SURFACES.md — the migration checklist",
|
|
"detail": "Migrations have been silently lossy: the subconscious surface was stranded for\nover a week by the ii -> souveraine shell move, and five packages went stale,\nboth because there was no list of what exists to tick off. SHELL-SURFACES.md is\nthat list — every shell surface and first-party service, the contract it is\ndefined against, its substrate today, and whether it reaches the glass.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"STATE.md",
|
|
"docs/SHELL-SURFACES.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/66dbb601fa13914abca7ce2e3edeeda0d5478eb3"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:e306218a",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "e306218aac175c6f0ce6940322678cc31177e591",
|
|
"branch": "main",
|
|
"at": "2026-07-30T13:49:55-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "publish stranded device packages via packages.yml",
|
|
"detail": "Wire the 8 hand-installed packages into the edge CI publisher so they\nreach pacman -Syu: pulse-native-provider, souveraine-osk-switch (any),\nhexagonrpc-blueline, tqftpserv-blueline, blueline-edge-sense,\nsouveraine-stevia, souveraine-squeekboard, usb-signaller (aarch64 cross).",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/packages.yml",
|
|
"pkgs/tqftpserv/PKGBUILD",
|
|
"pkgs/usb-signaller/PKGBUILD"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/e306218aac175c6f0ce6940322678cc31177e591"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:0eccd6fc",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "0eccd6fc5a4006c715cf47716453dc479433fd62",
|
|
"branch": "main",
|
|
"at": "2026-07-30T13:53:18-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "untrack committed build junk + set SRCDEST in packages CI",
|
|
"detail": "9 built *.pkg.tar.zst binaries and two stale bare VCS clones\n(pkgs/stevia/stevia, pkgs/squeekboard/squeekboard) had been committed and\nwere bloating the repo; the stale clone made makepkg abort packages.yml\nwith 'not a clone of <url>'. Remove them, gitignore *.pkg.tar.zst + the\nVCS checkout dirs, and set SRCDEST out-of-tree in CI so clones never land\nin a package dir again.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/packages.yml",
|
|
".gitignore",
|
|
"pkgs/blueline-edge-sense/blueline-edge-sense-0.2.0-1-aarch64.pkg.tar.zst",
|
|
"pkgs/blueline-edge-sense/blueline-edge-sense-0.2.0-2-aarch64.pkg.tar.zst",
|
|
"pkgs/blueline-edge-sense/blueline-edge-sense-debug-0.2.0-1-aarch64.pkg.tar.zst",
|
|
"pkgs/blueline-edge-sense/blueline-edge-sense-debug-0.2.0-2-aarch64.pkg.tar.zst",
|
|
"pkgs/osk-switch/souveraine-osk-switch-1.0.0-1-any.pkg.tar.zst",
|
|
"pkgs/squeekboard/souveraine-squeekboard-1.43.1-1-aarch64.pkg.tar.zst",
|
|
"pkgs/squeekboard/squeekboard-1.43.1-5-aarch64.pkg.tar.zst",
|
|
"pkgs/squeekboard/squeekboard-debug-1.43.1-5-aarch64.pkg.tar.zst",
|
|
"pkgs/squeekboard/squeekboard/FETCH_HEAD",
|
|
"pkgs/squeekboard/squeekboard/HEAD",
|
|
"pkgs/squeekboard/squeekboard/config",
|
|
"pkgs/squeekboard/squeekboard/description",
|
|
"pkgs/squeekboard/squeekboard/hooks/applypatch-msg.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/commit-msg.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/fsmonitor-watchman.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/post-update.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-applypatch.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-commit.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-merge-commit.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-push.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-rebase.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/pre-receive.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/prepare-commit-msg.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/push-to-checkout.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/sendemail-validate.sample",
|
|
"pkgs/squeekboard/squeekboard/hooks/update.sample",
|
|
"pkgs/squeekboard/squeekboard/info/attributes",
|
|
"pkgs/squeekboard/squeekboard/info/exclude",
|
|
"pkgs/squeekboard/squeekboard/objects/info/commit-graphs/commit-graph-chain",
|
|
"pkgs/squeekboard/squeekboard/objects/info/commit-graphs/graph-53920314ebdae3c344fd0d81f2cd8f4c31c50fbd.graph",
|
|
"pkgs/squeekboard/squeekboard/objects/pack/pack-405f00f9dfbdbc2c0c212bba1dfbbf9642fa068a.idx",
|
|
"pkgs/squeekboard/squeekboard/objects/pack/pack-405f00f9dfbdbc2c0c212bba1dfbbf9642fa068a.pack",
|
|
"pkgs/squeekboard/squeekboard/objects/pack/pack-405f00f9dfbdbc2c0c212bba1dfbbf9642fa068a.rev",
|
|
"pkgs/squeekboard/squeekboard/packed-refs",
|
|
"pkgs/stevia/souveraine-stevia-0.56.0-1-aarch64.pkg.tar.zst",
|
|
"pkgs/stevia/stevia/HEAD",
|
|
"pkgs/stevia/stevia/config",
|
|
"pkgs/stevia/stevia/description"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/0eccd6fc5a4006c715cf47716453dc479433fd62"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:ee68f5b4",
|
|
"repo": "SouveraineOS",
|
|
"sha": "ee68f5b47b93d2176c2f6d46ea3ecfedf38d1aca",
|
|
"branch": "main",
|
|
"at": "2026-07-30T13:57:00-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "mark package stranding resolved (TASK-25)",
|
|
"detail": "Pixel3Arch packages.yml now publishes all 14 device packages; pacman -Sl\nsouveraine-aarch64 is the manifest. Update TASK-25 status/acceptance +\nrecord the four cross-build shapes and the committed-junk CI trap. DUMP\nfor the session. STATE.md last-updated 2026-07-30.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"STATE.md",
|
|
"docs/DUMP-packages-publish-2026-07-30.md",
|
|
"docs/tasks/25-one-repo-all-packages.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/ee68f5b47b93d2176c2f6d46ea3ecfedf38d1aca"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:410f9428",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "410f9428302549260a171faf5278eac9c54937a5",
|
|
"branch": "main",
|
|
"at": "2026-07-30T14:12:00-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "mirror device packages into the Gitea Arch registry",
|
|
"detail": "Dual-publish: alongside the release-assets edge (the phone's source of\ntruth), also PUT each built package to /api/packages/Fimeg/arch/edge so\nthe Packages page is populated and the registry can be evaluated as the\neventual home (clean edge/stable split, no hand-rolled repo-add). The\nmirror step is best-effort and never breaks the release publish; a 409\nmeans (name,version) is immutable -- bump to republish. Auth/SigLevel for\npointing pacman here is unsolved by design until the registry is proven.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/packages.yml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/410f9428302549260a171faf5278eac9c54937a5"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:051da9e0",
|
|
"repo": "SouveraineOS",
|
|
"sha": "051da9e0d3eccc9918e43ebdb019afbc477848e2",
|
|
"branch": "main",
|
|
"at": "2026-07-30T14:19:31-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "docs: Wiuf VPN — phone split-tunnel + semi-intelligent gate",
|
|
"detail": "",
|
|
"dimension": "runtime",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/substrate/VPN-WIUF.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/051da9e0d3eccc9918e43ebdb019afbc477848e2"
|
|
},
|
|
{
|
|
"id": "c:souveraine-speech:f10e34b9",
|
|
"repo": "souveraine-speech",
|
|
"sha": "f10e34b942c6c3340f43fdc7f6b5ac6187c35045",
|
|
"branch": "main",
|
|
"at": "2026-07-30T14:19:31-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "stt: proxy to resident whisper-server; drop per-request model load",
|
|
"detail": "whisper-server keeps ggml-large-v3-turbo loaded once at boot (RX 560/Vulkan)\nand serializes inference via its mutex. sttd.py becomes a stdlib-only field-\nname shim (audio->file) that passes the {\"text\":...} response through verbatim;\nclients unchanged.",
|
|
"dimension": "runtime",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sttd.py",
|
|
"systemd/whisper-server.service",
|
|
"systemd/whisper-sttd.service"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-speech/commit/f10e34b942c6c3340f43fdc7f6b5ac6187c35045"
|
|
},
|
|
{
|
|
"id": "c:souveraine:3bc363a9",
|
|
"repo": "souveraine",
|
|
"sha": "3bc363a9035f9d3c2811eb5aff907ba869627a10",
|
|
"branch": "primary",
|
|
"at": "2026-07-30T14:24:08-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "mirror souveraine + upower-souveraine into the Gitea Arch registry",
|
|
"detail": "Best-effort mirror step after the edge publish: PUT each built pkg to\n/api/packages/Fimeg/arch/edge so the Packages page stays current. Never\nfails the publish; 409 = bump to republish. Runs only on public (same\ngate as the publish job).",
|
|
"dimension": "reliability",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/3bc363a9035f9d3c2811eb5aff907ba869627a10"
|
|
},
|
|
{
|
|
"id": "c:souveraine-updater:1540559a",
|
|
"repo": "souveraine-updater",
|
|
"sha": "1540559ab86e9e44b3a98e7c05df058b6aa7361c",
|
|
"branch": "primary",
|
|
"at": "2026-07-30T14:24:08-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "mirror souveraine-updater into the Gitea Arch registry",
|
|
"detail": "Best-effort mirror after the edge publish: PUT the built pkg to\n/api/packages/Fimeg/arch/edge. Never fails the publish; 409 = bump to\nrepublish.",
|
|
"dimension": "reliability",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-updater/commit/1540559ab86e9e44b3a98e7c05df058b6aa7361c"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:e9320beb",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "e9320bebb449f3f8cb97a66e5cbf533a796ef37b",
|
|
"branch": "main",
|
|
"at": "2026-07-30T15:05:44-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "stevia 0.56.0-2: dictation key status animation; souveraine-stt state machine",
|
|
"detail": "souveraine-stt: 3-state machine (idle|recording|transcribing|error) written to\n$XDG_RUNTIME_DIR/souveraine-stt/state; --status reads it. Collapse whisper's\nembedded newlines before ydotool (typing \\n sent Enter, chopping dictation).\nFix the dead pw-record wait-loop.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/stevia/0006-dictate-key-status-animation.patch",
|
|
"pkgs/stevia/PKGBUILD",
|
|
"rootfs-overlay/usr/local/bin/souveraine-stt"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/e9320bebb449f3f8cb97a66e5cbf533a796ef37b"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:4df694cd",
|
|
"repo": "SouveraineOS",
|
|
"sha": "4df694cd5de9a54b1bc6dee25ff988b2520724f9",
|
|
"branch": "main",
|
|
"at": "2026-07-30T15:08:13-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tasks: TASK-17 dictation status — CLI shipped, key-anim patch pending build",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/17-keyboard-stevia-dictation.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/4df694cd5de9a54b1bc6dee25ff988b2520724f9"
|
|
},
|
|
{
|
|
"id": "c:souveraine:483902a4",
|
|
"repo": "souveraine",
|
|
"sha": "483902a40eb2a58759a0ba0e693db82496aebbac",
|
|
"branch": "primary",
|
|
"at": "2026-07-30T15:17:55-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell: restore the subconscious ticker to the chat column",
|
|
"detail": "Re-mount SubconsciousTicker in AiChat (lost in the 07-30 relocation out\nof the ii tree). The view is decoupled; it just needed its host back.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/modules/ii/sidebarLeft/AiChat.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/483902a40eb2a58759a0ba0e693db82496aebbac"
|
|
},
|
|
{
|
|
"id": "c:souveraine:426dcf63",
|
|
"repo": "souveraine",
|
|
"sha": "426dcf6363a903b52e5cc3e2620195e072a85f84",
|
|
"branch": "primary",
|
|
"at": "2026-07-30T15:17:55-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "fix: commit partial reply when the SSE surface drops mid-stream",
|
|
"detail": "turn.rs streaming loop returned early on tx.send failure (receiver gone)\nbefore the session commit, orphaning the turn: the assistant's partial\nreply never landed, so the next turn's history snapshot read the user's\nfollow-up with no preceding reply -> a user->user gap. The model then\nanswered as if from nowhere (the 'whatever it was...' non-sequitur),\nmodel-independent and intermittent. Commit the partial like an interrupt\ninstead, the way the cancel branch already does, so the thread links.",
|
|
"dimension": "runtime",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/server/turn.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/426dcf6363a903b52e5cc3e2620195e072a85f84"
|
|
},
|
|
{
|
|
"id": "c:souveraine:4caca368",
|
|
"repo": "souveraine",
|
|
"sha": "4caca36859cea9652069257c046af7b4ae2005c9",
|
|
"branch": "primary",
|
|
"at": "2026-07-30T15:22:12-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "fix: preserve the full reply (not the streamed partial) on surface-drop",
|
|
"detail": "Revises the prior fix: the model's reply is already complete in\nfinal_content before the paced stream loop, so truncating to\nneedlessly dropped the unstreamed tail. On SSE receiver-drop, stop\nstreaming but commit the FULL reply (interrupt flag skips the pointless\nN+1 and marks the turn); the surface recovers the whole reply on resume.",
|
|
"dimension": "runtime",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/server/turn.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/4caca36859cea9652069257c046af7b4ae2005c9"
|
|
},
|
|
{
|
|
"id": "c:souveraine:15af38ae",
|
|
"repo": "souveraine",
|
|
"sha": "15af38ae36f792ea1b54d66a3729c48620a61213",
|
|
"branch": "primary",
|
|
"at": "2026-07-30T15:26:20-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "deploy: ship the subconscious module in the shell manifest",
|
|
"detail": "The ticker instantiation in AiChat referenced qs.modules.souveraine.\nsubconscious, but those files were absent from the deploy MANIFEST, so a\ndeploy left the import unresolved. Add SubconsciousTicker/EventPanel +\na qmldir mirroring the dial/selection modules.",
|
|
"dimension": "reflection",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/deploy.sh",
|
|
"surfaces/quickshell/modules/souveraine/subconscious/qmldir"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/15af38ae36f792ea1b54d66a3729c48620a61213"
|
|
},
|
|
{
|
|
"id": "c:souveraine:0b57daac",
|
|
"repo": "souveraine",
|
|
"sha": "0b57daac065dfc52a4e771dc9ac1961b4737080c",
|
|
"branch": "primary",
|
|
"at": "2026-07-30T19:13:19-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell: VPN quick toggle in the right panel",
|
|
"detail": "Deliberate, never automatic. The autonomous gate it replaces recycled the\ntunnel 652 times in 90 minutes and could not be switched off, because\n'nmcli connection down' fired the dispatcher that brought it back up.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/ii-base/modules/common/models/quickToggles/VpnToggle.qml",
|
|
"surfaces/quickshell/ii-base/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidToggleDelegateChooser.qml",
|
|
"surfaces/quickshell/ii-base/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidVpnToggle.qml",
|
|
"surfaces/quickshell/ii-phone/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidToggleDelegateChooser.qml",
|
|
"surfaces/quickshell/modules/common/Config.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/0b57daac065dfc52a4e771dc9ac1961b4737080c"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:d64579a6",
|
|
"repo": "SouveraineOS",
|
|
"sha": "d64579a6c303b1898901a8ddc204ae6496d9dfe7",
|
|
"branch": "main",
|
|
"at": "2026-07-30T19:13:34-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "CLAUDE.md: the umbrella repo had none",
|
|
"detail": "An agent landing here got nothing. Says what the project is, the reading\norder, and the rule that keeps being broken: ls by date and read, do not\ngrep — these documents argue, and the argument is the content.",
|
|
"dimension": "unassigned",
|
|
"basis": "none",
|
|
"paths": [
|
|
"CLAUDE.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/d64579a6c303b1898901a8ddc204ae6496d9dfe7"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:9ad69eaf",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "9ad69eaf18f45cddf76f2ae5133a76eed0144376",
|
|
"branch": "main",
|
|
"at": "2026-07-30T19:22:44-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "package souveraine-stt; it only ever shipped by flash",
|
|
"detail": "The OSK's dictation key spawns it by name, so it is load-bearing for the\nkeyboard and was owned by no package — rootfs-overlay reaches a device on a\nflash, and this phone runs pacman -Syu. Every fix since has been hand-carried.\n/usr/bin, not /usr/local/bin, which shadows.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/packages.yml",
|
|
"pkgs/souveraine-stt/PKGBUILD",
|
|
"pkgs/souveraine-stt/souveraine-stt",
|
|
"rootfs-overlay/usr/local/bin/souveraine-stt"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/9ad69eaf18f45cddf76f2ae5133a76eed0144376"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:e351afed",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "e351afed2aaa13e104769251bd31a190a07476e2",
|
|
"branch": "main",
|
|
"at": "2026-07-30T19:51:39-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "hyprgrass: rebuild for hyprland 0.56.1 and publish it",
|
|
"detail": "Deferring this package did not avoid the work, it moved it onto the device.\nA plain 'pacman -Syu' dead-locked tonight: hyprgrass pinned hyprland=0.56.0\nwhile hyprtoolkit needed the newer aquamarine, so nothing could move until\nthe plugin was rebuilt by hand. A Hyprland plugin is pinned to one exact\ncompositor version, so it has to republish in lockstep with every bump.\nNow in packages.yml with an ABI sanity check.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/packages.yml",
|
|
"pkgs/hyprgrass/PKGBUILD"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/e351afed2aaa13e104769251bd31a190a07476e2"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:00777768",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "007777684a53220e8aec03cc5a044b1d4d9fcddf",
|
|
"branch": "main",
|
|
"at": "2026-07-30T20:01:03-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "wire: give pose and expose somewhere to land",
|
|
"detail": "The two intents were advertised in the verb table and had no state behind\nthem: Surface carried no geometry beyond size and no legibility at all, so\nnothing could act on either. Adds Pose (identity by default) and the exposure\nactually in force.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/registry.rs",
|
|
"crates/compositor/src/wayland.rs",
|
|
"crates/wire/src/lib.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/007777684a53220e8aec03cc5a044b1d4d9fcddf"
|
|
},
|
|
{
|
|
"id": "c:souveraine:e4d6ddcc",
|
|
"repo": "souveraine",
|
|
"sha": "e4d6ddcc725b81430291552d5ae328174b88306c",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T07:57:30-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "vpn toggle: point at wiufph, the phone's own peer",
|
|
"detail": "The old wiuf profile shared its address and private key with the laptop, so\nWireGuard could only hold one of them, and the key is no longer listed\nserver-side — it sent and never received. wiufph is 10.8.0.6, port 51822,\nkeepalive 25. Proven off-LAN: handshake 8s, gitea 200 in 0.126s.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/ii-base/modules/common/models/quickToggles/VpnToggle.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/e4d6ddcc725b81430291552d5ae328174b88306c"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:25bb99c8",
|
|
"repo": "SouveraineOS",
|
|
"sha": "25bb99c85072c381de8b800dd638777332127fa7",
|
|
"branch": "main",
|
|
"at": "2026-07-31T07:57:30-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "VPN: correct the port, the peer, and the keepalive",
|
|
"detail": "51822 not 51820; the phone has its own peer (10.8.0.6) rather than sharing\nthe laptop's key; keepalive 25 not 0. Records that the autonomous gate is\ndead and why a full tunnel that cannot handshake takes the machine with it.",
|
|
"dimension": "runtime",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/substrate/VPN-WIUF.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/25bb99c85072c381de8b800dd638777332127fa7"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:6b0bf5c7",
|
|
"repo": "SouveraineOS",
|
|
"sha": "6b0bf5c7456820c92329a98e5942eb54a24bd27f",
|
|
"branch": "main",
|
|
"at": "2026-07-31T08:22:56-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell-tree unification is all but done: 918 files -> 7",
|
|
"detail": "Re-measured by md5 across both devices. The ii-base pin + ii-phone overlay\nlanded without this task being worked and killed the drift: laptop-only is 0,\nthe settings suite is byte-identical everywhere, and the 4 phone-only files\nare the declared overlay.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/README.md",
|
|
"docs/tasks/unify-shell-trees-laptop-phone.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/6b0bf5c7456820c92329a98e5942eb54a24bd27f"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:705e7b55",
|
|
"repo": "SouveraineOS",
|
|
"sha": "705e7b55ae264fdd869f844c34e2d8ac28b20c81",
|
|
"branch": "main",
|
|
"at": "2026-07-31T08:25:09-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell-tree unification: done, zero stranded files",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/README.md",
|
|
"docs/tasks/unify-shell-trees-laptop-phone.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/705e7b55ae264fdd869f844c34e2d8ac28b20c81"
|
|
},
|
|
{
|
|
"id": "c:souveraine:e4e65948",
|
|
"repo": "souveraine",
|
|
"sha": "e4e659483b61ab0e6df39677532ab6cad2e5f101",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T12:50:24-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "fix: keep the conversation when the agent list is re-polled",
|
|
"detail": "selectAgent cleared conversationId even when the agent hadn't changed, and the\n60s inventory poll re-selects the persisted agent forever — so any message sent\na minute after the last one opened a fresh conversation. 27 of them yesterday,\nfour messages each. An empty curl body no longer counts as \"no conversations\".",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/services/Souveraine.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/e4e659483b61ab0e6df39677532ab6cad2e5f101"
|
|
},
|
|
{
|
|
"id": "c:souveraine:e6e3dd3b",
|
|
"repo": "souveraine",
|
|
"sha": "e6e3dd3b2a4b25881ca3ccb4a7932f48fdbf024d",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T12:51:10-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell: quick toggle types come from the chooser, not a second list",
|
|
"detail": "The hand-written allowlist in AndroidQuickPanel had drifted from it, so the\nphone rendered 12 of its 17 configured toggles and said nothing about the rest.\nAdds the missing fullScreenshot and waydroidTerminate, and a deploy guard so\nthe phone chooser can't fall behind the base one again.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/deploy.sh",
|
|
"surfaces/quickshell/ii-base/modules/common/models/quickToggles/FullScreenshotToggle.qml",
|
|
"surfaces/quickshell/ii-base/modules/ii/sidebarRight/quickToggles/AndroidQuickPanel.qml",
|
|
"surfaces/quickshell/ii-base/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidFullScreenshotToggle.qml",
|
|
"surfaces/quickshell/ii-base/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidToggleDelegateChooser.qml",
|
|
"surfaces/quickshell/ii-phone/modules/common/models/quickToggles/WaydroidTerminateToggle.qml",
|
|
"surfaces/quickshell/ii-phone/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidToggleDelegateChooser.qml",
|
|
"surfaces/quickshell/ii-phone/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidWaydroidTerminateToggle.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/e6e3dd3b2a4b25881ca3ccb4a7932f48fdbf024d"
|
|
},
|
|
{
|
|
"id": "c:souveraine:49635fb0",
|
|
"repo": "souveraine",
|
|
"sha": "49635fb005033c186b26ff9e42c08b10f86cd03e",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T12:51:17-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell: give the subconscious event log a host",
|
|
"detail": "Tier 2 was written, deployed and mounted by nothing — its own header named the\ngap. The chat sidebar hosts it now: ticker long-press, or the psychology\nindicator by the input box, which works when no pass is running.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/modules/ii/sidebarLeft/AiChat.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/49635fb005033c186b26ff9e42c08b10f86cd03e"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:012e4e1d",
|
|
"repo": "SouveraineOS",
|
|
"sha": "012e4e1d59cd1c3b5bb5f1f7fa8e7ed204260849",
|
|
"branch": "main",
|
|
"at": "2026-07-31T12:54:51-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "docs: subconscious surface is hosted",
|
|
"detail": "Tier 2 reached the tree on 07-30 and the glass on 07-31 — nothing mounted it in\nbetween, and that was invisible because a component nobody instantiates logs\nnothing. Notes why verifying a row means looking at the glass.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/SHELL-SURFACES.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/012e4e1d59cd1c3b5bb5f1f7fa8e7ed204260849"
|
|
},
|
|
{
|
|
"id": "c:souveraine:8a4eebbd",
|
|
"repo": "souveraine",
|
|
"sha": "8a4eebbdd4074fbe1774c41fa41feb8deb985902",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T12:58:52-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "deploy: never --delete into the phone's tree",
|
|
"detail": "It is not a git repo, it gets edited on the device, and this path had no\nsnapshot while the local compose path has had one all along. Now it snapshots\nto ~/souveraine-surfaces/.quickshell-previous, copies by checksum, and only\nreports phone-only files instead of destroying them.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/deploy.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/8a4eebbdd4074fbe1774c41fa41feb8deb985902"
|
|
},
|
|
{
|
|
"id": "c:souveraine:1c90d7f7",
|
|
"repo": "souveraine",
|
|
"sha": "1c90d7f76a9fc2d1932b16ff7108439f388539f0",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T13:11:43-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "settings: the device state machine gets a surface",
|
|
"detail": "TASK-08(f)/TASK-19: state, panel, evidence, confidence, per-source health, the\nsensors_degraded flag and the recent decision trail were legible only through\nforensic.jsonl. DeviceEvidence gains a read path (polled only while watched);\nthe Device page renders it. Readout only — the confidence gates are still\ncomputed and never branched on, so controls over them would lie.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/modules/settings/DeviceConfig.qml",
|
|
"surfaces/quickshell/services/DeviceEvidence.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/1c90d7f76a9fc2d1932b16ff7108439f388539f0"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:bd528e34",
|
|
"repo": "SouveraineOS",
|
|
"sha": "bd528e34433feeaa3647ac5bf4c474ce85d2d3ef",
|
|
"branch": "main",
|
|
"at": "2026-07-31T13:12:19-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "docs: 08(f) surfaced — the state machine has a readout",
|
|
"detail": "Device page renders state, evidence, per-source health, sensors_degraded and the\ndecision trail. Notes what is still absent from device_state: last-seen per\nsource, and grip as a fourth source.",
|
|
"dimension": "surface",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"docs/tasks/19-settings-control-center.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/bd528e34433feeaa3647ac5bf4c474ce85d2d3ef"
|
|
},
|
|
{
|
|
"id": "c:souveraine:189de61c",
|
|
"repo": "souveraine",
|
|
"sha": "189de61cbe1af19eef59bd0d5b51dd2a2ab3a821",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T13:38:25-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "fix: guard altAction on long-press",
|
|
"detail": "GroupButton called it unguarded while releaseAction two lines up was guarded.\naltAction is null for every toggle without a menu, so a long-press threw. Only\nshowed once the toggles that had been filtered out of the panel started\nrendering.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/ii-base/modules/common/widgets/GroupButton.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/189de61cbe1af19eef59bd0d5b51dd2a2ab3a821"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:ec2f856c",
|
|
"repo": "SouveraineOS",
|
|
"sha": "ec2f856cfb1c6d436132040d2a8e0b0e39f12e52",
|
|
"branch": "main",
|
|
"at": "2026-07-31T13:55:02-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "TASK-49: bearer selection and DNS belong to the state machine",
|
|
"detail": "Measured on the phone: all IPv4 left over cellular while on wifi, because NM\npenalised the wifi metric +20000 for a failed connectivity check, which failed\nbecause the VPN profile injected a resolver reachable only over the degraded\ndefault. Prior art read off the local LineageOS image and Sailfish tree: both\nroute DNS per link and gate preference on a probe. We do neither.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/49-bearer-selection-as-device-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/ec2f856cfb1c6d436132040d2a8e0b0e39f12e52"
|
|
},
|
|
{
|
|
"id": "c:souveraine:0745b48d",
|
|
"repo": "souveraine",
|
|
"sha": "0745b48dc5c0b243b8624e31304292ffd7821946",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T13:57:29-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "vpn toggle: status, not a bool",
|
|
"detail": "It read \"On\" for an hour through a dead tunnel — NM said activated while wg had\n368 B received against 5.3 KiB sent. Now off/connecting/limited/online, decided\nby a 2s probe of the far-side resolver rather than by the interface being up.\nSailfish models the same distinction (Online/Limited/Connecting); Android won't\nlet an unvalidated network win at all.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/ii-base/modules/common/models/quickToggles/VpnToggle.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/0745b48dc5c0b243b8624e31304292ffd7821946"
|
|
},
|
|
{
|
|
"id": "c:souveraine:efe2d0d1",
|
|
"repo": "souveraine",
|
|
"sha": "efe2d0d1e023bfd837051bde108241af2c06f049",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T14:32:29-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "lock: adopt the session lock across a scene reload",
|
|
"detail": "sessiond admits shell_ready from the lease holder's own pid; the shell\ncarries its lock request through the reload so WlSessionLock adopts the\nexisting lock instead of taking the unlock branch on it.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/server.rs",
|
|
"surfaces/quickshell/modules/common/panels/lock/LockScreen.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/efe2d0d1e023bfd837051bde108241af2c06f049"
|
|
},
|
|
{
|
|
"id": "c:souveraine:b5fc48ee",
|
|
"repo": "souveraine",
|
|
"sha": "b5fc48eef1844b148ee23937883b2f5d4bcd0617",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T14:36:46-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "ci: one branch. primary builds and ships; public and the dead codeberg mirror are gone",
|
|
"detail": "",
|
|
"dimension": "reliability",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/b5fc48eef1844b148ee23937883b2f5d4bcd0617"
|
|
},
|
|
{
|
|
"id": "c:souveraine:539df90b",
|
|
"repo": "souveraine",
|
|
"sha": "539df90b95db5c994dfe8c4e1440b26db6db4216",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T18:52:43-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: peer pid via getsockopt, and put sessiond under test",
|
|
"detail": "UnixStream::peer_cred is still unstable, so it only failed at the aarch64\nbuild after rust-test had gone green. Use the same getsockopt machined\nuses.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml",
|
|
"src/sessiond/server.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/539df90b95db5c994dfe8c4e1440b26db6db4216"
|
|
},
|
|
{
|
|
"id": "c:souveraine:b5ee87da",
|
|
"repo": "souveraine",
|
|
"sha": "b5ee87da0fe19e0ade10d162f2e63c537c2f1bd9",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T19:14:27-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "ci: sessiond clippy is advisory until its 9 pre-existing warnings are burned down",
|
|
"detail": "",
|
|
"dimension": "reliability",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/b5ee87da0fe19e0ade10d162f2e63c537c2f1bd9"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:80ea42cb",
|
|
"repo": "SouveraineOS",
|
|
"sha": "80ea42cbbb08dae4f8443b3a88991f30526d9918",
|
|
"branch": "main",
|
|
"at": "2026-07-31T20:14:45-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-48: daemon half fixed and live; shell half shipped and measured failing",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/43-viewtop-compositor.md",
|
|
"docs/tasks/48-lock-surface-reload-fatal.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/80ea42cbbb08dae4f8443b3a88991f30526d9918"
|
|
},
|
|
{
|
|
"id": "c:souveraine:1eb50a18",
|
|
"repo": "souveraine",
|
|
"sha": "1eb50a1817d0c90565b3b10682813c4c95da7236",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T21:07:19-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: subscribe — the body tells the mind when a belief changes",
|
|
"detail": "A held connection receives one trail entry per notable edge: transitions,\nsource-down/recovered, violated guarantees. Readings, wakes and heartbeats\nnever cross — the filter is the point, not the transport.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/device_state.rs",
|
|
"src/sessiond/protocol.rs",
|
|
"src/sessiond/server.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/1eb50a1817d0c90565b3b10682813c4c95da7236"
|
|
},
|
|
{
|
|
"id": "c:souveraine:5c618f15",
|
|
"repo": "souveraine",
|
|
"sha": "5c618f1514ec091a83abf39209be49e446518c97",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T21:25:05-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "lock: hoist the lock out of the Config.ready loaders so a reload can adopt",
|
|
"detail": "PanelLoader is a LazyLoader gated on Config.ready, behind a second one.\nOn reload both are shut when quickshell propagates, so LazyLoader has no\nitem to hand its successor and the new WlSessionLock never adopts the live\ncompositor lock. Lock is a direct child of ShellRoot now, as the boot-order\ndoc already asked.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/modules/ii/lock/Lock.qml",
|
|
"surfaces/quickshell/panelFamilies/SouveraineFamily.qml",
|
|
"surfaces/quickshell/shell.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/5c618f1514ec091a83abf39209be49e446518c97"
|
|
},
|
|
{
|
|
"id": "c:souveraine:86afe00d",
|
|
"repo": "souveraine",
|
|
"sha": "86afe00dba56afe58bd062603e37a5993c7fdb6f",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T21:45:47-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: the power button reports edges; the machine recognises gestures",
|
|
"detail": "blueline-power-button decided policy in shell script — read its own panel\nstate, asked the shell to lock over qs ipc, polled, then blanked the panel\nitself. That was a path to a dark panel outside request_blank(), so §1's\nlock-then-blank invariant had a hole in the most-used control on the device.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/device_state.rs",
|
|
"src/sessiond/protocol.rs",
|
|
"src/sessiond/server.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/86afe00dba56afe58bd062603e37a5993c7fdb6f"
|
|
},
|
|
{
|
|
"id": "c:souveraine:a89556ae",
|
|
"repo": "souveraine",
|
|
"sha": "a89556aef737443f33e070e82a5dd6bc52ae1480",
|
|
"branch": "primary",
|
|
"at": "2026-07-31T21:48:08-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "packaging: ship souveraine-button, the reporter that replaces the policy script",
|
|
"detail": "Reports down/up edges to sessiond and decides nothing. Wire it in\nhyprland.lua as a bind/bindr pair — reporting only the press leaves the\nmachine believing the button is held forever.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml",
|
|
"packaging/arch/PKGBUILD.prebuilt",
|
|
"packaging/souveraine-button"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/a89556aef737443f33e070e82a5dd6bc52ae1480"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:c80a2419",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "c80a241922b5e623332a482f3942ea237c49ea73",
|
|
"branch": "main",
|
|
"at": "2026-07-31T21:55:37-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "viewtop: let the binary build without winit so the phone target can ship",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/Cargo.toml",
|
|
"crates/compositor/src/bin/viewtop.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/c80a241922b5e623332a482f3942ea237c49ea73"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:ef7425e4",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "ef7425e4e5d9310e67ac5f0f017dc0f146e85d80",
|
|
"branch": "main",
|
|
"at": "2026-07-31T21:56:28-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "viewtop: build the phone backend in CI",
|
|
"detail": "The kms binary compiled for no target at all — the workspace cross-build\nskipped it (required-features = nested) and the nested step is host-only.\nBoth backends are cfg-gated with a bail fallback now, so the binary builds\nwith kms alone and the Pixel 3 target is actually checked.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml",
|
|
"crates/compositor/src/bin/viewtop.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/ef7425e4e5d9310e67ac5f0f017dc0f146e85d80"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:ad635943",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "ad63594346754e84ee18d4d137d71f108619e815",
|
|
"branch": "main",
|
|
"at": "2026-07-31T21:57:52-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "fmt: main was red on rustfmt since the pose/expose commits",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/layers.rs",
|
|
"crates/compositor/src/wayland.rs",
|
|
"crates/wire/src/lib.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/ad63594346754e84ee18d4d137d71f108619e815"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:4c2f7d07",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "4c2f7d072eb24e6d216f8d5dc3e4f05114eecfdc",
|
|
"branch": "main",
|
|
"at": "2026-07-31T22:03:51-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: the kms build compiles; layer override moves to render order",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/4c2f7d072eb24e6d216f8d5dc3e4f05114eecfdc"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:e6555ca2",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "e6555ca24163cbab0145d607b145dc24d25469e3",
|
|
"branch": "main",
|
|
"at": "2026-07-31T22:13:19-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: present the scene — the panel finally has a render pass",
|
|
"detail": "on_vblank was a trace! and nothing drew. Every panel now owns a\nDrmCompositor (GBM swapchain, damage, plane assignment); the flip is\nanswered, the frame is built and queued, and clients get their callbacks\nso they draw a second frame.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"Cargo.lock",
|
|
"crates/compositor/src/bin/viewtop.rs",
|
|
"crates/compositor/src/kms.rs",
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/e6555ca24163cbab0145d607b145dc24d25469e3"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:77b58822",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "77b58822868e043879ea81ffb52e92aee7b9417b",
|
|
"branch": "main",
|
|
"at": "2026-08-01T08:20:11-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: keep the render loop alive after an empty frame",
|
|
"detail": "Presentation is driven by vblank and a vblank only arrives for a crtc with\na flip in flight, so a frame that came back empty ended the loop with no\nclock left to notice the next commit. Rendered once, then looked frozen.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/77b58822868e043879ea81ffb52e92aee7b9417b"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:77f69a78",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "77f69a7852433e25d9a21c920a91a5b2b19de1a4",
|
|
"branch": "main",
|
|
"at": "2026-08-01T08:25:07-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "viewtop: cross-build the phone backend for real",
|
|
"detail": "The kms feature links libseat/libinput/libudev/gbm/EGL, so a bare --target\nmakes pkg-config answer with the host's libraries and libseat-sys dies in\nits build script. Give it the sysroot, the aarch64 linker, and the explicit\n-L that --sysroot alone does not cover.",
|
|
"dimension": "reliability",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml",
|
|
"scripts/build-cross.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/77f69a7852433e25d9a21c920a91a5b2b19de1a4"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:8eebcaff",
|
|
"repo": "linux-blueline",
|
|
"sha": "8eebcaff65ef5fd3baa4d23984315f4e433eb74d",
|
|
"branch": "blueline",
|
|
"at": "2026-08-01T09:05:12-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "input: add fpc1020, the AP-side half of the fingerprint sensor",
|
|
"detail": "blueline carries an FPC1020 under the rear reader. Its SPI image path\nbelongs to a TrustZone application, so the AP only ever owns reset, the pad\nrail and the interrupt line. The vendor's fpc1020_platform_tee.c is that\nhalf and nothing more - there is no capture and no matching in it.",
|
|
"dimension": "sensorium",
|
|
"basis": "subject",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/8eebcaff65ef5fd3baa4d23984315f4e433eb74d"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:6f637c4c",
|
|
"repo": "linux-blueline",
|
|
"sha": "6f637c4c29aa6257bd8525606bff2d38cd56da3a",
|
|
"branch": "fingerprint-fpc1020",
|
|
"at": "2026-08-01T09:05:12-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "input: add fpc1020, the AP-side half of the fingerprint sensor",
|
|
"detail": "blueline carries an FPC1020 under the rear reader. Its SPI image path\nbelongs to a TrustZone application, so the AP only ever owns reset, the pad\nrail and the interrupt line. The vendor's fpc1020_platform_tee.c is that\nhalf and nothing more - there is no capture and no matching in it.",
|
|
"dimension": "sensorium",
|
|
"basis": "subject",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/6f637c4c29aa6257bd8525606bff2d38cd56da3a"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:85fa3721",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "85fa37213a0d943f85f831451c64975b0c50fc02",
|
|
"branch": "main",
|
|
"at": "2026-08-01T09:07:56-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "upstream: stage a DCO-signed series for the sdm845 tree",
|
|
"detail": "Eight patches generated from the blueline branch's own commits, not from\nkernel/patches/ (which is stale reference material the PKGBUILD already\nmarks do-not-apply). Six apply clean to the codeberg sdm845 tree; 0006\nand 0007 conflict on blueline.dts context and need a rebase before send.\nNot sent.",
|
|
"dimension": "runtime",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"upstream/series/0001-drm-msm-dpu-NULL-check-crtc-state-in-dpu-crtc-duplic.patch",
|
|
"upstream/series/0002-power-supply-qcom-smbx-expose-charge-type-and-charge.patch",
|
|
"upstream/series/0003-soc-qcom-socinfo-expose-the-platform-identity-attrs-.patch",
|
|
"upstream/series/0004-arm64-dts-sdm845-google-add-Android-parity-pm8998-LD.patch",
|
|
"upstream/series/0005-arm64-dts-sdm845-google-blueline-enable-SLPI-remotep.patch",
|
|
"upstream/series/0006-soc-qcom-smp2p-sleepstate-assert-the-AP-awake-bit-th.patch",
|
|
"upstream/series/0007-soc-qcom-add-modemsmem-wire-up-on-blueline.patch",
|
|
"upstream/series/0008-dma-gpi-log-error-log-register-and-completion-status.patch"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/85fa37213a0d943f85f831451c64975b0c50fc02"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:1fc31a38",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "1fc31a38c873a00a2814184055c5cedb1eecbc04",
|
|
"branch": "main",
|
|
"at": "2026-08-01T09:07:56-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "kernel: build the fpc1020 fingerprint platform driver",
|
|
"detail": "CONFIG_INPUT_FPC1020=m. Driver and DT land on the linux-blueline\nfingerprint-fpc1020 branch; survives olddefconfig in place, so the\nPKGBUILD's config-drift guard stays quiet.",
|
|
"dimension": "sensorium",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"kernel/config-blueline.aarch64"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/1fc31a38c873a00a2814184055c5cedb1eecbc04"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:c614b3a8",
|
|
"repo": "SouveraineOS",
|
|
"sha": "c614b3a83e293ad21e09e79dd6d325817b947d42",
|
|
"branch": "main",
|
|
"at": "2026-08-01T09:16:46-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-44: piece 1 built; two corrections to the task's own premises",
|
|
"detail": "The staged vendor driver is the fpc_fingerprint variant, which blueline does\nnot build (b1c1_defconfig sets CONFIG_FPR_FPC=y, the other copy). The shipping\none has an empty vreg_conf[] and manages no regulators at all.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/44-fingerprint-fpc1020.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/c614b3a83e293ad21e09e79dd6d325817b947d42"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:6b914aaf",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "6b914aafdeaf799756713b4c3878e52e620c9d15",
|
|
"branch": "main",
|
|
"at": "2026-08-01T09:16:47-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "PAF: fingerprint is no longer parked; driver builds, never run",
|
|
"detail": "",
|
|
"dimension": "sensorium",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"PAF/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/6b914aafdeaf799756713b4c3878e52e620c9d15"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:2e064218",
|
|
"repo": "SouveraineOS",
|
|
"sha": "2e0642181f45ebc2b76edb55f922781977999408",
|
|
"branch": "main",
|
|
"at": "2026-08-01T12:39:03-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-49: wifi->LTE failed to attach 2026-08-01; pd_mapper is a real suspect",
|
|
"detail": "sdm845_domains[] carries mpss_root_pd and mpss_wlan_pd, so wifi and cellular\nshare the modem's PD broker on this SoC. A broker that stops serving explains\na no-attach that only a reboot clears.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/49-bearer-selection-as-device-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/2e0642181f45ebc2b76edb55f922781977999408"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:8b9edae3",
|
|
"repo": "SouveraineOS",
|
|
"sha": "8b9edae3e5396c264a6fd804e79ad61aba04077f",
|
|
"branch": "main",
|
|
"at": "2026-08-01T13:16:45-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "blueline: move wifi-bringup to Pixel3Arch rootfs-overlay",
|
|
"detail": "This repo has no delivery path; rootfs-overlay does. Files were byte-identical.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"blueline/wifi-bringup/blueline-wifi-bringup.service",
|
|
"blueline/wifi-bringup/blueline-wifi-bringup.sh",
|
|
"blueline/wifi-bringup/blueline-wifi-defer.conf",
|
|
"blueline/wifi-bringup/blueline-wifi-mac.conf",
|
|
"blueline/wifi-bringup/blueline-wifi-msa-release.service"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/8b9edae3e5396c264a6fd804e79ad61aba04077f"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:3090440a",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "3090440ac8b189a4c19799216c81f8757d1b048d",
|
|
"branch": "main",
|
|
"at": "2026-08-01T13:16:45-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "rootfs-overlay: put the working wifi bring-up on the delivery path",
|
|
"detail": "blueline-wifi-bringup.{service,sh} and blueline-wifi-defer.conf were only on\nthe phone and in SouveraineOS/blueline/, which reaches no device. Meanwhile\nthe overlay still shipped and enabled blueline-wifi-load.service, retired\n2026-07-20 for incomplete ordering, and provision enabled blueline-wifi-retry\nwhich the device has had disabled just as long.",
|
|
"dimension": "adoption",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"rootfs-overlay/etc/NetworkManager/conf.d/blueline-wifi-mac.conf",
|
|
"rootfs-overlay/etc/modprobe.d/blueline-wifi-defer.conf",
|
|
"rootfs-overlay/etc/systemd/system/blueline-sensors-enable.service",
|
|
"rootfs-overlay/etc/systemd/system/blueline-wifi-bringup.service",
|
|
"rootfs-overlay/etc/systemd/system/blueline-wifi-load.service",
|
|
"rootfs-overlay/etc/systemd/system/multi-user.target.wants/blueline-wifi-load.service",
|
|
"rootfs-overlay/usr/local/bin/blueline-wifi-bringup.sh",
|
|
"scripts/provision-rootfs.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/3090440ac8b189a4c19799216c81f8757d1b048d"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:7b96c941",
|
|
"repo": "SouveraineOS",
|
|
"sha": "7b96c9414f30a0b83c20f65acf4a879d7f2034ba",
|
|
"branch": "main",
|
|
"at": "2026-08-01T13:21:48-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-49: record what wiuf-vpn-gate got wrong, and remove it from the phone",
|
|
"detail": "Found still installed 2026-08-01, in no repo and no repo's history. Three\ndefects, all traps the state-machine version can repeat:",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/49-bearer-selection-as-device-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/7b96c9414f30a0b83c20f65acf4a879d7f2034ba"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:8fc7623a",
|
|
"repo": "linux-blueline",
|
|
"sha": "8fc7623a3980f21f0fdd7ef70e613724a02e95cb",
|
|
"branch": "blueline",
|
|
"at": "2026-08-01T13:56:37-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "arm64: dts: sdm845-google: rear IMX363 answers at 0x1a, not 0x10",
|
|
"detail": "0x10 was beryllium's address for the same sensor and the only candidate the\ndownstream DTBO could confirm - it carries no slave-addr, and neither does the\neeprom node cam-sensor@0 points at. On glass it NACKs:",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/8fc7623a3980f21f0fdd7ef70e613724a02e95cb"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:254f8dd2",
|
|
"repo": "linux-blueline",
|
|
"sha": "254f8dd2eeea9f5c6a402f4ca1b5bad4b2b66ed7",
|
|
"branch": "fingerprint-fpc1020",
|
|
"at": "2026-08-01T13:56:37-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "arm64: dts: sdm845-google: rear IMX363 answers at 0x1a, not 0x10",
|
|
"detail": "0x10 was beryllium's address for the same sensor and the only candidate the\ndownstream DTBO could confirm - it carries no slave-addr, and neither does the\neeprom node cam-sensor@0 points at. On glass it NACKs:",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/254f8dd2eeea9f5c6a402f4ca1b5bad4b2b66ed7"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:11668f09",
|
|
"repo": "SouveraineOS",
|
|
"sha": "11668f097f0777ee9198ff145a0033067c0359ae",
|
|
"branch": "main",
|
|
"at": "2026-08-01T13:57:05-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-46: rear IMX363 NACKs at 0x10, moved to 0x1a",
|
|
"detail": "And the lesson that cost the front camera: camss creates all sensor->csiphy\nlinks in the async notifier's .complete, which needs every declared subdev to\nbind. One non-probing sensor leaves the working front pair registered with zero\nlinks. Never leave a failing sensor node enabled; a rear-disabled DTB is parked\non the device for one-cp recovery.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/46-camera-imx363.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/11668f097f0777ee9198ff145a0033067c0359ae"
|
|
},
|
|
{
|
|
"id": "c:souveraine:4fd3d244",
|
|
"repo": "souveraine",
|
|
"sha": "4fd3d244ab3c3e30d44ae18ea46bad9ce3520f09",
|
|
"branch": "primary",
|
|
"at": "2026-08-01T14:05:26-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: bearer posture as evidence and an Action (TASK-49)",
|
|
"detail": "Nothing owned which link carries traffic. It was the residue of a DHCP metric,\na NetworkManager penalty and a shell script's assumption, and when those\ndisagreed the phone silently lost the network - every IPv4 destination leaving\nover a degraded clat while wifi sat associated.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/bearer.rs",
|
|
"src/sessiond/device_state.rs",
|
|
"src/sessiond/mod.rs",
|
|
"src/sessiond/protocol.rs",
|
|
"src/sessiond/server.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/4fd3d244ab3c3e30d44ae18ea46bad9ce3520f09"
|
|
},
|
|
{
|
|
"id": "c:souveraine:f6479c98",
|
|
"repo": "souveraine",
|
|
"sha": "f6479c98a1da101adb34f946e1c4e096af0cc70a",
|
|
"branch": "primary",
|
|
"at": "2026-08-01T14:09:38-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: make home_ssids and bearer_settle settable",
|
|
"detail": "A policy field with no verb behind it is unreachable. set_policy takes both,\nget_policy reports both, and a zero settling window is refused the same way a\nzero lock-ack budget is - it is the event-speed controller by another name.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/protocol.rs",
|
|
"src/sessiond/server.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/f6479c98a1da101adb34f946e1c4e096af0cc70a"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:6b4e4fd3",
|
|
"repo": "SouveraineOS",
|
|
"sha": "6b4e4fd326bc47fd9014c824558eff839eb194c6",
|
|
"branch": "main",
|
|
"at": "2026-08-01T14:21:11-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-49: the machine half landed; acceptance list still open",
|
|
"detail": "bearer.rs plus PreferLink/PinTunnelUnderlay and a bearer verb. Decision layer\ntested (settling window, no re-emit, dead network); nothing has run on the\nphone. home_ssids still unset and the wiuf/wiufph duplicate still unresolved.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/49-bearer-selection-as-device-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/6b4e4fd326bc47fd9014c824558eff839eb194c6"
|
|
},
|
|
{
|
|
"id": "c:souveraine:0f7fe27c",
|
|
"repo": "souveraine",
|
|
"sha": "0f7fe27c62a10d823c2fcf988418b3de52520305",
|
|
"branch": "primary",
|
|
"at": "2026-08-01T14:21:12-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "ci: re-run; rust-test 156 failed with all three of its commands green on 1.94",
|
|
"detail": "",
|
|
"dimension": "runtime",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/0f7fe27c62a10d823c2fcf988418b3de52520305"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:07373873",
|
|
"repo": "SouveraineOS",
|
|
"sha": "07373873795461685a2652827fc015da5918fb7b",
|
|
"branch": "main",
|
|
"at": "2026-08-01T14:37:21-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-49: wiuf/wiufph resolved — wiuf carried the laptop's tunnel address",
|
|
"detail": "wiuf was ipv4.addresses 10.8.0.5/24, which is wiufarch's; wiufph is 10.8.0.6,\nthe phone's. Not near-copies - bringing wiuf up would have put two devices on\none WireGuard address. wiufph also carried the dns-priority 10 fix; wiuf was\nstill at 0. Deleted, backed up to /root/nm-profile-backup/ on the device.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/49-bearer-selection-as-device-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/07373873795461685a2652827fc015da5918fb7b"
|
|
},
|
|
{
|
|
"id": "c:souveraine:ac084b46",
|
|
"repo": "souveraine",
|
|
"sha": "ac084b461af60d742f36a42fd84a6733eb7a2a8c",
|
|
"branch": "primary",
|
|
"at": "2026-08-01T14:44:32-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: read tunnel health from sysfs, not wg show",
|
|
"detail": "Found on the phone: the bearer verb reported tunnel \"off\" while wiufph was up\nand handshaking (4.11 KiB received). wg show needs CAP_NET_ADMIN for\nWG_CMD_GET_DEVICE and sessiond is a systemd *user* unit, so it gets \"Unable to\naccess interface wiufph: Operation not permitted\" and every tunnel reads off,\nforever. A daemon that cannot see the instrument it is built around.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/bearer.rs",
|
|
"src/sessiond/server.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/ac084b461af60d742f36a42fd84a6733eb7a2a8c"
|
|
},
|
|
{
|
|
"id": "c:souveraine:7e91de19",
|
|
"repo": "souveraine",
|
|
"sha": "7e91de195606bb9fef02ef57d4849257b14b499e",
|
|
"branch": "primary",
|
|
"at": "2026-08-01T14:58:34-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: never reapply clat — it destroys the carrier's own routes",
|
|
"detail": "Measured on the phone. After one PreferLink the clat device was up with its\n192.0.0.1/32 address and *zero* routes: no default, and no 205.151.11.13/32,\nwhich is the only path to the MMS proxy. ip route get 205.151.11.13 went out\nwlan0. Restored by restarting blueline-clat.service.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/server.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/7e91de195606bb9fef02ef57d4849257b14b499e"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:55a44239",
|
|
"repo": "SouveraineOS",
|
|
"sha": "55a44239ffbf5977a197d7f87a1d57bc4e4efc56",
|
|
"branch": "main",
|
|
"at": "2026-08-01T14:59:13-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-49: measured on the phone — #1 holds, #2 broke and is fixed",
|
|
"detail": "home_ssids needs a list: Samaritan Solutions and TheTholianWeb both lease from\n10.10.20/24 (.234 and .245). Three defects only hardware showed: reapply clat\nwipes the CLAT daemon's routes including the MMS /32; the gsm connection is the\nwrong lever because the v4 carrier default comes from the clat tun at 2048; and\nwg show needs CAP_NET_ADMIN that a user unit will never have.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/49-bearer-selection-as-device-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/55a44239ffbf5977a197d7f87a1d57bc4e4efc56"
|
|
},
|
|
{
|
|
"id": "c:souveraine:d2f51e93",
|
|
"repo": "souveraine",
|
|
"sha": "d2f51e93de5f00ce0ecb6fb797f4155117d410aa",
|
|
"branch": "primary",
|
|
"at": "2026-08-01T15:10:38-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: a working bearer action is a decision, not an error",
|
|
"detail": "Both executors recorded success via record_error, so the daemon's own working\nactions landed in the trail's error channel - visible on the phone as\n{\"event\":{\"error\":{\"component\":\"bearer\",\"error\":\"preferred wifi\"}}}. That makes\nthe one signal a reader scans for useless.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/server.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/d2f51e93de5f00ce0ecb6fb797f4155117d410aa"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:d7d2e122",
|
|
"repo": "linux-blueline",
|
|
"sha": "d7d2e1222819cd4da96aa797e5a7c58df9f77e78",
|
|
"branch": "blueline",
|
|
"at": "2026-08-01T16:06:07-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "qseecom: load trusted apps, not just look them up",
|
|
"detail": "Every GET_APP_ID on this device returns -ENOENT - fpctzappfingerprint,\nkeymaster, widevine, cmnlib, all of them - because TZ only resolves apps\nsomething already started, and on Android that something is qseecomd. Nothing\non a mainline userspace loads one, so the lookup verb had nothing to find and\nthe whole QSEECOM client could not reach a single app.",
|
|
"dimension": "identity",
|
|
"basis": "subject",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/d7d2e1222819cd4da96aa797e5a7c58df9f77e78"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:f3864af0",
|
|
"repo": "linux-blueline",
|
|
"sha": "f3864af0a2411ab0416bb489690ea97bd7cc3554",
|
|
"branch": "fingerprint-fpc1020",
|
|
"at": "2026-08-01T16:06:07-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "qseecom: load trusted apps, not just look them up",
|
|
"detail": "Every GET_APP_ID on this device returns -ENOENT - fpctzappfingerprint,\nkeymaster, widevine, cmnlib, all of them - because TZ only resolves apps\nsomething already started, and on Android that something is qseecomd. Nothing\non a mainline userspace loads one, so the lookup verb had nothing to find and\nthe whole QSEECOM client could not reach a single app.",
|
|
"dimension": "identity",
|
|
"basis": "subject",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/f3864af0a2411ab0416bb489690ea97bd7cc3554"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:cb150d71",
|
|
"repo": "linux-blueline",
|
|
"sha": "cb150d71d8248b07c577d720525473160a4c5c5a",
|
|
"branch": "blueline",
|
|
"at": "2026-08-01T16:15:44-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "qseecom: concatenate the image, and parse ELF64",
|
|
"detail": "The first load returned EINVAL for two reasons, both now measured against the\nreal blob. fpctzappfingerprint.mdt is ELFCLASS64 and was being read through\nelf32_hdr, so e_phnum and e_phoff were garbage. And the layout was wrong:\ndownstream does not place segments at p_paddr-relative offsets, it\n*concatenates* - mdt, then b00, b01, ... in index order - with mdt_len naming\nhow much of the front is the header blob (__qseecom_get_fw_data,\nqseecom.c:4165-4230). TZ places the segments itself from the headers.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/cb150d71d8248b07c577d720525473160a4c5c5a"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:b7924558",
|
|
"repo": "linux-blueline",
|
|
"sha": "b792455853b673c06e1de4fba088d75d2de63009",
|
|
"branch": "fingerprint-fpc1020",
|
|
"at": "2026-08-01T16:15:44-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "qseecom: concatenate the image, and parse ELF64",
|
|
"detail": "The first load returned EINVAL for two reasons, both now measured against the\nreal blob. fpctzappfingerprint.mdt is ELFCLASS64 and was being read through\nelf32_hdr, so e_phnum and e_phoff were garbage. And the layout was wrong:\ndownstream does not place segments at p_paddr-relative offsets, it\n*concatenates* - mdt, then b00, b01, ... in index order - with mdt_len naming\nhow much of the front is the header blob (__qseecom_get_fw_data,\nqseecom.c:4165-4230). TZ places the segments itself from the headers.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/b792455853b673c06e1de4fba088d75d2de63009"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:329737a2",
|
|
"repo": "linux-blueline",
|
|
"sha": "329737a23a19def5244cc4b66abc602b6deefdef",
|
|
"branch": "blueline",
|
|
"at": "2026-08-01T16:19:24-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "input: fpc1020: expose the sysfs the TZ stack actually needs",
|
|
"detail": "Dropping the vendor sysfs was right when nothing could load a TA. It is wrong\nnow that we can: the FPC stack reaches the sensor through it. The HAL's TAC\nlibrary calls fpc_irq_init()/fpc_sysfs_node_write() against\n/sys/bus/platform/devices/soc:fp_fpc1020, poll()s 'irq', and drives 'hw_reset'\nand 'device_prepare' around each transaction (strings in\nandroid.hardware.biometrics.fingerprint@2.1-service.fpc, which links\nlibQSEEComAPI and calls QSEECom_start_app/send_modified_cmd).",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/329737a23a19def5244cc4b66abc602b6deefdef"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:9ddf93c1",
|
|
"repo": "linux-blueline",
|
|
"sha": "9ddf93c1f178b6c438c4134241661d19c37efea8",
|
|
"branch": "fingerprint-fpc1020",
|
|
"at": "2026-08-01T16:19:24-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "input: fpc1020: expose the sysfs the TZ stack actually needs",
|
|
"detail": "Dropping the vendor sysfs was right when nothing could load a TA. It is wrong\nnow that we can: the FPC stack reaches the sensor through it. The HAL's TAC\nlibrary calls fpc_irq_init()/fpc_sysfs_node_write() against\n/sys/bus/platform/devices/soc:fp_fpc1020, poll()s 'irq', and drives 'hw_reset'\nand 'device_prepare' around each transaction (strings in\nandroid.hardware.biometrics.fingerprint@2.1-service.fpc, which links\nlibQSEEComAPI and calls QSEECom_start_app/send_modified_cmd).",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/9ddf93c1f178b6c438c4134241661d19c37efea8"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:4d52867f",
|
|
"repo": "linux-blueline",
|
|
"sha": "4d52867fea4903940f9917c54d77b84658917da7",
|
|
"branch": "blueline",
|
|
"at": "2026-08-01T16:35:15-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "qseecom: stage the TA image in TZ-accessible memory",
|
|
"detail": "The image was assembled correctly - mdt_len=7208 matched the .mdt, img_len=777653\nmatched the sum of the set - and TZ still returned -EINVAL:\n'qcom_scm firmware:scm: qseecom: scm call failed with error -22'.",
|
|
"dimension": "memory",
|
|
"basis": "subject",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/4d52867fea4903940f9917c54d77b84658917da7"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:a8bac15b",
|
|
"repo": "linux-blueline",
|
|
"sha": "a8bac15bb627806446622b6a5214a06dd79cd0a0",
|
|
"branch": "fingerprint-fpc1020",
|
|
"at": "2026-08-01T16:35:15-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "qseecom: stage the TA image in TZ-accessible memory",
|
|
"detail": "The image was assembled correctly - mdt_len=7208 matched the .mdt, img_len=777653\nmatched the sum of the set - and TZ still returned -EINVAL:\n'qcom_scm firmware:scm: qseecom: scm call failed with error -22'.",
|
|
"dimension": "memory",
|
|
"basis": "subject",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/a8bac15bb627806446622b6a5214a06dd79cd0a0"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:ac9a4dd2",
|
|
"repo": "linux-blueline",
|
|
"sha": "ac9a4dd2aed4c0e7b58e92a092b8875682a9c306",
|
|
"branch": "blueline",
|
|
"at": "2026-08-01T16:48:49-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "qseecom: send commands whose payload is in a second buffer",
|
|
"detail": "The FPC sensor commands do not carry their arguments in the request. The\nrequest is a descriptor - { u32 aux_len; void *aux } - and the real payload\n{ group=0xa, cmd } lives in a buffer whose address is patched in at offset 4.\nRecovered from the vendor HAL: sym.sensor_command writes the pair with\n'stp w8, w19, [x22]' (w8=0xa) into the shared allocation, and\nsym.fpc_tac_transfer_platform passes ion_fd_info {fd, offset=4} to\nQSEECom_send_modified_cmd alongside a 64-byte req/rsp pair.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/ac9a4dd2aed4c0e7b58e92a092b8875682a9c306"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:6fb5501b",
|
|
"repo": "linux-blueline",
|
|
"sha": "6fb5501bf6917f02a2a134ba09fd55ec8fb7ea8c",
|
|
"branch": "fingerprint-fpc1020",
|
|
"at": "2026-08-01T16:48:49-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "qseecom: send commands whose payload is in a second buffer",
|
|
"detail": "The FPC sensor commands do not carry their arguments in the request. The\nrequest is a descriptor - { u32 aux_len; void *aux } - and the real payload\n{ group=0xa, cmd } lives in a buffer whose address is patched in at offset 4.\nRecovered from the vendor HAL: sym.sensor_command writes the pair with\n'stp w8, w19, [x22]' (w8=0xa) into the shared allocation, and\nsym.fpc_tac_transfer_platform passes ion_fd_info {fd, offset=4} to\nQSEECom_send_modified_cmd alongside a 64-byte req/rsp pair.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/6fb5501bf6917f02a2a134ba09fd55ec8fb7ea8c"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:08e9db54",
|
|
"repo": "linux-blueline",
|
|
"sha": "08e9db54cfced24bf763c74cab259647430bce7d",
|
|
"branch": "blueline",
|
|
"at": "2026-08-01T16:59:13-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "input: fpc1020: gate the key and the wake on wakeup_enable",
|
|
"detail": "The sensor works now, and that is what exposed this. Once the TrustZone app\narms finger-detect the FPC1020 interrupts continuously - 1444 in 25 s on the\nphone - and the driver was reporting KEY_WAKEUP for every one. hyprland.lua\nbinds XF86WakeUp to blueline-screen-toggle, so that is 1444 wake requests: 132\nDPMS transitions in the journal and the ambient-light sensor oscillating\nbecause the panel was strobing. Casey spotted it as 'that's the screen powering\non and off?' before I did.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/08e9db54cfced24bf763c74cab259647430bce7d"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:10cbed91",
|
|
"repo": "linux-blueline",
|
|
"sha": "10cbed91cb2662585722056746ac022816d6acd9",
|
|
"branch": "fingerprint-fpc1020",
|
|
"at": "2026-08-01T16:59:13-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "input: fpc1020: gate the key and the wake on wakeup_enable",
|
|
"detail": "The sensor works now, and that is what exposed this. Once the TrustZone app\narms finger-detect the FPC1020 interrupts continuously - 1444 in 25 s on the\nphone - and the driver was reporting KEY_WAKEUP for every one. hyprland.lua\nbinds XF86WakeUp to blueline-screen-toggle, so that is 1444 wake requests: 132\nDPMS transitions in the journal and the ambient-light sensor oscillating\nbecause the panel was strobing. Casey spotted it as 'that's the screen powering\non and off?' before I did.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/10cbed91cb2662585722056746ac022816d6acd9"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:94cf2670",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "94cf26709a97c5de61a93dda6b9033a4fa0e6f07",
|
|
"branch": "main",
|
|
"at": "2026-08-01T19:01:31-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "usb gadget: drop the address when a link really loses carrier",
|
|
"detail": "A cold boot leaves the initramfs gadget's usb0 linkdown, still holding\n172.16.42.1 and a competing route, so replies to the laptop egress a dead\ninterface while usb1 answers ARP - the phone reads as a hung boot. always-up\ndefaulted IgnoreCarrierLoss to yes; set it to 5s instead of flushing by hand.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"rootfs-overlay/etc/systemd/network/40-usb0.network",
|
|
"tools/fp-test.py",
|
|
"tools/fp-window.py"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/94cf26709a97c5de61a93dda6b9033a4fa0e6f07"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:be4ceedb",
|
|
"repo": "SouveraineOS",
|
|
"sha": "be4ceedbd1523945bc6a5ebae5526f3a6a906777",
|
|
"branch": "main",
|
|
"at": "2026-08-01T19:01:42-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-44: the TA clears the latch, and the sensor does not free-run",
|
|
"detail": "fpctzappfingerprint loads from cold boot and answers; init/idle/arm all 0x0.\ngpio121 goes idle-low after the sequence - the latch that killed piece 1 is\ncleared, so a rising edge is possible for the first time. init accounts for 68\nof the edges; armed and untouched is a flat 0 over 15s, so the 1444-event run\nwas the re-arm loop. Open: whether a finger raises an edge.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/SECURITY-AUDIT.md",
|
|
"docs/tasks/44-fingerprint-fpc1020.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/be4ceedbd1523945bc6a5ebae5526f3a6a906777"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:2e1f0fef",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "2e1f0fefb996199d1f0234cc4dc3da7018f8cdf6",
|
|
"branch": "main",
|
|
"at": "2026-08-01T19:27:05-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tools: fp-wait, an instrument the human can actually hit",
|
|
"detail": "The windowed rigs kept missing because the touch prompt only reaches the human\nafter the window has started counting. This one arms once and waits, timestamps\nevery edge, and watches event4 so KEY_WAKEUP is visible alongside the interrupt.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"tools/fp-wait.py"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/2e1f0fefb996199d1f0234cc4dc3da7018f8cdf6"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:499dc5e1",
|
|
"repo": "SouveraineOS",
|
|
"sha": "499dc5e159f62d24e496fddc60ca2c87e1bda624",
|
|
"branch": "main",
|
|
"at": "2026-08-01T19:27:16-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-44: the assert reaches evdev, and the 1444 run is explained",
|
|
"detail": "KEY_WAKEUP lands on event4 at the same timestamp as the hardware edge, so the\nexisting XF86WakeUp bind can already see it. arm generates its own edge, which\nmeans re-arm-on-interrupt feeds itself - that was the 1444 events, not the\nsensor. wakeup_enable takes enable/disable, not 1.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/44-fingerprint-fpc1020.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/499dc5e159f62d24e496fddc60ca2c87e1bda624"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:e3009732",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "e3009732705a26f340ca2e325201b2a06ac0cbe5",
|
|
"branch": "main",
|
|
"at": "2026-08-01T19:49:49-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "blueline-fingerprintd: keep the reader armed without the storm",
|
|
"detail": "The sensor asserts once per arm then latches, so it has to be re-armed after\nevery event - but arm makes its own edge, which is what turned the naive loop\ninto 1444 interrupts. Shut the driver's wake gate around the re-arm and drain\nthat edge by counter, not by clock.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"rootfs-overlay/etc/systemd/system/blueline-fingerprintd.service",
|
|
"rootfs-overlay/usr/bin/blueline-fingerprintd"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/e3009732705a26f340ca2e325201b2a06ac0cbe5"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:457a667b",
|
|
"repo": "linux-blueline",
|
|
"sha": "457a667bd3eb859178ee8cf974c5a78f14425b17",
|
|
"branch": "blueline",
|
|
"at": "2026-08-02T08:10:24-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "arm64: dts: sdm845-google: rear camera is rotated 90, not 270",
|
|
"detail": "270 came from beryllium, which carries the same IMX363 in a different chassis.\nIt reaches userspace as V4L2_CID_CAMERA_SENSOR_ROTATION and every\nrotation-aware consumer turns the image by it, so Firefox rendered the rear\ncamera upside down - 180 out. Front pair is untouched; it renders correctly.",
|
|
"dimension": "sensorium",
|
|
"basis": "subject",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/457a667bd3eb859178ee8cf974c5a78f14425b17"
|
|
},
|
|
{
|
|
"id": "c:linux-blueline:441fd455",
|
|
"repo": "linux-blueline",
|
|
"sha": "441fd455955aa4c883cc71a5ecf14d85a6a5d002",
|
|
"branch": "fingerprint-fpc1020",
|
|
"at": "2026-08-02T08:10:24-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "arm64: dts: sdm845-google: rear camera is rotated 90, not 270",
|
|
"detail": "270 came from beryllium, which carries the same IMX363 in a different chassis.\nIt reaches userspace as V4L2_CID_CAMERA_SENSOR_ROTATION and every\nrotation-aware consumer turns the image by it, so Firefox rendered the rear\ncamera upside down - 180 out. Front pair is untouched; it renders correctly.",
|
|
"dimension": "sensorium",
|
|
"basis": "subject",
|
|
"paths": [],
|
|
"url": "https://gitea.wiuf.net/Fimeg/linux-blueline/commit/441fd455955aa4c883cc71a5ecf14d85a6a5d002"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:5f53bf73",
|
|
"repo": "SouveraineOS",
|
|
"sha": "5f53bf7396b8f340a37379fd8866e6523ec2a048",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:12:44-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-39: profile selection is state-machine work, not a pactl poke",
|
|
"detail": "The card was stuck in the modem call profile, so audio came out of the earpiece\nand read as a weak speaker. Restoring HiFi is manual; classifying when each\nprofile is wanted is the actual task. Also notes that the device runs pipewire\nwhile pipewire-abi-provider claims PulseAudio owns the stack.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/39-audio-levels-as-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/5f53bf7396b8f340a37379fd8866e6523ec2a048"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:aec9f49c",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "aec9f49c5d9e48f7be84ea107d3456ee010ce1ee",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:12:58-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "blueline-camera: own the userspace half of the camera stack",
|
|
"detail": "camss hands out raw Bayer on multiplanar nodes; libcamera soft-ISPs it and the\nPipeWire SPA plugin exports it. pipewire-libcamera was simply not installed, so\nthe portal answered IsCameraPresent=false and Firefox showed no cameras at all.\nThese four were installed by hand and owned by nothing.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/blueline-camera/PKGBUILD"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/aec9f49c5d9e48f7be84ea107d3456ee010ce1ee"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:2e23e4b2",
|
|
"repo": "SouveraineOS",
|
|
"sha": "2e23e4b26088baa87ee6f4f8c05f6acb6dc8d51a",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:20:58-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-39: HiFi capture is silent; the DMIC needs the Q6 voice session",
|
|
"detail": "92133 frames at peak 0. Codec routing is correct and forcing the call profile's\nTX7 decimator changes nothing, so it is neither the decimator nor the front end\n- what is left in the 11-control diff is VoiceMMode1. Voice Call (Mic, Speaker)\ngives working mic plus speakerphone and is the workaround. Capture gain is UCM's\nto set; runtime amixer does not survive profile activation.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/39-audio-levels-as-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/2e23e4b26088baa87ee6f4f8c05f6acb6dc8d51a"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:9c255886",
|
|
"repo": "SouveraineOS",
|
|
"sha": "9c2558863f9c9063e6e01cef37a5b878ee213ba1",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:23:19-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-39: the in-call speaker button routes to a headset, and why",
|
|
"detail": "gnome-calls asks org.mobian_project.CallAudio, which callaudiod owns, and\ncallaudiod switches a sink port - which cannot work when ACP splits earpiece and\nspeaker across two profiles. The working toggle is the hook's speaker on|off and\nnothing in the UI calls it. Fix is a shim that claims the name; it needs a real\ncall to test before enabling.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/39-audio-levels-as-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/9c2558863f9c9063e6e01cef37a5b878ee213ba1"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:05c03acb",
|
|
"repo": "SouveraineOS",
|
|
"sha": "05c03acbe77576db7e5e45717dd3815485e09aee",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:28:33-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-39: point at the eight unmerged mic branches before theorising again",
|
|
"detail": "None reached blueline. The new measurement rules out the decimator and the\nfront-end mixer, which favours the sysclk/SLIM-lifecycle direction of mic-fix\nover the pad-configuration branches.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/39-audio-levels-as-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/05c03acbe77576db7e5e45717dd3815485e09aee"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:458a354a",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "458a354a367ba9d819a85d4d722120c07b98ee89",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:34:10-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: serve touch, and keep the agent out of the evidence stream",
|
|
"detail": "The panel is blueline's only input device, and the seat had no touch\ncapability, no libinput source and no translation — `backend_libinput`\nwas already switched on for this crate and had never been used.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/bin/viewtop.rs",
|
|
"crates/compositor/src/evidence.rs",
|
|
"crates/compositor/src/input.rs",
|
|
"crates/compositor/src/kms.rs",
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/wayland.rs",
|
|
"crates/sessiond-client/src/lib.rs",
|
|
"crates/wire/src/lib.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/458a354a367ba9d819a85d4d722120c07b98ee89"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:a711ce48",
|
|
"repo": "SouveraineOS",
|
|
"sha": "a711ce48cdabd1d394b268b41f1b0739092e7e18",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:35:03-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-39: retract the HiFi-capture-is-dead finding",
|
|
"detail": "HiFi captures fine - 204136 nonzero, peak 32726 - once the channel map is\nclean. The zeros were stale SLIM map state, which PAF/audio.md already\ndocuments as the alternation law and the post-call unmapped-leg bug, and the\nTX7 poke used to \"test the decimator\" recreated that bug on all three AIFs.\nDevice is back on HiFi; the Voice Call workaround is reverted.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/39-audio-levels-as-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/a711ce48cdabd1d394b268b41f1b0739092e7e18"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:69435c02",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "69435c027c990bf5e2ad7ddb66f9066a8e31ee9e",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:47:16-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "souveraine-callaudiod: route the in-call speaker toggle through the amps",
|
|
"detail": "Upstream switches a sink port, which needs one sink carrying both an earpiece\nand a speaker port. blueline has both CS35L36 amps behind one PCM, so ACP splits\nthem across two profiles and no such sink exists - asking for \"any port that is\nnot the speaker\" resolves to the headset, which is what a call did when the\nspeaker button was tapped.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/souveraine-callaudiod/0001-route-the-speaker-toggle-through-the-amps.patch",
|
|
"pkgs/souveraine-callaudiod/PKGBUILD",
|
|
"pkgs/souveraine-callaudiod/build-cross.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/69435c027c990bf5e2ad7ddb66f9066a8e31ee9e"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:102517dc",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "102517dc4a5098af107839b9f28dc83de5588eaa",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:48:50-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "souveraine-callaudiod: pin the glib mkenums pair to host natives",
|
|
"detail": "meson resolves them from glib-2.0's pkg-config tool variables, which come back\nsysroot-prefixed under PKG_CONFIG_SYSROOT_DIR. The shared cross file pins the\nother codegen tools but not these; supply them in a supplementary cross file so\nthe fix travels with the package instead of living unversioned on the builder.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/souveraine-callaudiod/build-cross.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/102517dc4a5098af107839b9f28dc83de5588eaa"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:09e818b4",
|
|
"repo": "SouveraineOS",
|
|
"sha": "09e818b4db75640b9d95ee19876c2cec28bf5303",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:52:15-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-39: the in-call speaker button is fixed",
|
|
"detail": "souveraine-callaudiod routes ENABLE_SPEAKER through the hook, which writes the\namps directly instead of switching a sink port that cannot exist on this card.\nVerified over D-Bus: enable -> both amps, disable -> earpiece, not headset.\nA real call is the outstanding confirmation.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/39-audio-levels-as-state.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/09e818b4db75640b9d95ee19876c2cec28bf5303"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:0940c11a",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "0940c11a0a40be40ae17d940f854c86f6e350425",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:54:27-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "docs: the touch fork, and what hardware has not seen yet",
|
|
"detail": "The third settled fork after the lock and shell boundaries. Records why\nprovenance starts at the event source rather than being recovered later,\nwhy the uinput bridge cannot be the model, and what the router refuses to\ndecide (hit testing is the caller's; stacking order is not geometry).",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/TOUCH-AND-EVIDENCE.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/0940c11a0a40be40ae17d940f854c86f6e350425"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:96094c78",
|
|
"repo": "SouveraineOS",
|
|
"sha": "96094c789363823cbd9cf8b0680a22755d9f679d",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:55:55-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "TASK-43: touch served; next lane is KMS on device",
|
|
"detail": "viewtop at 458a354. Records the touch fork (provenance from the event\nsource; the agent reaches the seat but never the evidence stream) and\nmarks lanes 1 and 2 done — the Smithay frontend and the session-lock\nserver both landed.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"STATE.md",
|
|
"docs/tasks/43-viewtop-compositor.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/96094c789363823cbd9cf8b0680a22755d9f679d"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:47aadeeb",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "47aadeeb60c5fd6d4fc08c38b88440462e533e2d",
|
|
"branch": "main",
|
|
"at": "2026-08-02T08:57:05-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "packages: publish souveraine-callaudiod and blueline-camera",
|
|
"detail": "Both were built and installed by hand, which is how the camera stack ended up\nowned by nothing and a reprovision would have silently undone it. They go\nthrough the pipeline like everything else now, with the same\nbuilds-but-ships-the-wrong-thing asserts.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
".gitea/workflows/packages.yml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/47aadeeb60c5fd6d4fc08c38b88440462e533e2d"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:f1118b89",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "f1118b89897e299d9d18d65ab76f0694b10ee854",
|
|
"branch": "main",
|
|
"at": "2026-08-02T09:24:15-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: put a client's pixels on the panel",
|
|
"detail": "Five defects stood between a client and the glass, each of which alone\nwas enough to leave it blank, so fixing any one of them would have\nlooked like no change at all.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/bin/viewtop.rs",
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/f1118b89897e299d9d18d65ab76f0694b10ee854"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:9d2f41e0",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "9d2f41e0f2feffaec9b2a236cb3b801bd13aef3c",
|
|
"branch": "main",
|
|
"at": "2026-08-02T09:31:00-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: ask disclosure_locked before drawing the session",
|
|
"detail": "`frame_elements` gated on `position().hides_session()`, which asks only\nwhether a client holds the protocol lock. `disclosure_locked()` is the\nunion with sessiond's own answer, and its doc says callers asking \"may I\nshow this\" want it — the render path is the most consequential such\ncaller and was the only one not using it. The gate and layers already do.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/9d2f41e0f2feffaec9b2a236cb3b801bd13aef3c"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:a09c4d82",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "a09c4d829a545cc87ffcfd7d53ccf7bf57c567d9",
|
|
"branch": "main",
|
|
"at": "2026-08-02T09:46:05-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "evidence: heartbeat touch, or sessiond calls it dead",
|
|
"detail": "Touch reports on contact edges only, which is right — per-event on a\n120 Hz drag is DEVICE-STATE-MACHINE §10's un-deduped heartbeat one\nsensor over. But §10's other half was missing: `evaluate_source_health`\niterates all four sources keyed on a last-seen stamp, so ninety seconds\nafter a finger lifts, `sensor_health.touch` goes `Down`, `any_down()`\nturns true and every forensic snapshot reads `sensors_degraded`.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/evidence.rs",
|
|
"crates/compositor/src/input.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/a09c4d829a545cc87ffcfd7d53ccf7bf57c567d9"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:68ed7c33",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "68ed7c3306a0276c45a9ae7ac2ce6dfb4cba2b20",
|
|
"branch": "main",
|
|
"at": "2026-08-02T09:46:22-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: serve the idle chain, fractional scale, and the OSK's halves",
|
|
"detail": "Nine globals, in two groups.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/68ed7c3306a0276c45a9ae7ac2ce6dfb4cba2b20"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:6925b34e",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "6925b34e02c45409045d8b7752768d9b3b38bae7",
|
|
"branch": "main",
|
|
"at": "2026-08-02T09:49:27-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: serve input-method-v2, so the keyboard can answer",
|
|
"detail": "text-input is what an app asks with; input-method is what the OSK\nanswers with, and it carries preedit, commit and the candidate popup.\nThe previous commit served the asking half and the raw-key half and left\nan app with somewhere to send a request and nothing that could reply.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/6925b34e02c45409045d8b7752768d9b3b38bae7"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:eefbdfb9",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "eefbdfb90bbc16f6a8d72dc7fd033273a5874812",
|
|
"branch": "main",
|
|
"at": "2026-08-02T10:28:45-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "kms: keep the libseat notifier, or the seat dies with this function",
|
|
"detail": "On the phone every input device enumerated and was revoked in the same\nmillisecond — \"New device event0 … Removed device event0\" for all eight.\nThe panel lit and nothing could be touched.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/kms.rs",
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/eefbdfb90bbc16f6a8d72dc7fd033273a5874812"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:2bf8d26d",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "2bf8d26dd3af1aa4018416d34ab081436337d0c0",
|
|
"branch": "main",
|
|
"at": "2026-08-02T10:32:11-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "viewtop: follow the authority, instead of freezing its first answer",
|
|
"detail": "`Viewtop::observe_authority` and `LockState::observe_authority` both\nexisted and were tested, and **nothing called either**. `initial_facts()`\nread `device_state` once at startup; nothing ever asked again.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/bin/viewtop.rs",
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/2bf8d26dd3af1aa4018416d34ab081436337d0c0"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:86201bfa",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "86201bfa6c724ab8df0a7eb3575e1d7cb33e14c2",
|
|
"branch": "main",
|
|
"at": "2026-08-02T10:57:37-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "viewtop: do not claim the shell lease it is not filling",
|
|
"detail": "Running the real shell against viewtop on blueline: quickshell loaded its\nwhole tree — dock, background, bar, bootbloom, navigation-rail,\nscreenCorners, all classified and z-ordered by `layers.rs` — then logged\n`shell_ready timed out — assuming locked`, requested a session lock that\nwas already held, and qFatal'd. systemd restarted it. Eleven seconds\nlater it did it again.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/bin/viewtop.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/86201bfa6c724ab8df0a7eb3575e1d7cb33e14c2"
|
|
},
|
|
{
|
|
"id": "c:souveraine:870d8821",
|
|
"repo": "souveraine",
|
|
"sha": "870d88210b0dc4f75736f396574e38a4926dd22e",
|
|
"branch": "primary",
|
|
"at": "2026-08-02T11:15:44-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "shell: wait longer for shell_ready than sessiond takes to answer it",
|
|
"detail": "`shell_ready` blocks in the daemon for up to 5s waiting for its\nlock-session thread to drop its Wayland connection, because the\ncompositor refuses a second locker while the first is alive\n(server.rs `wait_timeout_while`). The shell's timer was 3s, so it gave\nup on a handshake sessiond was still answering, assumed locked, and\nasked for a lock that had not been released — straight into TASK-48's\n\"Tried to show lockscreen surfaces without active lock\".",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"surfaces/quickshell/services/SessiondBridge.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/870d88210b0dc4f75736f396574e38a4926dd22e"
|
|
},
|
|
{
|
|
"id": "c:souveraine:5edf0c41",
|
|
"repo": "souveraine",
|
|
"sha": "5edf0c410eb1554b4b097b09d66c512e85681cc5",
|
|
"branch": "primary",
|
|
"at": "2026-08-02T11:24:46-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: create lock surfaces before the verdict, not after it",
|
|
"detail": "`ensure_surfaces` returned early unless `state.locked`, and `locked` is\nwhat the compositor sends once lock frames are up. ext-session-lock-v1 is\nexplicit: \"The locked event must not be sent until a new 'locked' frame\nhas been presented on all outputs.\" So a compositor honouring the spec\nwaits for the surfaces this function refused to create until it had heard\nfrom the compositor. Neither side can move.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/lock.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/5edf0c410eb1554b4b097b09d66c512e85681cc5"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:1ce53079",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "1ce53079ddd63343bec6e2954f6a73e4f630f121",
|
|
"branch": "main",
|
|
"at": "2026-08-02T12:37:29-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: say why a client disconnected",
|
|
"detail": "The default `ClientData` is silent, and silence cost an afternoon: the\nshell was dying against viewtop with \"The Wayland connection broke\" on\nits side and not one line on ours, so every theory about the cause was a\nguess. Three separate wrong hypotheses came out of that gap.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/1ce53079ddd63343bec6e2954f6a73e4f630f121"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:9084ce7f",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "9084ce7f708c5b1fe2321b2f7302ef366355ec53",
|
|
"branch": "main",
|
|
"at": "2026-08-02T12:58:53-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "deps: fork smithay for the layer-shell teardown kill",
|
|
"detail": "Upstream's wlr-layer-shell pre-commit hook outlives the role object.\nDestroying zwlr_layer_surface_v1 and then committing the wl_surface with\na null buffer is how the protocol says to unmap a layer surface, and at\nthat commit the pending LayerSurfaceCachedState no longer describes a\nlive role — so the size/anchor checks read defaults, width 0 with no\nanchors, and post InvalidSize to the destroyed object.",
|
|
"dimension": "surface",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"Cargo.toml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/9084ce7f708c5b1fe2321b2f7302ef366355ec53"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:9c6ad050",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "9c6ad0501fa0a9ae040f5cd8911d58339c07ce41",
|
|
"branch": "main",
|
|
"at": "2026-08-02T13:17:47-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: ext-data-control, xdg-activation, single-pixel-buffer",
|
|
"detail": "`ext-data-control-v1` is the standardized successor to the wlr protocol\nwe already serve, and TASK-43 named it owed. Its `DataControlState` and\n`DataControlHandler` collide by name with wlr's, so the new import is\naliased and every existing wlr use is untouched — they are different\ntraits, so implementing both for `Viewtop` needs nothing else. Created\nagainst `primary_selection_state` for the same reason the wlr one is: a\ndata-control client has to observe primary selections without focus.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/9c6ad0501fa0a9ae040f5cd8911d58339c07ce41"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:1959bda4",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "1959bda40c5706e867d127cab4fb1eec1cef0a54",
|
|
"branch": "main",
|
|
"at": "2026-08-02T13:41:40-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: give someone the keyboard",
|
|
"detail": "`set_focus` was never called, anywhere. No surface ever held keyboard\nfocus, and that is bigger than where key events land: focus is what\n`text-input-v3` binds to, so the on-screen keyboard had nothing to enable\nagainst and the keys a virtual keyboard synthesizes were delivered to\nnobody.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/1959bda40c5706e867d127cab4fb1eec1cef0a54"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:48ef2e21",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "48ef2e2132ddcb77e9de1ff368689923640a18a5",
|
|
"branch": "main",
|
|
"at": "2026-08-02T13:51:50-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "deps: smithay 403a3d0 — the lock surface Qt commits before acking",
|
|
"detail": "`ext-session-lock-v1` says outright: \"Committing the surface before\nacking the first configure is a protocol error.\" Qt does it anyway —\nonce, while setting a window up, the xdg-shell habit of committing empty\nto solicit a configure on a protocol that configures on bind instead.",
|
|
"dimension": "surface",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"Cargo.toml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/48ef2e2132ddcb77e9de1ff368689923640a18a5"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:bceb0ac1",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "bceb0ac173b9ca6d2a051eca61334255c796880c",
|
|
"branch": "main",
|
|
"at": "2026-08-02T13:59:43-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: window geometry, and who is allowed to ask for it",
|
|
"detail": "Every window-management request fell through to smithay's defaults, so\nmaximize, fullscreen, move, resize and the window menu were silent\nno-ops. Silence is protocol-legal for move and resize and a hang for the\nother two: xdg-shell requires a configure in reply to a state request,\nand a client that never gets one waits forever on a change that is not\ncoming.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/bceb0ac173b9ca6d2a051eca61334255c796880c"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:e46c6588",
|
|
"repo": "SouveraineOS",
|
|
"sha": "e46c6588c28ec53df8f936b4817eb8e5656dc1ab",
|
|
"branch": "main",
|
|
"at": "2026-08-02T14:01:58-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "TASK-43: viewtop is the session compositor",
|
|
"detail": "greetd launches it, Hyprland does not run, the shell's whole surface tree\ncomposites on it. Points at the session record in the viewtop repo rather\nthan restating it here.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/43-viewtop-compositor.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/e46c6588c28ec53df8f936b4817eb8e5656dc1ab"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:bb092063",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "bb0920632db410f457689314b7c597fc85c2537c",
|
|
"branch": "main",
|
|
"at": "2026-08-02T14:02:35-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "docs: the day viewtop became the session",
|
|
"detail": "The record TASK-43 now points at: what changed, the five bugs only\nhardware could find, why the two smithay patches are not the same kind\nof patch, and what is honestly still missing.",
|
|
"dimension": "surface",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"docs/SESSION-2026-08-02.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/bb0920632db410f457689314b7c597fc85c2537c"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:789776d9",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "789776d92cd207176a3aa2630282712e2ec2f92c",
|
|
"branch": "main",
|
|
"at": "2026-08-02T14:40:54-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: scale, the arrange that never ran, and the buttons",
|
|
"detail": "Panel comes up at scale 2 (540x1080 logical) instead of 1. Derived from\nthe connector's physical size, not hardcoded: the panel reports 62x124mm\n= 442 dpi. Same scale now feeds the render path and the hit test, which\nhad to move together or touches land where nothing is drawn.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/bin/viewtop.rs",
|
|
"crates/compositor/src/buttons.rs",
|
|
"crates/compositor/src/evidence.rs",
|
|
"crates/compositor/src/kms.rs",
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/scale.rs",
|
|
"crates/compositor/src/wayland.rs",
|
|
"crates/sessiond-client/src/lib.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/789776d92cd207176a3aa2630282712e2ec2f92c"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:d3f88858",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "d3f888583a5c4e0646f83a304e791e07505ae6c7",
|
|
"branch": "main",
|
|
"at": "2026-08-02T15:01:59-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: a control socket, and the panel it lets the authority turn off",
|
|
"detail": "The screen never went off under viewtop. sessiond decided correctly and\nits DPMS executor ends in `hyprctl dispatch hl.dsp.dpms(...)`, which does\nnot exist here — and with `set -eu` the script died on that line before\nreporting anything, so the daemon's panel field never learned it failed.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/Cargo.toml",
|
|
"crates/compositor/src/bin/viewtop.rs",
|
|
"crates/compositor/src/control.rs",
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/power.rs",
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/d3f888583a5c4e0646f83a304e791e07505ae6c7"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:9b695995",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "9b69599553f55e09678eac4e0557a83911f4f473",
|
|
"branch": "main",
|
|
"at": "2026-08-02T15:02:13-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "screen-toggle: ask viewtop for DPMS, hyprctl only as fallback",
|
|
"detail": "The hyprctl line is the whole reason the screen never went off under\nviewtop, and set -eu killed the script there before it could report the\npanel state back to sessiond. viewtop first, hyprland second so the\nfallback session still works, and a hard failure when neither answers\nrather than telling the authority the panel did something it did not.",
|
|
"dimension": "surface",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"rootfs-overlay/usr/bin/blueline-screen-toggle"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/9b69599553f55e09678eac4e0557a83911f4f473"
|
|
},
|
|
{
|
|
"id": "c:souveraine:94988138",
|
|
"repo": "souveraine",
|
|
"sha": "94988138b43ea1baa36618d80f513bf492ab3613",
|
|
"branch": "primary",
|
|
"at": "2026-08-02T15:26:37-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "lock hint: resolve the seat's session, and replay the report",
|
|
"detail": "LockedHint was never set on this device, so sessiond's `locked` (which\ncomes from logind per doctrine §4) was permanently false, request_blank()\ntimed out LOCK_ACK_BUDGET on every blank, and the panel went dark on a\nsession nobody could confirm was locked. LOCK-DPMS-LESSONS §1 held in the\ncode and not on the glass — every blank recorded blank-without-lock.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/lockhint.rs",
|
|
"surfaces/quickshell/modules/common/functions/Session.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/94988138b43ea1baa36618d80f513bf492ab3613"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:d37ab4dd",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "d37ab4dd6ccf467a4dba874135cbee260358e760",
|
|
"branch": "main",
|
|
"at": "2026-08-02T15:26:50-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "greetd: always take the initial_session slot, never the greeter one",
|
|
"detail": "greetd runs default_session as THE GREETER and stamps\nXDG_SESSION_CLASS=greeter on it; logind then refuses SetLockedHint for\nthat session outright — \"Session does not support lock screen\".",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"rootfs-overlay/etc/systemd/system/greetd.service.d/initial-session-always.conf"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/d37ab4dd6ccf467a4dba874135cbee260358e760"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:d82569b3",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "d82569b3e031b14fa62738febd3e47f17836fd12",
|
|
"branch": "main",
|
|
"at": "2026-08-02T15:37:54-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: serve wlr foreign-toplevel, so the shell can see windows",
|
|
"detail": "The dock, the overview and every window-switching gesture need the list\nof open windows and a way to raise or close one. Under Hyprland that came\nfrom `hyprctl clients` and `Hyprland.activeToplevel`; neither survived the\nmove, so on viewtop nothing on the device could name a window.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/foreign_toplevel.rs",
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/d82569b3e031b14fa62738febd3e47f17836fd12"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:0f2f1a96",
|
|
"repo": "SouveraineOS",
|
|
"sha": "0f2f1a96c3a8181f38039fdcccf899acab7614c0",
|
|
"branch": "main",
|
|
"at": "2026-08-02T15:43:16-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "lock-dpms: the ordering invariant held in the code and not on the device",
|
|
"detail": "Three independent faults, any one enough: greetd ran the desktop in its\ngreeter slot so logind refused SetLockedHint outright; the hint was\nwritten to the caller's session and read from User.Display, which an ssh\nlogin redirects; and the one report that mattered was swallowed by a\nguard that never replayed it. Every blank went out unlocked and recorded\nblank-without-lock.",
|
|
"dimension": "unassigned",
|
|
"basis": "none",
|
|
"paths": [
|
|
"docs/LOCK-DPMS-LESSONS.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/0f2f1a96c3a8181f38039fdcccf899acab7614c0"
|
|
},
|
|
{
|
|
"id": "c:souveraine:106c3bb6",
|
|
"repo": "souveraine",
|
|
"sha": "106c3bb680725036fde1acc91df7b2eaf2f9472d",
|
|
"branch": "primary",
|
|
"at": "2026-08-02T15:44:43-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "lockhint: say so when the session can never hold a lock hint",
|
|
"detail": "logind refuses SetLockedHint for any session that is not Class=user. When\nthat happens LockedHint is pinned at no, is_locked() is permanently false,\nevery request_blank() times out its ack budget, and the panel goes dark on\na session nobody could confirm was locked — the machine keeps working and\nonly the security half is gone.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/lockhint.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/106c3bb680725036fde1acc91df7b2eaf2f9472d"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:cadc4662",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "cadc4662e593fc21248bb8a36fad7a22d7e1be71",
|
|
"branch": "main",
|
|
"at": "2026-08-02T15:45:51-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "docs: the scale, the panel, the window list, and the invariant that was not held",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"docs/SESSION-2026-08-02.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/cadc4662e593fc21248bb8a36fad7a22d7e1be71"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:c34274b1",
|
|
"repo": "SouveraineOS",
|
|
"sha": "c34274b14d12ae29fbab0ecf917aaabb406d2e6e",
|
|
"branch": "main",
|
|
"at": "2026-08-02T15:51:01-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-43: what landed, and where the unmerged capture tree actually is",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/43-viewtop-compositor.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/c34274b14d12ae29fbab0ecf917aaabb406d2e6e"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:284fbcc9",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "284fbcc9da71d57905c2041e0e86283c098f6af4",
|
|
"branch": "main",
|
|
"at": "2026-08-02T16:01:27-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: report LockedHint, because nothing else could do it correctly",
|
|
"detail": "sessiond takes `locked` from logind (doctrine §4). Something has to set\nit, and the shell did — Session.qml watched WlSessionLock.secure and\nshelled out to busctl. That path failed four ways in one afternoon on\nblueline: it wrote to /session/auto (the caller's session, and the shell\nis not in the seat's — viewtop in logind 66, qs in 70); the report was\ndropped when hasLoginctl had not flipped and never replayed; resolving\nthe path cost a subprocess and two D-Bus round trips, landing after\nsessiond's 2s LOCK_ACK_BUDGET; and firing on a QML edge meant a hint\ncleared by anything else was never re-asserted.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/lockhint.rs",
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/284fbcc9da71d57905c2041e0e86283c098f6af4"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:2e776699",
|
|
"repo": "SouveraineOS",
|
|
"sha": "2e7766994ca6a6ddc71c9cd462e172b1fe219bce",
|
|
"branch": "main",
|
|
"at": "2026-08-02T16:02:46-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "lock-dpms: the compositor reports LockedHint now, and the ordering is verified",
|
|
"detail": "All four faults were consequences of reporting the hint from the shell.\nviewtop reports it instead: it is in the seat's session, SendLocked is the\nmoment the locked event goes out, and it can publish a level rather than\nan edge so a cleared hint corrects itself.",
|
|
"dimension": "surface",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"docs/LOCK-DPMS-LESSONS.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/2e7766994ca6a6ddc71c9cd462e172b1fe219bce"
|
|
},
|
|
{
|
|
"id": "c:smithay:87722758",
|
|
"repo": "smithay",
|
|
"sha": "8772275843119cc5dd86e2e2674b6e47d040ac4b",
|
|
"branch": "teal",
|
|
"at": "2026-08-02T16:55:07Z",
|
|
"author": "ani@wiuf.net",
|
|
"subject": "wlr-layer-shell: do not validate a role the client already destroyed",
|
|
"detail": "Destroying zwlr_layer_surface_v1 and then committing the wl_surface with\na null buffer is how the protocol says to unmap a layer surface. The\npre-commit hook stays attached to the wl_surface, and at that commit the\npending LayerSurfaceCachedState no longer describes a live role, so the\nsize/anchor checks read defaults - width 0 with no anchors - and post\nInvalidSize to the destroyed object. The client is killed for doing\nexactly what it was told to do.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/wayland/shell/wlr_layer/mod.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/smithay/commit/8772275843119cc5dd86e2e2674b6e47d040ac4b"
|
|
},
|
|
{
|
|
"id": "c:souveraine:b45fb705",
|
|
"repo": "souveraine",
|
|
"sha": "b45fb705db12e2de47b573423f5299bbd2648892",
|
|
"branch": "primary",
|
|
"at": "2026-08-02T17:29:33-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: the machine can wake the panel, and so can she",
|
|
"detail": "The state machine could turn the screen off and had no way to turn it\nback on. `apply_gesture` answers a power tap on a dark panel with\n`Restore` — which is brightness — and there was no unblank in the action\ntable at all. That was invisible because the wake never came through the\ndaemon: hyprland.lua bound the physical key straight to\nblueline-screen-toggle, so the compositor woke the panel and sessiond\nonly heard about it afterwards.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/device_state.rs",
|
|
"src/sessiond/protocol.rs",
|
|
"src/sessiond/server.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/b45fb705db12e2de47b573423f5299bbd2648892"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:31a9ef89",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "31a9ef8926d7ca182369b4869c308953ba83f3de",
|
|
"branch": "main",
|
|
"at": "2026-08-02T17:35:05-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: report wakes, do not perform them",
|
|
"detail": "The direct wake worked and was wrong. The log says \"power button on a\ndark panel: waking\" and the screen came back; three seconds later\nsessiond resolved the same press into a Tap, found the panel lit —\nbecause viewtop had just lit it — and did what a tap on a lit panel\nmeans. It locked the session and blanked it again. One press woke the\nphone and put it back to sleep.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/buttons.rs",
|
|
"crates/compositor/src/evidence.rs",
|
|
"crates/compositor/src/wayland.rs",
|
|
"crates/sessiond-client/src/lib.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/31a9ef8926d7ca182369b4869c308953ba83f3de"
|
|
},
|
|
{
|
|
"id": "c:souveraine:1f1fc5c7",
|
|
"repo": "souveraine",
|
|
"sha": "1f1fc5c7ddd3e4bb64f04083697afb73fac087bd",
|
|
"branch": "primary",
|
|
"at": "2026-08-02T17:36:48-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: put the panel doc comments back on their own functions",
|
|
"detail": "A scripted edit stacked three doc comments onto panel_on() and left\nset_panel() with none. Comments are load-bearing here — set_panel is the\nreport half and request_screen is the ask half, and the whole reason both\nexist is that a report must not actuate and an ask must not silently edit\nthe machine's idea of the hardware. That distinction was sitting on the\nwrong function.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/device_state.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/1f1fc5c7ddd3e4bb64f04083697afb73fac087bd"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:b2ce5d7c",
|
|
"repo": "SouveraineOS",
|
|
"sha": "b2ce5d7cb0024fbcf12e86f3fc939742bd6c9845",
|
|
"branch": "main",
|
|
"at": "2026-08-02T17:37:51-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "lock-dpms: waking is the machine's, and the compositor must not do it itself",
|
|
"detail": "The panel had no way back: apply_gesture answers a tap on a dark panel\nwith Restore, which is brightness, and there was no unblank in the action\ntable. Invisible while hyprland bound the keys straight to the toggle;\nunder viewtop it became a phone that could sleep and never wake.",
|
|
"dimension": "surface",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"docs/LOCK-DPMS-LESSONS.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/b2ce5d7cb0024fbcf12e86f3fc939742bd6c9845"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:276bb3ef",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "276bb3ef8bf20f6126e9c80fd783687275248a83",
|
|
"branch": "main",
|
|
"at": "2026-08-02T17:46:22-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: hang the door — every scene intent now reaches the compositor",
|
|
"detail": "Nothing dispatched ToCompositor. `place` existed and the other eleven\nintents round-tripped through tests and reached nothing, so the agent's\nwhole vocabulary for the scene was a table describing a surface that did\nnot answer — §13's definition of a defect, thirteen times over.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/control.rs",
|
|
"crates/compositor/src/wayland.rs",
|
|
"crates/wire/src/lib.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/276bb3ef8bf20f6126e9c80fd783687275248a83"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:4476d48d",
|
|
"repo": "SouveraineOS",
|
|
"sha": "4476d48d5610965db70ca39c6e137879877b0fd8",
|
|
"branch": "main",
|
|
"at": "2026-08-02T17:47:29-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "task-43: the scene door is hung; synthesized touch is the bridge still owed",
|
|
"detail": "",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/43-viewtop-compositor.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/4476d48d5610965db70ca39c6e137879877b0fd8"
|
|
},
|
|
{
|
|
"id": "c:souveraine:d2a0547d",
|
|
"repo": "souveraine",
|
|
"sha": "d2a0547d30e927773366f40d7b9e14d903c9fcf9",
|
|
"branch": "primary",
|
|
"at": "2026-08-02T17:49:47-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "ci: build sessiond for x86_64 too",
|
|
"detail": "It was skipped with a comment calling it deliberate; it never was — the\nlaptop hit lock-screen errors once and it stayed phone-only by inertia.\nBuilding is not enabling: the binary ships, the user unit stays\naarch64-only in PKGBUILD.prebuilt, so this cannot wedge a machine by\narriving on it. Verified it compiles.",
|
|
"dimension": "identity",
|
|
"basis": "subject",
|
|
"paths": [
|
|
".gitea/workflows/ci.yml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/d2a0547d30e927773366f40d7b9e14d903c9fcf9"
|
|
},
|
|
{
|
|
"id": "c:smithay:403a3d07",
|
|
"repo": "smithay",
|
|
"sha": "403a3d07af91ede19fef58cfd04a78417733fd7f",
|
|
"branch": "teal",
|
|
"at": "2026-08-02T17:50:13Z",
|
|
"author": "ani@wiuf.net",
|
|
"subject": "session-lock: tolerate a bufferless commit before the first ack",
|
|
"detail": "Qt commits a window surface once while setting it up - the xdg-shell\nhabit of committing empty to solicit a configure - on a protocol that\nconfigures on bind instead. That commit carries no buffer, so it puts no\ncontent on a locked screen, but the check kills the client for it. On a\nphone that takes the lock screen down and locks the owner out.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/wayland/session_lock/surface.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/smithay/commit/403a3d07af91ede19fef58cfd04a78417733fd7f"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:53edffac",
|
|
"repo": "SouveraineOS",
|
|
"sha": "53edffac208dd55303cc29604294ba417da27c07",
|
|
"branch": "main",
|
|
"at": "2026-08-02T17:59:31-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tasks: 50 and 51 — her hand on the glass, and viewtop to daily driver",
|
|
"detail": "The gaps were prose in TASK-43 and a summary message. They are tasks now.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/50-agent-hand-on-the-glass.md",
|
|
"docs/tasks/51-viewtop-to-daily-driver.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/53edffac208dd55303cc29604294ba417da27c07"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:d1047971",
|
|
"repo": "SouveraineOS",
|
|
"sha": "d10479710d3582e3ff25b869f6ffaca50c4ae963",
|
|
"branch": "main",
|
|
"at": "2026-08-02T18:04:26-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tasks: 52 atmosphere, and narrow the haptics question to one a hand can answer",
|
|
"detail": "52 maps the fifteen-technique attention vocabulary onto what viewtop can\nactually do. Two are already landed — expose IS negative space, pose IS\ngravity wells — and compile_custom_pixel_shader + PixelShaderElement are\nalready in our smithay, so #1/#6/#9/#11/#12/#13/#14 need no new machinery.",
|
|
"dimension": "sensorium",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"docs/tasks/45-haptics-cs40l20.md",
|
|
"docs/tasks/52-atmosphere.md",
|
|
"docs/tasks/README.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/d10479710d3582e3ff25b869f6ffaca50c4ae963"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:247bf88a",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "247bf88a2640b18bc8b1804f5165021209994754",
|
|
"branch": "main",
|
|
"at": "2026-08-02T18:26:16-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: serve screen capture, asked at every frame",
|
|
"detail": "ext-image-copy-capture-v1 and ext-output-image-capture-source-manager-v1,\nported from the scratchpad tree they were written in. Without them every\nUI change ships unverified, which is how an unverified change shipped on\n2026-08-02.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"Cargo.lock",
|
|
"crates/compositor/src/wayland.rs",
|
|
"docs/SESSION-2026-08-02.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/247bf88a2640b18bc8b1804f5165021209994754"
|
|
},
|
|
{
|
|
"id": "c:souveraine:266af98a",
|
|
"repo": "souveraine",
|
|
"sha": "266af98a99bb2ab3d86115a340e0060b461ab2da",
|
|
"branch": "primary",
|
|
"at": "2026-08-02T18:28:49-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: double-tap-to-wake wakes, and the volume keys work again",
|
|
"detail": "Two things that worked under Hyprland and stopped when viewtop took the\nsession, both for the same reason: the binding lived in hyprland.lua and\nthe daemon was never in the path.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/device_state.rs",
|
|
"src/sessiond/server.rs",
|
|
"surfaces/quickshell/ii-base/modules/ii/overview/OverviewWidget.qml",
|
|
"surfaces/quickshell/ii-base/modules/ii/regionSelector/RegionSelection.qml",
|
|
"surfaces/quickshell/ii-base/services/HyprlandData.qml",
|
|
"surfaces/quickshell/modules/common/functions/Session.qml"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/266af98a99bb2ab3d86115a340e0060b461ab2da"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:0611b88d",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "0611b88d1b18b32ea55b18bef088e3c88253a8cc",
|
|
"branch": "main",
|
|
"at": "2026-08-02T18:31:49-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: recognise multi-finger gestures",
|
|
"detail": "There were none. input::Router tracks slots and counts contacts — the raw\nmaterial — and nothing ever turned a run of contacts into \"three fingers\ntapped\". The pill's swipes were QML reading a single drag and anything\nmulti-finger was Hyprland's own, so under viewtop there is no way to\nreach a window with your hands at all.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/gesture.rs",
|
|
"crates/compositor/src/lib.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/0611b88d1b18b32ea55b18bef088e3c88253a8cc"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:1fa1ea14",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "1fa1ea14b9a3c572b83c0535435677cf401c87ab",
|
|
"branch": "main",
|
|
"at": "2026-08-02T19:10:48-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: a completed unlock must not leave a black screen",
|
|
"detail": "disclosure_locked() was `authority.locked || position.hides_session()`,\nand the OR was harmless only because NOTHING EVER SET LockedHint — the\nauthority half was false forever and could not contribute. Making viewtop\nreport the hint made it true for the first time and turned the OR into a\ntrap:",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/lock.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/1fa1ea14b9a3c572b83c0535435677cf401c87ab"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:50947d0a",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "50947d0a4b1d5502880444c4a9f6c7050bc657d2",
|
|
"branch": "main",
|
|
"at": "2026-08-02T19:11:04-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "usb-gadget: ship the tether config as a package, because the overlay never arrived",
|
|
"detail": "IgnoreCarrierLoss=5s landed in rootfs-overlay on 2026-08-01 with a full\ndiagnosis of the stale-usb0 hijack. It has been correct in the repo ever\nsince and wrong on the phone the entire time: rootfs-overlay reaches a\ndevice only on a flash, this phone updates with pacman, and NO package\nshipped anything under /etc/systemd/network. There was no path for the\nfix to travel.",
|
|
"dimension": "release",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"pkgs/blueline-usb-gadget/40-usb0.network",
|
|
"pkgs/blueline-usb-gadget/PKGBUILD"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/50947d0a4b1d5502880444c4a9f6c7050bc657d2"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:38ce3dfd",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "38ce3dfdb0f3188c92463a906695bd688e275a82",
|
|
"branch": "main",
|
|
"at": "2026-08-02T19:13:28-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "tools: phone-triage.sh — answer in 30s what a session spends an hour on",
|
|
"detail": "Reachability (and crucially: booted-but-silent vs actually-down, which the\nARP check settles), which gadget enumerated, session class, panel state,\nwhether lock-then-blank is holding, and what is actually installed.",
|
|
"dimension": "sensorium",
|
|
"basis": "repo",
|
|
"paths": [
|
|
"CLAUDE.md",
|
|
"tools/phone-triage.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/38ce3dfdb0f3188c92463a906695bd688e275a82"
|
|
},
|
|
{
|
|
"id": "c:SouveraineOS:9e2e193a",
|
|
"repo": "SouveraineOS",
|
|
"sha": "9e2e193af3a188bf1cdb720acf5bd2f52f5ecf6e",
|
|
"branch": "main",
|
|
"at": "2026-08-02T19:13:40-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "START-HERE: the page to open when something is broken",
|
|
"detail": "Doctrine explains why the system is shaped the way it is and is the wrong\nthing to open when the screen is black. This is for that: USB\nunreachability (with the ARP test that proves the phone is fine), the\nblack-screen regression and its mechanism, what to do when a Hyprland\nbinding stops existing, where to build, the three different ways things\nreach the phone and why an overlay-only fix never arrives, and the five\ntraps that have each cost a session.",
|
|
"dimension": "unassigned",
|
|
"basis": "none",
|
|
"paths": [
|
|
"CLAUDE.md",
|
|
"START-HERE.md"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/SouveraineOS/commit/9e2e193af3a188bf1cdb720acf5bd2f52f5ecf6e"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:da1c7a01",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "da1c7a01cb232f7ef52b5a9b8c3b9586927282ad",
|
|
"branch": "main",
|
|
"at": "2026-08-02T21:58:49-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: tile windows instead of stacking them",
|
|
"detail": "Every toplevel was configured to the whole usable zone at the zone's\norigin, so a second window landed exactly on top of the first and\nnothing on the glass told them apart. place/pose could arrange them;\nnothing decided.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/lib.rs",
|
|
"crates/compositor/src/placement.rs",
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/da1c7a01cb232f7ef52b5a9b8c3b9586927282ad"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:a4a96d3e",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "a4a96d3eff59f9f1ea3f90991e2e698dbd05ad8e",
|
|
"branch": "main",
|
|
"at": "2026-08-02T22:06:44-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: three fingers float a window out of the layout",
|
|
"detail": "gesture.rs recognised taps and drags, and nothing ever constructed a\nRecognizer — the module was orphaned, not merely unbound.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/a4a96d3eff59f9f1ea3f90991e2e698dbd05ad8e"
|
|
},
|
|
{
|
|
"id": "c:Pixel3Arch:58612d09",
|
|
"repo": "Pixel3Arch",
|
|
"sha": "58612d09aa636da05bb1662d46ed2e99a6f8ac0f",
|
|
"branch": "main",
|
|
"at": "2026-08-02T22:09:34-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "triage: reach a phone that is not at home, and stop inventing a dead shell",
|
|
"detail": "Two failures, both found by running it against a working phone on a\nforeign SSID at 10.10.30.213 with the VPN down.",
|
|
"dimension": "surface",
|
|
"basis": "subject",
|
|
"paths": [
|
|
"tools/phone-triage.sh"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/commit/58612d09aa636da05bb1662d46ed2e99a6f8ac0f"
|
|
},
|
|
{
|
|
"id": "c:souveraine:8c7567e4",
|
|
"repo": "souveraine",
|
|
"sha": "8c7567e4191aae8d2816f75007805d70df4a42ac",
|
|
"branch": "primary",
|
|
"at": "2026-08-02T22:20:13-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "sessiond: the press that wakes the panel must not also blank it",
|
|
"detail": "Press the power button on a sleeping phone: the screen comes on, the\nlock screen appears, and it goes black again.",
|
|
"dimension": "identity",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"src/sessiond/device_state.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine/commit/8c7567e4191aae8d2816f75007805d70df4a42ac"
|
|
},
|
|
{
|
|
"id": "c:souveraine-viewtop:ba4bd030",
|
|
"repo": "souveraine-viewtop",
|
|
"sha": "ba4bd030b28bf607b929223b9855b39563461a99",
|
|
"branch": "main",
|
|
"at": "2026-08-02T22:22:26-04:00",
|
|
"author": "casey.tunturi@gmail.com",
|
|
"subject": "compositor: windows resize when the keyboard takes their room",
|
|
"detail": "Opening the on-screen keyboard maps a layer surface with an exclusive\nzone, so every window has less room than it did — and nothing re-laid\nthem out. The app kept the size it had and the keyboard was drawn over\nthe bottom of it.",
|
|
"dimension": "surface",
|
|
"basis": "paths",
|
|
"paths": [
|
|
"crates/compositor/src/wayland.rs"
|
|
],
|
|
"url": "https://gitea.wiuf.net/Fimeg/souveraine-viewtop/commit/ba4bd030b28bf607b929223b9855b39563461a99"
|
|
}
|
|
],
|
|
"ci": [
|
|
{
|
|
"id": "ci:souveraine:934",
|
|
"repo": "souveraine",
|
|
"run": 934,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "53dcb40c5d97a23164705606a5d683f750051017",
|
|
"commit": "c:souveraine:53dcb40c",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-27T08:29:59-04:00",
|
|
"completed": "2026-07-27T08:34:12-04:00",
|
|
"title": "dial: bind the ring origin instead of assigning it before the surface is sized"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:935",
|
|
"repo": "souveraine",
|
|
"run": 935,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "2170ba686febc362ab7b85f2376ae915831c2c55",
|
|
"commit": "c:souveraine:2170ba68",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T09:15:51-04:00",
|
|
"completed": "2026-07-27T09:21:25-04:00",
|
|
"title": "deploy: fail loudly when a qmldir names a file the composed tree lacks"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:936",
|
|
"repo": "souveraine",
|
|
"run": 936,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "7eb2135906ca12f5515f291cd33a061ce9d85859",
|
|
"commit": "c:souveraine:7eb21359",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T10:11:16-04:00",
|
|
"completed": "2026-07-27T10:17:44-04:00",
|
|
"title": "upower: relocate the cross-install udev leak, and assert it stays gone"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:937",
|
|
"repo": "souveraine",
|
|
"run": 937,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "7eb2135906ca12f5515f291cd33a061ce9d85859",
|
|
"commit": "c:souveraine:7eb21359",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-27T10:15:44-04:00",
|
|
"completed": "2026-07-27T10:34:27-04:00",
|
|
"title": "upower: relocate the cross-install udev leak, and assert it stays gone"
|
|
},
|
|
{
|
|
"id": "ci:hexagonrpc:939",
|
|
"repo": "hexagonrpc",
|
|
"run": 939,
|
|
"workflow": "blueline-slpi",
|
|
"branch": "blueline-slpi",
|
|
"sha": "eef64c950c820ec3b2138fb8b4fc7598fbfb7eb8",
|
|
"commit": "c:hexagonrpc:eef64c95",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-07-27T13:41:19-04:00",
|
|
"completed": "2026-07-27T13:41:54-04:00",
|
|
"title": "chrecd: the real chre_slpi method table, from vendor daemon disassembly"
|
|
},
|
|
{
|
|
"id": "ci:hexagonrpc:938",
|
|
"repo": "hexagonrpc",
|
|
"run": 938,
|
|
"workflow": "blueline-slpi-wip-20260710",
|
|
"branch": "blueline-slpi-wip-20260710",
|
|
"sha": "a4cf31b00a05ce964d52e56fbc4408ac987a9d3e",
|
|
"commit": "c:hexagonrpc:a4cf31b0",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T13:41:19-04:00",
|
|
"completed": "2026-07-27T13:42:12-04:00",
|
|
"title": "WIP: chrecd chre_slpi interface + apps_std in-flight edits (live phone state 2026-07-10)"
|
|
},
|
|
{
|
|
"id": "ci:hexagonrpc:940",
|
|
"repo": "hexagonrpc",
|
|
"run": 940,
|
|
"workflow": "blueline-slpi",
|
|
"branch": "blueline-slpi",
|
|
"sha": "374374537b3633f1d50a8fac16e34db5ab1f9783",
|
|
"commit": "c:hexagonrpc:37437453",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T13:41:55-04:00",
|
|
"completed": "2026-07-27T13:42:37-04:00",
|
|
"title": "chrecd: the real chre_slpi method table, from vendor daemon disassembly"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:941",
|
|
"repo": "souveraine",
|
|
"run": 941,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "25d1e1924612cd59ffb6d06fa1534cd9484e78d6",
|
|
"commit": "c:souveraine:25d1e192",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T13:46:50-04:00",
|
|
"completed": "2026-07-27T13:57:06-04:00",
|
|
"title": "upower: var/ is a legitimate prefix, not a leak"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:942",
|
|
"repo": "souveraine",
|
|
"run": 942,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "25d1e1924612cd59ffb6d06fa1534cd9484e78d6",
|
|
"commit": "c:souveraine:25d1e192",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-27T13:46:57-04:00",
|
|
"completed": "2026-07-27T14:09:07-04:00",
|
|
"title": "upower: var/ is a legitimate prefix, not a leak"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:943",
|
|
"repo": "souveraine",
|
|
"run": 943,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "684d1f9fd57734540fa3087c2a466a934d7ed530",
|
|
"commit": "c:souveraine:684d1f9f",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T14:54:11-04:00",
|
|
"completed": "2026-07-27T15:05:57-04:00",
|
|
"title": "upower: remove the emptied parents after relocating, not just the subtree"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:944",
|
|
"repo": "souveraine",
|
|
"run": 944,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "684d1f9fd57734540fa3087c2a466a934d7ed530",
|
|
"commit": "c:souveraine:684d1f9f",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T14:54:18-04:00",
|
|
"completed": "2026-07-27T15:18:17-04:00",
|
|
"title": "upower: remove the emptied parents after relocating, not just the subtree"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:945",
|
|
"repo": "souveraine",
|
|
"run": 945,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "3d9340057faa9bccf11c4cfdaabb8ab3e1c5e504",
|
|
"commit": "c:souveraine:3d934005",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T15:34:14-04:00",
|
|
"completed": "2026-07-27T15:46:33-04:00",
|
|
"title": "sessiond: an expected source that never reports is Absent, not silent"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:946",
|
|
"repo": "souveraine",
|
|
"run": 946,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "3d9340057faa9bccf11c4cfdaabb8ab3e1c5e504",
|
|
"commit": "c:souveraine:3d934005",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T15:34:23-04:00",
|
|
"completed": "2026-07-27T15:58:38-04:00",
|
|
"title": "sessiond: an expected source that never reports is Absent, not silent"
|
|
},
|
|
{
|
|
"id": "ci:hexagonrpc:947",
|
|
"repo": "hexagonrpc",
|
|
"run": 947,
|
|
"workflow": "blueline-slpi",
|
|
"branch": "blueline-slpi",
|
|
"sha": "abe82783aacdc3feedb68cfcf5148c31d994ef3f",
|
|
"commit": "c:hexagonrpc:abe82783",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T17:26:37-04:00",
|
|
"completed": "2026-07-27T17:26:51-04:00",
|
|
"title": "chrecd: load nanoapps by name, and read CHRE's outbound messages"
|
|
},
|
|
{
|
|
"id": "ci:hexagonrpc:948",
|
|
"repo": "hexagonrpc",
|
|
"run": 948,
|
|
"workflow": "blueline-slpi",
|
|
"branch": "blueline-slpi",
|
|
"sha": "f2ab7b6c060a24b9f9871d7409a0fd52d90ffd27",
|
|
"commit": "c:hexagonrpc:f2ab7b6c",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T17:45:56-04:00",
|
|
"completed": "2026-07-27T17:46:09-04:00",
|
|
"title": "chrecd: load nanoapps by name, and read CHRE's outbound messages"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:950",
|
|
"repo": "souveraine",
|
|
"run": 950,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "4ed8f3dd743d2a852b93500cc19fd5d7283af22f",
|
|
"commit": "c:souveraine:4ed8f3dd",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-27T21:21:45-04:00",
|
|
"completed": "2026-07-27T21:25:42-04:00",
|
|
"title": "shell: resolve logind session via User.Display, re-register after sessiond restart"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:951",
|
|
"repo": "souveraine",
|
|
"run": 951,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "deda4a7b6b6461558cf9b47e4113f51e6ad27839",
|
|
"commit": "c:souveraine:deda4a7b",
|
|
"conclusion": "success",
|
|
"started": "2026-07-27T21:30:44-04:00",
|
|
"completed": "2026-07-27T21:37:46-04:00",
|
|
"title": "shell: send locked_ack on re-registration when the surface is already secure"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:952",
|
|
"repo": "souveraine",
|
|
"run": 952,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "68b6025226317c858b2070ddf8d1f1238e06214a",
|
|
"commit": "c:souveraine:68b60252",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-27T21:38:23-04:00",
|
|
"completed": "2026-07-27T21:38:27-04:00",
|
|
"title": "shell: fail closed when the session authority cannot be reached"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:953",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 953,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "36b6b2e7dee5b50e56ae2226654e3f2916d07245",
|
|
"commit": "c:souveraine-viewtop:36b6b2e7",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T00:49:59-04:00",
|
|
"completed": "2026-07-28T00:50:18-04:00",
|
|
"title": "Trim README"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:954",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 954,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "e1c93a5ef3b5a1a89c63bad7dc9a7469747134a4",
|
|
"commit": "c:souveraine-viewtop:e1c93a5e",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-28T00:58:31-04:00",
|
|
"completed": "2026-07-28T00:58:32-04:00",
|
|
"title": "Wire protocol and surface registry"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:955",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 955,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "d1a9d73e85fa6a14135d3449b81ff03e03d263de",
|
|
"commit": "c:souveraine-viewtop:d1a9d73e",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-28T01:00:23-04:00",
|
|
"completed": "2026-07-28T01:00:24-04:00",
|
|
"title": "Reveal policy: tiers and step-up grants"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:958",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 958,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "d1b7a16ff5756bf327c53061e0b3a869db358ce2",
|
|
"commit": "c:souveraine-viewtop:d1b7a16f",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-28T08:01:45-04:00",
|
|
"completed": "2026-07-28T08:01:47-04:00",
|
|
"title": "SessionFacts mirrors sessiond device_state; drop read_grant"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:959",
|
|
"repo": "souveraine",
|
|
"run": 959,
|
|
"workflow": "head",
|
|
"branch": "",
|
|
"sha": "c48737620e022ba82e9070e4493de1aeb9c74b1a",
|
|
"commit": "c:souveraine:c4873762",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-28T13:04:05-04:00",
|
|
"completed": "2026-07-28T13:04:10-04:00",
|
|
"title": "sessiond: squeeze is input, and a pocket can veto it"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:960",
|
|
"repo": "souveraine",
|
|
"run": 960,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "c48737620e022ba82e9070e4493de1aeb9c74b1a",
|
|
"commit": "c:souveraine:c4873762",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T13:57:22-04:00",
|
|
"completed": "2026-07-28T14:02:55-04:00",
|
|
"title": "sessiond: squeeze is input, and a pocket can veto it"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:961",
|
|
"repo": "souveraine",
|
|
"run": 961,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "c48737620e022ba82e9070e4493de1aeb9c74b1a",
|
|
"commit": "c:souveraine:c4873762",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-28T13:57:29-04:00",
|
|
"completed": "2026-07-28T13:57:34-04:00",
|
|
"title": "sessiond: squeeze is input, and a pocket can veto it"
|
|
},
|
|
{
|
|
"id": "ci:hexagonrpc:962",
|
|
"repo": "hexagonrpc",
|
|
"run": 962,
|
|
"workflow": "blueline-slpi",
|
|
"branch": "blueline-slpi",
|
|
"sha": "6bb99513b676ed28b91efe5ffbe8ce40f863a5e8",
|
|
"commit": "c:hexagonrpc:6bb99513",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T14:03:13-04:00",
|
|
"completed": "2026-07-28T14:03:32-04:00",
|
|
"title": "tests: cover the CHRE host message encoder"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:963",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 963,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "3ef1bc43b2ba6b80dfb833e2c4b930d026efabd2",
|
|
"commit": "c:souveraine-viewtop:3ef1bc43",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T14:42:18-04:00",
|
|
"completed": "2026-07-28T14:42:35-04:00",
|
|
"title": "ext-session-lock-v1 state machine and the admission gate"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:964",
|
|
"repo": "souveraine",
|
|
"run": 964,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "a47d1afffdf28f2cd271e86e15d8d76d0908cfc9",
|
|
"commit": "c:souveraine:a47d1aff",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-28T14:43:48-04:00",
|
|
"completed": "2026-07-28T14:43:53-04:00",
|
|
"title": "ci: retrigger public build"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:965",
|
|
"repo": "souveraine",
|
|
"run": 965,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "21b602a7d22fc0fe865cc16fa7f1d8760002a4e7",
|
|
"commit": "c:souveraine:21b602a7",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T14:50:56-04:00",
|
|
"completed": "2026-07-28T14:56:23-04:00",
|
|
"title": "ci: repin rust-toolchain to a master commit, not a moved stable tip"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:966",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 966,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "6d1919df7bb7838fd96b47002fbbfe84b0c219b0",
|
|
"commit": "c:souveraine-viewtop:6d1919df",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T14:55:22-04:00",
|
|
"completed": "2026-07-28T14:55:40-04:00",
|
|
"title": "Model the real lock handoff; viewtop holds the shell heartbeat"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:967",
|
|
"repo": "souveraine",
|
|
"run": 967,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "ad7b5973e42427f77e858fa11ce19a7fe066837e",
|
|
"commit": "c:souveraine:ad7b5973",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T14:59:29-04:00",
|
|
"completed": "2026-07-28T15:17:10-04:00",
|
|
"title": "Merge branch 'primary' into public"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:968",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 968,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "a308f39f72b0db939075fc3f0454f5d660722776",
|
|
"commit": "c:souveraine-viewtop:a308f39f",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T15:17:10-04:00",
|
|
"completed": "2026-07-28T15:17:27-04:00",
|
|
"title": "Layer stack, back verb, and the compositor's intent table"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:969",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 969,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "73f749ec02418ddb0df2d0173d28e154bd45a338",
|
|
"commit": "c:souveraine-viewtop:73f749ec",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T17:51:10-04:00",
|
|
"completed": "2026-07-28T17:52:24-04:00",
|
|
"title": "Smithay frontend and a nested binary; runs on the phone"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:970",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 970,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "997f32d5c6c7fcc615c1e06a2e5c9a3bbdcad4d1",
|
|
"commit": "c:souveraine-viewtop:997f32d5",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T18:20:52-04:00",
|
|
"completed": "2026-07-28T18:22:07-04:00",
|
|
"title": "KMS backend, shell heartbeat, one binary for both paths"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:971",
|
|
"repo": "Pixel3Arch",
|
|
"run": 971,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "ccb7f32734b1cf72e190664da7db2bdfa061d5bf",
|
|
"commit": "c:Pixel3Arch:ccb7f327",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T19:28:17-04:00",
|
|
"completed": "2026-07-28T19:58:28-04:00",
|
|
"title": "kernel: don't fail the config guard on the builder's own clang version"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:972",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 972,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "cc65484102ff2d073c47e35e3dca41ac33d1dc30",
|
|
"commit": "c:souveraine-viewtop:cc654841",
|
|
"conclusion": "success",
|
|
"started": "2026-07-28T19:58:29-04:00",
|
|
"completed": "2026-07-28T19:59:40-04:00",
|
|
"title": "Lock handoff proven end to end; fix three bugs it found"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:977",
|
|
"repo": "souveraine",
|
|
"run": 977,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "5965c64781dd9a749eb750cd3a1000ee06d4f184",
|
|
"commit": "c:souveraine:5965c647",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-07-29T08:34:04-04:00",
|
|
"completed": "2026-07-29T08:39:55-04:00",
|
|
"title": "shell: recover the phone-only edits into the repo"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:978",
|
|
"repo": "souveraine",
|
|
"run": 978,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "8db55cfc27dc413dc24abd1d1bf9a4ff71391f87",
|
|
"commit": "c:souveraine:8db55cfc",
|
|
"conclusion": "success",
|
|
"started": "2026-07-29T08:40:00-04:00",
|
|
"completed": "2026-07-29T08:44:10-04:00",
|
|
"title": "surfaces: commit the quickshell README, stranded since 07-10"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:979",
|
|
"repo": "souveraine",
|
|
"run": 979,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "de64480ba2475788837844538dc845674b43b09f",
|
|
"commit": "c:souveraine:de64480b",
|
|
"conclusion": "success",
|
|
"started": "2026-07-29T09:14:25-04:00",
|
|
"completed": "2026-07-29T09:18:30-04:00",
|
|
"title": "gestures: osk-switch is packaged now, not a /usr/local stray"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:980",
|
|
"repo": "souveraine",
|
|
"run": 980,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "45fbbea400ae13d2889dd3c688b4d8b35cd049bb",
|
|
"commit": "c:souveraine:45fbbea4",
|
|
"conclusion": "success",
|
|
"started": "2026-07-29T10:43:09-04:00",
|
|
"completed": "2026-07-29T10:50:20-04:00",
|
|
"title": "shell: \"already registered\" is a transient, not a verdict"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:981",
|
|
"repo": "souveraine",
|
|
"run": 981,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "0a635ff984c44eea95be9fcf3d4518b49af25a9c",
|
|
"commit": "c:souveraine:0a635ff9",
|
|
"conclusion": "success",
|
|
"started": "2026-07-29T10:54:52-04:00",
|
|
"completed": "2026-07-29T11:03:25-04:00",
|
|
"title": "lock: dismiss the boot bloom on a level, not only on an edge"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:982",
|
|
"repo": "souveraine",
|
|
"run": 982,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "c8507e924b0c4c9d83c591222f656a94ef07dc93",
|
|
"commit": "c:souveraine:c8507e92",
|
|
"conclusion": "success",
|
|
"started": "2026-07-29T11:37:11-04:00",
|
|
"completed": "2026-07-29T11:41:25-04:00",
|
|
"title": "sessiond: delete the fallback login; this daemon locks and never unlocks"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:984",
|
|
"repo": "Pixel3Arch",
|
|
"run": 984,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "daa9d379a58b34b7adc17dc4855c7c3ebec49d0b",
|
|
"commit": "c:Pixel3Arch:daa9d379",
|
|
"conclusion": "success",
|
|
"started": "2026-07-29T23:22:53-04:00",
|
|
"completed": "2026-07-29T23:23:05-04:00",
|
|
"title": "ci: publish the device packages into the edge archive"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:987",
|
|
"repo": "souveraine",
|
|
"run": 987,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "ff57e0f04b3f1ee35cd1bdc7d3a9d3ce6595ccef",
|
|
"commit": "c:souveraine:ff57e0f0",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-30T08:24:39-04:00",
|
|
"completed": "2026-07-30T08:42:11-04:00",
|
|
"title": "Merge branch 'primary' into public"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:988",
|
|
"repo": "souveraine",
|
|
"run": 988,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "0ef239515f0824e906333603c51521fea08f6fdc",
|
|
"commit": "c:souveraine:0ef23951",
|
|
"conclusion": "success",
|
|
"started": "2026-07-30T09:22:39-04:00",
|
|
"completed": "2026-07-30T09:27:53-04:00",
|
|
"title": "surface: per-agent TTS voice + turn clock + reply-handler fix"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:989",
|
|
"repo": "souveraine",
|
|
"run": 989,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "bdc949be68cfbf9e41dec389f8c6654d41c6a94e",
|
|
"commit": "c:souveraine:bdc949be",
|
|
"conclusion": "success",
|
|
"started": "2026-07-30T09:47:18-04:00",
|
|
"completed": "2026-07-30T10:03:34-04:00",
|
|
"title": "Merge branch 'primary' into public"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:990",
|
|
"repo": "souveraine",
|
|
"run": 990,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "25898a9d14532d8a6e1857607ad76c8aa951da33",
|
|
"commit": "c:souveraine:25898a9d",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-30T13:19:25-04:00",
|
|
"completed": "2026-07-30T13:21:00-04:00",
|
|
"title": "shell: re-home the subconscious surface from the ii tree to souveraine"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:991",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 991,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "234a6318e9edab58af814562a9bbbd3bb373fa85",
|
|
"commit": "c:souveraine-viewtop:234a6318",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-30T13:19:28-04:00",
|
|
"completed": "2026-07-30T13:19:34-04:00",
|
|
"title": "compositor: serve primary selection and wlr data-control"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:992",
|
|
"repo": "Pixel3Arch",
|
|
"run": 992,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "e306218aac175c6f0ce6940322678cc31177e591",
|
|
"commit": "c:Pixel3Arch:e306218a",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-30T13:50:00-04:00",
|
|
"completed": "2026-07-30T13:50:22-04:00",
|
|
"title": "publish stranded device packages via packages.yml"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:993",
|
|
"repo": "Pixel3Arch",
|
|
"run": 993,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "0eccd6fc5a4006c715cf47716453dc479433fd62",
|
|
"commit": "c:Pixel3Arch:0eccd6fc",
|
|
"conclusion": "success",
|
|
"started": "2026-07-30T13:53:21-04:00",
|
|
"completed": "2026-07-30T13:54:58-04:00",
|
|
"title": "untrack committed build junk + set SRCDEST in packages CI"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:994",
|
|
"repo": "Pixel3Arch",
|
|
"run": 994,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "410f9428302549260a171faf5278eac9c54937a5",
|
|
"commit": "c:Pixel3Arch:410f9428",
|
|
"conclusion": "success",
|
|
"started": "2026-07-30T14:12:03-04:00",
|
|
"completed": "2026-07-30T14:13:35-04:00",
|
|
"title": "mirror device packages into the Gitea Arch registry"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-updater:996",
|
|
"repo": "souveraine-updater",
|
|
"run": 996,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "1540559ab86e9e44b3a98e7c05df058b6aa7361c",
|
|
"commit": "c:souveraine-updater:1540559a",
|
|
"conclusion": "success",
|
|
"started": "2026-07-30T14:24:10-04:00",
|
|
"completed": "2026-07-30T14:31:53-04:00",
|
|
"title": "mirror souveraine-updater into the Gitea Arch registry"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:995",
|
|
"repo": "souveraine",
|
|
"run": 995,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "3bc363a9035f9d3c2811eb5aff907ba869627a10",
|
|
"commit": "c:souveraine:3bc363a9",
|
|
"conclusion": "success",
|
|
"started": "2026-07-30T14:24:11-04:00",
|
|
"completed": "2026-07-30T14:31:53-04:00",
|
|
"title": "mirror souveraine + upower-souveraine into the Gitea Arch registry"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:997",
|
|
"repo": "Pixel3Arch",
|
|
"run": 997,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "e9320bebb449f3f8cb97a66e5cbf533a796ef37b",
|
|
"commit": "c:Pixel3Arch:e9320beb",
|
|
"conclusion": "success",
|
|
"started": "2026-07-30T15:07:10-04:00",
|
|
"completed": "2026-07-30T15:08:42-04:00",
|
|
"title": "stevia 0.56.0-2: dictation key status animation; souveraine-stt state machine"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:998",
|
|
"repo": "souveraine",
|
|
"run": 998,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "483902a40eb2a58759a0ba0e693db82496aebbac",
|
|
"commit": "c:souveraine:483902a4",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-07-30T15:18:00-04:00",
|
|
"completed": "2026-07-30T15:22:15-04:00",
|
|
"title": "shell: restore the subconscious ticker to the chat column"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:999",
|
|
"repo": "souveraine",
|
|
"run": 999,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "4caca36859cea9652069257c046af7b4ae2005c9",
|
|
"commit": "c:souveraine:4caca368",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-07-30T15:22:20-04:00",
|
|
"completed": "2026-07-30T15:26:22-04:00",
|
|
"title": "fix: preserve the full reply (not the streamed partial) on surface-drop"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1000",
|
|
"repo": "souveraine",
|
|
"run": 1000,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "15af38ae36f792ea1b54d66a3729c48620a61213",
|
|
"commit": "c:souveraine:15af38ae",
|
|
"conclusion": "success",
|
|
"started": "2026-07-30T15:26:24-04:00",
|
|
"completed": "2026-07-30T15:30:40-04:00",
|
|
"title": "deploy: ship the subconscious module in the shell manifest"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1001",
|
|
"repo": "souveraine",
|
|
"run": 1001,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "e7056169061fa0379d180868d8d7eeb26cd65903",
|
|
"commit": "c:souveraine:e7056169",
|
|
"conclusion": "success",
|
|
"started": "2026-07-30T19:15:13-04:00",
|
|
"completed": "2026-07-30T19:33:00-04:00",
|
|
"title": "Merge branch 'primary' into public"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:1002",
|
|
"repo": "Pixel3Arch",
|
|
"run": 1002,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "9ad69eaf18f45cddf76f2ae5133a76eed0144376",
|
|
"commit": "c:Pixel3Arch:9ad69eaf",
|
|
"conclusion": "success",
|
|
"started": "2026-07-30T19:33:00-04:00",
|
|
"completed": "2026-07-30T19:34:39-04:00",
|
|
"title": "package souveraine-stt; it only ever shipped by flash"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:1003",
|
|
"repo": "Pixel3Arch",
|
|
"run": 1003,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "e351afed2aaa13e104769251bd31a190a07476e2",
|
|
"commit": "c:Pixel3Arch:e351afed",
|
|
"conclusion": "success",
|
|
"started": "2026-07-30T19:51:44-04:00",
|
|
"completed": "2026-07-30T19:53:38-04:00",
|
|
"title": "hyprgrass: rebuild for hyprland 0.56.1 and publish it"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1005",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1005,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "007777684a53220e8aec03cc5a044b1d4d9fcddf",
|
|
"commit": "c:souveraine-viewtop:00777768",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-30T20:01:05-04:00",
|
|
"completed": "2026-07-30T20:01:06-04:00",
|
|
"title": "wire: give pose and expose somewhere to land"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1008",
|
|
"repo": "souveraine",
|
|
"run": 1008,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "e4d6ddcc725b81430291552d5ae328174b88306c",
|
|
"commit": "c:souveraine:e4d6ddcc",
|
|
"conclusion": "success",
|
|
"started": "2026-07-31T08:07:23-04:00",
|
|
"completed": "2026-07-31T08:11:36-04:00",
|
|
"title": "vpn toggle: point at wiufph, the phone's own peer"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1009",
|
|
"repo": "souveraine",
|
|
"run": 1009,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "49635fb005033c186b26ff9e42c08b10f86cd03e",
|
|
"commit": "c:souveraine:49635fb0",
|
|
"conclusion": "success",
|
|
"started": "2026-07-31T12:51:30-04:00",
|
|
"completed": "2026-07-31T12:55:56-04:00",
|
|
"title": "shell: give the subconscious event log a host"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1010",
|
|
"repo": "souveraine",
|
|
"run": 1010,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "8a4eebbdd4074fbe1774c41fa41feb8deb985902",
|
|
"commit": "c:souveraine:8a4eebbd",
|
|
"conclusion": "success",
|
|
"started": "2026-07-31T12:58:56-04:00",
|
|
"completed": "2026-07-31T13:04:20-04:00",
|
|
"title": "deploy: never --delete into the phone's tree"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1011",
|
|
"repo": "souveraine",
|
|
"run": 1011,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "1c90d7f76a9fc2d1932b16ff7108439f388539f0",
|
|
"commit": "c:souveraine:1c90d7f7",
|
|
"conclusion": "success",
|
|
"started": "2026-07-31T13:11:49-04:00",
|
|
"completed": "2026-07-31T13:15:46-04:00",
|
|
"title": "settings: the device state machine gets a surface"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1012",
|
|
"repo": "souveraine",
|
|
"run": 1012,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "e188446ce76f189e11cf364d09a1ca8b69806f0a",
|
|
"commit": "c:souveraine:e188446c",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-31T13:16:39-04:00",
|
|
"completed": "2026-07-31T13:20:28-04:00",
|
|
"title": "Merge branch 'primary' into public"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1013",
|
|
"repo": "souveraine",
|
|
"run": 1013,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "189de61cbe1af19eef59bd0d5b51dd2a2ab3a821",
|
|
"commit": "c:souveraine:189de61c",
|
|
"conclusion": "success",
|
|
"started": "2026-07-31T13:38:28-04:00",
|
|
"completed": "2026-07-31T13:43:47-04:00",
|
|
"title": "fix: guard altAction on long-press"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1014",
|
|
"repo": "souveraine",
|
|
"run": 1014,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "0745b48dc5c0b243b8624e31304292ffd7821946",
|
|
"commit": "c:souveraine:0745b48d",
|
|
"conclusion": "success",
|
|
"started": "2026-07-31T13:57:34-04:00",
|
|
"completed": "2026-07-31T14:01:32-04:00",
|
|
"title": "vpn toggle: status, not a bool"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1015",
|
|
"repo": "souveraine",
|
|
"run": 1015,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "efe2d0d1e023bfd837051bde108241af2c06f049",
|
|
"commit": "c:souveraine:efe2d0d1",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-31T14:32:40-04:00",
|
|
"completed": "2026-07-31T14:36:33-04:00",
|
|
"title": "lock: adopt the session lock across a scene reload"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1016",
|
|
"repo": "souveraine",
|
|
"run": 1016,
|
|
"workflow": "public",
|
|
"branch": "public",
|
|
"sha": "d40aeedc9a1c2ec266c31a5e292c23ffd6f9af4a",
|
|
"commit": "c:souveraine:d40aeedc",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-31T14:34:51-04:00",
|
|
"completed": "2026-07-31T14:47:51-04:00",
|
|
"title": "Merge branch 'primary' into public"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1017",
|
|
"repo": "souveraine",
|
|
"run": 1017,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "b5fc48eef1844b148ee23937883b2f5d4bcd0617",
|
|
"commit": "c:souveraine:b5fc48ee",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-31T14:36:49-04:00",
|
|
"completed": "2026-07-31T14:54:33-04:00",
|
|
"title": "ci: one branch. primary builds and ships; public and the dead codeberg mirror are gone"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1018",
|
|
"repo": "souveraine",
|
|
"run": 1018,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "539df90b95db5c994dfe8c4e1440b26db6db4216",
|
|
"commit": "c:souveraine:539df90b",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-31T18:52:47-04:00",
|
|
"completed": "2026-07-31T18:56:58-04:00",
|
|
"title": "sessiond: peer pid via getsockopt, and put sessiond under test"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1019",
|
|
"repo": "souveraine",
|
|
"run": 1019,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "b5ee87da0fe19e0ade10d162f2e63c537c2f1bd9",
|
|
"commit": "c:souveraine:b5ee87da",
|
|
"conclusion": "success",
|
|
"started": "2026-07-31T19:14:32-04:00",
|
|
"completed": "2026-07-31T19:30:35-04:00",
|
|
"title": "ci: sessiond clippy is advisory until its 9 pre-existing warnings are burned down"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1023",
|
|
"repo": "souveraine",
|
|
"run": 1023,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "1eb50a1817d0c90565b3b10682813c4c95da7236",
|
|
"commit": "c:souveraine:1eb50a18",
|
|
"conclusion": "success",
|
|
"started": "2026-07-31T21:07:24-04:00",
|
|
"completed": "2026-07-31T21:25:43-04:00",
|
|
"title": "sessiond: subscribe — the body tells the mind when a belief changes"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1024",
|
|
"repo": "souveraine",
|
|
"run": 1024,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "5c618f1514ec091a83abf39209be49e446518c97",
|
|
"commit": "c:souveraine:5c618f15",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-07-31T21:34:52-04:00",
|
|
"completed": "2026-07-31T21:45:49-04:00",
|
|
"title": "lock: hoist the lock out of the Config.ready loaders so a reload can adopt"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1025",
|
|
"repo": "souveraine",
|
|
"run": 1025,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "86afe00dba56afe58bd062603e37a5993c7fdb6f",
|
|
"commit": "c:souveraine:86afe00d",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-07-31T21:45:50-04:00",
|
|
"completed": "2026-07-31T21:48:10-04:00",
|
|
"title": "sessiond: the power button reports edges; the machine recognises gestures"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1026",
|
|
"repo": "souveraine",
|
|
"run": 1026,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "a89556aef737443f33e070e82a5dd6bc52ae1480",
|
|
"commit": "c:souveraine:a89556ae",
|
|
"conclusion": "success",
|
|
"started": "2026-07-31T21:48:15-04:00",
|
|
"completed": "2026-07-31T22:04:22-04:00",
|
|
"title": "packaging: ship souveraine-button, the reporter that replaces the policy script"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1029",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1029,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "4c2f7d072eb24e6d216f8d5dc3e4f05114eecfdc",
|
|
"commit": "c:souveraine-viewtop:4c2f7d07",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-31T22:04:22-04:00",
|
|
"completed": "2026-07-31T22:04:37-04:00",
|
|
"title": "compositor: the kms build compiles; layer override moves to render order"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1030",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1030,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "e6555ca24163cbab0145d607b145dc24d25469e3",
|
|
"commit": "c:souveraine-viewtop:e6555ca2",
|
|
"conclusion": "failure",
|
|
"started": "2026-07-31T22:13:24-04:00",
|
|
"completed": "2026-07-31T22:14:37-04:00",
|
|
"title": "compositor: present the scene — the panel finally has a render pass"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1033",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1033,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "77b58822868e043879ea81ffb52e92aee7b9417b",
|
|
"commit": "c:souveraine-viewtop:77b58822",
|
|
"conclusion": "failure",
|
|
"started": "2026-08-01T08:20:14-04:00",
|
|
"completed": "2026-08-01T08:21:27-04:00",
|
|
"title": "compositor: keep the render loop alive after an empty frame"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1034",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1034,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "77f69a7852433e25d9a21c920a91a5b2b19de1a4",
|
|
"commit": "c:souveraine-viewtop:77f69a78",
|
|
"conclusion": "success",
|
|
"started": "2026-08-01T08:25:10-04:00",
|
|
"completed": "2026-08-01T08:26:46-04:00",
|
|
"title": "viewtop: cross-build the phone backend for real"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:1035",
|
|
"repo": "Pixel3Arch",
|
|
"run": 1035,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "85fa37213a0d943f85f831451c64975b0c50fc02",
|
|
"commit": "c:Pixel3Arch:85fa3721",
|
|
"conclusion": "failure",
|
|
"started": "2026-08-01T09:08:00-04:00",
|
|
"completed": "2026-08-01T09:08:23-04:00",
|
|
"title": "upstream: stage a DCO-signed series for the sdm845 tree"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1036",
|
|
"repo": "souveraine",
|
|
"run": 1036,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "8a2006979a547e77b4564adf82efc5e3c5e56516",
|
|
"commit": "c:souveraine:8a200697",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-08-01T14:05:31-04:00",
|
|
"completed": "2026-08-01T14:08:16-04:00",
|
|
"title": "sessiond: bearer posture as evidence and an Action (TASK-49)"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1037",
|
|
"repo": "souveraine",
|
|
"run": 1037,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "4fd3d244ab3c3e30d44ae18ea46bad9ce3520f09",
|
|
"commit": "c:souveraine:4fd3d244",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-08-01T14:08:19-04:00",
|
|
"completed": "2026-08-01T14:09:41-04:00",
|
|
"title": "sessiond: bearer posture as evidence and an Action (TASK-49)"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1038",
|
|
"repo": "souveraine",
|
|
"run": 1038,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "f6479c98a1da101adb34f946e1c4e096af0cc70a",
|
|
"commit": "c:souveraine:f6479c98",
|
|
"conclusion": "failure",
|
|
"started": "2026-08-01T14:09:41-04:00",
|
|
"completed": "2026-08-01T14:10:11-04:00",
|
|
"title": "sessiond: make home_ssids and bearer_settle settable"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1039",
|
|
"repo": "souveraine",
|
|
"run": 1039,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "0f7fe27c62a10d823c2fcf988418b3de52520305",
|
|
"commit": "c:souveraine:0f7fe27c",
|
|
"conclusion": "success",
|
|
"started": "2026-08-01T14:21:16-04:00",
|
|
"completed": "2026-08-01T14:37:20-04:00",
|
|
"title": "ci: re-run; rust-test 156 failed with all three of its commands green on 1.94"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1040",
|
|
"repo": "souveraine",
|
|
"run": 1040,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "ac084b461af60d742f36a42fd84a6733eb7a2a8c",
|
|
"commit": "c:souveraine:ac084b46",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-08-01T14:44:37-04:00",
|
|
"completed": "2026-08-01T14:58:37-04:00",
|
|
"title": "sessiond: read tunnel health from sysfs, not wg show"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1041",
|
|
"repo": "souveraine",
|
|
"run": 1041,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "7e91de195606bb9fef02ef57d4849257b14b499e",
|
|
"commit": "c:souveraine:7e91de19",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-08-01T14:58:37-04:00",
|
|
"completed": "2026-08-01T15:10:39-04:00",
|
|
"title": "sessiond: never reapply clat — it destroys the carrier's own routes"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1042",
|
|
"repo": "souveraine",
|
|
"run": 1042,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "d2f51e93de5f00ce0ecb6fb797f4155117d410aa",
|
|
"commit": "c:souveraine:d2f51e93",
|
|
"conclusion": "success",
|
|
"started": "2026-08-01T15:10:40-04:00",
|
|
"completed": "2026-08-01T15:28:03-04:00",
|
|
"title": "sessiond: a working bearer action is a decision, not an error"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:1046",
|
|
"repo": "Pixel3Arch",
|
|
"run": 1046,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "aec9f49c5d9e48f7be84ea107d3456ee010ce1ee",
|
|
"commit": "c:Pixel3Arch:aec9f49c",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T08:13:01-04:00",
|
|
"completed": "2026-08-02T08:15:07-04:00",
|
|
"title": "blueline-camera: own the userspace half of the camera stack"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1047",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1047,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "458a354a367ba9d819a85d4d722120c07b98ee89",
|
|
"commit": "c:souveraine-viewtop:458a354a",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T08:34:21-04:00",
|
|
"completed": "2026-08-02T08:36:02-04:00",
|
|
"title": "compositor: serve touch, and keep the agent out of the evidence stream"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:1048",
|
|
"repo": "Pixel3Arch",
|
|
"run": 1048,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "69435c027c990bf5e2ad7ddb66f9066a8e31ee9e",
|
|
"commit": "c:Pixel3Arch:69435c02",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-08-02T08:47:17-04:00",
|
|
"completed": "2026-08-02T08:48:52-04:00",
|
|
"title": "souveraine-callaudiod: route the in-call speaker toggle through the amps"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:1049",
|
|
"repo": "Pixel3Arch",
|
|
"run": 1049,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "102517dc4a5098af107839b9f28dc83de5588eaa",
|
|
"commit": "c:Pixel3Arch:102517dc",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T08:48:58-04:00",
|
|
"completed": "2026-08-02T08:52:29-04:00",
|
|
"title": "souveraine-callaudiod: pin the glib mkenums pair to host natives"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1050",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1050,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "0940c11a0a40be40ae17d940f854c86f6e350425",
|
|
"commit": "c:souveraine-viewtop:0940c11a",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T08:54:33-04:00",
|
|
"completed": "2026-08-02T08:57:49-04:00",
|
|
"title": "docs: the touch fork, and what hardware has not seen yet"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:1051",
|
|
"repo": "Pixel3Arch",
|
|
"run": 1051,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "47aadeeb60c5fd6d4fc08c38b88440462e533e2d",
|
|
"commit": "c:Pixel3Arch:47aadeeb",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T08:57:49-04:00",
|
|
"completed": "2026-08-02T09:00:58-04:00",
|
|
"title": "packages: publish souveraine-callaudiod and blueline-camera"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1052",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1052,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "f1118b89897e299d9d18d65ab76f0694b10ee854",
|
|
"commit": "c:souveraine-viewtop:f1118b89",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T09:24:18-04:00",
|
|
"completed": "2026-08-02T09:25:57-04:00",
|
|
"title": "compositor: put a client's pixels on the panel"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1053",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1053,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "9d2f41e0f2feffaec9b2a236cb3b801bd13aef3c",
|
|
"commit": "c:souveraine-viewtop:9d2f41e0",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T09:31:03-04:00",
|
|
"completed": "2026-08-02T09:32:43-04:00",
|
|
"title": "compositor: ask disclosure_locked before drawing the session"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1054",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1054,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "68ed7c3306a0276c45a9ae7ac2ce6dfb4cba2b20",
|
|
"commit": "c:souveraine-viewtop:68ed7c33",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T09:46:25-04:00",
|
|
"completed": "2026-08-02T09:48:06-04:00",
|
|
"title": "compositor: serve the idle chain, fractional scale, and the OSK's halves"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1055",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1055,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "6925b34e02c45409045d8b7752768d9b3b38bae7",
|
|
"commit": "c:souveraine-viewtop:6925b34e",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T09:49:29-04:00",
|
|
"completed": "2026-08-02T09:51:12-04:00",
|
|
"title": "compositor: serve input-method-v2, so the keyboard can answer"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1056",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1056,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "eefbdfb90bbc16f6a8d72dc7fd033273a5874812",
|
|
"commit": "c:souveraine-viewtop:eefbdfb9",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T10:28:51-04:00",
|
|
"completed": "2026-08-02T10:30:32-04:00",
|
|
"title": "kms: keep the libseat notifier, or the seat dies with this function"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1057",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1057,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "2bf8d26dd3af1aa4018416d34ab081436337d0c0",
|
|
"commit": "c:souveraine-viewtop:2bf8d26d",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T10:32:16-04:00",
|
|
"completed": "2026-08-02T10:33:58-04:00",
|
|
"title": "viewtop: follow the authority, instead of freezing its first answer"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1058",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1058,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "86201bfa6c724ab8df0a7eb3575e1d7cb33e14c2",
|
|
"commit": "c:souveraine-viewtop:86201bfa",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T10:57:38-04:00",
|
|
"completed": "2026-08-02T10:59:19-04:00",
|
|
"title": "viewtop: do not claim the shell lease it is not filling"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1059",
|
|
"repo": "souveraine",
|
|
"run": 1059,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "870d88210b0dc4f75736f396574e38a4926dd22e",
|
|
"commit": "c:souveraine:870d8821",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-08-02T11:15:50-04:00",
|
|
"completed": "2026-08-02T11:24:48-04:00",
|
|
"title": "shell: wait longer for shell_ready than sessiond takes to answer it"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1060",
|
|
"repo": "souveraine",
|
|
"run": 1060,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "5edf0c410eb1554b4b097b09d66c512e85681cc5",
|
|
"commit": "c:souveraine:5edf0c41",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T11:24:53-04:00",
|
|
"completed": "2026-08-02T11:41:09-04:00",
|
|
"title": "sessiond: create lock surfaces before the verdict, not after it"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1061",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1061,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "1ce53079ddd63343bec6e2954f6a73e4f630f121",
|
|
"commit": "c:souveraine-viewtop:1ce53079",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T12:37:31-04:00",
|
|
"completed": "2026-08-02T12:39:15-04:00",
|
|
"title": "compositor: say why a client disconnected"
|
|
},
|
|
{
|
|
"id": "ci:smithay:1062",
|
|
"repo": "smithay",
|
|
"run": 1062,
|
|
"workflow": "souveraine",
|
|
"branch": "souveraine",
|
|
"sha": "8772275843119cc5dd86e2e2674b6e47d040ac4b",
|
|
"commit": "c:smithay:87722758",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T12:55:09-04:00",
|
|
"completed": "2026-08-02T12:56:42-04:00",
|
|
"title": "wlr-layer-shell: do not validate a role the client already destroyed"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1063",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1063,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "9084ce7f708c5b1fe2321b2f7302ef366355ec53",
|
|
"commit": "c:souveraine-viewtop:9084ce7f",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T12:58:56-04:00",
|
|
"completed": "2026-08-02T13:00:40-04:00",
|
|
"title": "deps: fork smithay for the layer-shell teardown kill"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1064",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1064,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "9c6ad0501fa0a9ae040f5cd8911d58339c07ce41",
|
|
"commit": "c:souveraine-viewtop:9c6ad050",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T13:17:49-04:00",
|
|
"completed": "2026-08-02T13:19:32-04:00",
|
|
"title": "compositor: ext-data-control, xdg-activation, single-pixel-buffer"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1065",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1065,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "1959bda40c5706e867d127cab4fb1eec1cef0a54",
|
|
"commit": "c:souveraine-viewtop:1959bda4",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T13:41:42-04:00",
|
|
"completed": "2026-08-02T13:43:25-04:00",
|
|
"title": "compositor: give someone the keyboard"
|
|
},
|
|
{
|
|
"id": "ci:smithay:1066",
|
|
"repo": "smithay",
|
|
"run": 1066,
|
|
"workflow": "souveraine",
|
|
"branch": "souveraine",
|
|
"sha": "403a3d07af91ede19fef58cfd04a78417733fd7f",
|
|
"commit": "c:smithay:403a3d07",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T13:50:15-04:00",
|
|
"completed": "2026-08-02T13:50:23-04:00",
|
|
"title": "session-lock: tolerate a bufferless commit before the first ack"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1067",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1067,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "48ef2e2132ddcb77e9de1ff368689923640a18a5",
|
|
"commit": "c:souveraine-viewtop:48ef2e21",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T13:51:53-04:00",
|
|
"completed": "2026-08-02T13:53:37-04:00",
|
|
"title": "deps: smithay 403a3d0 — the lock surface Qt commits before acking"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1068",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1068,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "bceb0ac173b9ca6d2a051eca61334255c796880c",
|
|
"commit": "c:souveraine-viewtop:bceb0ac1",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T13:59:46-04:00",
|
|
"completed": "2026-08-02T14:01:30-04:00",
|
|
"title": "compositor: window geometry, and who is allowed to ask for it"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1069",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1069,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "bb0920632db410f457689314b7c597fc85c2537c",
|
|
"commit": "c:souveraine-viewtop:bb092063",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T14:02:43-04:00",
|
|
"completed": "2026-08-02T14:04:26-04:00",
|
|
"title": "docs: the day viewtop became the session"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1070",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1070,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "789776d92cd207176a3aa2630282712e2ec2f92c",
|
|
"commit": "c:souveraine-viewtop:789776d9",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T14:41:01-04:00",
|
|
"completed": "2026-08-02T14:42:45-04:00",
|
|
"title": "compositor: scale, the arrange that never ran, and the buttons"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1071",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1071,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "d3f888583a5c4e0646f83a304e791e07505ae6c7",
|
|
"commit": "c:souveraine-viewtop:d3f88858",
|
|
"conclusion": "failure",
|
|
"started": "2026-08-02T15:02:16-04:00",
|
|
"completed": "2026-08-02T15:03:57-04:00",
|
|
"title": "compositor: a control socket, and the panel it lets the authority turn off"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1072",
|
|
"repo": "souveraine",
|
|
"run": 1072,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "94988138b43ea1baa36618d80f513bf492ab3613",
|
|
"commit": "c:souveraine:94988138",
|
|
"conclusion": "failure",
|
|
"started": "2026-08-02T15:27:04-04:00",
|
|
"completed": "2026-08-02T15:29:20-04:00",
|
|
"title": "lock hint: resolve the seat's session, and replay the report"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1073",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1073,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "d82569b3e031b14fa62738febd3e47f17836fd12",
|
|
"commit": "c:souveraine-viewtop:d82569b3",
|
|
"conclusion": "failure",
|
|
"started": "2026-08-02T15:38:06-04:00",
|
|
"completed": "2026-08-02T15:39:07-04:00",
|
|
"title": "compositor: serve wlr foreign-toplevel, so the shell can see windows"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1074",
|
|
"repo": "souveraine",
|
|
"run": 1074,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "106c3bb680725036fde1acc91df7b2eaf2f9472d",
|
|
"commit": "c:souveraine:106c3bb6",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T15:44:49-04:00",
|
|
"completed": "2026-08-02T16:02:06-04:00",
|
|
"title": "lockhint: say so when the session can never hold a lock hint"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1075",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1075,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "cadc4662e593fc21248bb8a36fad7a22d7e1be71",
|
|
"commit": "c:souveraine-viewtop:cadc4662",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T15:45:57-04:00",
|
|
"completed": "2026-08-02T15:49:01-04:00",
|
|
"title": "docs: the scale, the panel, the window list, and the invariant that was not held"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1076",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1076,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "284fbcc9da71d57905c2041e0e86283c098f6af4",
|
|
"commit": "c:souveraine-viewtop:284fbcc9",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T16:02:06-04:00",
|
|
"completed": "2026-08-02T16:03:55-04:00",
|
|
"title": "compositor: report LockedHint, because nothing else could do it correctly"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1077",
|
|
"repo": "souveraine",
|
|
"run": 1077,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "b45fb705db12e2de47b573423f5299bbd2648892",
|
|
"commit": "c:souveraine:b45fb705",
|
|
"conclusion": "cancelled",
|
|
"started": "2026-08-02T17:29:45-04:00",
|
|
"completed": "2026-08-02T17:36:50-04:00",
|
|
"title": "sessiond: the machine can wake the panel, and so can she"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1079",
|
|
"repo": "souveraine",
|
|
"run": 1079,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "1f1fc5c7ddd3e4bb64f04083697afb73fac087bd",
|
|
"commit": "c:souveraine:1f1fc5c7",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T17:36:53-04:00",
|
|
"completed": "2026-08-02T17:53:43-04:00",
|
|
"title": "sessiond: put the panel doc comments back on their own functions"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1078",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1078,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "31a9ef8926d7ca182369b4869c308953ba83f3de",
|
|
"commit": "c:souveraine-viewtop:31a9ef89",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T17:36:58-04:00",
|
|
"completed": "2026-08-02T17:39:32-04:00",
|
|
"title": "compositor: report wakes, do not perform them"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1080",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1080,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "276bb3ef8bf20f6126e9c80fd783687275248a83",
|
|
"commit": "c:souveraine-viewtop:276bb3ef",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T17:53:43-04:00",
|
|
"completed": "2026-08-02T17:55:32-04:00",
|
|
"title": "compositor: hang the door — every scene intent now reaches the compositor"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1081",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1081,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "247bf88a2640b18bc8b1804f5165021209994754",
|
|
"commit": "c:souveraine-viewtop:247bf88a",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T18:26:28-04:00",
|
|
"completed": "2026-08-02T18:28:18-04:00",
|
|
"title": "compositor: serve screen capture, asked at every frame"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1082",
|
|
"repo": "souveraine",
|
|
"run": 1082,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "266af98a99bb2ab3d86115a340e0060b461ab2da",
|
|
"commit": "c:souveraine:266af98a",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T18:28:53-04:00",
|
|
"completed": "2026-08-02T18:46:52-04:00",
|
|
"title": "sessiond: double-tap-to-wake wakes, and the volume keys work again"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1083",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1083,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "0611b88d1b18b32ea55b18bef088e3c88253a8cc",
|
|
"commit": "c:souveraine-viewtop:0611b88d",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T18:31:55-04:00",
|
|
"completed": "2026-08-02T18:33:49-04:00",
|
|
"title": "compositor: recognise multi-finger gestures"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1084",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1084,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "1fa1ea14b9a3c572b83c0535435677cf401c87ab",
|
|
"commit": "c:souveraine-viewtop:1fa1ea14",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T19:10:54-04:00",
|
|
"completed": "2026-08-02T19:12:43-04:00",
|
|
"title": "compositor: a completed unlock must not leave a black screen"
|
|
},
|
|
{
|
|
"id": "ci:Pixel3Arch:1085",
|
|
"repo": "Pixel3Arch",
|
|
"run": 1085,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "50947d0a4b1d5502880444c4a9f6c7050bc657d2",
|
|
"commit": "c:Pixel3Arch:50947d0a",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T19:12:43-04:00",
|
|
"completed": "2026-08-02T19:14:44-04:00",
|
|
"title": "usb-gadget: ship the tether config as a package, because the overlay never arrived"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1087",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1087,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "da1c7a01cb232f7ef52b5a9b8c3b9586927282ad",
|
|
"commit": "c:souveraine-viewtop:da1c7a01",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T22:02:58-04:00",
|
|
"completed": "2026-08-02T22:04:48-04:00",
|
|
"title": "compositor: tile windows instead of stacking them"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1088",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1088,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "a4a96d3eff59f9f1ea3f90991e2e698dbd05ad8e",
|
|
"commit": "c:souveraine-viewtop:a4a96d3e",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T22:09:57-04:00",
|
|
"completed": "2026-08-02T22:11:46-04:00",
|
|
"title": "compositor: three fingers float a window out of the layout"
|
|
},
|
|
{
|
|
"id": "ci:souveraine:1089",
|
|
"repo": "souveraine",
|
|
"run": 1089,
|
|
"workflow": "primary",
|
|
"branch": "primary",
|
|
"sha": "8c7567e4191aae8d2816f75007805d70df4a42ac",
|
|
"commit": "c:souveraine:8c7567e4",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T22:20:27-04:00",
|
|
"completed": "2026-08-02T22:38:25-04:00",
|
|
"title": "sessiond: the press that wakes the panel must not also blank it"
|
|
},
|
|
{
|
|
"id": "ci:souveraine-viewtop:1090",
|
|
"repo": "souveraine-viewtop",
|
|
"run": 1090,
|
|
"workflow": "main",
|
|
"branch": "main",
|
|
"sha": "ba4bd030b28bf607b929223b9855b39563461a99",
|
|
"commit": "c:souveraine-viewtop:ba4bd030",
|
|
"conclusion": "success",
|
|
"started": "2026-08-02T22:23:25-04:00",
|
|
"completed": "2026-08-02T22:25:15-04:00",
|
|
"title": "compositor: windows resize when the keyboard takes their room"
|
|
}
|
|
],
|
|
"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": -14,
|
|
"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": -14,
|
|
"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": -14,
|
|
"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": -11,
|
|
"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": -11,
|
|
"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": -11,
|
|
"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": 5,
|
|
"opened_this_week": true,
|
|
"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": 17,
|
|
"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": 8,
|
|
"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": true,
|
|
"age_days": 5,
|
|
"url": "https://gitea.wiuf.net/Fimeg/Pixel3Arch/releases/tag/kernel-latest"
|
|
}
|
|
],
|
|
"declared": [
|
|
{
|
|
"id": "d:task-2",
|
|
"kind": "task-index",
|
|
"task": "2",
|
|
"title": "Lockscreen-as-Rust-system",
|
|
"file": "02-lockscreen-rust-system.md",
|
|
"change": "moved",
|
|
"detail": "Index → In progress",
|
|
"section": "In progress",
|
|
"was": "in progress | stopgap shipped 2026-07-17",
|
|
"now": "sessiond's fallback should render the glance, not a second PIN pad. Stopgap shipped 07-17.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-3",
|
|
"kind": "task-index",
|
|
"task": "3",
|
|
"title": "Boot timing: splash → lock",
|
|
"file": "03-boot-timing-splash-to-lock.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "diagnosed | EBUSY handoff race is the last timing bug; splash text killed, holder added",
|
|
"now": "The EBUSY handoff race is the last timing bug. Splash text killed, holder added.",
|
|
"dimension": "unassigned"
|
|
},
|
|
{
|
|
"id": "d:task-7",
|
|
"kind": "task-index",
|
|
"task": "7",
|
|
"title": "WCD9340 mic",
|
|
"file": "07-mic-wcd9340-slim-tx.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "functional 07-20 | defect: power pin; kernel `mic-race-fix`",
|
|
"now": "Functional since 07-20. One defect: the power pin that makes it work. Kernel branch `mic-race-fix`.",
|
|
"dimension": "unassigned"
|
|
},
|
|
{
|
|
"id": "d:task-8",
|
|
"kind": "task-index",
|
|
"task": "8",
|
|
"title": "Device state manager / power profiles",
|
|
"file": "08-device-state-manager.md",
|
|
"change": "moved",
|
|
"detail": "Index → In progress",
|
|
"section": "In progress",
|
|
"was": "actuating 07-25 | clock + actuators; lock-before-blank is an invariant and hypridle's listeners are deleted; (b) charge real, (c)(d) open, **(e) lease still missing**, **(f) `sensors_degraded` reaches no surface**, **(g) the confidence gates need a decision before code**",
|
|
"now": "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.",
|
|
"dimension": "identity"
|
|
},
|
|
{
|
|
"id": "d:task-9",
|
|
"kind": "task-index",
|
|
"task": "9",
|
|
"title": "Suspend-resume FTS calibration race",
|
|
"file": "09-suspend-resume-fts.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "interim-fix | kernel-side; cold-boot only",
|
|
"now": "Kernel-side real fix; interim fix shipped. Cold-boot only.",
|
|
"dimension": "unassigned"
|
|
},
|
|
{
|
|
"id": "d:task-12",
|
|
"kind": "task-index",
|
|
"task": "12",
|
|
"title": "Face auth as a capability factor",
|
|
"file": "12-gaze-reference-face-auth.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "open | per-target: phone needs front-cam bring-up",
|
|
"now": "Per-target. Phone needs front-camera bring-up — **that is TASK-46's IMX355 half.**",
|
|
"dimension": "sensorium"
|
|
},
|
|
{
|
|
"id": "d:task-13",
|
|
"kind": "task-index",
|
|
"task": "13",
|
|
"title": "Active Edge (squeeze) as a sensor input",
|
|
"file": "13-active-edge-squeeze.md",
|
|
"change": "delisted",
|
|
"detail": "Index",
|
|
"section": "Index",
|
|
"was": "open, wanted | rail is UP and held from boot (07-26); step 2 now blocked on TASK-34 (SLPI doorbell)",
|
|
"now": null,
|
|
"dimension": "sensorium"
|
|
},
|
|
{
|
|
"id": "d:task-14",
|
|
"kind": "task-index",
|
|
"task": "14",
|
|
"title": "Overview → phone app grid",
|
|
"file": "14-overview-appgrid.md",
|
|
"change": "moved",
|
|
"detail": "Index → In progress",
|
|
"section": "In progress",
|
|
"was": "in progress | shell-side; Home path + app cards",
|
|
"now": "Paged app grid replacing the desktop workspace pane; Auxo-style running cards; unconditional Home path.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-15",
|
|
"kind": "task-index",
|
|
"task": "15",
|
|
"title": "Idle coordinator",
|
|
"file": "15-idle-coordinator.md",
|
|
"change": "moved",
|
|
"detail": "Index → Blocked or gated",
|
|
"section": "Blocked or gated",
|
|
"was": "blocked | freezing `app.slice` would freeze sessiond+shell+secrets; needs slice separation first (measured 07-25)",
|
|
"now": "Freezing `app.slice` would freeze sessiond, shell and secrets. Needs slice separation first (measured 07-25).",
|
|
"dimension": "identity"
|
|
},
|
|
{
|
|
"id": "d:task-16",
|
|
"kind": "task-index",
|
|
"task": "16",
|
|
"title": "culver: messenger + contacts",
|
|
"file": "16-culver-messenger-contacts.md",
|
|
"change": "moved",
|
|
"detail": "Index → In progress",
|
|
"section": "In progress",
|
|
"was": "in progress | A/B/D landed; C contact card next; F is the folded-in TASK-01",
|
|
"now": "A/B/D landed. C (contact card) builds and awaits phone acceptance. F is the folded-in TASK-01.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-17",
|
|
"kind": "task-index",
|
|
"task": "17",
|
|
"title": "Keyboard + dictation polish",
|
|
"file": "17-keyboard-stevia-dictation.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "shipped-partial | OSK + mic key + STT live; **no word completion** — stevia asks hunspell for `en-us`, the dict is `en_US` (07-25)",
|
|
"now": "No word completion (stevia asks hunspell for `en-us`, the dict is `en_US`); no recording indicator on the mic key. The layout half moved to TASK-24. **TTS now exists** (`10.10.20.123:7863`) — the settings field can be filled.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-18",
|
|
"kind": "task-index",
|
|
"task": "18",
|
|
"title": "Selection/highlight action menu",
|
|
"file": "18-selection-menu.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "open | design captured 07-21; component-first, Read Aloud gated on TTS server",
|
|
"now": "Component first, fluid before functional. **Read Aloud is unblocked** — TTS is live.",
|
|
"dimension": "unassigned"
|
|
},
|
|
{
|
|
"id": "d:task-19",
|
|
"kind": "task-index",
|
|
"task": "19",
|
|
"title": "First-party Settings control center",
|
|
"file": "19-settings-control-center.md",
|
|
"change": "moved",
|
|
"detail": "Index → In progress",
|
|
"section": "In progress",
|
|
"was": "in progress | guarded standalone launch + owned pages; absorbed TASK-22's polish sweep",
|
|
"now": "State-machine + source-health readout **built 2026-07-31**, unverified on glass. 34 and 42's layer 3 still surface here.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-20",
|
|
"kind": "task-index",
|
|
"task": "20",
|
|
"title": "Player: video + agent control",
|
|
"file": "20-player-video-agent.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "open | video/snapshot/manifest; preserve music",
|
|
"now": "Video, snapshot, manifest. Preserve the music path.",
|
|
"dimension": "release"
|
|
},
|
|
{
|
|
"id": "d:task-21",
|
|
"kind": "task-index",
|
|
"task": "21",
|
|
"title": "Reboot-to-Android confirmation",
|
|
"file": "21-reboot-android-confirmation.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "open | scoped 07-22; one-tap irreversible slot flip still bare in app search",
|
|
"now": "Scoped 07-22. A one-tap irreversible slot flip still sits bare in app search.",
|
|
"dimension": "unassigned"
|
|
},
|
|
{
|
|
"id": "d:task-23",
|
|
"kind": "task-index",
|
|
"task": "23",
|
|
"title": "culver locked-notification nudge",
|
|
"file": "23-culver-locked-notification-nudge.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "open | designed 07-22; needs `SyncBurst()` + IdleCoordinator schedule",
|
|
"now": "Needs `SyncBurst()` + an IdleCoordinator schedule (TASK-15).",
|
|
"dimension": "federation"
|
|
},
|
|
{
|
|
"id": "d:task-24",
|
|
"kind": "task-index",
|
|
"task": "24",
|
|
"title": "Keyboard layout rethink",
|
|
"file": "24-keyboard-layout-rethink.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "open | start from squeekboard `us+apple`; Casey decides where the mic key goes",
|
|
"now": "Redesign from scratch, not more patches. Start from squeekboard `us+apple`. Casey decides where the mic key goes.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-25",
|
|
"kind": "task-index",
|
|
"task": "25",
|
|
"title": "One repo, all packages",
|
|
"file": "25-one-repo-all-packages.md",
|
|
"change": "moved",
|
|
"detail": "Index → Blocked or gated",
|
|
"section": "Blocked or gated",
|
|
"was": "parked 07-25 | four blockers before `repo-add --sign`; see also TASK-27",
|
|
"now": "Parked 07-25 — four blockers before `repo-add --sign`. See TASK-27.",
|
|
"dimension": "release"
|
|
},
|
|
{
|
|
"id": "d:task-27",
|
|
"kind": "task-index",
|
|
"task": "27",
|
|
"title": "Gitea pipeline audit",
|
|
"file": "27-gitea-pipeline-audit.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "open | overlay is not a package; no `primary` branch; poisoned build sysroot",
|
|
"now": "The fixes. Overlay is not a package; no `primary` branch; poisoned build sysroot.",
|
|
"dimension": "release"
|
|
},
|
|
{
|
|
"id": "d:task-28",
|
|
"kind": "task-index",
|
|
"task": "28",
|
|
"title": "Handover on upgrade",
|
|
"file": "28-upgrade-handover.md",
|
|
"change": "moved",
|
|
"detail": "Index → Blocked or gated",
|
|
"section": "Blocked or gated",
|
|
"was": "open | half-upgrades move authority silently; blocked-by TASK-27 packaging",
|
|
"now": "TASK-27's packaging. Also owns TASK-13's outstanding cold-boot handshake check.",
|
|
"dimension": "unassigned"
|
|
},
|
|
{
|
|
"id": "d:task-29",
|
|
"kind": "task-index",
|
|
"task": "29",
|
|
"title": "SouveraineOS Updater",
|
|
"file": "29-souveraine-updater.md",
|
|
"change": "moved",
|
|
"detail": "Index → Live",
|
|
"section": "Live",
|
|
"was": "started 07-25 | rust rewrite of pachub; doesn't build yet; first repo to build *into* the pipeline",
|
|
"now": "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.",
|
|
"dimension": "adoption"
|
|
},
|
|
{
|
|
"id": "d:task-30",
|
|
"kind": "task-index",
|
|
"task": "30",
|
|
"title": "Agent reach: verb tables",
|
|
"file": "30-agent-reach-verb-tables.md",
|
|
"change": "moved",
|
|
"detail": "Index → In progress",
|
|
"section": "In progress",
|
|
"was": "half built 07-26 | sessiond has describe + refusal codes + intent; dock/apps/shell/settings do not",
|
|
"now": "sessiond has describe + refusal codes + intent. Dock, apps, shell and settings do not. One session per surface.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-31",
|
|
"kind": "task-index",
|
|
"task": "31",
|
|
"title": "The radial dial",
|
|
"file": "31-radial-dial.md",
|
|
"change": "moved",
|
|
"detail": "Index → In progress",
|
|
"section": "In progress",
|
|
"was": "open | component before contents; entries come from the verb tables, not a list in QML",
|
|
"now": "Component, gestures and squeeze invocation are live. **Entries are still a list in `DialHost.qml`** — they must come from the verb tables.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-32",
|
|
"kind": "task-index",
|
|
"task": "32",
|
|
"title": "Pill and keyboard as owned apps",
|
|
"file": "32-pill-and-osk-as-apps.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "open | both erroneous daily; neither has an owner or a shipping story",
|
|
"now": "Both erroneous daily; neither has an owner or a shipping story.",
|
|
"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": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "open | last raw feed going straight to the glass; the charge ceiling is writable today",
|
|
"now": "Last raw feed going straight to the glass. The charge ceiling is writable today.",
|
|
"dimension": "sensorium"
|
|
},
|
|
{
|
|
"id": "d:task-34",
|
|
"kind": "task-index",
|
|
"task": "34",
|
|
"title": "SLPI FastRPC session wedge",
|
|
"file": "34-slpi-bringup-sequencing.md",
|
|
"change": "moved",
|
|
"detail": "Index → Open",
|
|
"section": "Open",
|
|
"was": "open | old sequencing error; doorbell dies on SSR and stays dead; blocks TASK-13 step 2",
|
|
"now": "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.**",
|
|
"dimension": "sensorium"
|
|
},
|
|
{
|
|
"id": "d:task-35",
|
|
"kind": "task-index",
|
|
"task": "35",
|
|
"title": "sessiond answers nothing: handler threads park forever",
|
|
"file": "35-sessiond-handler-deadlock.md",
|
|
"change": "delisted",
|
|
"detail": "Index",
|
|
"section": "Index",
|
|
"was": "**open, live** | 347 threads in futex_wait, 691/1024 fds; accept loop fine, no request ever answered",
|
|
"now": null,
|
|
"dimension": "identity"
|
|
},
|
|
{
|
|
"id": "d:task-36",
|
|
"kind": "task-index",
|
|
"task": "36",
|
|
"title": "CHRE nanoapp host for the SLPI",
|
|
"file": "36-chre-nanoapp-host.md",
|
|
"change": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "Three methods to add; method table recovered 07-27. No longer on grip's critical path — wanted for DozeDeep detection and `elmyra_haptics_control`.",
|
|
"dimension": "sensorium"
|
|
},
|
|
{
|
|
"id": "d:task-37",
|
|
"kind": "task-index",
|
|
"task": "37",
|
|
"title": "\"Back\" as a first-class verb",
|
|
"file": "37-navigation-back-verb.md",
|
|
"change": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "Our `Gestures.qml` is already the compositor half; `can_go_back` is the dial's enabled/reason.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"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": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "Micro. The only route to a terminal keyboard since stevia dropped its layout.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-39",
|
|
"kind": "task-index",
|
|
"task": "39",
|
|
"title": "Audio levels as tracked state",
|
|
"file": "39-audio-levels-as-state.md",
|
|
"change": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "Defaults + roles, **not** a save bug — WirePlumber persistence measured working 07-28. Do not add a second writer.",
|
|
"dimension": "sensorium"
|
|
},
|
|
{
|
|
"id": "d:task-40",
|
|
"kind": "task-index",
|
|
"task": "40",
|
|
"title": "Inference tiering for the sensors",
|
|
"file": "40-inference-tiering-sensors.md",
|
|
"change": "listed",
|
|
"detail": "Blocked or gated",
|
|
"section": "Blocked or gated",
|
|
"was": null,
|
|
"now": "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.",
|
|
"dimension": "runtime"
|
|
},
|
|
{
|
|
"id": "d:task-41",
|
|
"kind": "task-index",
|
|
"task": "41",
|
|
"title": "Producers must be attested",
|
|
"file": "41-attested-producers.md",
|
|
"change": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "Design first. Demonstrated live 07-28 — a squeeze and a dial-open both accepted from an SSH shell.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-42",
|
|
"kind": "task-index",
|
|
"task": "42",
|
|
"title": "Build outcomes are invisible",
|
|
"file": "42-build-outcomes-are-invisible.md",
|
|
"change": "listed",
|
|
"detail": "In progress",
|
|
"section": "In progress",
|
|
"was": null,
|
|
"now": "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.",
|
|
"dimension": "unassigned"
|
|
},
|
|
{
|
|
"id": "d:task-43",
|
|
"kind": "task-index",
|
|
"task": "43",
|
|
"title": "viewtop: the Souveraine compositor",
|
|
"file": "43-viewtop-compositor.md",
|
|
"change": "listed",
|
|
"detail": "Live",
|
|
"section": "Live",
|
|
"was": null,
|
|
"now": "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.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-44",
|
|
"kind": "task-index",
|
|
"task": "44",
|
|
"title": "Fingerprint (FPC1020)",
|
|
"file": "44-fingerprint-fpc1020.md",
|
|
"change": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "Piece 1 (wake source / input) is a session — DT + shim already extracted. Piece 2 (biometrics) is a TrustZone question, answer it before scheduling it.",
|
|
"dimension": "sensorium"
|
|
},
|
|
{
|
|
"id": "d:task-45",
|
|
"kind": "task-index",
|
|
"task": "45",
|
|
"title": "Haptics (CS40L20)",
|
|
"file": "45-haptics-cs40l20.md",
|
|
"change": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "**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.",
|
|
"dimension": "sensorium"
|
|
},
|
|
{
|
|
"id": "d:task-46",
|
|
"kind": "task-index",
|
|
"task": "46",
|
|
"title": "Camera: **the front camera works**",
|
|
"file": "46-camera-imx363.md",
|
|
"change": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "**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.",
|
|
"dimension": "runtime"
|
|
},
|
|
{
|
|
"id": "d:task-47",
|
|
"kind": "task-index",
|
|
"task": "47",
|
|
"title": "Auto-brightness: anchors, none of it built",
|
|
"file": "47-auto-brightness-anchors.md",
|
|
"change": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "§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.",
|
|
"dimension": "sensorium"
|
|
},
|
|
{
|
|
"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": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "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.**",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-50",
|
|
"kind": "task-index",
|
|
"task": "50",
|
|
"title": "Her hand on the glass",
|
|
"file": "50-agent-hand-on-the-glass.md",
|
|
"change": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "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.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-51",
|
|
"kind": "task-index",
|
|
"task": "51",
|
|
"title": "viewtop to daily driver",
|
|
"file": "51-viewtop-to-daily-driver.md",
|
|
"change": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "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.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:task-52",
|
|
"kind": "task-index",
|
|
"task": "52",
|
|
"title": "Atmosphere",
|
|
"file": "52-atmosphere.md",
|
|
"change": "listed",
|
|
"detail": "Open",
|
|
"section": "Open",
|
|
"was": null,
|
|
"now": "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.",
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:docs/DEVICE-STATE-MACHINE.md",
|
|
"kind": "document",
|
|
"file": "docs/DEVICE-STATE-MACHINE.md",
|
|
"change": "revised",
|
|
"detail": "1 commit(s)",
|
|
"commits": [
|
|
"b24963a"
|
|
],
|
|
"subjects": [
|
|
"device-state §12: manual brightness override is anchors, not a bias"
|
|
],
|
|
"dimension": "sensorium"
|
|
},
|
|
{
|
|
"id": "d:docs/DUMP-keyboards-2026-07-29.md",
|
|
"kind": "document",
|
|
"file": "docs/DUMP-keyboards-2026-07-29.md",
|
|
"change": "added",
|
|
"detail": "2 commit(s)",
|
|
"commits": [
|
|
"e421975",
|
|
"daad100"
|
|
],
|
|
"subjects": [
|
|
"dump 07-29: status — section 8 closed, grip answered, pkgs/ has no CI",
|
|
"docs: session dump — squeekboard /usr/local prefix regression, pill lift across OSK swap, TASK-38 consolidation"
|
|
],
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:docs/DUMP-packages-publish-2026-07-30.md",
|
|
"kind": "document",
|
|
"file": "docs/DUMP-packages-publish-2026-07-30.md",
|
|
"change": "added",
|
|
"detail": "1 commit(s)",
|
|
"commits": [
|
|
"ee68f5b"
|
|
],
|
|
"subjects": [
|
|
"mark package stranding resolved (TASK-25)"
|
|
],
|
|
"dimension": "release"
|
|
},
|
|
{
|
|
"id": "d:docs/LOCK-DPMS-LESSONS.md",
|
|
"kind": "document",
|
|
"file": "docs/LOCK-DPMS-LESSONS.md",
|
|
"change": "revised",
|
|
"detail": "3 commit(s)",
|
|
"commits": [
|
|
"b2ce5d7",
|
|
"2e77669",
|
|
"0f2f1a9"
|
|
],
|
|
"subjects": [
|
|
"lock-dpms: waking is the machine's, and the compositor must not do it itself",
|
|
"lock-dpms: the compositor reports LockedHint now, and the ordering is verified",
|
|
"lock-dpms: the ordering invariant held in the code and not on the device"
|
|
],
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:docs/SECURITY-AUDIT.md",
|
|
"kind": "document",
|
|
"file": "docs/SECURITY-AUDIT.md",
|
|
"change": "revised",
|
|
"detail": "1 commit(s)",
|
|
"commits": [
|
|
"be4ceed"
|
|
],
|
|
"subjects": [
|
|
"task-44: the TA clears the latch, and the sensor does not free-run"
|
|
],
|
|
"dimension": "sensorium"
|
|
},
|
|
{
|
|
"id": "d:docs/SHELL-SURFACES.md",
|
|
"kind": "document",
|
|
"file": "docs/SHELL-SURFACES.md",
|
|
"change": "added",
|
|
"detail": "2 commit(s)",
|
|
"commits": [
|
|
"012e4e1",
|
|
"66dbb60"
|
|
],
|
|
"subjects": [
|
|
"docs: subconscious surface is hosted",
|
|
"docs: add SHELL-SURFACES.md — the migration checklist"
|
|
],
|
|
"dimension": "reflection"
|
|
},
|
|
{
|
|
"id": "d:docs/VIEWTOP-AND-DENIAL.md",
|
|
"kind": "document",
|
|
"file": "docs/VIEWTOP-AND-DENIAL.md",
|
|
"change": "added",
|
|
"detail": "1 commit(s)",
|
|
"commits": [
|
|
"0100fa3"
|
|
],
|
|
"subjects": [
|
|
"viewtop: assess denial as the base; the lock model is the one thing we cannot take"
|
|
],
|
|
"dimension": "surface"
|
|
},
|
|
{
|
|
"id": "d:docs/substrate/VPN-WIUF.md",
|
|
"kind": "document",
|
|
"file": "docs/substrate/VPN-WIUF.md",
|
|
"change": "added",
|
|
"detail": "2 commit(s)",
|
|
"commits": [
|
|
"25bb99c",
|
|
"051da9e"
|
|
],
|
|
"subjects": [
|
|
"VPN: correct the port, the peer, and the keepalive",
|
|
"docs: Wiuf VPN — phone split-tunnel + semi-intelligent gate"
|
|
],
|
|
"dimension": "runtime"
|
|
}
|
|
],
|
|
"index": {
|
|
"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."
|
|
},
|
|
"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."
|
|
},
|
|
"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."
|
|
},
|
|
"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": "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.**"
|
|
},
|
|
"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 since 07-20. One defect: the power pin that makes it work. 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": "Keyboard + dictation polish",
|
|
"file": "17-keyboard-stevia-dictation.md",
|
|
"left": "No word completion (stevia asks hunspell for `en-us`, the dict is `en_US`); no recording indicator on the mic key. The layout half moved to TASK-24. **TTS now exists** (`10.10.20.123:7863`) — the settings field can be filled."
|
|
},
|
|
"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)."
|
|
},
|
|
"24": {
|
|
"section": "Open",
|
|
"title": "Keyboard layout rethink",
|
|
"file": "24-keyboard-layout-rethink.md",
|
|
"left": "Redesign from scratch, not more patches. Start from squeekboard `us+apple`. Casey decides where the mic key goes."
|
|
},
|
|
"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."
|
|
},
|
|
"32": {
|
|
"section": "Open",
|
|
"title": "Pill and keyboard as owned apps",
|
|
"file": "32-pill-and-osk-as-apps.md",
|
|
"left": "Both erroneous daily; neither has an owner or a shipping story."
|
|
},
|
|
"33": {
|
|
"section": "Open",
|
|
"title": "Battery belongs to the state machine",
|
|
"file": "33-battery-as-device-state.md",
|
|
"left": "Last raw feed going straight to the glass. The charge ceiling is writable today."
|
|
},
|
|
"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."
|
|
},
|
|
"38": {
|
|
"section": "Open",
|
|
"title": "Pill swipe-to-max swaps the keyboard",
|
|
"file": "38-pill-swipe-osk-swap.md",
|
|
"left": "Micro. The only route to a terminal keyboard since stevia dropped its layout."
|
|
},
|
|
"39": {
|
|
"section": "Open",
|
|
"title": "Audio levels as tracked state",
|
|
"file": "39-audio-levels-as-state.md",
|
|
"left": "Defaults + roles, **not** a save bug — WirePlumber persistence measured working 07-28. Do not add a second writer."
|
|
}
|
|
},
|
|
"rollup": {
|
|
"by_dimension": {
|
|
"sensorium": {
|
|
"commits": 89,
|
|
"repos": [
|
|
"hexagonrpc",
|
|
"SouveraineOS",
|
|
"Pixel3Arch",
|
|
"linux-blueline",
|
|
"souveraine",
|
|
"souveraine-speech",
|
|
"souveraine-viewtop"
|
|
],
|
|
"authors": [
|
|
"luca.weiss@fairphone.com",
|
|
"casey.tunturi@gmail.com",
|
|
"ani@wiuf.net"
|
|
],
|
|
"declared": 11
|
|
},
|
|
"surface": {
|
|
"commits": 108,
|
|
"repos": [
|
|
"souveraine",
|
|
"SouveraineOS",
|
|
"souveraine-viewtop",
|
|
"hexagonrpc",
|
|
"Pixel3Arch",
|
|
"smithay"
|
|
],
|
|
"authors": [
|
|
"casey.tunturi@gmail.com",
|
|
"casey@samaritansolutions.net",
|
|
"ani@wiuf.net"
|
|
],
|
|
"declared": 20
|
|
},
|
|
"release": {
|
|
"commits": 30,
|
|
"repos": [
|
|
"Pixel3Arch",
|
|
"SouveraineOS",
|
|
"souveraine"
|
|
],
|
|
"authors": [
|
|
"casey.tunturi@gmail.com"
|
|
],
|
|
"declared": 4
|
|
},
|
|
"reliability": {
|
|
"commits": 11,
|
|
"repos": [
|
|
"souveraine",
|
|
"Pixel3Arch",
|
|
"souveraine-speech",
|
|
"souveraine-updater",
|
|
"souveraine-viewtop"
|
|
],
|
|
"authors": [
|
|
"casey.tunturi@gmail.com",
|
|
"ani@wiuf.net"
|
|
]
|
|
},
|
|
"unassigned": {
|
|
"commits": 8,
|
|
"repos": [
|
|
"SouveraineOS"
|
|
],
|
|
"authors": [
|
|
"casey.tunturi@gmail.com"
|
|
],
|
|
"declared": 7
|
|
},
|
|
"runtime": {
|
|
"commits": 12,
|
|
"repos": [
|
|
"hexagonrpc",
|
|
"SouveraineOS",
|
|
"souveraine-speech",
|
|
"souveraine",
|
|
"Pixel3Arch"
|
|
],
|
|
"authors": [
|
|
"casey.tunturi@gmail.com",
|
|
"ani@wiuf.net"
|
|
],
|
|
"declared": 3
|
|
},
|
|
"identity": {
|
|
"commits": 25,
|
|
"repos": [
|
|
"souveraine",
|
|
"souveraine-viewtop",
|
|
"Pixel3Arch",
|
|
"linux-blueline"
|
|
],
|
|
"authors": [
|
|
"casey.tunturi@gmail.com"
|
|
],
|
|
"declared": 3
|
|
},
|
|
"reflection": {
|
|
"commits": 1,
|
|
"repos": [
|
|
"souveraine"
|
|
],
|
|
"authors": [
|
|
"casey.tunturi@gmail.com"
|
|
],
|
|
"declared": 1
|
|
},
|
|
"adoption": {
|
|
"commits": 1,
|
|
"repos": [
|
|
"Pixel3Arch"
|
|
],
|
|
"authors": [
|
|
"casey.tunturi@gmail.com"
|
|
],
|
|
"declared": 1
|
|
},
|
|
"memory": {
|
|
"commits": 2,
|
|
"repos": [
|
|
"linux-blueline"
|
|
],
|
|
"authors": [
|
|
"casey.tunturi@gmail.com"
|
|
]
|
|
},
|
|
"federation": {
|
|
"commits": 0,
|
|
"repos": [],
|
|
"authors": [],
|
|
"declared": 1
|
|
}
|
|
},
|
|
"ci": {
|
|
"souveraine": {
|
|
"runs": 65,
|
|
"success": 37,
|
|
"failure": 17,
|
|
"other": 11,
|
|
"newest": {
|
|
"id": "ci:souveraine:1089",
|
|
"conclusion": "success"
|
|
}
|
|
},
|
|
"hexagonrpc": {
|
|
"runs": 6,
|
|
"success": 5,
|
|
"failure": 0,
|
|
"other": 1,
|
|
"newest": {
|
|
"id": "ci:hexagonrpc:962",
|
|
"conclusion": "success"
|
|
}
|
|
},
|
|
"souveraine-viewtop": {
|
|
"runs": 45,
|
|
"success": 35,
|
|
"failure": 10,
|
|
"other": 0,
|
|
"newest": {
|
|
"id": "ci:souveraine-viewtop:1090",
|
|
"conclusion": "success"
|
|
}
|
|
},
|
|
"Pixel3Arch": {
|
|
"runs": 14,
|
|
"success": 11,
|
|
"failure": 2,
|
|
"other": 1,
|
|
"newest": {
|
|
"id": "ci:Pixel3Arch:1085",
|
|
"conclusion": "success"
|
|
}
|
|
},
|
|
"souveraine-updater": {
|
|
"runs": 1,
|
|
"success": 1,
|
|
"failure": 0,
|
|
"other": 0,
|
|
"newest": {
|
|
"id": "ci:souveraine-updater:996",
|
|
"conclusion": "success"
|
|
}
|
|
},
|
|
"smithay": {
|
|
"runs": 2,
|
|
"success": 2,
|
|
"failure": 0,
|
|
"other": 0,
|
|
"newest": {
|
|
"id": "ci:smithay:1066",
|
|
"conclusion": "success"
|
|
}
|
|
}
|
|
},
|
|
"issues": {
|
|
"open": 6,
|
|
"opened_this_week": 0,
|
|
"closed_this_week": 0,
|
|
"ever_closed": 0,
|
|
"oldest_open": "i:SouveraineOS:3",
|
|
"oldest_open_days": -11
|
|
},
|
|
"pulls": {
|
|
"open": 2,
|
|
"merged_this_week": 0,
|
|
"oldest_open_days": 17
|
|
},
|
|
"releases": {
|
|
"cut_this_week": [
|
|
"r:Pixel3Arch:kernel-latest"
|
|
],
|
|
"newest_age_days": 5
|
|
},
|
|
"dimension_basis": {
|
|
"repo": 45,
|
|
"paths": 204,
|
|
"subject": 30,
|
|
"none": 8
|
|
}
|
|
}
|
|
}
|