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
8 changes: 8 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,7 @@ For file renames, use `apply_file_move(old, new)` instead of `notify_change` —
- `python scripts/smoke_e2e.py --project <root>` — реальный embed (llama.cpp 8080), реальный rerank (BGE-M3 8081), реальный векторный поиск по реальному индексу (LanceDB) — БЕЗ моков.
- Вывод должен содержать: `SMOKE E2E: PASSED`.
- «Зелёный pytest ≠ работает»: для runtime-изменений ✅ в `[🏁 ИТОГ]` обязан содержать `live-check: <команда> → <вывод>`, а не только pytest.
- Вердикт, вычислимый кодом, — только кодом: LLM-судья запрещён там, где ответ детерминирован (попадание gold, исполнение SQL, пороги); LLM судит только смысл.
11. All correct? → **TASK VERIFIED**
12. Root чистый? (нет новых одноразовых скриптов/логов в корне — §0.6)

Expand All @@ -468,3 +469,10 @@ For file renames, use `apply_file_move(old, new)` instead of `notify_change` —
- RU-файл обновляется В ТОМ ЖЕ коммите, что и EN (конгруэнтность по id/verdict/temperature — guard-тест в `tests/lab.test.ts`).
- Проверка перед коммитом портфолио: `cd <portfolio-root> && pnpm test tests/lab.test.ts tests/evidence-eval.test.ts` — ловит рассинхрон EN/RU и коллизии с парафраз-сетами (новые слова в корпусе могут случайно поддержать парафразу — тогда переформулировать, не трогать тест).
- Не выполнено → статус `⚠️ портфолио не синхронизировано` в `[🏁 ИТОГ]`, даже если тесты проекта зелёные.

## 8. СТАБИЛЬНЫЕ ССЫЛКИ И РОТАЦИЯ ЛОГОВ (ADR-style)

- Ссылка на факт — только `(файл, SHA коммита, ID записи)`: `EXPERIMENTS_LOG.md @ d74785d4`, никогда голый `:line`. Живые логи ротируются/архивируются — `:line` сгнивает при первой архивации (прецедент: архивация KNOWN_ISSUES 429→204 сдвинула каждую строку). Цитата с SHA резолвится через git-историю навсегда; без SHA — Recalled, не Verified.
- Каждая НОВАЯ запись несёт стабильный ID: эксперименты `EXP-N`, дневник `YYYY-MM-DD-slug`, решения ADR-стиль `ADR-NNN` со статусом proposed/accepted/superseded (по Nygard 2011 + adr-tools: номера последовательные, не переиспользуются; отмена — только новой supersede-записью, никогда правкой/удалением истории).
- Ротация (обобщает §4.8 R4 для KNOWN_ISSUES.md + `scripts/check_known_issues.py`): живой лог >300 строк ИЛИ ежемесячно → append-only перенос закрытых/superseded записей в `docs/archive/<NAME>_YYYY_MM.md`; открытые остаются; коммит ротации цитируется по SHA; история публичного репо не переписывается.
- Правки опубликованных чисел — только новой записью со ссылкой на старый ID (supersede-цепочка), никаких тихих правок.
2 changes: 2 additions & 0 deletions AGENT_DIARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -691,3 +691,5 @@ chunk_index -(20_000_000+line), graph_score=0.4 (ниже функций 1.0). E
**P-002 — измерение на пуле, уже прошедшем фильтр (survivorship bias).** Дважды за сессию эффект фильтра измерялся по выжившим и дал ложный вердикт: (1) проба `/v1/rerank` с пулом из `hybrid_search_async` → «фильтр режет 0», на деле резал 8 из 10; (2) sweep порогов по тем же 16 frozen-правилам → «0.02 даёт 8 hits», это перебор на оценочной выборке, владелец остановил. **Правило:** фильтр/порог меряется только на полном pre-rerank пуле и калибруется на holdout, отдельном от eval-набора. **Guard:** запрет внесён в EXPERIMENTS_LOG; тесты на фильтр строятся с positive+negative control (мусор отсекается, релевантный выживает).

**P-003 — правка не в той ветке.** Сигмоида попала в ONNX-блок вместо `llama_cpp` (oldString оказался уникальным, но не тем), ветка ONNX осиротела, `if scores:` выехал из `try`. Поймано `ast.parse` + просмотром diff. **Правило:** после правки в много-ветвистом коде — `git diff` целиком, а не только «применилось».

