Skip to content

Qualify native v0.3.0 on the Android release device pool #476

Description

@leehack

Maintainer decision addendum — 2026-09-04

Maintainer instruction for this release:

I don't have older android device nor nvidia device so we should skip. Except that, everything ready?

For core 0.8.22 / Apple companion 0.0.17 at head 0bed2ff2603ee53b868863a2a801d1d64387a23b, record:

Qualification Current release disposition Residual evidence boundary
Older/lower-ISA physical Android arm64, full and compact SKIP — maintainer-authorized for this release; accepted missing qualification Old-device SIGILL and lower-ISA safety remain unverified. Modern compact does not prove old-device compatibility.
NVIDIA CUDA racecheck/synccheck SKIP — maintainer-authorized for this release; accepted missing qualification CUDA sanitizer qualification remains unverified; the previously identified upstream source patterns remain present. No CUDA correctness clearance.
Modern Pixel 9 Pro, full and compact PASS — separate independent Sol audit Bounded CPU packaging/load/generation/crash/timing evidence only.

These skips are not PASS and do not change the permanent matrix. #476 stays open for future old-device evidence. The original independent audit and evaluator observations remain preserved; this subsequent maintainer decision changes only the release disposition of the two unavailable hardware qualifications. It does not retroactively change the audit verdict or erase its findings.

Exact Qwen MTP reproduction and checkpoint/replay fallback remain untested and disclosed as existing bounded-evidence limitations. No other required gate is skipped by this instruction.

With these two explicitly accepted skips, no other known mandatory pre-release blocker remains: exact head/current base verified, all 15 checks successful, CLEAN/MERGEABLE, zero review threads, clean worktree, release dry-runs and independent preparation/device audits complete. The release is ready for the maintainer's separate publication decision. The PR remains draft; mark-ready, merge/publication, tags, dispatch and settings changes are not authorized by this question. A later approved merge triggers companion-before-core publication and docs release.

Preserved qualification evidence and future work

Release candidate 0.8.22 adopts published native v0.3.0, and the modern physical Android full/compact rows now pass, but old/lower-ISA physical arm64 evidence is still missing for the mandatory android-release-device-pool row. This is a validation gap, not a reproduced regression. Historical SIGILL fixes do not qualify the current artifact.

Required evidence is four combinations: old/lower-ISA arm64 and modern arm64 physical devices, each with cpu_profile: full and compact. Record exact app commit, native release/manifest/archive hashes, device model/SoC/Android version/ABI, profile and packaged CPU libraries, GGUF model/hash, deterministic prompt/settings, model-load and streamed-generation outcome, timings and crash-free logcat. Confirm compact works on old hardware and compare full versus compact on modern hardware within noise.

Use doc/android_runtime_smoke_test_plan.md and the maintained helper for each configured build:

./scripts/android_runtime_smoke.sh --project-dir example/chat_app --app-id com.example.llamadart_chat_example --serial <device-serial>

The helper builds/installs/launches/captures crashes only; a manual model load and generation is still required. Run from an isolated release checkout with Flutter 3.47.1. Set the documented hook CPU profile for each build; do not substitute emulator results for physical-device evidence.

Initial local adb devices -l was empty. A Pixel 9 Pro (caiman/Tensor G4, SDK37/arm64-v8a) completed modern full/compact qualification at exact candidate 0bed2ff2603ee53b868863a2a801d1d64387a23b; independent Sol audit found no blocker for the bounded modern-device smoke. Remaining input: access to an old/lower-ISA arm64 physical device with USB debugging/install permission, or complete existing evidence for the exact published v0.3.0 artifact. No devices were rented; the later release-specific maintainer skip is recorded in the dated addendum above.

Refs #475. Keep this tracker open until all four results and their artifacts have been reviewed. CUDA qualification is separate and is not cleared by Android results.

Completed modern-device evidence

Published native v0.3.0 Android archive SHA256 74d70e5bf3c191ff02093180c8d758fb1d178adf460e8a5ee97855016d42e4bb. APK native members match the published archive after the saved NDK stripping step; independent audit recomputed APK hashes and compared allocated ELF sections. Full contains seven CPU variants; compact contains only armv8.0_1.

Profile Successfully loaded CPU module Generation Median / range wall time
Full android_armv9.0_1 Two warmups + seven measured 32-token generations, CPU/zero GPU, nonempty text, alive/no captured PID-scoped crash 179 ms /144–216
Compact android_armv8.0_1 Same bounded checks PASS 241 ms /202–291

Existing stories15M.gguf SHA256 212ddc793f14a6f0c90e6c2a8a22dc8138bc6535f4c468fe94954aa4ac7de509; prompt “Once upon a time, there was a little robot who”, context2048, seed1, default stochastic sampling. Full was not slower in this observed smoke. Outputs differ and these sequential measurements do not establish output parity or profile-only speedup.

Exact candidate plus temporary profile config and six-line successful-loader diagnostic overlay; selection/inference logic unchanged. All overlays removed; checkout clean. Original installed APK restored with install-r and verified exact backup hash; user data was not cleared.

Detailed evidence and independent audit retained at /private/tmp/llamadart-pixel-0904/handoff.md and /private/tmp/llamadart-pixel-0904/independent-audit.md, with final full-resolved/compact-resolved APKs, inventories, run JSON/logcat and restoration record.

Remaining: old/lower-ISA physical arm64 full+compact. Running compact on a modern Pixel cannot establish old-device SIGILL safety. Keep this issue open.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority:P3Watch or strategic work blocked by upstream/runtime/design dependencies

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions