Stop the checklist from quoting numbers no artifact carries

A review of the p2-1 record found seven places where the prose had drifted
away from the reports it cites. None were product defects; all were record
keeping, and record keeping is what a memory system is judged on.

The quantization row mis-transcribed nine latencies, and the two worst made
dimension truncation look twice as fast as the full scan when the report
measures six percent. The extrapolation table scaled latency by atoms and
bytes by vectors under one heading that named neither switch. The picture
index stats existed only in prose, so the harness now reads the index shape
off the artifact and times the encoder on a sample, which reproduces the
hand-timed build within seven percent. The dense arms named a store that
holds no vectors, so the report names the store the vectors came from and
refuses to run where a dense leg would rank an empty index.

The frozen baseline was migrated in place by the product CLI while the
picture index was built, so its pinned mtime, digest and schema version are
re-pinned and the step that moved it is named. The sqlite_vec import added
two mypy errors; the fix is the missing stub declaration, not an inline
ignore, and the count is back to the recorded baseline of twenty-four.
This commit is contained in:
ZacharyZhang-NY committed 2026-10-08 18:51:41 -04:00
1 parent 6cc5640856
commit 71733d86d6
7 files changed
+153 -31

No files matched your search

+1 -2
View File
@@ -40,8 +40,7 @@ def _dense_facts(settings: Settings, database: Database) -> tuple[DenseState, in
facts = VectorIndex(settings, database).stats()
if not facts["built"]:
return "missing", 0, expected
# A memory with no words belongs to the picture index, so the honest denominator is the
# memories this index is meant to hold, not every row in the store.
# A wordless memory belongs to the picture index, so the denominator is what this index holds, not every row.
return ("current" if facts["pending"] == 0 else "behind"), int(facts["vectors"]), expected
+2 -4
View File
@@ -22,8 +22,7 @@ from .db import Database
from .embeddings import EmbeddingService
from .row_codec import to_json
# The vec0 schema cannot be altered in place, so the format tag is load-bearing: changing the
# vector width or the model means dropping the table and re-encoding, not migrating it.
# vec0 cannot be altered in place, so the format tag is load-bearing: a new width or model drops the table and re-encodes.
FORMAT = "ely-eye-dense-vectors-v1"
TABLE = "vec_atoms"
META_TABLE = "vector_index_meta"
@@ -183,8 +182,7 @@ class VectorIndex:
as_holder=as_holder,
)
hits = {atom_id: 1.0 - distance for atom_id, distance in ranked if atom_id in allowed}
# A filter that keeps little of the wide ask means there are more answers further
# out; one wider round buys them, and the ceiling keeps the round bounded.
# A filter that keeps little of the ask means more answers sit further out; one wider round buys them, bounded by the ceiling.
if len(hits) >= limit or len(ranked) < asked or asked >= CANDIDATE_CEILING:
break
asked = min(asked * 4, CANDIDATE_CEILING)