Pool-depth analysis (2026-07-06, live corpus):
| pool |
cases |
scored |
skipped |
cosine |
KRA |
delta |
| 20 (prod) |
30 |
24 |
6 (20%) |
0.3036 |
0.4514 |
+0.1478 |
| 50 |
32 |
30 |
2 (6%) |
0.2317 |
0.3075 |
+0.0758 |
Reading: most knowledge that was actually injected into a successful session but missed by the benchmark pool sits at cosine ranks 21–50 — i.e. production's top-20 pgvector prefilter cuts off items the KRA re-rank would plausibly surface (KRA's delta stays positive at depth 50). Genuine recall misses are ~6%.
Proposal (post-Stage-3-gate; the feature freeze forbids tuning now): widen candidatesForPrompt's pgvector fetch to ~50, keep the ≤10 output cap, re-run the benchmark on the same fixture, and measure injected-used rate on the loop-health panel before/after. Cost: one bigger index scan per session open — cheap at current corpus size; re-evaluate the constant when the corpus grows 10×.
Caveats: n is small (30–32 cases), labels are the weak proxy (docs/VALIDATION.md).
Pool-depth analysis (2026-07-06, live corpus):
Reading: most knowledge that was actually injected into a successful session but missed by the benchmark pool sits at cosine ranks 21–50 — i.e. production's top-20 pgvector prefilter cuts off items the KRA re-rank would plausibly surface (KRA's delta stays positive at depth 50). Genuine recall misses are ~6%.
Proposal (post-Stage-3-gate; the feature freeze forbids tuning now): widen
candidatesForPrompt's pgvector fetch to ~50, keep the ≤10 output cap, re-run the benchmark on the same fixture, and measure injected-used rate on the loop-health panel before/after. Cost: one bigger index scan per session open — cheap at current corpus size; re-evaluate the constant when the corpus grows 10×.Caveats: n is small (30–32 cases), labels are the weak proxy (docs/VALIDATION.md).