Repository navigation
feat: rebuild a stale development client automatically (Worklets loadUnpackersWithCode undefined on the Pixel) - #520
Merged
abretonc7s merged 6 commits intoNov 4, 2026
Conversation
abretonc7s
marked this pull request as ready for review
November 3, 2026 09:13
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Rebuild development clients when native fingerprints change
An installed development client can contain older native modules than Metro's JS. Preflight now compares the checkout's platform-specific Expo native fingerprint with a persistent stamp per app variant, platform and device. A missing or changed stamp enters the existing build/install path. Successful installs record the build hash atomically after dependency/prebuild hooks have prepared its inputs.
The fingerprint includes audio-studio's shared C++ and config-plugin source. Only
*.test.tsfiles underpackages/audio-studio/plugin/srcare excluded from that plugin source. Generated Moonshine iOS slice copies and the Android isolated AAR are excluded; the pinned AAR checksum and canonical xcframework libraries remain hashed. Workspace docs, ordinary JS, generated lib and wasm trees remain excluded, while Native*.ts codegen specs remain included.Installed-client launches compute a fingerprint even with SKIP_BUILD=1. Real Android/iOS probes took 11–43 seconds per hash across machine loads. SKIP_BUILD retains its existing decisions and warns on stale or unreadable fingerprints. Without SKIP_BUILD, fingerprint failures exit 1 and report their cause. If Android must install a missing app and hashing fails under SKIP_BUILD, it builds without replacing the previous stamp. The native build stage retains its 420-second deadline.
Validation at commit 1da16ae: all 10 preflight tests and 76 repository recipe tests passed, plus shell/JS syntax and diff checks. The real-Expo probe confirms root and nested plugin test edits preserve both platform hashes, while plugin source, canonical native libraries and the pinned AAR checksum invalidate them. Removing the plugin test exclusion in a scratch copy fails the new stability assertion.
Pixel 6a 29071JEGR20638 proof at this clean commit:
The native build ran on macpro at niceness 15 with four Gradle workers, parallel execution disabled and ninja -j4. Its build stage took 31.5 seconds. The second preflight reused the stamp without compilation. The receipts assertion reads
final-proof-support/preflight.log,preflight-reuse.logandbuild-processes.log, requires the exact 9a0cbed fingerprint, and checks the retained Gradle and ninja controls. Its negative control rejects the older 49f1762 receipts. The Gradle snapshot records niceness 15. The ninja log spans build attempts without timestamps; CMAKE_BUILD_PARALLEL_LEVEL=4 is recorded in the retained limits declaration, while the executable wrapper enforces ninja -j4.The configured target retains a Sherpa Voice provenance label. Explicit Android/Pixel and Metro 7364 selection exercised the rebuilt Playground client. Passive HUD observation is unsupported; the HUD is visible in the retained media. Logs, video, captures and recorder wiring are retained in the task bundle; key log lines are inlined because .task files are ignored by git. iOS decisions are covered by fixtures and real hash probes; no iOS device build is claimed.
Screenshots/Recordings
AC-2: Pixel 6a waveform Worklets screen at 1da16ae

Full evidence gallery and publication receipt
Shows /minimal, blue waveform bars, red marker, static-mode toggle, reset control and recipe HUD at video 8.478499 seconds. Capture sourceCommit is 1da16ae; sourceDirty is false. The trace confirms loadUnpackersWithCode is a function.
Shows /asr-benchmark, Bundled Sample and Simulated Live controls, selected Moonshine Small Streaming model and recipe HUD at video 13.924253 seconds. Capture sourceCommit is 1da16ae; sourceDirty is false. The trace confirms the sample action is mounted below the viewport; transcription is not exercised.
Publication approval
Arthur · person · arthur · 2026-11-03T09:11:30.603Z
Package:
c6eee7e30c874bce312adc5d35e43f74de02cabdcfa78567ce5c52da9d5854a1. Visual receipts: pipeline-sha256:22c235dbb583fd7a6ed5f0b9917af841ee2b2197f99e22c3ae7f77deb06c1ca3.Accepted review findings
Accepted by Arthur (arthur) at 2026-11-03T09:11:30.603Z.
Head:
1da16ae86fed794ebb6f9672771f0a3c38bddf6c. Findings digest:sha256:d3dc40f9fbb943d5a6dd33a65b05dc38c1873c2bef870c85c5abcdc7198f06be.Reason:
Accepted findings:
Evidence policy attestation
Approved by Arthur (arthur) at 2026-11-03T09:11:30.602Z.
Package:
c6eee7e30c874bce312adc5d35e43f74de02cabdcfa78567ce5c52da9d5854a1. Decision:8957e8bf-2637-40c3-9043-a0063d6a038f.Reason:
Waived claim-policy findings:
Original evidence and verdicts are retained. Integrity, source, CI and review checks remain required.
Description
Type of Change
Architecture Decision
Test-Driven Development Checklist
Pre-Implementation (for new features - recommended)
Implementation
Testing
Test Evidence
Documentation
Breaking Changes
Related Issues
Checklist
Additional Notes
Visual judgments
Execution: 18e94bd6-1005-48fd-bc10-b56f195fd534