Browse documentation

Storage-exception verification

The optional policy/controller/native controls implement declared scope, separate objections, atomic browser persistence, revision-bound resuming and cooperative service lifecycle gating. This verifies software behavior. The underlying legal requirement remains partial and unreviewed.

packages/notabenda/test/storage-exceptions.test.mjs covers exclusive inventory ownership, production review, no implicit consent grant, hydration and presentation gates, immediate abort, failed persistence and retry, objection preservation through revisions/reload, stale resume, older tabs, malformed state, restrictive scope facts, late startup teardown, detached controls, direct native switches, initial storage failure, IndexedDB reopen and exact-key cleanup. Focused controls retain keyboard focus while their saving state blocks repeat actions. A held transaction result reproduces a notification arriving during refresh and verifies that it never restarts a stale generation. Sparse-array/accessor/text cases check bounded rejection before journal access. Consent and compiled-consent regression tests use the same shared lifecycle runner.

The final release check passed 642 package tests, 84 site tests, both catalog checks, the website build and the Worker dry run. All 320 previously generated artifact files retained their exact hashes.

The sample services stay in the browser. Its static configuration and bundle contain no external provider or tracking endpoint. Recorded consent remains a separate controller and can never resume an exception objection. The example is linked under privacy choices → specialist controls, alongside its guide.

Chromium on a separate local Worker checked direct on/off controls, an objection surviving reload and consent acceptance, broad rejection of both controllers, explicit resuming, and a layout preference surviving ordinary reload. The default view opens no dialog. At 390×844 and 320×700 the page contained its width; observed control label rows exceeded 44px and the visible action button was 45px high. The controls use the shared example styling and remain inline.

A packed npm artifact passed strict TypeScript import checking, actual ESM construction/objection persistence and exported CSS checks. Browser runtime graphs exclude backend, authoring and framework modules; the compiled consent graph excludes this optional controller. The compiled local consent entry remains within 15 KiB gzip; the full compatibility entry remains above that target and is reported separately. No package was published to npm.

Pending acceptance includes actual provider qualification, downstream aggregation/retention enforcement, independent legal and linguistic review, physical mobile devices, WebKit/Firefox, assistive technology, high zoom and full contrast/forced-color review. No automated result certifies eligibility for an exception.