Skip to content

feat: verification + eval harness + context budget + model-agnostic runner - #1

Merged
Socialpranker merged 7 commits into
mainfrom
feat/verification-eval-budget
Jun 13, 2026
Merged

feat: verification + eval harness + context budget + model-agnostic runner#1
Socialpranker merged 7 commits into
mainfrom
feat/verification-eval-budget

Conversation

@Socialpranker

Copy link
Copy Markdown
Owner

Набор инструментов вокруг качества deep-research: рантайм-верификация цитат, бенчмарк-харнесс, бюджет контекста, детерминированный CI и model-agnostic раннер.

Что внутри (6 фич-коммитов)

# Коммит Что делает
1 feat(verify) Phase 6.5 — рантайм-проверка цитат: мёртвые OPEN-источники → ре-поиск или понижение утверждения, а не «молча в отчёт». medium блокируется ниже floor 0.70
2 feat(eval) 8 бенчмарк-вопросов (6 жанров × 3 глубины) + aggregate.py: scorecards → таблица «качество на доллар»
3 feat(ci) validate_structure.py — проверка именования отчётов, frontmatter источников, колонок csv, паттерна findings + детерминированный workflow (без токенов)
4 feat(budget) context_budget.py — токены контекста по фазам vs окно; --ci падает на раздувании SKILL.md / always-floor
5 feat(catalog) validate_stat_sources.py — проверка ~210 data-portal URL, отчёт dead/unknown
6 feat(runner) Model-agnostic оркестратор: интерфейс провайдеров (strong/mid/cheap) гоняет 7 фаз; DryRunProvider работает end-to-end, Claude/OpenAI — заглушки

Ревью-правки (7-й коммит)

После high-effort код-ревью (7 углов, adversarial verify) исправлено:

  • validate_structure.check_report возвращал str вместо int (read_text() and len()) + лишнее чтение файла → return len(dated)
  • DryRunProvider.complete падал с IndexError на пустом промпте → безопасная первая строка
  • context_budget --ci теперь ловит дрейф CHARS_PER_TOKEN относительно score_run.py и падает на пропавших always-load файлах (раньше floor молча занижался)

Ложные срабатывания ревью (ключ config в aggregate.py — верный; чужой catalog-sync.yml — вне диапазона) отклонены. || true на структурном гейте оставлен осознанно (фикстура пока без plan.md/отчёта — задокументировано в воркфлоу).

Проверено

  • python scripts/context_budget.py --ciBudgets OK, exit 0; дрейф проксика ловится (exit 1)
  • python eval/validate_structure.py --strict → exit 1 на неполной фикстуре (ожидаемо)
  • DryRunProvider: пустой/пробельный/нормальный промпт — без краха
  • Все тронутые файлы компилируются

🤖 Generated with Claude Code

you and others added 7 commits June 13, 2026 12:14
…rt header

Wire check_citations.py into the live pipeline. Dead OPEN sources trigger re-search or
claim demotion instead of silently shipping. medium blocks below 0.70 floor; deep
requires zero unresolved red flags.
Questions span all 6 genres and 3 depths. aggregate.py joins scorecards with runs.csv
into a quality-per-dollar table. Numbers come from real runs.
validate_structure.py enforces report naming, source frontmatter, csv columns, findings
pattern. CI runs structure + budget + citation-fixture on every PR. No tokens.
Measures token load per phase against a window; --ci fails on SKILL.md or always-floor
bloat. Current catalog ~154k tokens total, ~50k always-floor.
Resolves the ~210 data-portal URLs the weekly endpoint sync skips; reports dead/unknown
for pruning and a verified-core vs community split.
Provider interface (strong/mid/cheap tiers) drives the 7 phases. DryRunProvider runs
end-to-end and produces schema-valid output; Claude/OpenAI adapters stubbed.
…роксика в --ci

- validate_structure.check_report: return len(dated) вместо
  `read_text() and len(dated)` (возвращало str вместо int + лишнее чтение файла)
- providers.DryRunProvider.complete: безопасная первая строка через
  next(iter(...), "") — пустой/пробельный промпт больше не падает с IndexError
- context_budget --ci: ловит дрейф CHARS_PER_TOKEN относительно score_run.py
  и падает на пропавших ALWAYS_LOAD-файлах (раньше молча занижался floor)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Socialpranker
Socialpranker merged commit e0b5e4b into main Jun 13, 2026
2 checks passed
@Socialpranker
Socialpranker deleted the feat/verification-eval-budget branch June 13, 2026 12:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants