Не архив, не дневник. Каждая строка — проверенный факт, сжатый до одной мысли. Полная история — в
AGENT_DIARY.md/EXPERIMENTS_LOG.md.
- Indexer всё ещё composition root (12+ подсистем в init, indexer.py:34-196); кэш-счётчики продублированы в 3 классах (Indexer/db_manager/project_runner).
- Канон доков: 57 base (+1
execute_scriptпри env=true → 58) — дрейф закрыт 2026-08-08. - mcp 2.0.0 уже на PyPI — потолок <2 защищает реально.
MagicMock(return_value=asyncio.sleep(0, result=X))— eager-корутина живёт в циклах ссылок мока до чужого GC → «coroutine 'sleep' was never awaited». Правильно:AsyncMock(return_value=X).- Мок DI-сервисов НЕ изолирует LSP: WriteTool._get_lsp_client импортирует LspClient напрямую → rename-тест поднимал реальный basedpyright и не закрывал его (unclosed transport). Фикс: WriteTool.close() + teardown фикстуры. Проверять -X dev прогоном, а не which-ом: langserver лежит в Zed\languages...\node_modules, вне PATH.
- CI-гейт —
ruff check src/ tests/ЦЕЛИКОМ, а не per-file: F841/F401/BLE001 накапливались по коммитам, pytest локально был зелёный, а lint-шаг блокировал ВСЕ тесты в CI. Pre-push: полный ruff, не только изменённые файлы. - F401-автофикс опасен на ФАСАДАХ: src/mcp/server.py реэкспортирует
resolve_project_root/reset_project_root_cache (импортируются base.py:127 и
тестами) — автоудаление дало ImportError. Реэкспорт =
# noqa: F401. - BLE001: новые файлы обязаны без broad except; sqlite-код → сужение до (sqlite3.Error, OSError); integrity-rollback (BL-05) → noqa с причиной.
- Локальная проверка ТОЛЬКО на py3.14 слепа: tomllib (3.11+), read_text (newline — 3.13+), realpath UNC (3.10-3.12 бросает FileNotFoundError). Guard: прогон matrix-команды на py3.10 и py3.11 (есть в py-лаунчере).
pip install -e .[dev]НЕ апгрейдит нарушающие пин пакеты в старом venv (язык-pack 0.13.0 остался на 3.11 при пине >=1.14.3) — при версионных расхождениях локального окружения обновлять пакет явно, не доверять -e .
- Windows-only тесты БЕЗ skipif(win32) валят ubuntu-джобы (normalize_diag_uri драйв-букв: на POSIX /d:/... — обычный путь). Guard: проверять ubuntu-джобы CI, не только локальный Windows-прогон.
- pip-audit -r lock --no-deps БЕЗ --disable-pip всё равно резолвит через pip в temp-venv (requirement.py:161-168: --no-deps лишь разрешает preresolved-путь) → pywin32 валит ubuntu, numpy 2.4.6 без колёс для py3.10. На Windows py3.14 локально маскируется (установка успешна). Guard: --no-deps --disable-pip.
ghCLI авторизован (ManSio) —gh run view <run> --job <id> --logдаёт точные фейлы CI, аннотации GitHub — только «exit code 1».
Правила:
- ≤50 строк. Новое входит — вытесненное уходит в
docs/archive/. - Пополнение в
[🏁 ИТОГ]сессии (Триггер 7, §1.19): 1-3 лучших урока, не больше. - Строка без подтверждения/использования 30+ дней → удалить или архивировать.
- Свежая строка бьёт старую → старую удалить,
CONTRADICTION RESOLVEDв дневнике (§4.9).
- Windows mutex-эталон:
CreateMutexW(None, False, ...)+ WaitForSingleObject + парный ReleaseMutex (graph.py:74, onnx_client.py:76). llama_runner.py:184 — исправлен наFalse2026-08-08 (былTrue— утечка владения), тест test_llama_mutex Windows. - CVE-2026-4372 (transformers RCE, обходит trust_remote_code) фиксится в 5.3.0, НЕ 5.0.0 — «fixed version» брать из OSV по каждой CVE; lock уже 5.14.1, пин поднят до >=5.3.0.
- LanceDB atomic delete+add: фикс table.version + restore(prev_version) при сбое add (db_writer.py) — нативный versioning лучше temp+os.replace.
git commitБЕЗ pathspec коммитит ВЕСЬ индекс — при параллельной сессии украдёт её staged-правку (инцидент 568b1f27). Всегдаgit commit -m ... -- <paths>. index.lock чужой сессии не удалять — ждать освобождения (кап ~3 мин).- Локальный ruff-кэш может пропускать BLE001 — перед push
ruff check src/ tests/ --no-cache.
- elixir: шумит макро-токенами → низкое качество индексации, исключить или пометить.
- matlab: расширение
.mконфликтует с Objective-C → разрешать по содержимому, не по расширению. - tree-sitter-python 0.25: node-type
async_function_definitionОТСУТСТВУЕТ → сверять паттерны сnode-types.jsonустановленной версии грамматики.
- Парсеры language-pack работают вопреки issue #174 → проверка замером (§1.6), не issue-трекером. Факт из трекера — гипотеза, факт из прогона — вердикт.
- publishDiagnostics-uri перекодируется (file:///D:/x → file:///d%3A/x): нормализуй через unquote+Path.as_uri() до lookup, иначе тихая false-negative.
- _send_text_request оборачивает единичный dict-ответ в список → hover и др. методы обязаны обрабатывать wrapped-list, не только dict.
- SQLite scoped_kv_store хранит по-оконные строки (key=window_id), но без фильтра по окну это глобальный сигнал → резолв проекта CWD-first: Zed ставит CWD = корень окна для каждого MCP-процесса (Verified по 2 окнам).
- PID-lock self-healing (WS9, 2026-08-08): holder классифицируется по цепочке родителей (Windows Toolhelp32): живой Zed.exe = HEALTHY (wait ≤8s → мягкий LockBusyError), корень мёртв = ORPHAN (TerminateProcess → steal). create_time- guard: процесс создан ПОСЛЕ записи lock → PID-reuse → stale. lock пишет РЕАЛЬНЫЙ python (не venvlauncher), terminate убивает держателя, обёртка умирает сама; после terminate нужен retry-unlink (PermissionError от fd).
- psutil НЕ объявлен/НЕ установлен в venv (WS9): удалён мёртвый _get_process_cpu, _find_pid → netstat/ss, _get_parent_pid → Toolhelp32. grep-0.
- Consistency Engine: 6 состояний (CONSISTENT/STALE/UPDATING/PARTIAL/CORRUPTED/ UNKNOWN), событийная модель, threading.Lock (не asyncio.Lock) — см. src/core/consistency.py.
- Windows: текстовая запись \n→\r\n ломает SHA-256 пост-верификацию → _atomic_write пишет с newline="\n" (детерминированно, WS4).
- Late enrichment (флаг MSCODEBASE_LATE_ENRICHMENT): chunk-local поля (module/headline/symbol) ~0.7ms на топ-10, +~186 ток/чанк; imports в metadata чанков НЕ индексируются — нужен graph-lookup (KNOWN_ISSUES 🟡).
- Instruction-флаги — адвизорная маркировка на выдаче (role_hijack/imperative/ shell/secrets), НЕ фильтрация (SoK: filtering не работает) — src/core/instruction_scan.py.
- Trust-стампинг: результаты поиска несут trust-уровень проекта; кросс-репо = untrusted по умолчанию (cross-origin poisoning, multi_project_searcher).
- MCPSec/message-auth НЕ применимы: localhost stdio, tools статические (guard-тесты test_tool_registration_security). CoREB: короткие запросы схлопываются — benchmark2/keywords.jsonl (8 кейсов).