Files
fileworkbench/docs/VALIDATION-0.2.0.md
zemion db873063f8
Verify source and build Android / android (push) Canceled after 0s
initial commit v 0.2.0
2026-09-24 22:49:27 +02:00

4.3 KiB

Validation report — Fileworkbench source release 0.2.0

Date: 2026-09-23. This is an implemented-source release, not a verified Android APK.

Executed

Check Result Scope
Offline production core/JVM compilation and checks 112 / 112 passed Kotlin/JVM 1.9.0, OpenJDK 21.0.11; not the pinned Android toolchain
Android resource/manifest XML and source invariants Passed Source-level checks only
Kotlin PSI parse 44 files; 0 parse errors Syntax only; does not resolve Android/Compose/Gradle symbols
Android build entry point ./scripts/verify-android.sh Failed at wrapper download, exit 6 DNS lookup for raw.githubusercontent.com failed before Android compilation
APK generation No APK produced No Android SDK/Gradle dependencies/emulator available

The 112 checks comprise the retained 75 document-core/JVM checks plus 37 new browser/MIME/selection/ byte-budget checks. The offline runner invokes the same unit-test method bodies used by the Gradle suite after removing only test-runner annotations/imports. It does not substitute for a resolved Gradle build, Android instrumentation, or Apple framework compilation.

Executed commands:

./scripts/test-core.sh
python3 scripts/check-project.py
./scripts/check-kotlin-syntax.sh
./scripts/verify-android.sh

Raw evidence is in TEST_RESULTS.txt, SOURCE_CHECKS.txt, and BUILD_ATTEMPT.txt. The actual build attempt reached project source checks and the Gradle wrapper bootstrap, then failed with:

curl: (6) Could not resolve host: raw.githubusercontent.com

No Android compiler, D8, lint, packaging, installation, or emulator ran after that failure.

What the structural checks establish

The main manifest is parseable and declares no uses-permission entries; the PDF service is marked isolated/nonexported; the production FileProvider is nonexported and its allowlist contains only shared/ and picked/ caches. APP_FILES and a separate standard-launch GET_CONTENT activity are registered, and no activity declares OPEN_DOCUMENT/OPEN_DOCUMENT_TREE. The debug fixture provider is absent from the main manifest. Source assertions check read-only copied-result flags, use of streaming byte budgets, and intent sanitization before activity ViewModel creation.

Common Kotlin files have no Android/Java imports. There is no WebView instantiation or Log call in main Android source. These are useful invariants, not runtime grant-isolation or security proofs.

Written but not executed

There are 12 Android instrumentation test methods: the two retained/extended viewer smoke tests and ten browser/picker integration tests. They cover UI entry points, PDF IPC, synthetic SAF metadata, large/nested folders, copied MIME metadata, single/multiple result structure, intent registration, LOCAL_ONLY/MIME forwarding, virtual documents, and rejection of caller-supplied restore-state keys.

These Android tests have not been compiled, installed or run. The debug-only synthetic document provider is test support, not a user-storage provider. Same-UID result checks cannot establish cross-UID grants; a separate caller app is explicitly required by BROWSER_ACCEPTANCE.md.

Remaining verification gates

  • Resolve pinned Gradle/Kotlin/Android dependencies under JDK 17; compile, lint, D8 and assemble both debug APKs. Fix actual compiler/API/packaging errors before claiming an installable release.
  • Run instrumented tests and BROWSER_ACCEPTANCE.md on real devices/emulators, including API 26, Android 11+ storage restrictions, a current phone, and an independent result-receiving app.
  • Verify preview-to-browser navigation/scroll, rotation/process restoration, separate picker/viewer lifetimes, folder grant renewal/removal, cache/URI invalidation, and existing preview regressions.
  • Verify cancellation with slow/unresponsive providers, truthful and dishonest sizes, truncated listings, malformed documents, thumbnail decoding, memory pressure and copied-file limits.
  • Verify accessibility, large fonts, portrait/landscape layouts, and actual visual rendering.
  • Build the Apple framework and implement/test its native browser/file-access adapters separately.

No device screenshots, performance measurements, whole-phone storage access, perfect Office rendering, security audit, iOS app, or successfully executed CI build are claimed by this release.