Rosette

Phase 0 feasibility harness

Every figure below is measured on this device or reported as unavailable. Nothing is estimated from a spec sheet, and no data leaves the device.

Device under test

Android-only experiments are only ever recorded as a pass when they were run here, on a physical handset. Emulators are flagged in the report.

E1 · On-device matting quality

Runs a pinned candidate across seven subject categories and stores every matte for review. Synthetic fixtures exercise the pipeline; attach a real photo for quality judgement.

physical device required
not-run

Every run covers all seven approved categories — people and hair, pets and fur, hard-edged products, everyday objects, flat clip-art, flower illustrations, and real flowers — plus four supplementary stress cases. Synthetic fixtures are used unless you supply a real photo for a category below; supplementary cases are extra evidence and never substitute for the seven.

Real photos supplied: none yet

E2 · Backend, timing and memory characterisation

Reports download, cold init, first inference, cached init and cached inference as five separate figures. The sub-2-second target applies to cached initialisation only.

physical device required
not-run

E2 reads the timings recorded by the most recent E1 run and evaluates them against their separate budgets.

Device loss is triggered deliberately: a GPU device is acquired, used for a real buffer round-trip, then destroyed and its lost promise awaited. Recovery must complete on WASM in the same page, with the unsaved in-memory edit intact and no reload.

E3 · Full-resolution tiled export

Renders a layered scene at 12/24/48 MP, decodes the result back, and checks dimensions, container, alpha, metadata, tile seams and source-resolution provenance.

physical device required
not-run

Run every tier in turn; each result is appended so 12, 24 and 48 MP all appear in the report.

Metadata modes are tested separately, in both directions, for JPEG, PNG and WebP. A source file carrying real EXIF (camera make and model, DateTime, DateTimeOriginal, GPS and Orientation 6) is built, imported, exported and read back.

E4 · Vault unlock: WebAuthn PRF and Argon2id

PRF counts only if a real assertion returns key material on this device. Argon2id profiles are timed so the passphrase path has a measured cost.

physical device required
not-run

The derivation runs in a worker so the unlock screen stays responsive and can be abandoned mid-way. Cancellation is timed against a measured baseline, so the midpoint is real, and a cancelled derivation must produce no key.

Migration re-wraps the same vault key under raised parameters. User data must not be re-encrypted, and the old wrapping key must stop working.

E5 · Secure inbound share handoff

Shared bytes live in service worker memory only until the redirected client posts READY, are handed to that bound client immediately (never waiting for unlock), and are never written to storage.

physical device required
not-run

Force-stop Rosette, then share a photo into it from another app's share sheet. The app boots from cold and must claim on first paint.

No handoff in the URL. Install the app, then share a photo into Rosette from the Android share sheet; the claim happens automatically on boot.

E6 · Offline cold restart

A force-stopped app, relaunched from the home screen with Airplane mode on. Automation can only verify preconditions; the verdict comes from the handset.

physical device required
not-run
  1. Install the spike build to the home screen from Chrome (menu → Add to Home screen / Install app).
  2. Open the installed app once while online so the shell and build assets are cached.
  3. Swipe the app away from Recents and force-stop it in Android Settings → Apps → Rosette → Force stop. This is what makes the restart cold.
  4. Enable Airplane mode AND turn Wi-Fi off, so there is no fallback transport.
  5. Relaunch Rosette from the home screen icon and start a stopwatch at the tap.
  6. Still offline, run "Offline capability" below: it must cut out the subject with the cached model and produce a full-resolution export without any network.
  7. Stop the stopwatch when the spike page is interactive (buttons respond).
  8. Record whether the app rendered its own shell rather than a Chrome offline page, then enter the verdict and time below.

Run this while the handset is still offline: the cached model must actually cut out a subject and a full-resolution export must actually be produced. Every network request made during the run is recorded, so a silent online fallback cannot pass as offline evidence.

Diagnostic report

0 runs recorded and kept separately — every candidate, backend, megapixel tier, format, tile size and share scenario is its own record. The journal is MEMORY ONLY on this device, so it survives refreshes, share-target navigations and force-stop restarts. A partial report can be downloaded at any time; the completeness section below lists whatever is still missing.

Completeness: incomplete

  • Environment not captured yet.
  • Missing experiments: e1, e2, e2-loss, e3, e3-meta, e4, e4-cancel, e4-migrate, e5, e6, e6-capability
  • Missing matting candidates: birefnet-lite-512-fp16, birefnet-lite-512-fp32, modnet-fp16, modnet-q8
  • Missing export tiers: 12 MP, 24 MP, 48 MP
  • Missing export formats: image/png, image/webp, image/jpeg
  • Missing tile sizes: 512, 1024, 2048 px
  • Missing E5 scenarios (no passing terminal record): cold-launch, app-already-open, locked-vault, slow-unlock, timeout-no-claim, reload-mid-handoff, process-terminated-mid-handoff
Recorded runs