**P-004 — letter-vs-spirit instruction reading.** GPT-5.5 читает «never» буквально (jitter vs page_one_exit, Nishikanta 2026-09-27): perverse-compliant прочтение проходит фильтр, задуманный смысл — нет. Наш зеркальный кейс — qwen temporal-hint (E4b): БЕЗ хинта 'NOT FOUND AT HEAD' ни одна модель не робастна, т.е. правило работает только в дух-прочтении, буква его не несёт. **Guard:** тестировать граничные прочтения каждого правила (perverse-compliant кейс), а не только задуманное.
23 changes: 23 additions & 0 deletions EXPERIMENTS_LOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2819,3 +2819,26 @@ R2@limit=30: 30→30 | reranker 30→1

**Открыто:** P2 — целевой файл не входит в pre-rerank пул вовсе (проблема retrieval, не фильтра; top-хиты — собственные артефакты `experiments/**`). P3 — целевой chunk переживает reranker, но не проходит порог. Требуется отдельное решение владельца; подбирать порог по eval-набору нельзя.

## [2026-09-27] — exp-54 (PLANNED — NOT RUN): CoT effect as function of task shape

**Статус:** ⏳ PLANNED — НЕ ЗАПУЩЕН (дизайн зафиксирован, прогона нет, чисел нет).
**Гипотеза:** CoT окупается на why-diagnosis (Grok 100→35 — мышление чинит диагноз), но ~ноль на fact-verification (наши VOR-плечи: CoT дал qwen3.6 recall 0.08→0.20 ценой ×30–65, у 3 из 4 моделей выигрыш нулевой) — эффект CoT = функция формы задачи, а не «модели стали умнее».
**Дизайн:** те же модели × 2 формы (why-diagnosis vs fact-verification) × CoT on/off; замороженный набор (frozen, в репо); слепой судья (blind, единый reference по плечам); pos/neg контроли в каждом прогоне.
**Ожидаемая форма вердикта:** интеракция shape×CoT (CoT≫0 на why, CoT≈0 на fact) либо REFUTED (CoT равномерен/нулевой везде) — цитируются только дельты с контролями, не абсолюты.
**Связи:** ["exp-1","exp-18"].

## [2026-09-27] — F5 D-arm no-abstention ablation (floor test)

