Adds VaultStore.to_dict/from_dict on top of Phase A's array codec. Persists the versors (bit-exact via the codec), metadata, store_count, reproject_interval, and max_entries; rebuilds the derived _exact_index on load and leaves the lazy _matrix_cache None. Bright line (vault/store.py is a CLAUDE.md forbidden normalization site): the load path performs NO reprojection / normalization / repair — it restores the exact persisted bytes (already null-projected at their last live reproject boundary) and rebuilds only the pure index. Proven by a test asserting the restored versors are BIT-IDENTICAL to the originals (a reproject would change them via null_project) and that exact CGA recall — including the score==inf exact-match short-circuit — is identical after a save/load cycle. 5 new tests + INV-02 (normalize-not-called-outside-gate) + all vault tests pass (116 passed). Part of the A->E Shape B+ scope (Phase B). |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| crdt.py | ||
| decompose.py | ||
| store.py | ||