Дословный перенос продающей базы и механики движка в knowledge/aleksandra/playbook/
(13 блоков + крючок/лесенка + нюансы + механика + финал + красные флажки, метки цен
{{вилка}}/{{тарифы}}/{{цена_подбора}}/{{цена_изучения}} не раскрыты). Черновые карточки
ниш деревом (Медицина→стоматология, Финансы→займы под залог) — специфика ниш
стоматологии и займов под залог собрана на основе живой Sonar-справки из
scratchpad/otrasl_cache; без выдуманных цифр/процентов. Всё проверено фейковым
эмбеддером на парсинг (build_index, load_playbook).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
index_store.py сканирует папку карточек, считает отпечаток каждой (embed_fn
инъекцией) и складывает индекс nisha/roditel/sinonimy/path/vector;
save_index/load_index — JSON roundtrip. build_index.py — CLI ручной
пересборки индекса (провайдер эмбеддингов через ALEX_EMBED). TDD: тест
падал на ModuleNotFoundError до реализации, затем 2 passed (плюс полный
пакет brain — 12 passed, регрессий нет).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
embed.py: get_embedder(provider) — aitunnel (живой /v1/embeddings) по
умолчанию, fake (детерминированный без сети) для тестов, local — заглушка
NotImplementedError. batch() применяет embed_fn инъекцией — сеть не
затрагивается в тестах.