Ко всем документам · PBH-VERIFY-01: проверенный модуль диагностики sphdiag
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. Что остаётся открытым
- Негладкие данные (излом, скачок): по одному снимку модуль даёт VIOLATED (безопасная сторона) или, на мелкой сетке, CONSISTENT (излом затрагивает фиксированное число точек, доля < 5 %). Надёжная проверка — сходимость на двух сетках; в модуль не встроена.
- Погрешности входных полей (σ_KB, σ_A) не учитываются (аудит A14). На данных частиц V1 это делает статус связей VIOLATED при относительной невязке ~1e-5 в объёме: невязка не убывает с K при фиксированном числе частиц на ячейку (скан K = 1000/2000/4000,
results/extension/Kscan), то есть это шум выборки, а не ошибка V1. - Касательные нули (рождение пары MOTS) между узлами не находятся.
- Вопросы верификатора К25 (смысл inner/outer при Γ < 0 в полях корня), К27 (относительный критерий UNRESOLVED без абсолютного масштаба), К30 (размывание неразрешённой особенности вдали от центра правилом 5 %).
- Независимость: все роли — экземпляры одной модели. Одинаковый ложный VIOLATED у A и B (N13) — пример общей ошибки, которую согласие двух реализаций не выявило бы; нашёл её тест с эталоном из ОДУ.