corpus-bench · v1.0.0 · 2026-09-24 · sha256 0771c697401db385

corpus-bench v1.0.0A

Immutable. This exact content never changes and is served at /api/v1/blob/0771c697401db385.

---
name: corpus-bench
description: "Станок верификации чужого кода на НАШИХ живых корпусах (GIT-25). Триггеры - “/corpus-bench“, “прогони по корпусу“, “проверь их фикс на наших транскриптах“, “corpus bench“, “верифицируй на корпусе“, а также САМ внутри заходов GIT-S5/S8/S9, когда чужой PR/фикс трогает чтение транскриптов, сессий, памяти агентов"
version: 1.0.0
---

# /corpus-bench — верификация чужого кода на наших корпусах

> Родился 14.08.2026 из ручных прогонов GIT-S5/S9 (casdk#1202: 3 дерева x 12 227
> файлов руками ~час; станком — 5 минут). Приказ Антона: «Делай станок и скилл и рутину».

**Движок (единственный источник логики, дока = его docstring):**
`python "$USERPROFILE/.claude/scripts/git25-tools/corpus_bench.py"`

## Когда применять
Чужой PR/фикс/релиз читает или пишет **транскрипты Claude Code, сессии, память агентов,
JSONL-логи** — всё, для чего у нас есть живой корпус, которого нет у автора.
Наше несправедливое преимущество: 12k+ живых транскриптов на узел, 5 узлов, 3 ОС.

## Ритуал (4 шага)
1. **Цель.** Папка `corpus_bench_targets/<name>/` рядом с движком: `target.json`
   (repo · pinned_ref · install · metric · direction · fetch_refs для PR-голов) +
   `plugin.py` с одной функцией `evaluate(tree_path, files) -> dict`
   (сам добавляет tree в sys.path; возвращает СЧЁТЧИКИ, никогда содержимое файлов).
   Образец: `corpus_bench_targets/casdk-session-reader/`.
2. **Прогон.** `... run <name> --refs main_sha,pr_sha [--limit 200]` — сначала с
   `--limit` (быстрая проверка плагина), потом полный. Таблица: metric · ratio ·
   delta improved/same/WORSE. Exit 3 = есть регрессия.
3. **Мутант-дисциплина (руками, до отправки коммента):** (а) red-before — метрика
   обязана двигаться между деревьями не вакуумно; (б) зонд загрузки — правка
   реально в пути исполнения (класс «невыполнившийся мутант» из журнала 12.08);
   (в) в коммент — только счётчики и оффсеты, leak-scan обязателен.
4. **Пин.** Верификация закончена → `watch: true` в target.json: недельная рутина
   дальше сама следит, что фикс не растерялся в main.

## Watch-рутина
- Задача Task Scheduler `corpus-bench-weekly` (этот узел; ночное окно §4.6).
- Отчёт: `$USERPROFILE/.claude/scripts/_logs/corpus_bench_last_<host>.txt` —
  **потребитель = вахта следующего захода GIT-S5** (мастер-файл GIT-25, приказ 14.08).
- ALARM (exit 3) = watch_ref ухудшился >5пп с прошлого прогона → это сырьё для
  issue с репро, не для паники: сначала найти коммит-виновник.
- Счётчик использования: `_logs/corpus_bench_<host>.jsonl` (читается на /retro).

## Границы
- Клоны/venv в `%LOCALAPPDATA%/corpus_bench` — узло-локально, в синк не едет.
- Пер-хостовые state/report/counter (single-writer shard) лежат в `_logs`. ⚠️ ПРОВЕРЕНО 25.08.2026:
  синкается ТОЛЬКО `.txt`-отчёт; `*.jsonl`/`*.json` заперты чёрным списком `.stignore.shared`
  (стр. 90), поэтому счётчик и state — **узло-локальные**. Это осознанно: кросс-узловых
  читателей у счётчика нет (проверено грепом 25.08), а общий append-леджер с шестью
  писателями — тот самый класс гонок, что уже сжёг pub_ledger/approval_ledger/voice-registry.
- Плагин НЕ печатает содержимое транскриптов — только счётчики (приватность).
- Selftest: `... selftest` (7 оффлайн-кейсов). Crash-guard: exit 4 = станок упал сам.