v0.4: optional embedding expert for real semantic similarity. New projection.py (dense->HV via random projection + sign, cosine-preserving). EmbeddingExpert plugs into the brain unchanged (duck-typed Expert contract) and makes spain~portugal similar at the HV level (the missing ingredient for analogy). Two paths: from_corpus_local (PPMI+SVD mini-embedding, numpy-only) and from_fasttext (pretrained .vec). StructuralEncoder.attach_embedding wires semantic slot HVs. Honest: mini-embedding brings semantic similarity (measurable) but factual correctness stays ~0% (needs fastText + better decoding); pipeline ready. 106 tests.
v0.3: structural query encoding (patterns + slots) for generalization. Expert.from_qa_pairs now accepts patterns=[...]; questions matching a template are encoded as bind(pattern_hv, slot_hv). On a capitals holdout benchmark, char-level returns empty 100% of the time on unseen slots; structural returns a well-formed answer 100% of the time (+100 pts graceful degradation). Honest: format-generalized guesses by analogy, not factual correctness (no embeddings). 91 tests passing.