Implement js/wasm target: wasm-bindgen vodozemac driver, suspend-read store seam, browser IndexedDB store #89

Closed
opened 2026-08-13 11:47:26 +02:00 by thecrealm · 2 comments
Owner

M6 criterion 1 half A implementation, following the #84 go (D50):

  • feature-gated wasm-bindgen surface in the katrix-owned wrapper crate (uniffi stays JVM/Android/native); hand-written Kotlin externals implement CryptoDriver (§3.4) on js and wasmJs; conformance kit (§10.11.2) green on both targets
  • getrandom js feature for wasm32 builds; wasm binary CI-built and hash-pinned (§9)
  • FactStores/EventCacheStore reads become suspend (write block stays non-suspending; CR-1/CR-17 unchanged) — D50
  • browser IndexedDB store per docs/planning/browser-store-sketch.md: one IDB transaction per fact batch (CR-1), WebCrypto AES-GCM values + HMAC-derived keys under the caller-supplied key, wrong key fails typed (CR-7/CR-15), Web Locks as the §10.7.4 lock, versionchange migrations (§10.7.3), principal in every key (CR-9)
  • browser-engine CI run (headless) closes the spike's residual risk
M6 criterion 1 half A implementation, following the #84 go (D50): - feature-gated wasm-bindgen surface in the katrix-owned wrapper crate (uniffi stays JVM/Android/native); hand-written Kotlin externals implement CryptoDriver (§3.4) on js and wasmJs; conformance kit (§10.11.2) green on both targets - getrandom `js` feature for wasm32 builds; wasm binary CI-built and hash-pinned (§9) - FactStores/EventCacheStore reads become `suspend` (write block stays non-suspending; CR-1/CR-17 unchanged) — D50 - browser IndexedDB store per docs/planning/browser-store-sketch.md: one IDB transaction per fact batch (CR-1), WebCrypto AES-GCM values + HMAC-derived keys under the caller-supplied key, wrong key fails typed (CR-7/CR-15), Web Locks as the §10.7.4 lock, versionchange migrations (§10.7.3), principal in every key (CR-9) - browser-engine CI run (headless) closes the spike's residual risk
Author
Owner

Split per D59 (2026-08-22): # seam → # web targets → # wasm driver → # IndexedDB store → # browser CI gate. This issue stays as the criterion tracker; closes with #.

Split per D59 (2026-08-22): # seam → # web targets → # wasm driver → # IndexedDB store → # browser CI gate. This issue stays as the criterion tracker; closes with #.
Author
Owner

Correction of the comment above (numbers): split per D59 (2026-08-22): #113 seam → #114 web targets → #115 wasm driver → #116 IndexedDB store → #117 browser CI gate. This issue stays as the criterion tracker; closes with #117.

Correction of the comment above (numbers): split per D59 (2026-08-22): #113 seam → #114 web targets → #115 wasm driver → #116 IndexedDB store → #117 browser CI gate. This issue stays as the criterion tracker; closes with #117.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
thecrealm/katrix#89
No description provided.