Замеры и границы: что доказано, а что нет
Все опубликованные числа продукта с источниками: навигационные задачи, проверяемость фактов, латентности, индексация — и честный разбор того, чему верить нельзя.
Правило публикации чисел #
Каждое число в документации RAGRAF указывает на артефакт: bench/results/*.json (опубликованы прогоны M2 rev-0012 и rev-0025), журнал телеметрии usage_call, тайминги стадий index_status. Оценки (токены ≈ символы/4) помечены «оценка» везде, где появляются. Числа без артефакта в документацию не попадают — это требование ФТ, а не стиль.
Навигационные задачи (13 задач, пилотный корпус) #
Протокол: 13 реальных навигационных вопросов к PHP-порталу («где определяется», «кто вызывает», «какие колонки у таблицы»). Каждый вопрос решается двумя способами: grep+чтение файлов против операций RAGRAF.
| Метрика | grep-подход | RAGRAF | Артефакт |
|---|---|---|---|
| Попадание в целевой файл с первой попытки | — | 92% (12/13) | bench M2 |
| Вызовов инструментов на задачу | 2,0–3,1 | 14 суммарно (против 28; «реалистично 43» — модельная поправка, записанная в самом артефакте) | usage_call |
| Полных чтений файлов | 14 | 0 | usage_call |
| Проверяемость фактов path:line | — | 100% для фактов о коде (M6, автоматическая сверка ссылок) | bench-скрипт M6 |
| Общая проверяемость всех фактов | — | 24,4% — честно: у фактов схемы нет номеров строк, и мы не дорисовываем ссылки ради отчёта | M6 |
Как читать 92%: 12 из 13 — на одном корпусе, одним протоколом, одной моделью-агентом. Это не «точность продукта 92%»; это результат конкретного прогона. Воспроизводится bench/-скриптами из репозитория.
Латентности операций (измерено, пилот) #
| Операция | Среднее | Контракт (НФТ-4) |
|---|---|---|
schema | 0,5 мс | ≤ 200 мс p95 |
symbol | 0,7 мс | ≤ 200 мс p95 |
table_usage | 0,9 мс | ≤ 200 мс p95 |
write_check | 3,3 мс | ≤ 200 мс p95 |
impact (depth 3) | единицы–десятки мс на 487 узлах | ≤ 1 с p95 |
search (гибрид) | до ~1 с — доминирует эмбеддинг запроса (кэша запросов нет, R-PERF-3) | ≤ 1 с p95 |
slice | внутри Joern | ≤ 2 с p95 |
Индексация #
| Показатель | Значение |
|---|---|
| Полный прогон, 323-файловый корпус (CPU) | 71 с (CPG/Joern — 64 с из них) |
| Пилотный корпус | 123 файла → 487 узлов → 7 292 рёбра → 457 чанков → 27,5 МБ хранилищ |
| Переиспользование эмбеддингов | неизменённые чанки не перевекторизуются (chunk_sha256); точечная пересборка — единицы секунд |
| Качество чанков | max 5 543 токена при бюджете 8 000; over-budget 0 |
| Векторные нормы | 0,0576–0,6627 (выбросов-нулей нет) |
| Усечённые сигнатуры | 33 → 0 после фикса U3 |
Доработка подсистемы (сквозной кейс) #
46 обращений к операциям, 0 ошибок выполнения, 0 полных чтений файлов; write_check — 14 вызовов (каждый перед SQL-записью); 4 дефекта предотвращены до написания кода; 9 дефектов найдено в разрабатываемой подсистеме; 13 дефектов найдено в самом RAGRAF той же работой (5 из них невидимы синтетическим тестам — «код работал правильно, а измерял себя неправильно»). Экономия токенов ~5 200 на сессию — оценка (символы/4), не замер контекстного окна.
Внешние ориентиры (не наши измерения) #
| Источник | Число | Как используется |
|---|---|---|
| VulnGym | 56,5% провалов — навигация (26,8% файл не найден; 29,7% файл найден, строка нет) при цепочках >9 шагов | обоснование проблематики |
| LLMxCPG (USENIX Sec '25) | 19–132 валидных CPGQL из 1278 у базовых моделей | обоснование P4 (нет языка запросов) |
| LCIP (arXiv:1512.07435) | precision 69% / recall 79% / F1 55% — потолок impact-анализа (Java, мутации) | только ориентир порядка величины для M2; никогда «цель для отчёта» |
| ALIBI | инъекции в комментариях подавляют обнаружение >90% | обоснование P6 (текст отдельно от фактов) |
| Repoformer | право не искать — до 70% ускорения | обоснование P8 (точность > полнота) |
Чему верить нельзя (осознанные ограничения замеров) #
- Один корпус, одна модель-агент. 92% и «14 против 28/43» — свойства пилотного PHP-портала и конкретного протокола. Перенос на Python-монолит или другую модель не гарантирован и не измерен.
- «Реалистично 43» — модельная поправка. Замеренное число — 28; 43 получено поправкой на повторные чтения в артефакте прогона. Мы публикуем оба числа и способ получения.
- Токены — оценка. Коэффициент символы/4 измерен на двух корпусах, но контекстное окно агента мы не мерили.
- 24,4% общей проверяемости — не провал, а граница метода. Факты схемы (таблицы/колонки) не имеют path:line по природе; требовать от них ссылок — значит фабриковать их.
- LCIP — другой язык и метод. Java + мутационная симуляция; сравнение с нашим PHP-пилотом корректно только как порядок величины.
Эта секция существует потому, что продукт про проверяемость фактов обязан быть проверяемым в собственных утверждениях. Числа, которые нельзя воспроизвести артефактом, из документации удаляются.
Смежное: проблематика → · перспективы →