Root My Galaxy 0.3.49
SHA-256: d155b680fa594488308ef77cc103c3e747c408a51af12f8fec87537d7c2a8d4d
Changes since v0.3.48.
What's changed
- #39 Run CZG3 Auto Root from a fresh bound executor
Full changelog
Detailed pull-request notes for all changes included in this release.
#39 — Run CZG3 Auto Root from a fresh bound executor
Why
The current CZG3 post-gate architecture keeps the Auto Root boot coordinator alive from roughly boot +50–60 s until the 120 s launch gate. In the latest controlled runs, the manual path remained top-app / effective uclamp max 1024 at helper spawn and succeeded, while three consecutive Auto Root runs reached the gate as /moderate, cpu:/background, effective uclamp max 266 and all failed. Two Auto Root failures passed the FOPS race but failed the subsequent physrw cache gate; one missed the FOPS readiness window. An Auto Root success has existed previously in the demoted state, so this PR treats scheduling state as a probability/architecture confound rather than a deterministic root cause.
Change
- Keep the exact CZG3 minimum-uptime wait in a lightweight
Czg3AutoRootGateService. - Keep that gate as the sole foreground service for the CZG3 boot flow.
- At the selected uptime, bind the existing
AutoRootServiceinto a fresh:autoroot_execprocess withBIND_AUTO_CREATE; the executor starts fromonBind()instead of relying on a delayed secondstartForegroundService()call after theBOOT_COMPLETEDexemption has expired. - Isolate the boot receiver/gate/action receiver in
:autoroot_gateso the UI/main process and Shizuku passive initialization are not introduced into the Auto Root execution process. - Preserve the existing native 120 s fail-safe gate, observer v2, P0/FOPS timings, retry policy, 70,000 us FOPS route, checkpoints and fail-closed semantics unchanged.
- Keep a durable pre-History gate sentinel; once the normal History entry exists, that entry takes over crash/reboot recovery. A same-boot executor binding loss is reconciled as
Failed, while a real boot change remainsUnexpectedReboot. - Serialize History access across main/UI and
:autoroot_execwith an OS-level file lock in addition to the existing in-process monitor, preventing concurrentAtomicFilebackup recovery from racing checkpoint/terminal writes.
Review feedback addressed
- P1: removed the delayed second-FGS start and replaced it with a bound fresh executor while the gate remains the sole FGS.
- P2: added interprocess serialization for all History load/recovery/checkpoint/terminal/delete operations.
Validation
A temporary branch-only workflow using Java 21 passed after the review fixes:
testDebugUnitTestlintDebugassembleDebug
The temporary workflow was removed after validation.