76 lines
4.3 KiB
Markdown
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.
|