release: prepare v0.0.1-rc.4

This commit is contained in:
2026-03-07 15:51:21 -05:00
parent 86875075fc
commit da09094d3e
52 changed files with 1076 additions and 1234 deletions

View File

@@ -1,44 +1,26 @@
# OpenBitdo RC Checklist (`v0.0.1-rc.2`)
# OpenBitdo RC Checklist (`v0.0.1-rc.4`)
This checklist defines release-candidate readiness for the `v0.0.1-rc.2` public RC tag.
This checklist defines the release-candidate gate for the current public RC tag.
## Candidate Policy
- Tag format: `v*` (for this RC: `v0.0.1-rc.2`)
## Release Policy
- Tag format: `v*`
- Current RC tag: `v0.0.1-rc.4`
- Tag source: `main` only
- Release trigger: tag push
- RC gate: all required CI checks + manual smoke validation
- Public RC rule: zero open issues labeled `release-blocker`
## Release-Blocker Policy
Use GitHub issue labels:
- `release-blocker`
- `severity:p0`
- `severity:p1`
- `severity:p2`
## Required CI Checks
Public RC gate rule:
- zero open issues labeled `release-blocker`
- `guard`
- `aur-validate`
- `tui-smoke-test`
- `build-macos-arm64`
- `test`
Daily review cadence:
- run once per day until RC tag:
- `gh issue list -R bybrooklyn/openbitdo --label release-blocker --state open --limit 200`
- release remains blocked while this list is non-empty.
- AUR auth troubleshooting runbook:
- [aur_publish_troubleshooting.md](/Users/brooklyn/data/8bitdo/cleanroom/process/aur_publish_troubleshooting.md)
## Clean Tree Gate
## Scope-Completeness Gate ("Good Point")
Before tagging `v0.0.1-rc.2`, RC scope must match the locked contract:
- JP108 mapping supports dedicated keys only (`A/B/K1-K8`) for RC.
- Ultimate2 expanded mapping supports RC-required fields only:
- remappable slots `A/B/K1-K8`
- known controller-button targets
- profile slot read/write/readback
- firmware version in diagnostics/reports
- L2/R2 analog read (and write where capability allows)
Release gate is checklist-driven for RC (no separate scorecard artifact).
## Clean-Tree Requirement (Before Tagging)
Run from `/Users/brooklyn/data/8bitdo/cleanroom`:
From `cleanroom/`:
```bash
git status --porcelain
@@ -46,108 +28,53 @@ git clean -ndX
```
Expected:
- `git status --porcelain` prints nothing (no modified, staged, or untracked files)
- `git clean -ndX` output reviewed for ignored-build artifacts only
Tracked-path audit:
```bash
git ls-files | rg '(^sdk/dist/|^sdk/target/|^harness/reports/)'
```
Expected:
- no tracked artifact/build-output paths matched
## Required CI Checks
- `guard`
- `aur-validate`
- `tui-smoke-test`
- `build-macos-arm64`
- `test`
## Release Secret Preflight (Tag Workflow)
Tag preflight must fail early if any required secret is missing:
- `AUR_USERNAME`
- `AUR_SSH_PRIVATE_KEY`
- `HOMEBREW_TAP_TOKEN`
- no tracked modifications or staged changes
- ignored-output review only from `git clean -ndX`
## Artifact Expectations
Release assets must include:
- `openbitdo-v0.0.1-rc.2-linux-x86_64.tar.gz`
- `openbitdo-v0.0.1-rc.2-linux-x86_64`
- `openbitdo-v0.0.1-rc.2-linux-aarch64.tar.gz`
- `openbitdo-v0.0.1-rc.2-linux-aarch64`
- `openbitdo-v0.0.1-rc.2-macos-arm64.tar.gz`
- `openbitdo-v0.0.1-rc.2-macos-arm64`
- `openbitdo-v0.0.1-rc.2-macos-arm64.pkg`
- corresponding `.sha256` files for every artifact above
## Verify Checksums
Run from release asset directory:
- `openbitdo-v0.0.1-rc.4-linux-x86_64.tar.gz`
- `openbitdo-v0.0.1-rc.4-linux-x86_64`
- `openbitdo-v0.0.1-rc.4-linux-aarch64.tar.gz`
- `openbitdo-v0.0.1-rc.4-linux-aarch64`
- `openbitdo-v0.0.1-rc.4-macos-arm64.tar.gz`
- `openbitdo-v0.0.1-rc.4-macos-arm64`
- `openbitdo-v0.0.1-rc.4-macos-arm64.pkg`
- `.sha256` files for every artifact above
```bash
shasum -a 256 -c openbitdo-v0.0.1-rc.2-linux-x86_64.tar.gz.sha256
shasum -a 256 -c openbitdo-v0.0.1-rc.2-linux-x86_64.sha256
shasum -a 256 -c openbitdo-v0.0.1-rc.2-linux-aarch64.tar.gz.sha256
shasum -a 256 -c openbitdo-v0.0.1-rc.2-linux-aarch64.sha256
shasum -a 256 -c openbitdo-v0.0.1-rc.2-macos-arm64.tar.gz.sha256
shasum -a 256 -c openbitdo-v0.0.1-rc.2-macos-arm64.sha256
shasum -a 256 -c openbitdo-v0.0.1-rc.2-macos-arm64.pkg.sha256
```
## Distribution Gate
## Manual Smoke Matrix
1. Linux `x86_64`
- Extract tarball, run `./bin/openbitdo --mock`
- Confirm dashboard renders (device list, quick actions, event panel)
- Confirm settings screen opens and returns to dashboard
- GitHub prerelease assets must be published successfully.
- AUR publish must render checksum-pinned metadata and update `openbitdo-bin`.
- Homebrew publish must render a checksum-pinned formula and update `bybrooklyn/homebrew-openbitdo`.
2. Linux `aarch64`
- Extract tarball, run `./bin/openbitdo --mock`
- Confirm dashboard navigation and preflight/task render
## macOS Packaging Gate
3. macOS arm64
- Run standalone binary `openbitdo --mock`
- Install `.pkg`, then run `/opt/homebrew/bin/openbitdo --mock`
- Confirm launch and settings view behavior
- `.pkg` remains unsigned and non-notarized for this RC.
- Gatekeeper friction is expected and must be documented.
- Tarball and standalone binary remain the fallback paths.
## Help Surface Verification
- `openbitdo --help` shows single-command usage with `--mock`.
## Manual Smoke Expectations
## Distribution Readiness Notes
- Homebrew publication runs after release asset publish when `HOMEBREW_PUBLISH_ENABLED=1`.
- AUR publication runs after release asset publish when `AUR_PUBLISH_ENABLED=1`.
- Both package paths use release-derived SHA256 values (no `SKIP`, no `:no_check` in published metadata).
1. Linux `x86_64`: launch `openbitdo --mock`
2. Linux `aarch64`: launch `openbitdo --mock`
3. macOS arm64 standalone binary: launch `openbitdo --mock`
4. macOS arm64 `.pkg`: confirm payload installation path and launch behavior where possible
## Current Status Snapshot
## RC Gate Snapshot (Local)
| Gate | Status | Notes |
| --- | --- | --- |
| Clean tree | Pass | Verified empty on `c3115da` before final checklist update (`git status --porcelain`). |
| Secrets present | Pass | `AUR_USERNAME`, `AUR_SSH_PRIVATE_KEY`, `HOMEBREW_TAP_TOKEN` exist in repo secrets. |
| Required checks configured | Pass | `guard`, `test`, `tui-smoke-test`, `aur-validate`, `build-macos-arm64`. |
| Open release-blocker issues | Pass | `0` open (`gh issue list --label release-blocker --state open`). |
| RC release allowed | Fail | `No` yet: AUR SSH auth still returns `Permission denied (publickey)`. |
| Required CI checks | Pass | Current required checks are configured in GitHub branch protection. |
| GitHub prerelease assets | Pending | Verify `v0.0.1-rc.4` assets after the tag workflow completes. |
| AUR publication | Pending | Verify `openbitdo-bin` updates to `v0.0.1-rc.4` after release publication. |
| Homebrew publication | Pending | Verify `bybrooklyn/homebrew-openbitdo` updates to `v0.0.1-rc.4` after release publication. |
| macOS notarization | Deferred | Explicitly out of scope until Apple credentials exist. |
## RC Execution Log
Historical note: entries below may mention older command forms from prior milestones and are preserved as-is for audit history.
## Historical Notes
- 2026-03-02T20:54:31Z: governance preflight complete; release blocker remains open by policy.
- 2026-03-02T21:38:17Z: set `HOMEBREW_TAP_REPO=bybrooklyn/homebrew-openbitdo`; repository and tap visibility switched to public.
- 2026-03-02T21:40:00Z: bootstrapped tap repo `bybrooklyn/homebrew-openbitdo` with initial `Formula/openbitdo.rb`.
- 2026-03-02T21:45:27Z to 2026-03-02T21:48:55Z: CI run `22597105846` on commit `c3115da` passed `guard`, `test`, `tui-smoke-test`, `aur-validate`, `build-macos-arm64`, `build-linux-x86_64`, and `build-linux-aarch64`.
- 2026-03-02T21:49:00Z to 2026-03-02T21:55:00Z: downloaded CI artifacts and manually verified each artifact hash against `.sha256` content (all matched) for:
- `openbitdo-v0.0.0-ci-linux-x86_64.tar.gz`
- `openbitdo-v0.0.0-ci-linux-x86_64`
- `openbitdo-v0.0.0-ci-linux-aarch64.tar.gz`
- `openbitdo-v0.0.0-ci-linux-aarch64`
- `openbitdo-v0.0.0-ci-macos-arm64.tar.gz`
- `openbitdo-v0.0.0-ci-macos-arm64`
- `openbitdo-v0.0.0-ci-macos-arm64.pkg`
- 2026-03-02T21:56:00Z to 2026-03-02T22:00:00Z: Linux artifact smoke completed in containers for `linux/amd64` and `linux/arm64` by launching `openbitdo --mock` and observing successful TUI startup.
- 2026-03-02T21:57:00Z: local macOS packaging smoke completed via `./sdk/scripts/package-macos.sh v0.0.0-local arm64` (tarball, standalone binary, pkg generated).
- 2026-03-02T21:58:00Z: local standalone macOS smoke completed (`openbitdo-v0.0.0-local-macos-arm64 --mock`) with TUI startup and clean exit via scripted key input.
- 2026-03-02T21:59:00Z: pkg payload path validated by expansion (`Payload/opt/homebrew/bin/openbitdo`); direct installer invocation requires root (`installer: Must be run as root to install this package`).
- 2026-03-02T21:59:30Z: About behavior validated by test run `cargo test -p bitdo_tui about_state_roundtrip_returns_home`.
- 2026-03-02T22:02:00Z: Wave 2 issues `#2` through `#13` closed with per-issue evidence comments.
- 2026-03-02T22:03:00Z: epic issue `#1` closed and `release-blocker` label removed after child closure summary.
- 2026-03-02T22:04:00Z: clean-tree gate confirmed on baseline commit `c3115da` (`git status --porcelain` empty).
- 2026-03-02T22:10:00Z: removed hardware self-hosted checks from branch protection and CI/release gate policy.
- Historical RC activity for earlier candidates is preserved in commit history and the changelog.
- Troubleshooting for AUR SSH publication lives in `process/aur_publish_troubleshooting.md`.