Skip to content
Open
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
5 changes: 5 additions & 0 deletions AGENT_DIARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -1941,3 +1941,8 @@ BREACH: MSC-P-19 | date: 2026-10-03 | rule: §12 | guard_at_time: no | detected_
**3. Код установщика в диффах есть.** `gh pr diff 120 | grep auto_yes` → удалённая строка `range(0 if auto_yes …)`, добавленная `range(1 if auto_yes …)` и тест `test_auto_yes_runs_each_step_once`. `gh pr diff 121 | grep "def _"` → `models_enabled`, `_doctor_report`, `_doctor_cli`, `_clean_targets`, `_clean_cli` (имена не `cmd_*`; поиск по `cmd_clean|cmd_doctor` пуст по этой причине).
**4. Гипотеза «clean-state до фикса валидировал пустую установку» — опровергнута.** `scripts/verify_clean_state.sh` вообще не вызывает `install.py`: он сам создаёт venv и делает `pip install -e .`; `grep "install.py --yes"` по `.github/` и `scripts/` пуст. Значит баг `--yes` с v3.0 не влиял ни на один прогон CI — ровно поэтому его никто и не поймал; поймал только ручной прогон по README.
**Урок:** «CI зелёный» и «инструкция работает» — разные утверждения. Пока установщик не запускали как пользователь (по README, в пустом каталоге), его неинтерактивная ветка была мёртвой, а все гейты оставались зелёными.

## [2026-11-13] KNOWN_ISSUES: ротация + запись про slow-тесты
**Сделано:** три закрытые (🟢) записи — `2026-11-11 smoke_e2e`, `2026-11-11 slow LSP/VFS`, `2026-11-09 RU→EN` — уехали в `docs/archive/KNOWN_ISSUES_2026_11.md`; живой файл 295 → **242 строки** при лимите 300. Добавлена новая запись про 5 красных в `test_freshness_checker` (PR #126) со ссылками `src/core/indexing/indexer.py:146-154` и `SearchConfig.sqlite_chunks`.
**Проверка:** `python scripts/check_known_issues.py` → `KNOWN_ISSUES.md: OK (size ≤ 300 lines, archival up to date)`; перемещённые записи отсутствуют в живом файле и присутствуют в архиве; `2026-10`-архив на месте (R2).
**Урок:** запись в реестр — это ещё и арифметика: лимит 300 строк проверяется гейтом, поэтому новая запись без ротации = красный pre-commit. Ротация — не уборка, а условие добавления.
63 changes: 5 additions & 58 deletions KNOWN_ISSUES.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,12 @@
> Формат: дата | что было | статус | fix

---
## 2026-11-11 — `smoke_e2e` шаг 4 требует dense-индекс, дефолт репозитория — текстовый — 🟢
## 2026-11-13 — slow-тесты прятали смену хранилища: 5 красных в `test_freshness_checker` — 🟢

- **Измерено:** `python scripts/smoke_e2e.py --project .` → шаг 4
`❌ search error: There is no vector column in the data. Please specify the
vector column name for vector search`; `.mscodebase/` содержит только
`chunks.db`, потому что индекс собран `scripts/reindex_text_only.py` при
`MSCODEBASE_DENSE_OFF=true` (дефолт проекта).
- **Не регресс:** шаг не зависит от `_abstains`; `--services-only` проходит
(`embed dim=768`, `rerank top=1`).
- **Fix:** шаг пробует вектор и при его отсутствии честно падает в текстовый
индекс SQLite (`chunks_fts`), называя режим в отчёте. Проверка:
`python scripts/smoke_e2e.py --project .` → `✅ SMOKE E2E: PASSED (проверок: 4)`,
шаг 4 `режим=text (vector: …); term=…, results=3`.

---
## 2026-11-11 — 4 slow-теста LSP/VFS не проходили на `main` — 🟢

- **Измерено (не наш регресс):** на `origin/main` (`74191a5`) падали
`tests/test_lsp_vfs_indexing.py::TestLSPVFSIndexing::test_lsp_vfs_content_indexed_without_disk`,
`…::test_lsp_vfs_content_beats_disk`, `…::test_indexed_at_timestamp`,
`…::test_hash_based_on_content_not_disk` — все с
`ValueError: Indexer requires an explicit WorkspaceSource`.
- **Причина:** тесты конструируют `Indexer` без `source=`, а API требует
explicit `WorkspaceSource`; маркер `slow` исключён `addopts`, поэтому дрейф не
видел ни pre-commit, ни CI.
- **Fix:** тестовый хелпер передаёт `LocalFsSource(project_path)`; проверка
`python -m pytest tests/test_lsp_vfs_indexing.py -o addopts="" -q` → `4 passed`.
Полный прогон с slow: `pytest tests/ -m "not integration and not benchmark"` →
`2560 passed, 10 skipped`.
- **Измерено:** на `main` (`a6524d6`, `801621d`) `pytest tests/test_freshness_checker.py -m "not benchmark"` → `5 failed, 2 passed`; в дефолтном гейте файл не виден (`pytestmark = pytest.mark.slow`).
- **Корень:** тесты читали `indexer.table` (LanceDB), а дефолт — SQLite (`src/core/indexing/indexer.py:146-154`, `SearchConfig.sqlite_chunks=true`); запись шла в `SQLiteChunkStore`, таблица LanceDB пустая.
- **Не регресс Цели 1/2:** те же 5 падают на до-мержевом `main` `a6524d6`.
- **Fix (PR #126):** чтение через `_file_rows()` (слой, который реально используется) + `test_store_is_the_default_one` пиннит дефолт; `slow`-маркер снят (файл 4.2 s). Проверка: `8 passed` 3× подряд; мутация `verify_index_freshness → return 0` даёт `4 failed`; гейт `2518 passed, 0 failed`.

---
## 2026-11-11 — E73: что осталось открытым после снятия ложного отказа — 🟡
Expand All @@ -55,20 +32,6 @@
(`<bench>` — каталог с клонами, команды клонирования в
`experiments/bench_2026_11/REPORT.md`).

---
## 2026-11-09 — RU→EN: перевод сильнее dense; ревью поймало 2 ложных доказательства — 🟢

- **Замер (12 вопросов, 2 репо):** RU-лексика 2/12, слепой EN-перевод 12/12,
dense 768 8/12, перевод без реранка 12/12 за 14 мс — `ru_vs_dense/REPORT.md`.
- **После ревью:** матчер gold считал тест-файл реализацией (C 9→8); `dense_score
is not None` всегда истинно → `>0`; negative control был литералом → проверяет
текст и падает. Guard: `matcher_selftest.py`, `negative_control.py --arm A|C`.
- **Границы:** hard subset = 1/12; старые 4/5 и 5/5 superseded.
- **Gate-долги:** WISDOM test count обновлён (2317 collected). K3 `P-006` был не
ошибкой реестра, а устаревшим путём гейта: протокол v2 перенёс реестр в
`agent_docs/pitfalls-registry.md`, а гейт читал старый `skills/...`. Исправлено
в `tools/knowledge/check_knowledge.py` (оба пути, новый первым; K7 читает таблицу).

---
## 2026-11-09 — pre-commit: `gate_cli.py --selftest` правит трекнутый манифест — 🟡

Expand Down Expand Up @@ -117,7 +80,6 @@ gold такие исключал). Свой E1: positive 0.438 → 0.786 (тол
правилу это ложное «нашёл». Кандидат — не печатать соседей без явного флага.

---

## 2026-11-08 — CI `clean-state` иногда идёт 13m30s — 🟡
Замер (не «по ощущениям»): job `128772053549` — 13m29s, job `128797932683` — 13m31s,
остальные прогоны той же джобы — 2m10s. В логе второго прогона — **743.7 s тишины**
Expand All @@ -129,7 +91,6 @@ runner» не объясняет двух прогонов с точностью
превращается в красный `main` без падения теста.

---

## 2026-11-08 — XERJ-пакет: run по протоколу (research / эксперимент / внедрение) — 🟡
Пакет `experiments/xerj_2026_11/`: добавлены `DECISION.md`, `RESEARCH.md`,
`baseline_raw.txt` + `run_baseline.py`, `tests/test_no_silent_success.py`.
Expand Down Expand Up @@ -161,7 +122,6 @@ P0-5 (`pyproject.toml`) проверен командой — уже испра
`PLAN.md` сработал: заявлять «investigate лучше» нельзя. 🟡

---

## 2026-11-08 — Аудит планов: что реализовано, что осталось — 🟡
Проверены все планы (`ISSUE.md`, `docs/research/*PLAN|patterns|chain*`, `docs/ISSUES/*`).
Реализовано и подтверждено кодом: Universal Engine Ф1–Ф4 (sources, plugins, transport-e2e,
Expand All @@ -185,7 +145,6 @@ manifest-parity), `TrustBoundary`, modification-guard (HMAC `ack_impact` + `bind
исправлены там же.

---

## 2026-10-25 — E55/E56: chain modes; docs gold-language bottleneck — 🟡
- **E55:** hybrid/quality/deep 0.688/0.771 (p50 45–48 ms); fast 0.542/0.729
(p50 19 ms); `nodemote/intent/ru/p3` — 0 эффекта на hit@1.
Expand All @@ -201,7 +160,6 @@ manifest-parity), `TrustBoundary`, modification-guard (HMAC `ack_impact` + `bind
- Production: graph 12,753 nodes; index 7,314 chunks (0 experiments); tests 32 pass.

---

## 2026-10-25 — E52: clean baseline — hit@1 0.688, hit@5 0.750; docs=0 — 🟡
- Clean index: 7,258 chunks (удалено 9,089 experiments); leakage 0/48.
- **clean production 0.688/0.750** (p50 72ms); contaminated 0.688/0.771.
Expand All @@ -211,7 +169,6 @@ manifest-parity), `TrustBoundary`, modification-guard (HMAC `ack_impact` + `bind
~0.9167 hit@5**. 95% требует усиления code-канала или LLM-агента.

---

## 2026-10-25 — E51: frozen-панель проиндексирована (panel leakage) — 🔴 P0
- `experiments/4A_unit_of_return/frozen/f5/queries.md` содержит те же probes и
находится в `chunks.db`; BM25 возвращает его как top-1 почти на всех запросах.
Expand All @@ -224,7 +181,6 @@ manifest-parity), `TrustBoundary`, modification-guard (HMAC `ack_impact` + `bind
LLM-планировщик, а не фиксированная эвристика.

---

## 2026-10-25 — E49/E50: docs-reserve и score-router — zero-sum — 🟡
- **E49:** reserve15 0.250/0.500/0.583 (хуже base 0.271 на 1k); reserve25
0.208/0.458/0.604; oracle 0.396/0.604/0.729; p50 245 ms.
Expand All @@ -235,7 +191,6 @@ manifest-parity), `TrustBoundary`, modification-guard (HMAC `ack_impact` + `bind
даёт потолок ~37–40% на 1k, 95% недостижимо.

---

## 2026-10-25 — E48: two-channel map — docs BM25 сильный, routing ломает — 🟡
- **base** 1k/2k/4k = 0.271/0.458/0.562; **route** 0.292/0.458/0.562;
**oracle** 0.396/0.625/0.729; p50 323 ms.
Expand All @@ -245,7 +200,6 @@ manifest-parity), `TrustBoundary`, modification-guard (HMAC `ack_impact` + `bind
token-reserve; code 1k улучшать BM25-top-files + PageRank hybrid.

---

## 2026-10-25 — E47: docs в PageRank разбавляют code-граф — 🔴
- **base** (code-only) 1k/2k/4k = 0.271/0.458/0.562; **docs** = 0.042/0.188/0.458;
**docs_bm25** = 0.042/0.229/0.479; p50 1,113 ms.
Expand All @@ -254,7 +208,6 @@ manifest-parity), `TrustBoundary`, modification-guard (HMAC `ack_impact` + `bind
слияние по бюджету; один PageRank на запрос. H1–H7 FAIL.

---

## 2026-10-25 — E46/E46b: PageRank repo map — работает, но не 95% — 🟡
- **Граф:** 9,315 nodes / 47,286 edges / 759 code files (docs нет).
- **E46 personalized:** 1k/2k/4k = 0.271/0.417/0.521; code-only 0.325/0.500/0.625; docs 0.
Expand All @@ -264,7 +217,6 @@ manifest-parity), `TrustBoundary`, modification-guard (HMAC `ack_impact` + `bind
- **Артефакты:** `experiments/e46_pagerank_map/`, `e46b_pagerank_ru/`.

---

## 2026-10-25 — E44: agent rewrites — keywords +1 h1; fusion/identifiers хуже — 🟡
- **Плечи:** baseline / keywords / identifiers / agent_all на 48 запросах E30.
- **Результат:** baseline 0.688/0.771, 84 ms; keywords **0.708**/0.771, 78 ms;
Expand All @@ -273,7 +225,6 @@ manifest-parity), `TrustBoundary`, modification-guard (HMAC `ack_impact` + `bind
а не фьюзить все варианты. **Артефакты:** `experiments/e44_agent_rewrite/`.

---

## 2026-10-25 — E41–E43: chain audit — docs intent, experiments, concept tags — 🟡 open
- **Диагностика:** RRF top5 35/48; 13 misses (8 docs gold, 5 recall).
- **E41:** исключение `experiments/` — 0.688/0.771 → 0.688/0.750, p50 81→43 ms.
Expand All @@ -283,13 +234,9 @@ manifest-parity), `TrustBoundary`, modification-guard (HMAC `ack_impact` + `bind
- **Артефакты:** `experiments/e41_no_experiments/`, `e42_intent_demote/`, `e43_concepts/`.

---

## 2026-10-25 — E40: RU→EN синонимы — ноль — 🟡 neutral
- **Плечи:** baseline / ru_synonyms на 48 запросах E30; `synonyms_ru.py`.
- **Результат:** оба 0.688/0.771, p50 159/176 ms. H6 PASS; H1/H2/H3/H4/H5 FAIL.
- **Вердикт:** варианты дают те же top-5; RRF схлопывает дубликаты. Словарь — утилита,
не рычаг. 95% на панели недостижимо.
- **Артефакты:** `experiments/e40_ru_synonyms/`.

---

43 changes: 43 additions & 0 deletions docs/archive/KNOWN_ISSUES_2026_11.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,49 @@
> Закрытые записи, перенесённые из `KNOWN_ISSUES.md` по гейту (≤300 строк).
> Формат записей не меняется; ссылки на них — по дате и заголовку.

---
## 2026-11-11 — `smoke_e2e` шаг 4 требует dense-индекс, дефолт репозитория — текстовый — 🟢

- **Измерено:** `python scripts/smoke_e2e.py --project .` → шаг 4
`❌ search error: There is no vector column in the data. Please specify the
vector column name for vector search`; `.mscodebase/` содержит только
`chunks.db`, потому что индекс собран `scripts/reindex_text_only.py` при
`MSCODEBASE_DENSE_OFF=true` (дефолт проекта).
- **Не регресс:** шаг не зависит от `_abstains`; `--services-only` проходит
(`embed dim=768`, `rerank top=1`).
- **Fix:** шаг пробует вектор и при его отсутствии честно падает в текстовый
индекс SQLite (`chunks_fts`), называя режим в отчёте. Проверка:
`python scripts/smoke_e2e.py --project .` → `✅ SMOKE E2E: PASSED (проверок: 4)`,
шаг 4 `режим=text (vector: …); term=…, results=3`.
---
## 2026-11-11 — 4 slow-теста LSP/VFS не проходили на `main` — 🟢

- **Измерено (не наш регресс):** на `origin/main` (`74191a5`) падали
`tests/test_lsp_vfs_indexing.py::TestLSPVFSIndexing::test_lsp_vfs_content_indexed_without_disk`,
`…::test_lsp_vfs_content_beats_disk`, `…::test_indexed_at_timestamp`,
`…::test_hash_based_on_content_not_disk` — все с
`ValueError: Indexer requires an explicit WorkspaceSource`.
- **Причина:** тесты конструируют `Indexer` без `source=`, а API требует
explicit `WorkspaceSource`; маркер `slow` исключён `addopts`, поэтому дрейф не
видел ни pre-commit, ни CI.
- **Fix:** тестовый хелпер передаёт `LocalFsSource(project_path)`; проверка
`python -m pytest tests/test_lsp_vfs_indexing.py -o addopts="" -q` → `4 passed`.
Полный прогон с slow: `pytest tests/ -m "not integration and not benchmark"` →
`2560 passed, 10 skipped`.
---
## 2026-11-09 — RU→EN: перевод сильнее dense; ревью поймало 2 ложных доказательства — 🟢

- **Замер (12 вопросов, 2 репо):** RU-лексика 2/12, слепой EN-перевод 12/12,
dense 768 8/12, перевод без реранка 12/12 за 14 мс — `ru_vs_dense/REPORT.md`.
- **После ревью:** матчер gold считал тест-файл реализацией (C 9→8); `dense_score
is not None` всегда истинно → `>0`; negative control был литералом → проверяет
текст и падает. Guard: `matcher_selftest.py`, `negative_control.py --arm A|C`.
- **Границы:** hard subset = 1/12; старые 4/5 и 5/5 superseded.
- **Gate-долги:** WISDOM test count обновлён (2317 collected). K3 `P-006` был не
ошибкой реестра, а устаревшим путём гейта: протокол v2 перенёс реестр в
`agent_docs/pitfalls-registry.md`, а гейт читал старый `skills/...`. Исправлено
в `tools/knowledge/check_knowledge.py` (оба пути, новый первым; K7 читает таблицу).

---
## 2026-11-08 (позже) — четыре «открытых пункта» закрыты, найден дефект frozen-gold — 🟢

Expand Down
Loading