**Гипотеза (Tom):** D-плечо (closed book) даёт ~0 только потому, что инструкция разрешает abstention («I don't know»); без разрешения сдаваться reader priors покажут реальный уровень.
**Метод:** те же 16 frozen queries × 3 trials = 48 reader-прогонов (reader `opencode-go/longcat-2.0`, инструкция из `experiments/4A_unit_of_return/frozen/f5/reader_D_ablation.txt`, sha256 `91b16b8b…`) + 48 judge-прогонов (judge `opencode-go/qwen3.7-plus`, без изменений, blind, единый reference). Дизайн: arm D only, populations code/prose.
**Сырой результат:**
```
D overall: 2/48 = 4.2%
code: 0/24 = 0%
prose: 2/24 = 8.3% (F5S-10, F5S-13, по одному среднему trial)
majority (≥2/3): 0/16
invalid/uncertain: 0
```
**Вердикт:** reader priors существуют на уровне шума — механизм Tom подтверждён, масштаб нет (его 6/14 vs наши 2/48). Prose-плечо B 18.8% читается на фоне ~4% пола, отрыв сохраняется.
**Артефакты:** `experiments/4A_unit_of_return/results/f5judged/judged_raw_D_ablation.json`, `experiments/4A_unit_of_return/results/f5judged/judged_aggregate_D_ablation.json`.

8 changes: 8 additions & 0 deletions KNOWN_ISSUES.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@

**21 entries** — compressed per §4.8 R3 (conclusion-first; dedup 2026-09-08, 2026-09-21). Closed entries moved to docs/archive/KNOWN_ISSUES_2026_09.md on 2026-09-27 (R1 size guard; second batch on merge experiment/4a-unit-of-return).

## 2026-09-27 — F5 judge verdict parsing takes first regex match (Open)

- **Локация:** `scripts/f5_judged_run.py:238-246` (`_parse_verdict`): сначала первый regex-матч `"verdict"\s*:\s*"?(correct|incorrect|uncertain)"?`, иначе первое вхождение в порядке (incorrect, correct, uncertain).
- **Симптом / риск:** Haiku-style самокоррекция судьи («incorrect… actually correct, final answer: correct») оценивается по ПЕРВОМУ слову — вердикт инвертируется. Fallback-порядок (incorrect перед correct) корректен как подстрока-защита, но не как семантика: первое упоминание ≠ финальное решение. Ошибка тихая (verdict всегда парсится, `uncertain` по умолчанию недостижим при любом упоминании).
- **Аудит (2026-09-27, выполнено при записи):** `experiments/4A_unit_of_return/results/f5judged/judged_raw.json` (sha256 `4be6d79d2012a5c5…`, 16 запросов × 4 плеча × 10 trials = 640 answers): ответов с ≥2 verdict-словами (correct/incorrect/uncertain, границы слов, case-insensitive) — **0**; с ≥1 — **0** (reader-ответы: «I don't know» / код, verdict-слов не содержат). Латентный риск на текущих данных не сработал, но сырого текста судьи в judged_raw.json НЕТ (только reader answers + распарсенные verdicts) — самокоррекцию судьи задним числом проверить нечем.
- **Fix options (решение владельца):** (a) писать judge raw text в judged_raw.json + парсить explicit-final (последний матч / маркер «final verdict:»); (b) решить first/last/explicit-final как контракт парсера и зафиксировать тестом с самокоррекцией pos/neg; (c) минимум: warning-счётчик ответов с ≥2 verdict-строками в агрегатор.
- **Статус:** 🔬 Open (корректность F5-чисел зависит от несуществующего контракта судьи).

## 2026-09-27 — Ранкер `bge-reranker-v2-m3` оценивает целевой файл ниже порога фильтра (Open)

- **Симптом / контекст:** positive-контроли P2 и P3 (`experiments/token_reduction_v3_lancedb`) не находят целевой файл, positive controls 1/3. Стадия потерь локализована бисекцией — теряет только реранкер, MMR / `_boost_exact_name_matches` / `_dedupe_by_symbol` теряют 0:
Expand Down
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
[![MCP](https://img.shields.io/badge/MCP-compatible-green.svg)](https://modelcontextprotocol.io/)
[![Zed](https://img.shields.io/badge/Zed-extension-orange.svg)](https://zed.dev/)
[![CI](https://github.com/ManSio/mscodebase-intelligence/actions/workflows/ci.yml/badge.svg)](https://github.com/ManSio/mscodebase-intelligence/actions/workflows/ci.yml)
[![Tests](https://img.shields.io/badge/tests-1889%20passed-brightgreen)](tests/)
[![Tests](https://img.shields.io/badge/tests-1965%20passed-brightgreen)](tests/)

[Features](#-features) • [Quick Start](#-quick-start) • [Tools](#mcp-tools-65-total) • [Documentation](#-documentation-map) • [Installation](docs/en/INSTALL.md) • [Architecture](docs/en/ARCHITECTURE.md) • [Contributing](CONTRIBUTING.md) • [Security](SECURITY.md)

Expand Down Expand Up @@ -213,6 +213,12 @@ Deep-dives into specific technical findings from building this project:
- [I Asked One AI to Fact-Check Another AI's Audit of My Own Code](https://dev.to/mansio/i-asked-one-ai-to-fact-check-another-ais-audit-of-my-own-code-1ac3)
- [The Silent Vector Contamination Bug: Why Your Concurrent Embeddings Might Be Lying to You](https://dev.to/mansio/the-silent-vector-contamination-bug-why-your-concurrent-embeddings-might-be-lying-to-you-5fg7)

## Recent results (Sept 2026)

- **F5 4-arm unit-of-return:** A 16.3% / B 34.4% / C 97.5% / D 0%; code 50% vs 6.3% → [writeup](docs/blog/unit-of-return-4arm.md)
- **NodeRAG refuted** on the same bench: TF-IDF 80% vs graph BFS 70%
- **D-ablation floor test** (no-abstention): ~4% (2/48), majority 0/16 — prose B margin survives

---

## 🔧 MCP Tools (65 total)
Expand Down
Loading
Loading