# audit_report.md — PBH-VERIFY-01 Сводка всех найденных ошибок: естественных (возникших при работе) и внесённых (контролируемых). Для каждой указано, кто и как её нашёл, когда и чем она исправлена. Первичные документы: `derivation.md` §6, `audit_copy/audit_findings.md`, `verification_plan.md` §8–§10, `agent_logs/implementation_B.md` §5 и разделы v0.2–v0.4, `arch_A/REPORT.md` §4–§5, `results/extension/`. Статус этого документа: `EXECUTED` — все перечисленные прогоны реально выполнены; команды и логи в `README.md` и `results/`. ## 1. Естественные ошибки в физическом контракте | # | Версия | Ошибка | Кто нашёл, как | Исправление | |---|---|---|---|---| | N1 | 1.0-draft | **Знак в тождестве массовой формы F10**: −(R²R′/4)𝓗 вместо +(R²R′/4)𝓗 | роль Physics derivation, символьно (sympy, `derivation/core.py`); подтвердили независимо агент A (sympy) и верификатор (К1) | v1.0 (до кода) | | N2 | 1.0-draft | Неполное распространение ошибок σ(𝓗), σ(𝓜), σ(𝓗_M) (нет членов с σ(Γ) и σ(R′)) → ложные VIOLATED у центра | derivation (Р2) | v1.0 | | N3 | 1.0-draft | Нет порядка статусов геометрии; не покрыт изолированный маргинальный узел | derivation (Р3) | v1.0 | | N4 | 1.0 | Противоречие: `UNCERTAIN` vs `NO_TRAPPED_SPHERES`+`marginal_present` (исключение недостижимо) | независимо: реализация B (I-1), агент A (п. 1), верификатор (К3a′) | v1.1 (C2) | | N5 | 1.0 | σ(f′) без ошибки округления; порог VIOLATED обнуляется при Σ\|T\| = 0 → ложные VIOLATED на точных данных | B (I-3), A (п. 3), верификатор (К23) | v1.1 (C4) | | N6 | 1.0 | Ошибка численной φ′ не входит в σ невязок для скалярного поля → ложные VIOLATED на согласованных EKG-данных | B (I-4), A (п. 3), верификатор (К24) | v1.1 (C5) | | N7 | 1.0 | Неразрешённый знак (+,0) → `PAST_TRAPPED_ONLY` на плоском Минковском (гиперболоид до r/τ = 10⁷) | аудит (A10, пробой), верификатор (К3c), derivation §7 п. 5 | v1.1 (C3) | | N8 | 1.0 | Кандидат AH зависит от направления нумерации r (при убывающей метке горизонт Шварцшильда теряется) | аудит (A6), агент A (п. 7) | v1.1 (C1: θ_out по росту R) | | N9 | 1.0 | σ = \|D⁴−D⁶\| растёт вместе с O(1)-ошибками на изломах → «CONSISTENT» на несходящихся данных | аудит (A7, A11) | v1.1 (C7, статус UNRESOLVED) — **частично**: см. §6 | | N10 | 1.0 | σ не видит сеточного шума: у почти касательной сферы шум 1e-8 даёт ложный AH_CANDIDATE или ложный NO_TRAPPED (3 из 6 реализаций) | агент A (п. 2), собственный тест сценария порога | v1.1 (C6, σ_noise) | | N11 | 1.0 | R = 0 вне центра молча принимается; отклонения центра, M_int ≠ M_MS, M < 0 не попадают в статус | аудит (A8, A9, A12, A15) | v1.1 (C8, C9) | | N12 | **1.1** | Цепочка неразрешённых точек у центра (τ± ≈ 2–5) классифицировалась `DOUBLY_MARGINAL` и попадала под исключение → **`PAST_TRAPPED_ONLY` для неразрешённого будущего-trapped ядра** | координатор, **на реальных данных V1** (`pbhgr.cosmo_ev`, μ = 0.36, t = 11.84 t_H; расширение пилота) | v1.2 (C11, класс UNRESOLVED) | | N13 | 1.2 | Узловая ошибка вычисленных полей (M, Γ) не входит в σ их производных → ложный VIOLATED на гладких точных данных (N = 100, \|X\|/σ = 95) | независимая матрица v2 (U62) — **у A и B одинаково** | v1.3 (C12) | | N14 | 1.2 | Формат предупреждений не задан → тест не может проверить наличие предупреждения | верификатор (К29/К31), провал W85 | v1.3 (C13, коды) | | N15 | 1.3 | Случайный нуль разностной оценки \|D⁴−D⁶\| (σ(M′) = 3.5e-9 при истинной ошибке 4.5e-7) → ложный VIOLATED сохранился после C12 | координатор, проба U62 на v0.4 | v1.4 (C14, окно 3 точки). **Цена**: на v0.5 недоразрешённый центральный бугорок (w/h ≈ 1.3–1.5) получает CONSISTENT вместо UNRESOLVED — компромисс «ложная тревога ↔ пропуск неразрешённости» не устраняется оценкой по одному снимку | ## 2. Естественные ошибки реализации B (`src/sphdiag`) Физических формульных ошибок в реализации не обнаружено ни разработчиком, ни аудитором, ни независимой матрицей: на точных фонах F7–F13 совпали с первого запуска (журнал B §5). Ошибки были в численной логике, оценках ошибки и тестах: | # | Ошибка | Как найдена | Исправлена | |---|---|---|---| | B1 | Узкий интервал [R_lo, R_hi] у горловины (R′ = 0) не содержал точного R | ручная сверка с derivation.md §3 | v0.1 | | B2 | Касательный нуль «объяснялся» FUTURE_MOTS → NO_TRAPPED_SPHERES | собственная проба открытого вопроса | v0.1 | | B3 | Переполнение в тесте смены знака | RuntimeWarning | v0.1 | | B4 | Коэффициент порога округления (×2 и двойной учёт) | собственный тест | v0.1 | | B5 | Слабые тесты: 7 выживших мутантов аудитора (M_prop без A, L2vol без A, σ_M, правило PAST_MARGINAL, проверка знака на концах интервала, Γ(0) для cell, проверка конечности масс); частично круговой ФКГ-тест | аудит A13 (мини-мутационный прогон) | v0.2 (+17 тестов) | | B6 | Исключение для DOUBLY_MARGINAL применялось к цепочке точек (буквальное чтение v1.1) | расширение на данных V1 (N12) | v0.3 | | B7 | Ложный VIOLATED у центра на гладких данных при N = 100 | матрица v2, U62 (N13) | v0.4 | | B8 | Формат предупреждений | матрица v2, W85 | v0.4 | | B9 | Случайный нуль оценки σ у центра | проба координатора (U62 на v0.4) | v0.5 | Ограничения, которые остаются (записаны разработчиком): 𝓗 в центральной области сходится как h² (свойство формы 𝓗, не ошибка); касательные нули между узлами не находятся; модуль доверяет объявленной чётности; при r/τ ≳ 10⁵ на гиперболоиде — предел точности double. ## 3. Естественные ошибки агента A (`arch_A/`) По отчёту A: ложные VIOLATED из-за округления в D(M); inf ≤ inf давало CONSISTENT; ложный кандидат на шуме; выживший мутант σ(Γ) без /A; пустое утверждение `or True` и заглушка в тестах; O(N)-цикл Python. Все найдены самопроверкой и исправлены до сдачи. Независимая матрица v1 на A: 27/29, оба провала — дефекты допусков самой матрицы (см. §4); матрица v2: 26/35, все 9 провалов — требования v1.1–v1.3, которых не было в контракте v1.0, по которому работал A, **плюс общий с B ложный VIOLATED (U62)**. ## 4. Естественные ошибки роли независимой верификации | # | Ошибка | Как найдена | Исправлена | |---|---|---|---| | V1 | Модель округления в K40 не учитывала вторую вложенную производную (∝ ε/(ah)², а не 1/(hR)) → ложный FAIL у обеих реализаций на 1.05–1.24× допуска | координатор: проба масштабирования по N (dev·(ah)²/ε ≈ 11–60 = const) | матрица v2 | | V2 | Допуск M12 привязан к одному, случайно сверхточному (порядок 6.2) маршруту Γ′ → штраф корректной реализации 4-го порядка (A) | координатор + верификатор: два других маршрута 4-го порядка дают ровно ошибки A | матрица v2 (худший из трёх маршрутов) | | V3 | Допуск квадратуры не учитывал кубическое правило контракта (ложный FAIL X52 на макете) | макет верификатора | матрица v2 | | V4 | M13 не ловил мутант `past_marg` | мутационный прогон на макете | матрица v2 (+2 сетки) | | V5 | Ошибки собственных эталонов до первого запуска (журнал плана §9) | самопроверка RS1–RS6, макет | до v1 | Эти провалы **не исправлялись задним числом**: v1 сохранена под тегом `verify-matrix-v1`, её результаты — в `results/matrix_B_v0.1.json`, `results/matrix_A_v1.json`, изменения v2 с исходными значениями — в `verification_plan.md` §10.2. ## 5. Внесённые (контролируемые) дефекты ### 5.1 Тайные дефекты в копии для аудита (`mutants/audit_seeds.md`) | Дефект | Класс | Найден аудитом? | Как | |---|---|---|---| | S1: знак потока в M_flux | M4a | да (A4, major) | чтением, затем пробой и падающим тестом | | S2: сфера Хаббла принимается как кандидат AH | M5 | да (A2, critical) | чтением, затем пробой | | S3: V = m²φ² | M3c | да (A3, critical) | чтением | | S4: чётность R в центре | M8 | да (A1, critical) | чтением | | S5: круговой ФКГ-тест (ожидаемое ρ и H из тестируемого кода) | M6 | **частично** (A13: «ФКГ-тест частично круговой: берёт ρ из тестируемого кода») | чтением тестов | Все четыре кодовых дефекта одновременно ломали 22 из 80 разработческих тестов, поэтому аудит мог найти их и без чтения. Аудитор сообщает, что A1–A4 найдены сначала чтением. Проверить это независимо нельзя: это самоотчёт агента. ### 5.2 Автоматические мутанты — см. `mutation_report.md`. ## 6. Что остаётся открытым 1. **Негладкие данные (излом, скачок)**: по одному снимку модуль даёт VIOLATED (безопасная сторона) или, на мелкой сетке, CONSISTENT (излом затрагивает фиксированное число точек, доля < 5 %). Надёжная проверка — сходимость на двух сетках; в модуль не встроена. 2. **Погрешности входных полей** (σ_KB, σ_A) не учитываются (аудит A14). На данных частиц V1 это делает статус связей VIOLATED при относительной невязке ~1e-5 в объёме: невязка не убывает с K при фиксированном числе частиц на ячейку (скан K = 1000/2000/4000, `results/extension/Kscan`), то есть это шум выборки, а не ошибка V1. 3. **Касательные нули** (рождение пары MOTS) между узлами не находятся. 4. Вопросы верификатора К25 (смысл inner/outer при Γ < 0 в полях корня), К27 (относительный критерий UNRESOLVED без абсолютного масштаба), К30 (размывание неразрешённой особенности вдали от центра правилом 5 %). 5. **Независимость**: все роли — экземпляры одной модели. Одинаковый ложный VIOLATED у A и B (N13) — пример общей ошибки, которую согласие двух реализаций не выявило бы; нашёл её тест с эталоном из ОДУ.