Skip to content

v3.0.1 — Audit fixes

Choose a tag to compare

@ogaworld369 ogaworld369 released this 12 Nov 04:17
· 1 commit to main since this release

v3.0.1 — Audit fixes

A maintenance release. It fixes the verified findings of a fourth round of external audit of the v3.0 tree, together with an internal review of the same code. No features change.

What is fixed

  • Recording stop reliability. Turning recording off immediately after turning it on could leave recording running while the display showed it off. A pending off is now re-delivered until the recording process confirms it.
  • Status figures after an identity change. The status could show the previous identity's checkpoint count and latest time. The remembered figures are now kept per identity.
  • Journal capacity edge. A journal filled to exactly the checkpoint maximum could no longer be exported as a proof bundle. The append limit now matches the export and verification limit.
  • Proof bundle export. After the home identity had been sent out and erased, exporting a bundle could create a fresh home seed as a side effect. Export now refuses instead of minting one.
  • Erased seed residue. Temporary vault files could retain a copy of an erased identity seed; orphaned temporary files are now swept after writes.
  • Transfer edge cases. Cancelling a completed attempt could mis-record the restore state and stall recording until the next transfer action; cancelling an attempt with no staging record could crash; and closing a one-shot sender by another path could leave its confirmation key in the vault. All three are fixed.
  • Import robustness. The free-space floor is now checked before a transfer plan is adopted, the verified checkpoint count of an imported archive is saved when staging completes, and the import progress display no longer caps at a stale constant below the real journal capacity.
  • Failure classification. A decryption failure caused by the Android Keystore was reported as a corrupted transfer code; it is now classified as a keystore problem, with the matching guidance.
  • Recording self-stop. An unexpected reply from the local node could make recording stop itself; such replies are now handled as ordinary RPC failures. The DePIN RPC client also no longer follows redirects.
  • Price display. A failed background start could leave the QTC price marked as fetching indefinitely; the flag is now released.
  • Housekeeping. Launch-record cleanup could delete the supervisor's own window file; orphaned claim markers and stale temporary status files are now swept, and a failing recovery step no longer blocks crash-debris cleanup.

One display item that needs new UI strings in all nine languages is not in this release and is left for a later one.

The node launch arguments, the database and the bundled node binary are unchanged (still the versionCode 10 build). No permission is added (still five). The full change list is in CHANGELOG.md.

Download

  • quantus-node-v3.0.1.apk — 55,995,644 bytes
  • SHA-256: 3542f338c53ec85e102ff11872a892cf7a8745ef4282b7d284f6ae3838b82715
  • Verify the checksum after downloading, before installing. The APK is signed with the project's release key (certificate SHA-256 65bb1a5fef27d70be1dd12fc12ce3484b4c848fceca92f8898cd96cb2784f6ff) — the same key as every public release since v0.1.0, so it installs over v3.0 keeping settings and synced data.

Requirements

  • Android 12 or later, arm64 device
  • About 3 GB of free storage as a guide (measured 1.30 GB in total after a full sync on the reference device)
  • Wi-Fi is strongly recommended for the first sync (about 2 hours on the reference device; a lot of data)

Verified / expected devices

  • Verified: Pixel 9a running GrapheneOS (the same code is in place on this device: in-place update, sync completed, recording active, and the exported proof bundle verified end to end at 389 checkpoints).
  • Expected to work: other Android 12+ arm64 devices. Not yet verified on them; aggressive OEM battery savers (Samsung, Xiaomi, …) may stop the resident service — if the node keeps stopping, exempt the app from battery optimization. Device reports via GitHub Issues are welcome; the verified list grows from them.

Known limitations

  • DePIN aggregation is not live yet: recording and proof bundles work entirely on-device, and there is no public aggregation or dashboard listing of records in this release. The record is yours to keep and show.
  • The Connection tab visualizes peer count and your own checkpoints; per-peer detail is not available from the node, so the field shows relationships in aggregate, not individual peers.
  • Automatic start after a device reboot is not implemented; open the app and tap Start after a reboot.
  • Translations (9 languages) have not yet had a native-speaker review.
  • A stalled sync on a poor connection may still need a manual Stop → Start if the automatic restart (at most 3 times in 24 hours) does not clear it.

Feedback, device reports, and bug reports are welcome as GitHub Issues. Security issues: see SECURITY.md instead of a public issue.