TerraManager

Lokale und datenschutzfreundliche Terrarienverwaltung

View the Project on GitHub CodefrogCF/TerraManager

Password backup milestone follow-up, 2026-10-02

This is diagnostic evidence from an isolated source copy for the recorded release decision. It is not a production-signed release-candidate result. The primary checkout was left unchanged. The local Shared Care server and its collection were disposable test instances bound to 127.0.0.1:8765; the Galaxy S22 reached it through adb reverse. No production server or user collection was used for the Shared Care test.

Checks completed

Device and memory observation

The connected Galaxy S22 reports MemTotal: 7,445,796 KiB, about 7.1 GiB. It is not the approximately 4 GiB device required to prove a lower-memory budget. During the successful large Chrome Shared Care import, package-wide Chrome PSS was sampled with adb shell dumpsys meminfo --package com.android.chrome about every 2.4 seconds. The trace began at 817,506 KiB, peaked at 2,440,886 KiB (about 2,384 MiB), and therefore rose by 1,623,380 KiB (about 1,585 MiB). Samples cover 14:38:01 to 14:42:56 local time; server audit recorded success at 14:42:19. This is a package-wide, sequential observation, not an isolated encryption-codec overhead comparison. It confirms that the current browser path still needs whole-archive buffering and cannot be claimed to have bounded peak memory at the 256 MiB import limit.

Size evidence

Artifact Pre-feature source Current source Delta
Test-signed Release APK 91,822,164 B 76,189,122 B -15,633,042 B
Test-signed Release AAB 80,947,648 B 72,935,298 B -8,012,350 B
Standalone Web bundle 48,396,793 B 48,458,875 B +62,082 B
Shared Care Web bundle 48,619,255 B 48,687,817 B +68,562 B

Both columns use the same local Flutter 3.47.0 / Java 22 toolchain and the same disposable signing key. The pre-feature source is commit 11805b4 in a separate temporary copy; the later source includes many unrelated changes. The Android reference build needed a temporary 3 GiB Gradle heap and two workers after an 8 GiB daemon ran out of native memory while a broad test run was also active. Gradle lock files were refreshed in these disposable copies only; the delivered lock state is the repository version. These deltas cannot be attributed to encryption alone or used as final release sizes.

Against the Issue #118 baseline recorded in ADR-036, the current diagnostic artifacts differ as follows. The source revisions and build setup differ, so this is a size record rather than an acceptance result.

Artifact Issue #118 baseline Current source Difference
Release APK 91,272,456 B 76,189,122 B -15,083,334 B
Release AAB 80,397,959 B 72,935,298 B -7,462,661 B
Standalone Web bundle 48,224,404 B 48,458,875 B +234,471 B
Shared Care Web bundle 48,618,652 B 48,687,817 B +69,165 B

Release-validation acceptance status

The bounded-memory optimization is tracked separately and is not a completion condition for this release-validation issue. The current release must continue to document proportional memory use for large protected operations and must not claim bounded-memory behavior.

Acceptance area Current evidence Status before publication
Physical Android encrypted restore Galaxy S22 Debug and test-signed Release restored the 252 MiB protected fixture Complete
Physical Android encrypted export Native protected export still needs one release-candidate device run Open
Standalone mobile Web Brave protected export/restore plus Chrome and Firefox protected restore on the Galaxy S22 Complete
Shared Care browser path Galaxy S22 Chrome protected safety export and 252 MiB restore against a disposable local server Complete
Supported desktop Web The in-app Chromium diagnostic run is not a supported desktop-browser release result Open
Wrong password, changed ciphertext/header, truncation, fresh salt/nonce Automated coverage plus Brave negative-path device checks; header salt/nonce manipulation is covered by the focused container tests Complete after focused tests pass
Large media Synthetic 252 MiB / 84-picture fixtures exercised on native Android, standalone Web and Shared Care Complete functionally; memory bound deferred
Unencrypted legacy formats Portable formats 1 and 2 remain accepted by automated backup validation/restore coverage Complete after full suite passes
Password/plaintext/log exposure Native encrypted save spools and Shared Care temporary server spools are ciphertext; S22 debug cache inspection found no plaintext ZIP; password persistence/logging is covered by focused source/tests and final release-candidate inspection remains required Final inspection open
APK/AAB/Web size comparison Diagnostic values are recorded, but they used Flutter 3.47.0 / Java 22 instead of the pinned release toolchain Open
Format/privacy/DE+EN guide/release documentation Synchronized with shipped behavior and the documented large-backup limitation Complete after documentation tests/PDF regeneration

The remaining open rows are release-candidate evidence tasks, not implementation or memory-optimization tasks. Close this issue after those rows are recorded with the pinned release build.

Release decision

The project accepts the measured memory limitation for the first release of the optional password-protected backup feature. Web validation, Shared Care request upload and some save fallbacks still have complete-archive memory costs. The native paired 252 MiB result also exceeded the proposed additional 64 MiB memory target. The feature must therefore not be described as bounded-memory, and very large protected operations can fail on lower-memory devices.

The 64 MiB goal and a physical approximately 4 GiB device run are deferred to follow-up optimization. The completed authentication, corruption, legacy, cancellation, safety-copy, cross-client and atomic-replacement checks support shipping the feature with this known limitation. Users see processing progress and can continue to choose an unprotected portable backup.

A production publication still requires the ordinary release process: build with the pinned toolchain and production signing, record the final APK, AAB and both Web-bundle sizes, inspect the generated guide PDFs, and smoke-test the actual release candidate on the supported targets. The fixture and diagnostic builds in this report do not replace those release-candidate checks.