mirror of
https://github.com/saphid/frame-control.git
synced 2026-10-27 14:02:09 +01:00
Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
25d0cb41ab | ||
|
|
9e77a35e40 | ||
|
|
bc02974b49 | ||
|
|
5b448bc922 | ||
|
|
b345921385 | ||
|
|
1c60985c9f | ||
|
|
de3d7d4fbc |
No files matched your search
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"tag": "v0.4.51",
|
||||
"releaseId": 425049939,
|
||||
"tagNameAtAudit": "v0.4.51",
|
||||
"draftAtAudit": true,
|
||||
"sha256sumsSha256": "9d28eae8610356cba56310c892b6dd16dfc55c0507c9089600ab86e9697a04f8",
|
||||
"assets": [
|
||||
{
|
||||
"name": "Frame-Control-mac-arm64.dmg",
|
||||
"size": 177621496,
|
||||
"sha256": "8c84ef490402c202ad694f9d363d792c5dbc9b046e40d8d834bcb6d7752ab6e8",
|
||||
"udifTrailer": "ok"
|
||||
},
|
||||
{
|
||||
"name": "Frame-Control-mac-arm64.zip",
|
||||
"size": 177449210,
|
||||
"sha256": "3541b67985e3931b9469af9249df3f71133589d726ffbd7b0c2b9c1c3dd3f67c",
|
||||
"zipCrc": "ok",
|
||||
"members": 1673,
|
||||
"bundleVersion": "0.4.51"
|
||||
},
|
||||
{
|
||||
"name": "Frame-Control-mac-x64.dmg",
|
||||
"size": 184691853,
|
||||
"sha256": "04fecaf012e6ab4ca139823d2220bf61b788568cdffbfdad22b5d0b2c2b63763",
|
||||
"udifTrailer": "ok"
|
||||
},
|
||||
{
|
||||
"name": "Frame-Control-mac-x64.zip",
|
||||
"size": 184535648,
|
||||
"sha256": "7e9836d62f882fbaac3d9b35831410c5e6138d9b68fb93815cbd2bb9200bd46b",
|
||||
"zipCrc": "ok",
|
||||
"members": 1669,
|
||||
"bundleVersion": "0.4.51"
|
||||
},
|
||||
{
|
||||
"name": "Frame-Control-Setup-x64.exe",
|
||||
"size": 151882885,
|
||||
"sha256": "a45996f621901c2df8fc41d9eca2ae3fcd6b9ff40de66ed8acfca9415a3a81b0",
|
||||
"peMachine": 332
|
||||
},
|
||||
{
|
||||
"name": "Frame-Control-win-x64.zip",
|
||||
"size": 198837858,
|
||||
"sha256": "41791b6ca2c40164eb44cdc29e1281886556c257b88bcd5f86941daddd15d66a",
|
||||
"zipCrc": "ok",
|
||||
"members": 1517
|
||||
},
|
||||
{
|
||||
"name": "Frame-Control-linux-x86_64.AppImage",
|
||||
"size": 179993078,
|
||||
"sha256": "5ebbb931276cd3126cb3ecab88c6cde05f490cbd0e0205b418c32d00f765ea42",
|
||||
"elfMachine": 62
|
||||
},
|
||||
{
|
||||
"name": "Frame-Control-linux-arm64.AppImage",
|
||||
"size": 171579329,
|
||||
"sha256": "4205422b02b9207bf2cf59ce3eb847b601306cef326df9fb005a7df540d82bb5",
|
||||
"elfMachine": 183
|
||||
},
|
||||
{
|
||||
"name": "Frame-Control-linux-amd64.deb",
|
||||
"size": 146747460,
|
||||
"sha256": "7c3a4eae7fb2098c759cbd9a8194c326b70f2fa078030062c047e4c8418b4bef",
|
||||
"debVersion": "0.4.51",
|
||||
"architecture": "amd64"
|
||||
},
|
||||
{
|
||||
"name": "Frame-Control-linux-arm64.deb",
|
||||
"size": 133829576,
|
||||
"sha256": "793433d21e457d5422ea982678f50d5f3ac0c1c46d40c5dcebf42d16651d4995",
|
||||
"debVersion": "0.4.51",
|
||||
"architecture": "arm64"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
# v0.4.51 tagged release verification, 27 October 2026
|
||||
|
||||
The annotated `v0.4.51` tag dereferences to merged main commit
|
||||
`4da7220660ba345bc46cdb525b6c512bc6a9d8bd`. Its tree
|
||||
`16aa888207e8661280aa659c96a08fee05f17689` exactly matches reviewed
|
||||
[candidate PR #364](https://github.com/saphid/frame-control/pull/364) head
|
||||
`728a4dbe9b049e5f5cfcd6de02d9ca858d3e9aa4`. The candidate source
|
||||
passed the locked smoke described in
|
||||
[its evidence](v0451-candidate-2026-10-27.md).
|
||||
|
||||
## Exact commit and tagged build gates
|
||||
|
||||
- [Main checks](https://github.com/saphid/frame-control/actions/runs/40451752952)
|
||||
passed on the tag commit: all seven jobs on the first attempt, including
|
||||
e2e, iOS, Windows, macOS, Linux and the aggregate check.
|
||||
- [Native Decky runtime](https://github.com/saphid/frame-control/actions/runs/40451752953)
|
||||
passed on the tag commit: both published Decky 3.3.0 AMD64 and ARM64 jobs.
|
||||
- An exact-main [installer preview](https://github.com/saphid/frame-control/actions/runs/40451826490)
|
||||
built all four platform installers successfully before tagging. Its draft
|
||||
and checksum jobs were inapplicable to manual preview runs.
|
||||
- The [exact-tag release workflow](https://github.com/saphid/frame-control/actions/runs/40452627862)
|
||||
passed all six jobs on its first attempt: draft, Linux, Windows, Intel Mac,
|
||||
Apple Silicon Mac and checksums. No tagged job failed, was cancelled,
|
||||
skipped or overridden.
|
||||
|
||||
The unpublished draft held exactly ten installers and `SHA256SUMS` before
|
||||
publication. Every installer was independently downloaded by GitHub asset ID,
|
||||
one at a time. Each downloaded size and SHA-256 matched GitHub's asset
|
||||
metadata; the downloaded `SHA256SUMS` matched all ten entries byte for byte.
|
||||
Its SHA-256 was
|
||||
`9d28eae8610356cba56310c892b6dd16dfc55c0507c9089600ab86e9697a04f8`.
|
||||
The [sanitized asset audit](v0451-assets-2026-10-27.json) records all ten
|
||||
names, sizes, hashes and package checks. It checked both Mac ZIP CRCs and
|
||||
bundle version `0.4.51`, both DMG UDIF trailers, Windows ZIP CRC and PE
|
||||
installer header, both AppImage ELF architectures, and both DEB version and
|
||||
architecture fields.
|
||||
|
||||
The independently downloaded Linux x86_64 AppImage had SHA-256
|
||||
`5ebbb931276cd3126cb3ecab88c6cde05f490cbd0e0205b418c32d00f765ea42`.
|
||||
It launched under isolated Xvfb with a temporary profile, telemetry and
|
||||
update checks disabled. Its bundled server returned HTTP 200 with
|
||||
`FrameControl/1` and stopped after app exit. No physical Mac or Windows
|
||||
launch of these exact installers was performed.
|
||||
|
||||
## Real Frame and publication
|
||||
|
||||
The [candidate evidence](v0451-candidate-2026-10-27.md) records a unique-lock
|
||||
real Frame smoke on the version-bumped source: **12 passed, one optional
|
||||
x86_64 launch skipped, zero failed**. Steam Linux Runtime 4 was absent, so no
|
||||
x86_64 launch is claimed. A separate fresh-lock audit found no reserved smoke
|
||||
title files, metadata or owned processes; both locks were released. SteamVR
|
||||
activity was 3 (standby), proximity raw 4.6875, battery 88% before and 91%
|
||||
while charging at audit. There was no wearer confirmation, wake command or
|
||||
worn interaction test. The private smoke result's SHA-256 is
|
||||
`c2b9611e072fd08109c31f4aa05a4ba6b93de82f532a7d87a4a1c6dcd52024a3`.
|
||||
|
||||
`scripts/publish-release.sh --dry-run v0.4.51` passed exact-main, native
|
||||
runtime and tagged release jobs, all ten installer hashes, regenerated
|
||||
`SHA256SUMS`, draft notes and update-manifest checks. The real publisher
|
||||
repeated those gates, attached `update.json`, and published
|
||||
[v0.4.51](https://github.com/saphid/frame-control/releases/tag/v0.4.51) at
|
||||
**05:10:05 UTC**. GitHub's latest-release API returned `draft=false`,
|
||||
`prerelease=false`, ten installers, `SHA256SUMS` and `update.json`. A fresh
|
||||
public latest-download of `update.json` reported version `0.4.51`, the correct
|
||||
release page, ten hashes matching the independent downloads, and the worn
|
||||
limit in its notes. The public manifest's SHA-256 was
|
||||
`27bc0e45acf6b9a5677639e66ab501f2acc3eb7f5c0f4f867ced8a5d11825c52`.
|
||||
|
||||
The exact-version Decky catalog is **6 works / 52 partial / 47 broken /
|
||||
11 N/A**. Managed Decky Localsend is **partial**: real Frame testing proved
|
||||
only its rebuilt helper's private marker transfer, while the published
|
||||
Decky 3.3.0 runtime gate proved discovery and stopped status/configuration
|
||||
RPCs. Real managed-service operation, user-facing transfer, network
|
||||
discovery, Steam routes, worn visibility and physical-controller input remain
|
||||
unverified. The hourly shared-lock worn check remains enabled.
|
||||
@@ -0,0 +1,153 @@
|
||||
# Frame Control standing goal and historical recovery handoff
|
||||
|
||||
Owner: Alex. This records the 27 October 2026 AEDT recovery handoff; status
|
||||
checks below use UTC. Alex subsequently authorized the existing coordinator to
|
||||
continue the roadmap and publish releases when every gate passes. This document
|
||||
does not authorize a second coordinator to run concurrently.
|
||||
|
||||
## Alex's top priority
|
||||
|
||||
> Make Frame Control's released version always stable and running cleanly. Never release something that isn't working correctly. I don't want to break things for people.
|
||||
|
||||
Keep the released app stable and main green. Investigate failures before
|
||||
shipping; a version number or an uploaded artifact is not proof of readiness.
|
||||
|
||||
## Standing roadmap
|
||||
|
||||
Continue official Decky compatibility, test gaps, fixes and useful features.
|
||||
The existing owner is T3 job `mppkd9qczt` on lxso2. Preserve its work and avoid
|
||||
competing coordinator or release jobs. Verify its current state before any
|
||||
takeover; this historical handoff is not a takeover instruction.
|
||||
|
||||
## Mandatory release gates
|
||||
|
||||
- CI must be green on the **exact release commit**, not merely an earlier
|
||||
commit, another branch, or a previous successful workflow attempt.
|
||||
- End-to-end tests and release verification must pass for that candidate.
|
||||
- Every required installer build must succeed, including Linux, Windows,
|
||||
macOS Intel and macOS Apple Silicon.
|
||||
- Never publish a release with failed or cancelled required builds. A retry
|
||||
must actually finish successfully; a cancelled build is not a pass.
|
||||
- Keep main green. Resolve required failures before merging or releasing.
|
||||
- Preserve evidence linking the release tag/commit, successful workflow run,
|
||||
installer assets/checksums, e2e results and real-device verification.
|
||||
- Use `scripts/publish-release.sh --dry-run TAG` before publishing. Alex's
|
||||
standing full-auto instruction authorizes the existing coordinator to tag and
|
||||
publish after every gate passes. Stop for secrets, money, destructive Git
|
||||
actions or wiping the headset; never bypass a failed release gate.
|
||||
|
||||
## Current release state, checked 27 October 2026 at 05:15 UTC
|
||||
|
||||
- The latest public release is
|
||||
[v0.4.51](https://github.com/saphid/frame-control/releases/tag/v0.4.51),
|
||||
published at 05:10:05 UTC from main commit
|
||||
`4da7220660ba345bc46cdb525b6c512bc6a9d8bd`.
|
||||
- [Exact-commit checks](https://github.com/saphid/frame-control/actions/runs/40451752952),
|
||||
[native Decky runtime](https://github.com/saphid/frame-control/actions/runs/40451752953),
|
||||
and the [tagged installer release](https://github.com/saphid/frame-control/actions/runs/40452627862)
|
||||
succeeded. The tag release built Linux, Windows, Intel Mac and Apple Silicon
|
||||
Mac installers and checksums. The published update manifest reports 0.4.51.
|
||||
- The locked candidate smoke passed 12 checks, skipped one optional x86_64
|
||||
launch, and failed none. SteamVR was in standby; worn display and physical
|
||||
controller use remain unverified. The hourly shared-lock worn check remains
|
||||
enabled. See [candidate evidence](../evidence/v0451-candidate-2026-10-27.md)
|
||||
and [release evidence](../evidence/v0451-release-2026-10-27.md) for the exact
|
||||
asset audit and publication record.
|
||||
- Main matched the release commit and its checks were green at this check.
|
||||
Revalidate before another merge or release. Disk capacity on lxso2 remains
|
||||
critical; do not delete pre-existing data to make space without Alex's OK.
|
||||
|
||||
## Incident snapshot supplied by Alex
|
||||
|
||||
At the time of the recovery request, latest published was **v0.4.47** with a
|
||||
passed release run; **v0.4.48 RC was not published**, after a failed run with a
|
||||
cancelled macOS build. PRs **#337 and #338 were open**. Preserve this as the
|
||||
historical incident snapshot, not a claim that remote state stays unchanged.
|
||||
|
||||
## Verified update during recovery
|
||||
|
||||
Checked 26 October 2026 around 21:58 UTC:
|
||||
|
||||
- v0.4.47 was published at 15:07:28 UTC.
|
||||
- A subsequent v0.4.48 release run
|
||||
[40406781383](https://github.com/saphid/frame-control/actions/runs/40406781383)
|
||||
completed successfully on commit
|
||||
`5438e1d9d05ca472f200dcde50799c8ae882fafb`. Its Linux, Windows, Intel macOS
|
||||
and Apple Silicon macOS installer jobs, draft and checksum jobs all succeeded.
|
||||
- GitHub now reports **v0.4.48 published at 21:53:29 UTC**. This publication
|
||||
happened outside the recovery task. Recheck the exact-commit checks and
|
||||
release evidence before drawing conclusions about all release gates.
|
||||
- [#337](https://github.com/saphid/frame-control/pull/337) is merged; lxso1's
|
||||
clean main was fast-forwarded to
|
||||
`1ddb6278b8ae0a98ecc79a181bba4d3cc67a52b6`.
|
||||
- [#338](https://github.com/saphid/frame-control/pull/338) was open at that
|
||||
time; it has since merged.
|
||||
- lxso2 T3 recovered at **21:42:54 UTC**; port 3773/local HTTP and existing
|
||||
HTTPS returned 200 by 21:43:58 UTC. Root disk capacity remains critical;
|
||||
recovery is not a capacity fix.
|
||||
- Fleet guards, probe units, safety tests and incident evidence are proposed
|
||||
in [fleet #38](https://github.com/saphid/fleet/pull/38); units were installed
|
||||
under the owner's incident authorization. Disk critical alerts use the
|
||||
existing fleet Prometheus/watchdog pipeline.
|
||||
|
||||
## Historical lxso1 readiness
|
||||
|
||||
Main checkout: `/home/saphid/projects/steam-frame` (GitHub repository
|
||||
`saphid/frame-control`). Shell default Node may be older; use
|
||||
`~/.nvm/versions/node/v24.22.1/bin` first in PATH for Node 24 CI commands.
|
||||
Python 3.9.25 and 3.13.14 were installed through uv for the CI matrix; system
|
||||
Python 3.12.3 already existed. Workflows at that time required no Rust/Go
|
||||
toolchain.
|
||||
|
||||
Readiness commands, per-gate logs and exact-commit JSON results live at
|
||||
`/tmp/frame-control-readiness-20261027/` on lxso1. These are local readiness
|
||||
checks, not a substitute for GitHub CI on a future release commit. The Linux
|
||||
installer command uses `--publish never`; no release was published by these
|
||||
checks. Native ARM64, Windows/macOS platform gates, Xcode/iOS and real-headset
|
||||
checks still require their proper runners/hardware.
|
||||
|
||||
Completed on main commit `1ddb6278b8ae0a98ecc79a181bba4d3cc67a52b6`,
|
||||
26 October 2026 at 22:00 UTC:
|
||||
|
||||
| Gate | Result on lxso1 |
|
||||
| --- | --- |
|
||||
| Shell syntax, Python compile | Passed |
|
||||
| Python 3.9 / 3.12 / 3.13 server suites | 1,639 tests each; passed with platform/optional skips |
|
||||
| Linux wireless doctor, app syntax/tests, website tests/syntax | Passed |
|
||||
| `npm ci`, `npm run dist:linux` | Passed; AppImage and deb built without publishing |
|
||||
| AppImage launch verification | Passed |
|
||||
| `scripts/e2e.sh` on x86_64 Docker | Passed: 50 tests, one optional catalog audit skipped; not native ARM64 hardware proof |
|
||||
| Publish dry runs for v0.4.47 and v0.4.48 | Passed, including all ten installer digests and SHA256SUMS; no mutation |
|
||||
| Native PC host build and required-native tests | Blocked/failed: GStreamer/GLib development packages absent; required native adapter unavailable |
|
||||
|
||||
The workflows name system GStreamer packages but do not pin package versions.
|
||||
They were left uninstalled under the owner's pinned-versions-only constraint.
|
||||
Resolve that dependency policy before claiming full Linux native readiness.
|
||||
Main was clean and matched origin/main on the final 21:59 UTC fetch.
|
||||
|
||||
## How a takeover should resume
|
||||
|
||||
1. Read this file, `docs/testing.md`, the current roadmap/evidence and the
|
||||
existing coordinator's recorded work through supported read-only tooling.
|
||||
Verify remote releases, PR states and workflow conclusions again.
|
||||
2. Check lxso2 health and disk headroom. Disk-full recovery requires capacity
|
||||
decisions; do not delete protected data or alter T3 state databases.
|
||||
3. Confirm that the existing coordinator is no longer active and that the
|
||||
takeover is authorized by the current instructions. Preserve uncommitted
|
||||
changes and active worktrees; do not run competing coordinator/release jobs.
|
||||
4. Fetch origin and inspect local status before updating main. Resume the
|
||||
roadmap from recorded gaps and existing PRs, not from assumptions about
|
||||
what an interrupted worker completed.
|
||||
5. Work on an isolated branch and use PRs. Validate the actual candidate
|
||||
commit with every release gate above; record hardware/platform blockers.
|
||||
6. Publish only after all required gates pass under Alex's current full-auto
|
||||
instruction or a newer explicit instruction.
|
||||
|
||||
The lxso1 five-minute `fleet-t3-lxso2-health.timer` only checks and alerts; it
|
||||
does not start takeover threads. Automatic stand-in launch is not configured
|
||||
or proven by this recovery deployment. It would need supported gateway
|
||||
capability and authorized credentials; do not copy or mint gateway secrets.
|
||||
|
||||
The original handoff copy was placed at
|
||||
`/home/saphid/frame-control-handoff/STANDING_GOAL.md` on lxso1. This repository
|
||||
document may be newer.
|
||||
Reference in new issue
Block a user