What a stranger can verify
August 28, 2026 · View on GitHub
Three layers. Do not merge them. They do not prove the same thing.
| Layer | What it proves | Reproducible from this clone? |
|---|---|---|
| 1. Implementation | The lock does what ARCHITECTURE.md says | Yes — clone_25 |
| 2. Comparison | After the same metadata, the lock refuses where unthresholded lexical TF-IDF still cites | Yes — lock_vs_neighbor |
| 3. Field self-report | Author’s filled vault, one window | No. Labeled. Use the checker on your vault. |
This is not five fresh LLM sessions. 这不是五次新会话LLM盲测. The author’s 2026-08-21 rewrite set asked paraphrases a model had to compress into a noun. CI cannot be that model. clone_25’s 25/25 is not the same kind of evidence as that private 25/25.
template/ is a clean minimum sample. Names are short, topics barely collide. It is a floor (the mechanism is not buggy), not a ceiling (it does not show the dirty live vault). Real notes are messier.
Layer 1 — implementation (clone_25)
The map against template/. Two different checks. Do not quote them as one score.
Exhaustive map check
25/25 topics, 39/39 aliases, 0 conflicts.
This is an enumeration, not a sample. Every alias is looked up; every pair is checked for collision. There is no “N is small” caveat. It proves this table is internally consistent. It does not prove the ranker is clever.
python3 scripts/verify_canonical_map.py
python3 tests/fixtures/clone_25/run.py
python3 -m pytest -q tests/test_clone_25.py
Invariant check (rewrite)
25/25 paraphrases miss. 25/25 listed short nouns hit the gold page.
That is implementation correctness: whole-sentence rewrite does not fire AND matching; a protocol noun finds the gold page. Code does what the protocol wrote. No bug on this sample.
It does not replace layer 2. Layer 2 asks whether that matching choice beats lexical cosine. Layer 1 asks whether the code implements the choice.
Map and questions: tests/fixtures/clone_25/.
The checker vs the author’s 26/26 · 156/156
verify_canonical_map.py lets any host check their map against their vault.
python3 scripts/verify_canonical_map.py \
--map /path/to/canonical_sources.psv \
--vault /path/to/YourVault
It does not verify the historical claim “the author’s live map was 26/26 · 156/156.” That map is not in this repository. Running the script on template/ is not a replay of that number.
Layer 2 — comparison (lock vs neighbor)
Expired page vs refuse. Four claims. N=36. Protocol: LOCK_VS_NEIGHBOR.md.
python3 tests/fixtures/lock_vs_neighbor/run.py
python3 -m pytest -q tests/test_lock_vs_neighbor.py
- Claim A (closed): expired pages vanish because
invalid_atand the map were applied, not because a ranker is smarter. MiniLM naive old-page is 3/4; after the same filter it is 4/4. - Claim B (lexical TF-IDF on that fixture): after the same information, the lock refuses; unthresholded cosine still returns a page. Six CJK rewrites sit below the strongest OOD negative. A floor sweep, including leave-one-out, finds no operating point that matches the lock.
- Claim C (multilingual MiniLM on that fixture): same floor sweep as Claim B. CJK inversion is gone. Failure is precision: unthresholded,
H15发版 already ranks the seal page, not deploy. A floor cannot repair that. Replay:dense_vectors.json(not a live encoder). Lightweight. - Claim D (BGE-M3 on that fixture): same floor sweep. Hit 16/16 including 发版. Floor 0.40: 16/16 hits and 12/12 OOD negatives (N01–N12) refuse; leftover is neighbor
B03「生产事故」→ timer page — not one of those 12. Floor 0.45: false-neighbor 0, a true hit drops. No operating point is 16/16 + 12/12 OOD refuse + false-neighbor 0. Replay:dense_m3_vectors.json. Middleweight is the mainstream opponent. Heavyweight (hybrid + rerank) is out of scope.
Gold: tests/fixtures/lock_vs_neighbor/. Here N is small; say so when you quote false-neighbor rates.
clone_25 and the lexical/TF-IDF rows replay with python3 + rg from this clone. MiniLM and BGE-M3 rows replay frozen JSON (dense_vectors.json, dense_m3_vectors.json) plus a content fingerprint. That checks the recorded vectors, not a stranger re-downloading the encoder. Re-encode is optional (encode_dense.py); Hub snapshots are not in the clone.
Layer 3 — field self-report (not in this clone)
Measured 2026-08-21 on the author’s private vault. This repository does not contain the materials to reproduce them. Treat as a self-report, not a receipt.
| Claim | Why it is not in this clone |
|---|---|
| LLM 25/25 (2026-08-21) | Questions name private projects. Scoring needed five new chat sessions. |
| 26/26 topics, 156/156 aliases | The live map is private. The checker on your files is a different measurement. |
| 72 consecutive sealed days | Needs that window’s 05 时间日志/. Template ships one sample day. |
| 30 real tasks | Task logs are private. |
verify_sealed_days.py is the same trust model as verify_canonical_map.py: it measures this vault, it does not replay “the author sealed 72 days.”
A day is sealed when 05 时间日志/YYYY-MM/DD|*.md exists, is not empty, and is not a 待总结 / to-summarize stub. Empty files are gaps. Same-day stub + body counts as sealed. Omit --from-date / --through-date and the window is the first and last day files found.
python3 scripts/verify_sealed_days.py
python3 scripts/verify_sealed_days.py --vault /path/to/YourVault
python3 scripts/verify_sealed_days.py \
--vault /path/to/YourVault \
--from-date 2026-06-10 \
--through-date 2026-08-20
python3 -m pytest -q tests/test_sealed_days.py
Titles stay local. The report prints dates and gap kinds only.