Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions AGENT_DIARY.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
## Key Historical Decisions

- **Resume-инкрементальная запись IndexProjectRunner (2026-09-20, 0fcb0f33):** run() копил все эмбеддинги и писал одним bulk_write в конце — краш на 330K чанков (~9ч) терял всё. Теперь файл пишется порциями (WRITE_FLUSH_FILES=32) по завершению его чанков, RAM освобождается, restart = resume по known_hashes; `_verify_and_repair_table_integrity()` в начале run() (INC-6C62); `_flat_indices_by_file` (O(1) сбор vecs); fallback per-file сохранён. Тесты test_index_resume_incremental.py (6). Red Team 5/5.
- **Умный ubatch по ролям (2026-09-20):** вместо одного `LLAMA_UBATCH_SIZE=2048` для обеих ролей — `resolve_ubatch(role)`: embed → ceil(480/128)*128=**512**, rerank → ceil(1000/128)*128=**1024**. Основание: A/B на реальных 2227 чанках — ubatch=512 → 596 MB / 18.9 ch/s vs 2048 → 1686 MB / 16.1 ch/s. Раньше llama.cpp требовал «entire input ≤ ubatch» (#25293), для b9940 целый батч делится по слотам, лимит остался на ОДИН текст/пару → клиентский трим: embed обрезает до `LLAMA_EMBED_MAX_TOKENS=480` (единый источник с remote_embedder), rerank — `_truncate_rerank_pair` до `LLAMA_RERANK_MAX_TOKENS=1000`. `LLAMA_UBATCH_SIZE` env — жёсткий override. Файлы: `llama_install.py` (resolve_ubatch), `llama_runner.py` (_ubatch_arg, 3 места запуска), `multi_provider.py` (трим пары), `remote_embedder.py` (импорт лимита), тест `test_ubatch_roles.py`. Live-check: реальный llama-server принял ubatch=512, embeddings 200 dim=384.

- **PyPI-packaging + user-data isolation (2026-08-28):** wheel теперь содержит `tools.stale_detector`, `adapters`, `locales` (норм. данные в site-packages); бинарники/модели в pip-режиме — `get_data_root()` (`%LOCALAPPDATA%\mscodebase`), гейт-маркер `__mscodebase_ext__.marker` отличает расширение от установленного пакета; CLI `--project-path/--project-dir` → env `MSCODEBASE_PROJECT_PATH` (приоритет НАД CWD, trust_self_index); `PROJECT_PATH` остался после CWD (multi-window сохранён). Live-Smoke из чистого venv: tools-ok, `en (78 ключей)`, корень резолвится. Файлы: `pyproject.toml`, `project_resolution.py`, `main.py`, `llama_install.py`. INC-C4CD.
Expand Down
21 changes: 21 additions & 0 deletions ISSUE.md
Original file line number Diff line number Diff line change
Expand Up @@ -650,3 +650,24 @@

### Порядок выполнения (рекомендация)
1. KI-R11 → KI-R7 → KI-R8. Потом KI-R1→R6 по плану.

---

## Bootstrap Pipeline — внешний обзор (2026-09-20)

> Источник: внешний обзор (через community-memory). Числа и утверждения НЕ проверялись — только описание подхода.
> **Статус:** research-отзыв, без кода.

### Что подтверждено
1. **Динамическая связка test→code — стандартный приём.** pytest-testmon и coverage.py делают то же же (сбор зависимостей тест↔код через coverage). Вывод Exp 7 «динамика лучше статики» совпадает с наукой: статика включает лишние вспомогательные методы, динамические трассы — нет. Exp 9 (статика как fallback/pre-filter) разумна.
2. **Ниша TESTS-ребра для LLM-контекста незанята.** PyPI Chisel (LLM-агенты, граф тестов + git + статика), gograph `untested` (Go) — аналогичные задачи, но без динамических рёбер. Наше отличие — динамический источник, но точность нужно сравнить.
3. **«Исполнено» ≠ «тестируется».** В среднем 10 функций на тест, макс 118. Наука: точность растёт с признаками (имя теста, последний вызов перед assert). TCTracer (динамика+статика) дал MAP ~85 на связи test↔function. Наш Tarantula (rank≤3 только 22.6%) — та же проблема.

### Что стоит упростить
- Плагин повторяет coverage.py с контекстами. sys.monitoring пока не поддерживает динамические контексты; в одном отчёте контексты по тестам удвоили CI на Django. Наши +13.6% на этом фоне неплохи.
- Поверхность инструментов: из 62 использовались 5 (exp-24). Codebase-Memory (14 инструментов) достигает 90% качества разведки файлов с в разы меньшим числом токенов/вызовов. Перемудрена скорее поверхность, чем трассировка.

### Три шага для проверки
1. Запустить pytest-testmon или coverage на тех же 5 проектах, сравнить связи с ours.
2. Добавить ранг «что именно тестируется» (имя теста + последний вызов перед assert).
3. Разметить вручную 20–30 тестов, посчитать точность.
Loading
Loading