Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit 4a40a6db7e163379688d79a66dfb9d6ef70e7031
parent 4920e7b459fb9a62ee978dabadb53e2e5a67232f
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Tue, 22 Sep 2026 13:37:45 -0400

FACTS: key-only LMDB scans never pass values:false

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Diffstat:
Mplans/FACTS.md | 2++
1 file changed, 2 insertions(+), 0 deletions(-)

diff --git a/plans/FACTS.md b/plans/FACTS.md @@ -243,6 +243,8 @@ candidate (cue reads gated per video by channel/date scope); assignments changed symmetric difference of the signatures, located by a key-only `byChannel` range scan per affected channel. **It is `async` and yields to the event loop every `CURATED_REAPPLY_YIELD_EVERY` (200) records walked**, in both loops — a rule edit makes this + +- **Key-only LMDB range scans use `getRange({start,end})` WITHOUT `values: false`** (verified 2026-09-22): with that option lmdb-js yields bare keys, not `{key, value}`, so `for (const { key } of …)` reads `undefined`. The first assignment-only re-apply on the real corpus crashed on exactly this (`8db8a3be`); `recencyIndex.ts:111` documents the same convention, and the test fake now yields bare keys under `values: false`. the one whole-corpus pass in the build, and at ~500 cue-decodes/second an unscoped caption rule is 2–3 minutes; run synchronously inside the editor that blocked every page render for the duration (observed live 2026-09-21, `/channels` `/jobs` `/tags` all >25 s). The