📝 Experiment_001_checkpoint_3.mdv4.6.0 · 2026-10-19

Experiments 000, 001, 002 — Checkpoint (3)

Operator: Andrew. Written 2026-10-27 05:27 Sydney. Follows Experiment_001_checkpoint_2.md (kept, never overwritten; Experiment_001_checkpoint.md also kept). Status: two tools built and delivered (hotwords 2.1.0, contextdef_05b 1.0.0). Experiments themselves not started; the recorder (build step 1) is still not written. Resume: paste this file together with Experiment_001_checkpoint_2.md into a fresh conversation. Where the two differ, this file wins; the differences are listed in section 3. Related: MEMSTORE_CLONE_CHECKPOINT_2026-10-27_2.md (global parameters).

1. What happened since checkpoint 2

  1. Hot word / hot phrase extractor built: Hotwords_v1.0.0.zip, v1.0.1 (non-ASCII crash fixed), then redesigned as Hotwords_v2.0.0.zip and Hotwords_v2.1.0.zip (current). All kept, never reused.
  2. Context definer trial built: ContextDef05b_v1.0.0.zip (contextdef_05b.py).
  3. Design moved from "documents" to small arrays of hot terms (see section 2).
  4. The operator doubted the concept ("worried the whole concept is crap"). Claude's assessment is recorded in section 7 so the new chat starts from it.

2. Operator decisions and statements (design-significant, in order)

3. Differences from checkpoint 2

Topic in checkpoint 2 Now
Retrieval over passages / "documents", support table from retrieved passages Retrieval over hot-term arrays (tool hotwords.py). No text kept. The support table is built from the arrays RAG chose.
Background frequency table from forum text or the attachments corpus Dropped for now. Rarity comes from the counted texts themselves (word counter keyed by spelling key). Known weakness, risk 16 in section 5.
Context definition: rule-based only Rule-based design stands (still not built). Plus a trial using the 0.5B to produce subject / intent / terms. Position weighting should be added to the rule-based subject score (early query words count more).
LLM2 input = context definition + 50 candidates LLM2 input = the pseudo query (query's hot array + RAG's related terms, each with a weight) + the 50 candidates. How the pseudo query becomes 50 weights is not yet designed; proposal: a candidate's weight = the weight of the pseudo-query term it matches (spelling key, then fuzzy for plain words), 0 if none. Not agreed.
Words/phrases as arrays of embeddings, exact match in v1 Unchanged in intent, but v1 matching is now spelling key plus fuzzy (edit distance) on plain words. Still no embeddings.
Settings list (SIM_FLOOR etc.) Several are now concrete (section 9).

Everything else in checkpoint 2 (experiments 000/001/002, decisions on stage separation, driving LLM1 one word at a time, pseudo code, risks 1 to 13, build order) stands.

4. Problem & Resolution

Problem: the retrieval side of Experiment 001 needs a way to turn LLM1's own history into a small, fast, relevance-ordered store that can be matched against a new query, tolerant of spelling variants, and that yields a query LLM2 can use. Resolution: hotwords.py 2.1.0 (details below) and a 0.5B context-definer trial. Both are tools, not yet wired into any experiment.

hotwords.py 2.1.0 (current)

contextdef_05b.py 1.0.0 (trial)

5. Risk Analysis (new, adding to checkpoint 2's 13)

  1. Echo. The archive is mostly LLM1's own replies, so boosting terms from it mostly amplifies what LLM1 already says. It helps only if the archive holds things LLM1 does not produce unaided (the operator's corrections, preferred wording). Highest-level risk to the whole idea.
  2. Terms without context. A boosted term does not know whether the next word should be that term.
  3. Rarity from the counted texts themselves. Once the archive is mostly about one subject, that subject's words become common and are marked down against generic words (seen already in a small test: "likely", "normal", "dose" outranked "serotonin", "syndrome" in the query's own array). Remedy would be an outside reference; the earlier seed-background was removed in 2.0.0.
  4. Phrases almost never repeat inside a short query, so queries yield words; phrases come from replies.
  5. Fuzzy matching is spelling only. It will not match short words (a misspelt MDMA or LSD) or any word with a digit, by design. Fuzzy search scans the whole word list per run: fine for thousands, to be revisited at hundreds of thousands.
  6. Scores in stored arrays are snapshots taken when the array was made.
  7. Code is not handled: fenced code is stripped, snake_case splits, and fuzzy would merge get_user with get_users. A code mode (keep code, whole identifiers plus parts, no fuzzy) is not built.
  8. The 0.5B is the same family as LLM1 and weak at structure; its context definitions may be malformed or biased the same way (checkpoint 2, LLM2 weakness).

6. Code Change

Delivered this session (all kept): Hotwords_v1.0.0.zip, Hotwords_v1.0.1.zip, Hotwords_v2.0.0.zip, Hotwords_v2.1.0.zip, ContextDef05b_v1.0.0.zip, Experiment_001_checkpoint_2.md (previous). Release cards given with each; the open line on each is "run on the Clone's Python 3.6 / 3.8 / 3.15" and, for the context definer, "run against the real 0.5B".

7. Honest assessment given to the operator (so it is not lost)

8. Build order (updated)

  1. Run contextdef_05b.py on a few queries; report malformed rate, added terms, seconds per query. Run hotwords.py on the Clone's Python versions; feed it real query/reply pairs.
  2. Natural-run recorder (raw top 50 per step, fixed context). Experiment 000 runs on it, and its query/reply pairs feed hotwords.py add.
  3. Decide how the pseudo query becomes 50 weights (section 3, table), then the blend and candidacy comparison. Experiment 001.
  4. Context definition builder (rule-based) with position weighting, saved files and index. Compare with the 0.5B trial output.
  5. Injection and the α dial. Experiment 002.
  6. LLM2 model pass in place of counting, judged against step 3.

9. Open items

10. Standing operator rules (carry forward)