rdmbair15m5-changelog-20260912-1830-tyrell-build20-canary-r2-sleep-safe-relaunch
Tyrell Build 20 was relaunched only on designated canary
rdmbair15m5 under a verified no-idle-sleep assertion,
correcting the acceptance-harness condition that invalidated the first
run while preserving exact rollback and all product gates.
Detailed changelog
Scope
- Host changed:
rdmbair15m5only. - Project: Tyrell, production mode.
- Tickets:
ISSUE-20260912-14,TASK-20260911-01,ISSUE-20260912-01. - No other fleet host was installed, restarted, or authorized for rollout.
Files and installed state changed
- Created isolated stage
/Users/richh/.tyrell/build20-canary-r2-20260912-96a5fc0with pinned candidate, guard, policy, installer dependencies, candidate app, rollback snapshot, and sleep-safe launch/verification scripts. - Installed exact signed/notarized Build 20 app at
/Applications/Tyrell.app. - Repointed
/Users/richh/Library/Application Support/Tyrell/bin/tyrelldthrough the pinned service installer to the exact hash-addressed Build 20 daemon release. - Created retained Build 17 app rollback
/Applications/.tyrell-rollbacks/20260912-183021-2c5ca2a674fe/Tyrell.app. - The existing additive
last_seen_atdatabase column was retained. No database was replaced or restored.
Commands and controls used
- Verified the staged guard and policy hashes and all pinned dependency hashes.
- Ran the app installer in dry-run mode before mutation.
- Exercised a bounded
caffeinate -i /bin/sleep 3control and verified itsPreventUserIdleSystemSleepassertion throughpmset -g assertions. - Ran
canary_guard.py prepareto snapshot exact Build 15/17 rollback state. - Installed Build 20 with
install_app_local.zshusing exact app hash and canonical CDHash gates. - Launched the unchanged guard through
launch_guard_caffeinated.zshand verified the live assertion usingverify_guard_awake.zsh.
Verification evidence
- Build 20 daemon SHA-256:
71bf6122e453315205f3f0dfaf3f1a3a6cf2d99dfe901cda88e7ac79a8112c77. - Build 20 app executable SHA-256:
423871cede8ae6313c486929f544dbee8d1085540b2d37896de6f2c2d4de90fd. - Build 20 app canonical CDHash:
37a0081b06af970866e84877cc74524cdac750580d5fad22fb83d92d0eb0aa5c. - Guard SHA-256:
52e53684d4436919dc02f9a9f25a2ebf6b8f1ed690cc866603bc78284caaf2da; policy SHA-256:742c28971e73c62ea7a9d1158885fe2983230949a74a4125d1b70b3ea004c882. - Guard PID
11952, assertion PID11976, daemon PID12342;PreventUserIdleSystemSleep=1is bound to the exact guard lifetime. - Launchd
runs=1, never exited; stable path resolves the exact candidate release. - Both status and permission endpoints on ports
43117and43118returned HTTP 200 valid JSON. - SQLite
quick_check=ok,153203file rows, one additivelast_seen_atcolumn. - Fixed 24-hour endpoint: approximately
2026-09-13 18:30:42 EDT.
Backups and preserved evidence
- Exact Build 15 daemon and Build 17 app are copied under the new
stage's
prior/directory. - Exact Build 17 app rollback is retained under
/Applications/.tyrell-rollbacks/20260912-183021-2c5ca2a674fe/Tyrell.app. - Pre-migration database backup:
/Users/richh/Library/Application Support/Tyrell/backups/20260912-0110-build20-preflight-96a5fc0/tyrell.db, SHA-256db29432be4fc962a18436f15f29d1677b10bc7c541d7f78eab6c00f7ecce3c8f. - First-run failure evidence is preserved canonically at
/Users/richh/dev/_handoff/tyrell-build20-memory-20260912/canary-r1-sleep-rollbackonrdmsm4x.
Undo
Stop only guard PID 11952 (which also releases its child
assertion), then run
/opt/homebrew/bin/python3.14 /Users/richh/.tyrell/build20-canary-r2-20260912-96a5fc0/canary_guard.py rollback.
Verify exact Build 15 daemon hash, exact Build 17 app hash, both status
ports, and live SQLite integrity afterward. Never replace the live
database with the older backup.
Outstanding work
Short, six-hour, fixed 24-hour, CPU, fresh-app, and controlled-reboot acceptance remain pending. No fleet expansion is authorized.