The actual Debian 12 arm64 Tauri host using WebKitGTK 2.50.6 fails the universal storage proof. This is a measured backend limitation, not an automation-access failure or an HTTP-versus-custom-origin assumption.
Run from the repository root after building the pinned SQLite distribution and desktop frontend:
npm run build --workspace @quixi/desktop
python3 tests/hosts/linux/run.py --output tests/hosts/results/tauri-linux-bookworm-arm64.jsonThe command currently exits 1 because the tested host fails. Use
--skip-image-build to reuse the existing prerequisite image. The Dockerfile
pins Rust 1.97.1/bookworm by digest and installs
Tauri's official Linux prerequisites,
Xvfb, D-Bus, and software rendering dependencies. Apt package versions and the
built image ID are recorded in the report; package repositories are not frozen.
The runner copies an explicit allowlist of Cargo/native sources, current bundled
desktop assets, proof scripts, and the pinned SQLite WASM into temporary staging.
It excludes model downloads, legacy code, and macOS build trees. Cargo builds
with --locked, two jobs, and separate named Linux target/registry/git volumes.
The real Tauri application runs as a nonroot container user under Xvfb and D-Bus.
No WebKit sandbox-disabling option or privileged-container option is supplied.
The only persistent container resources are the image and those build caches;
the runtime home and synthetic OPFS files are discarded with the container.
The recorded result contains the following independent observations:
- The shared two-WebView/process-restart proof loads in actual Tauri using
tauri://localhost, but stops before SQLite initialization. The context is secure; Web Locks, workers, and BroadcastChannel exist.navigator.storageis absent under the default settings, so later proof checks cannot run. - A container-only, environment-gated native callback inspects the same Tauri
runtime under both
tauri://localhostandhttp://127.0.0.1:1437. Both are secure contexts and both lack the storage API by default. The HTTP route is diagnostic only and is not used as a production transport or backend. - The installed library's public feature API reports
AccessHandleandFileSystemas mature, andFileSystemWritableStream,StorageAPI, andStorageAPIEstimateas stable. All five default to false. The standalonefeatures.cprobe records their settings and roundtrip toggles; its settings object does not host content. Feature status alone does not prove backend support on a particular platform. - A test-only interposition library enables exactly those five features
through the documented
WebKitGTK feature-setting API
when the actual Tauri WebView obtains its settings. It is never linked into
the app or copied into a release. This exposes the APIs but still fails the
same SQLite proof. Bounded synthetic worker probes under both origins
successfully call
getDirectoryandgetFileHandle, then receiveNotSupportedError: Backend does not support this operationspecifically fromcreateSyncAccessHandle.
The official WebKitGTK 2.50.6 source release
has SHA-256
2b281abf8894ffc6172152e5660b75eeeedbe1cc43d6783d09dc79f7c865bb42.
Inspection of Source/WebKit/Platform/IPC/SharedFileHandle.cpp:31 shows that
SharedFileHandle::create returns std::nullopt on non-Cocoa platforms.
Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.cpp:213 maps that
failure to BackendNotSupported. This directly explains the observed sync
access-handle failure after the public API flags are enabled.
For plan 01, this exact Linux/WebKitGTK build is a no-go. A later release with a working native sync-access-handle backend must pass the full identical proof before Linux support is claimed. Changing origins or enabling these settings alone does not resolve the measured failure. No alternative canonical backend was added. These results do not claim anything about newer WebKitGTK builds, other Linux distributions/architectures, or signed installer behavior.