Lokale und datenschutzfreundliche Terrarienverwaltung
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.
flutter analyze --no-pub: no issues. Targeted encrypted-container,
Shared Care portable-backup, standalone settings-backup and Shared Care
settings tests: 15 passed. The complete suite was then run by itself with
--concurrency=1: 1,130 tests passed and one existing network-dependent
test was skipped. An earlier concurrent attempt had been stopped after 309
passing cases when it competed with the Android reference build for host
memory; that incomplete attempt is superseded by the serial result.TMBKENC! version-1 header. A selected
encrypted backup prompted for a password before its 264,457,033 bytes were
read; the picker no longer preloads the whole file before that prompt.collection.restore success. This exercises the Shared Care
browser-to-server path and its atomic safety-token rejection.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.
| 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 |
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.
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.