Files
fileworkbench/docs/VALIDATION-0.2.0.md
T
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

76 lines
4.3 KiB
Markdown

# 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:
```sh
./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:
```text
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.