# Supabase and localStorage Verification
> [!summary]
> Platform readiness requires Supabase truth, UI truth, and compact client persistence to agree.
---
## Supabase truth check
For the 60-run gate, Supabase returned:
```text
ready | 60 | 3000 | 3000 | 3000 | 3000
```
That maps to:
- status: `ready`
- runs: `60`
- expected prompts: `3000`
- run items: `3000`
- Lucia responses: `3000`
- reviews: `3000`
This confirms persisted cloud data matched the expected platform gate count.
---
## localStorage compactness target
The target diagnostic is:
```text
persistedLocalFullPayloadSessionCount = 0
persistedLocalHasItemLevelData = false
persistedLocalItemLevelDataSessionCount = 0
ownedSessionCount = expected run count
otherOwnerSessionCount = 0
ownerlessSessionCount = 0
```
---
## Final verified diagnostic
```text
sessionCount = 60
persistedLocalFullPayloadSessionCount = 0
persistedLocalHasItemLevelData = false
persistedLocalItemLevelDataSessionCount = 0
ownedSessionCount = 60
otherOwnerSessionCount = 0
ownerlessSessionCount = 0
rawByteSize around 68,815
```
---
## Interpretation
This proves the tested owner context did not persist full item-level payloads locally after the gate.
It also proves no other owner or ownerless sessions were visible in the diagnostic for that tested context.
It does not prove:
- all future accounts are safe
- backend/RLS authorization is complete
- external evaluator security boundaries are ready by themselves
Keep this distinction explicit in future release and onboarding work.
---
## Behavioral label persistence check
Behavioral Observatory labels use a separate table:
```text
public.eval_behavioral_labels
```
This table is not part of the original 60-run platform readiness count.
The 60-run gate verified:
```text
eval_runs
eval_run_items
eval_item_reviews
localStorage compactness
```
Behavioral label verification must separately confirm:
- the `eval_behavioral_labels` table exists
- RLS policies exist
- the one-label-per-reviewer-per-run-item constraint exists
- a saved label reloads after refresh
- failed saves are not counted as persisted labels
Read next: [[06 - Behavioral Label Persistence|Behavioral Label Persistence]].