Search

All documents · PBH-VERIFY-01: the verified sphdiag diagnostics module

physics_contract.md — PBH-VERIFY-01

RU 2026-09-28 · 31.6 KB · Markdown

This document is in Russian (original language). Your browser can translate it; the key results are summarised in English on the Results page.

Версия 1.4 (2026-09-29; v1.4 — §16 (окно для σ); v1.3 — §15 (σ производных вычисленных полей, коды предупреждений); v1.2 — §14 (класс UNRESOLVED, найден на данных V1-Vlasov); v1.1 — v1.0 заморожена тегом contract-v1.0 до любых численных экспериментов и включала исправления Р1–Р7 из derivation.md §6; изменения v1.1 — §13, приняты после первичного аудита и первого прогона независимой матрицы). Любое изменение после заморозки — новая версия с записью в §12 и в audit_report.md.

Модуль: sphdiag — физические диагностики сферически-симметричных 3+1-данных. Он не эволюционирует данные и не решает связи; он только измеряет.


1. Сигнатура, единицы, нормировки

  • Сигнатура (−,+,+,+). Геометрические единицы G = c = 1. ħ в модуль не входит.
  • Единица длины кода L_u произвольна и задаётся пользователем (например 1/H_k или 1/m_φ). Все величины: длина и время ~ L_u, масса M ~ L_u (т.е. M_phys = M_code · L_u c²/G), плотности ρ, j, S ~ L_u⁻², K_ij (смешанные) ~ L_u⁻¹, θ± ~ L_u⁻¹.
  • Масса поля m_φ хранится как обратная длина (= обратное время при c = 1): m_φ,code = (m_φ c/ħ)·L_u. Физическая масса частицы: m_φ c² = ħ c m_φ,code / L_u.
  • Нормировка поля: действие S = ∫√(−g) [ ⁴R/(16π) − ½ g^{ab}∂_aφ∂_bφ − V(φ) ] d⁴x, V(φ) = ½ m_φ² φ². Тогда φ безразмерно и φ_code = √G φ_phys/c², т.е. φ_phys = φ_code · m_Pl (m_Pl = √(ħc/G) — нередуцированная планковская масса); φ/M̄_Pl = √(8π) φ_code.
  • Обозначения масс (не смешивать): m_φ — масса поля; M_MS — квазилокальная масса Misner–Sharp; M_ρ, M_flux, M_int, M_prop — интегральные массы вещества (§6); μ (или δ) — амплитуда возмущения (в модуле не используется); M_H — масса горизонта (в модуле не используется).
  • q = m_φ/H_k, H_k — хаббловская скорость при входе масштаба в горизонт, a(t_k)H(t_k) r_m = 1 (соглашение плана V1b, §7.3). Модуль q не использует и не выводит.

2. Метрика и переменные среза

ds² = −α² dt² + A² (dr + β^r dt)² + R² dΩ²,

где r — координатный радиус (любая монотонная метка сфер), R(r) — ареальный радиус (площадь сферы 4πR²). Пространственная метрика γ_rr = A², γ_θθ = R², γ_φφ = R² sin²θ. Отображение на другие записи: изотропная (A = ψ², R = ψ² r); areal (r ≡ R, R′ = 1); сопутствующая (β = 0).

  • α > 0 — lapse, β^r — shift. Диагностики среза от α и β не зависят; они принимаются только для вспомогательного пересчёта ∂_tφ → Π.
  • Будущенаправленная единичная нормаль к срезу: n_a = (−α, 0, 0, 0), n^a = (1, −β^r, 0, 0)/α.
  • Внешняя единичная пространственная нормаль к сфере в срезе: s^a = (0, 1/A, 0, 0) — в сторону роста r (не обязательно роста R).
  • Внешняя кривизна: K_ij = −(1/2α)(∂_tγ_ij − D_iβ_j − D_jβ_i) = −γ_i^a γ_j^b ∇_a n_b; K = γ^{ij}K_ij = −∇_a n^a. Расширяющийся FLRW: K = −3H < 0. На вход подаются смешанные компоненты K_A ≡ K^r_r, K_B ≡ K^θ_θ = K^φ_φ (инвариантны при радиальных заменах координат).
  • Π ≡ n^a∇_aφ = (∂_tφ − β^r ∂_rφ)/α (совпадает с V1b Code A, план §7.2). Вспомогательная функция pi_from_dtphi.

Вспомогательные скаляры (инварианты сферы в срезе):

  • Γ ≡ s^a∇_aR = R′/A, ′ ≡ ∂_r;
  • U ≡ n^a∇_aR = −R K_B [F1].

3. Регулярность и границы

Параметр center среза:

  • "vertex": r[0] = 0 — регулярный центр на сетке;
  • "cell": r[0] > 0, регулярный центр r = 0 вне сетки, сетка продолжается отражением r → −r;
  • "none": внутренний край — не центр (напр. экстерьер); односторонние шаблоны.

Чётности при регулярном центре: A, K_A, K_B, φ, Π — чётные; R — нечётная. Условия в центре: R(0) = 0, Γ(0) = 1 (локальная плоскость), K_A(0) = K_B(0), j_r = O(r). Модуль проверяет (не навязывает) Γ(0) → 1 и K_A(0) → K_B(0) и сообщает отклонения.

Внешняя граница: только односторонние шаблоны; никаких граничных условий модуль не накладывает.

4. Материя: EKG

Из действия §1: T_ab = ∂_aφ ∂_bφ − g_ab[½ g^{cd}∂_cφ∂_dφ + V] [F2]. Уравнение поля □φ = V′(φ) = m_φ² φ.

Проекции (n-наблюдатель, Φ ≡ φ′/A — производная по собственной длине):

  • ρ = T_ab n^a n^b = ½Π² + ½Φ² + V [F3]
  • j_i = −γ_i^a n^b T_ab ⇒ j_r = −Π φ′ (ковариантная), ортонормированная J = j_r/A = −ΠΦ [F4]
  • S_ij = γ_i^aγ_j^b T_ab; смешанные S^r_r = ½Π² + ½Φ² − V, S^θ_θ = ½Π² − ½Φ² − V; S = S^i_i [F5]

Адаптер Vlasov (расширение): VlasovMoments(E, J, p, q) → ρ = E, j_r = A·J, S^r_r = p, S^θ_θ = q (моменты в n-кадре, как в pbhgr.cosmo_ev).

Однородный предел (тест FKG, [F6]; пространственно-плоский случай k = 0, R = a r): φ(t), H = ȧ/a, φ̈ + 3Hφ̇ + m_φ²φ = 0, H² = (8π/3)(½φ̇² + V), Ḣ = −4πφ̇²; на срезе R = a r, A = a, K_A = K_B = −H, Π = φ̇, ρ = ½φ̇² + V, p = S^r_r = S^θ_θ = ½φ̇² − V (мгновенно, не ноль; ⟨p⟩ → 0 только по периоду при m_φ ≫ H). Для k = ±1: R = a S_k(r), Γ = S_k′, H² + k/a² = (8π/3)ρ, Ḣ = −4πφ̇² + k/a².

5. Связи (сферическая симметрия, общий радиальный калибр)

³R = 2(1 − Γ²)/R² − 4Γ′/(A R) [F7]

Гамильтонова: 𝓗 ≡ ³R + K² − K_ijK^ij − 16πρ = ³R + 4K_AK_B + 2K_B² − 16πρ = 0 [F8]

Импульсная (r-компонента): 𝓜 ≡ K_B′ − (R′/R)(K_A − K_B) + 4π j_r = 0 [F9] (получена из D_j(K^j_i − δ^j_i K) = 8π j_i, делённой на −2).

Массовая форма (регулярна в центре): 𝓗_M ≡ M_MS′ − 4πR²(ρR′ + U j_r) = +(R² R′/4)·𝓗 + R³ K_B·𝓜 [F10] Тождество [F10] — алгебраическое следствие [F1, F7–F9, F11]; проверяется в derivation.md.

Нормировки невязок (без деления на почти ноль): для каждой невязки X = Σ_k T_k (слагаемые T_k с их знаками) относительная невязка X_rel = |X| / Σ_k|T_k|, если Σ_k|T_k| > 0; иначе не определена (NaN с пометкой). Слагаемые: 𝓗: {2(1−Γ²)/R², −4Γ′/(AR), 4K_AK_B, 2K_B², −16πρ}; 𝓜: {K_B′, −(R′/R)(K_A−K_B), 4πj_r}; 𝓗_M: {M′, −4πR²ρR′, −4πR²U j_r}.

6. Масса Misner–Sharp и интегральные массы

M_MS = (R/2)(1 − g^{ab}∂_aR ∂_bR), a,b ∈ {t, r}. Через срез: g^{ab}∂_aR∂_bR = −(n·∇R)² + (s·∇R)² = Γ² − U², поэтому

M_MS = (R/2)(1 − Γ² + U²) = (R/2)(1 − (R′/A)² + R²K_B²) [F11]

Следствие [F10] при 𝓗 = 𝓜 = 0: M_MS′ = 4πR²(ρR′ + U j_r). На уравнениях dM_MS = 4πR²ρ dR (в любой радиальной метке, R′ ≠ 0) тогда и только тогда, когда U j_r = 0 (нет радиального потока или U = 0, т.е. K_B = 0); запись dM/dr = 4πr²ρ дополнительно требует r ≡ R.

Интегральные массы (интегрирование от внутреннего края r₀ с начальным значением M_MS(r₀); при регулярном центре M_MS(0) = 0):

  • M_ρ(r) = ∫ 4πR²ρ R′ dr — «наивная» масса без потока;
  • M_flux(r) = ∫ 4πR² U j_r dr — потоковый вклад;
  • M_int = M_MS(r₀) + M_ρ + M_flux — должна совпадать с M_MS при выполненных связях;
  • M_prop(r) = ∫ 4πR² A ρ dr — масса по собственному объёму (другая величина, в общем случае ≠ M_MS даже в статике).

7. Световые расширения и классификация сфер

k_±^a = n^a ± s^a (нормировка n·k_± = −1). Для сферы ареального радиуса R:

θ± = (2/R) k_±^a ∇_a R = (2/R)(U ± Γ) = 2(±R′/(AR) − K_B) [F12]

Тождества: R²θ₊θ₋/4 = U² − Γ² = 2M_MS/R − 1 [F13]; поэтому 2M_MS/R = 1 ⇔ θ₊θ₋ = 0 — этого недостаточно для горизонта ЧД.

(0,−) и (+,0) возможны только при Γ > 0; (−,0) и (0,+) — только при Γ < 0. θ± зависят от нормировки k± (масштабирование k± → λk± умножает θ± на λ > 0) и от выбора среза через данную сферу (буст n: θ₊ → e^η θ₊, θ₋ → e^{−η} θ₋); M_MS, θ₊θ₋, знаки и нули от этого не зависят. Модуль выдаёт безразмерные конечные R θ± = 2(U ± Γ) и сами θ±. При R = 0 θ± не определены (расходятся как ±2/R): значение NaN с классом CENTER, искусственная конечность не навязывается; R θ± → ±2 − 2A(0)K_B(0)·r + O(r²) при регулярном центре (Rθ± не имеет чётности: призрачные точки строятся из U (нечётная) и Γ (чётная), не из Rθ±).

Знак s_± ∈ {+, 0, −} величины Rθ±: «0», если |Rθ±| ≤ τ_± = max(κ·σ(Rθ±), 1e3·ε_mach·(|U| + |Γ|)), κ = 3, где σ — оценка численной ошибки (§9).

(s₊, s₋) класс сферы
(+, −) NORMAL
(−, +) NORMAL_REVERSED (s^a указывает в сторону убывания R, напр. за горловиной)
(−, −) FUTURE_TRAPPED
(+, +) PAST_TRAPPED (anti-trapped; напр. FLRW при R > 1/H)
(0, −) или (−, 0) FUTURE_MARGINAL
(0, +) или (+, 0) PAST_MARGINAL
(0, 0) DOUBLY_MARGINAL: U = Γ = 0 (R′ = 0 и n·∇R = 0) — горловина Эйнштейна–Розена, экватор закрытого FLRW в момент остановки и т. п.; горизонтом быть не обязана
τ± > τ_max = 0.1 (знак не разрешён; естественный масштаб Rθ± равен 2) [v1.2] UNRESOLVED
R = 0 CENTER
нечисловые входы/выходы INVALID

Корни. Для каждой смены знака Rθ± между соседними точками (или точного нуля) — корень: положение r*, R*, M_MS(R*), интервал неопределённости [R_lo, R_hi] (из различия линейной и кубической интерполяции и полосы ±τ), знак другого расширения в корне, знаки Rθ на внутренней/внешней стороне. Тип:

  • FUTURE_MOTS: θ_zero = 0, другое < 0. Кандидат в apparent horizon ЧД (ah_candidate = True) только если нуль у исходящего расширения θ_out (в сторону роста R: θ_out = θ₊ при Γ > 0, θ_out = θ₋ при Γ < 0 в корне), другое расширение < 0, θ_out < 0 со стороны меньших R и > 0 со стороны больших R (внешняя граница будущей trapped-области). [v1.1: критерий не зависит от направления нумерации r.] Внешний (по R) такой корень — outer_ah_candidate.
  • PAST_MOTS: другое > 0 — космологическая/белодырная marginal-сфера, никогда не PBH.
  • DEGENERATE: оба нуля или знак другого не определён.

Статус геометрии среза (одно значение; при нескольких подходящих берётся первый по порядку UNDETERMINED > AH_CANDIDATE > FUTURE_TRAPPED_NO_AH_CANDIDATE > UNCERTAIN > PAST_TRAPPED_ONLY > NO_TRAPPED_SPHERES):

  • UNDETERMINED — есть INVALID или численный сбой вне документированных точек центра; никогда не трактуется как отсутствие коллапса;
  • AH_CANDIDATE — есть хотя бы один ah_candidate;
  • FUTURE_TRAPPED_NO_AH_CANDIDATE — есть FUTURE_TRAPPED, но нет корня-кандидата (напр. trapped-область доходит до края сетки);
  • PAST_TRAPPED_ONLY — есть точки PAST_TRAPPED или корень PAST_MOTS с разрешёнными сторонами, нет будущих;
  • UNCERTAIN — есть маргинальные точки любого типа (FUTURE_MARGINAL/PAST_MARGINAL/DOUBLY_MARGINAL), не отнесённые к корню известного типа (FUTURE_MOTS/PAST_MOTS) с разрешёнными знаками по обе стороны, кроме изолированной (обе соседние точки — разрешённые не-маргинальные, класс не UNRESOLVED) DOUBLY_MARGINAL/DEGENERATE точки с τ± ≤ τ_max [v1.2] (она → NO_TRAPPED_SPHERES + marginal_present, это исключение имеет приоритет над UNCERTAIN), либо корень DEGENERATE рядом с trapped-точкой; [v1.1: неразрешённый знак больше не превращается в PAST_TRAPPED_ONLY]
  • NO_TRAPPED_SPHERES — все сферы NORMAL/NORMAL_REVERSED/CENTER; допускаются изолированные маргинальные точки с корнем DEGENERATE и не-trapped соседями — тогда флаг marginal_present = True в status.

Ограничение: поиск корней по смене знака пропускает касательные нули (рождение пары MOTS); на корне θ₊ на уравнениях d(Rθ₊)/dℓ ∝ 1 − 8πR²(ρ − J) (derivation.md), поэтому корень θ₊ может быть внешней границей trapped-области только при 8πR²(ρ − J) < 1.

Меток PBH_FORMED, «event horizon», «black hole» модуль не выдаёт: локальная apparent-horizon диагностика одного снимка не устанавливает ни ЧД, ни её отсутствие в будущем. Статусы исхода эволюции (§11 ТЗ: COLLAPSE / RESOLVED_NO_COLLAPSE_BY_DEADLINE / …) относятся к последовательности снимков с проверенной численной надёжностью и в модуль-диагностику среза не входят.

8. Производные

Все радиальные производные — конечными разностями на (возможно неравномерной) сетке r, веса Fornberg: порядок p = 4 (5 точек) — основной; p = 6 (7 точек) — только для оценки ошибки. Центр vertex/cell: призрачные точки по чётности (§3); none и внешняя граница: односторонние шаблоны того же порядка. Требование: N ≥ 8. Пользователь может передать аналитические производные dA, dR, dKB (тогда используются они, а оценки ошибки = 0).

9. Оценки численной ошибки и статусы качества

  • Ошибка производной: σ(f′) = |D⁽⁴⁾f − D⁽⁶⁾f| + σ_round(f′), σ_round = C·ε·Σ_k|w_k f_k| (C ≤ 10) (эвристика: оценивает ошибку D⁽⁴⁾ на гладких разрешённых данных; не оценивает ошибку на изломах, скачках и сеточном шуме — см. «разрешённость» и σ_noise ниже).
  • [v1.1] Сеточный шум: σ_noise(f) = max по окну 7 точек |Δ⁶f|/√924 (Δ⁶ — неделённая 6-я разность; для белого шума её с.к.о. в √924 раз больше с.к.о. шума). τ± = max(κ·(σ(Rθ±) + 2σ_noise(U) + 2σ_noise(Γ)), floor).
  • [v1.1] Для ScalarField ошибка численной φ′ входит в σ(ρ), σ(j_r) и далее в σ невязок.
  • [v1.1] Разрешённость: точка невязки X UNRESOLVED, если σ(X) > 0.1·Σ_k|T_k|; глобальный статус связей UNRESOLVED, если таких точек > 5 % среди оценённых или хотя бы одна в области center. CONSISTENT_WITH_TRUNCATION означает только |X| ≤ κ_c σ(X) + floor на разрешённых точках и не заменяет проверку сходимости на двух сетках.
  • σ(Rθ±) = 2 σ(Γ) (σ(Γ) = σ(R′)/A); σ(M_MS) = R |Γ| σ(Γ); σ(𝓗) = 4|Γ|σ(Γ)/R² + 4σ(Γ′)/(AR); σ(𝓜) = σ(K_B′) + |K_A − K_B|σ(R′)/R; σ(𝓗_M) = σ(M′) + 4πR²|ρ|σ(R′). Входные поля считаются точными.
  • Статус связей в точке: VIOLATED, если |X| > κ_c·σ(X) + 1e3·ε_mach·max(Σ|T_k|, S_X), κ_c = 10, S_X — масштаб округления слагаемых (при Σ|T_k| = 0 порог не обнуляется); иначе CONSISTENT. Глобальный статус связей (приоритет): NOT_EVALUATED (нет материи или data ≠ OK), VIOLATED, UNRESOLVED, CONSISTENT_WITH_TRUNCATION. Это не утверждение о физической точности; допуски тестов фиксирует verification_plan.md.
  • Статус данных: OK, INVALID_INPUT (неверные формы/монотонность/A ≤ 0/R < 0/нечисла на входе; [v1.1] R = 0 где-либо, кроме r[0] при center="vertex"), NUMERICAL_FAILURE (нечисла в выходах вне документированных точек R = 0).
  • [v1.1] Предупреждения (status['warnings'], статус данных не меняют): отклонение центра |Γ(0) − 1| > max(κ·σ_Γ0, 1e-8) или |K_A(0) − K_B(0)| > 1e-8·max|K|; M_int_mismatch = max|M_int − M_MS|/(max|M_MS| + max σ_M) > 1e-6 (при материи); M_MS < −κ σ_M где-либо; неопределённые относительные невязки (n_rel_undefined).
  • [v1.1] L2vol ≡ √(∫X² dV), dV = 4πR²A dr, без нормировки на объём; квадратура M_ρ, M_flux, M_prop — 4-го порядка (кубика по 4 соседним узлам); при center="cell" интегралы берутся от r₀ (шар [0, r₀] не включается — записывается в warnings). M′ в 𝓗_M — конечная разность массива M_MS (не цепное правило), иначе 𝓗_M стал бы тождественной комбинацией 𝓗 и 𝓜. При center="none" область норм center называется inner.
  • Известное свойство: L∞(𝓗) в области center сходится как h² (члены (1−Γ²)/R², Γ′/R), остальные невязки — как h⁴.
  • Нормы невязок: L∞; L2 по собственному объёму dV = 4πR²A dr (трапеции по r); отдельно по областям: center (первые max(4, N/20) точек с R > 0), bulk, outer (последние 4 точки). Точка R = 0 исключается из 𝓗 и 𝓜 (0/0) и помечается; 𝓗_M включается.

10. Программный интерфейс (обязателен для реализации и независимых тестов)

Пакет sphdiag (каталог src/sphdiag, импорт при PYTHONPATH=src).

SphericalSlice(r, A, R, KA, KB, center="vertex"|"cell"|"none",
               alpha=None, beta=None, dA=None, dR=None, dKB=None)
ScalarField(phi, Pi, m_phi)            # .projections(slc) -> Projections
VlasovMoments(E, J, p, q)              # .projections(slc) -> Projections
Projections(rho, j_r, S_rr, S_thth)    # S_rr = S^r_r, S_thth = S^theta_theta (смешанные); j_r ковариантная
pi_from_dtphi(dtphi, dphi_dr, alpha, beta) -> Pi
diagnose(slc, matter=None, *, kappa_theta=3.0, kappa_c=10.0) -> Diagnostics

matter — ScalarField, VlasovMoments, Projections или None. Поля Diagnostics (массивы длины N, если не сказано иное):

Поле Смысл
Gamma, U, dR Γ, U, R′
M, sigma_M M_MS и оценка ошибки
compactness 2M_MS/R (0 при R = 0)
M_over_R3 M_MS/R³ (при R = 0 — экстраполяция, M_over_R3_extrapolated = True)
Rtheta_plus, Rtheta_minus, sigma_Rtheta_plus, sigma_Rtheta_minus Rθ± и ошибки
theta_plus, theta_minus θ± (NaN при R = 0)
sphere_class массив строк по §7
roots список dict: which ('+'/'-'), r, R, R_lo, R_hi, M, type, ah_candidate, other_sign, inner_sign, outer_sign
outer_ah_candidate dict корня или None
projections Projections или None
ham, ham_rel, mom, mom_rel, hamM, hamM_rel невязки §5 (NaN при отсутствии материи)
sigma_ham, sigma_mom, sigma_hamM их оценки ошибки
norms dict: norms[name][region][kind], name ∈ {ham, mom, hamM}, region ∈ {all, center, bulk, outer}, kind ∈ {Linf, L2vol, Linf_rel}
M_rho, M_flux, M_int, M_prop §6
center_checks dict: Gamma0 (Γ в центре или экстраполяция), KA_minus_KB0
status dict: data, constraints, geometry (§7, §9)

11. Прослеживаемость

ID Формула Вывод (derivation.md) Первоисточник
F1 Γ = R′/A, U = −R K_B D1 [S2] (Γ, U в сопутствующем калибре)
F2–F5 T_ab, ρ, j_r, S D2 стандарт; [S1] (поток)
F6 FKG D3 стандарт
F7 ³R D4 —
F8–F9 𝓗, 𝓜 D5 [S2] (сопутствующий случай); [S1] (6c) (с потоком)
F10 массовая форма D6 [S2] (12) (без потока), [S1] (16) (с потоком)
F11 M_MS D7 [S2] (13), [S3] (49), [S4] (16)
F12–F13 θ±, произведение D8 [S3] (6), (29), (50); [S4] (17)

12. Журнал версий

  • 1.0-draft (2026-09-28): первая редакция до вывода-проверки (derivation.md) и до кода.
  • 1.4 (2026-09-29): §16.
  • 1.3 (2026-09-29): §15.
  • 1.2 (2026-09-29): §14.
  • 1.1 (2026-09-29): §13.
  • 1.0 (2026-09-28): приняты Р1–Р7 derivation.md §6. Р1 — естественная ошибка черновика контракта: знак при 𝓗 в тождестве F10 был неверен (−, правильно +); найдена ролью Physics derivation символьно (sympy), до написания кода.

Источники: [S1] Milligan et al., arXiv:2504.02600v2; [S2] Bloomfield et al., arXiv:1504.02071v1; [S3] dual null formalism, arXiv:1506.07122v2; [S4] geometric inequalities, arXiv:1607.00199v2 (там k — прошлонаправленный, знак θθ противоположен).

13. Изменения v1.1 и их происхождение

# Изменение Кто обнаружил проблему (независимо)
C1 Кандидат AH через исходящее расширение θ_out (по росту R), инвариантно к нумерации r аудит A6; агент A (п. 7)
C2 Противоречие UNCERTAIN vs NO_TRAPPED_SPHERES+marginal_present разрешено явным исключением реализация B (I-1); агент A (п. 1); верификатор (K3a′)
C3 Неразрешённые (+,0) → UNCERTAIN, не PAST_TRAPPED_ONLY аудит A10; верификатор (K3c); derivation §7 п. 5
C4 σ_round в σ(f′); порог VIOLATED не обнуляется при Σ T
C5 Ошибка численной φ′ в σ невязок для ScalarField реализация B (I-4); агент A (п. 3); верификатор (K24)
C6 σ_noise по 6-й неделённой разности в τ± агент A (п. 2: ложный AH/ложный NO_TRAPPED на шуме у касательной сферы)
C7 Статус разрешённости UNRESOLVED аудит A7, A11
C8 R = 0 вне вершины-центра → INVALID_INPUT аудит A9
C9 Предупреждения: центр, M_int ≠ M_MS, M < 0, неопределённые rel аудит A8, A12, A15
C10 Уточнены L2vol, квадратура, M′, область inner, h²-сходимость 𝓗 в центре агент A (п. 5, 8–11); аудит A16; верификатор

Не принято в v1.1 (остаётся ограничением): погрешности входных полей (σ_KB, σ_A) не учитываются (аудит A14); касательные нули не ищутся.

14. Изменение v1.2 (C11)

Проблема (найдена в расширении пилота на данных pbhgr.cosmo_ev, μ = 0.36 и 0.10): первый горизонт V1 появляется на одном ребре у центра, где 2m/R скачет от 0 до > 1 за одну ячейку. σ(Rθ±) там O(1), и точки получают класс DOUBLY_MARGINAL по неразрешённости, а не как настоящий двойной нуль. По формулировке v1.1 цепочка таких точек без trapped-соседей подпадала под исключение, и статус был PAST_TRAPPED_ONLY: благоприятный статус для неразрешённого будущего-trapped ядра.

Правило v1.2:

  1. Точка с τ₊ > τ_max или τ₋ > τ_max (τ_max = 0.1) получает класс UNRESOLVED вместо таблицы знаков.
  2. Любая точка UNRESOLVED (кроме CENTER) делает статус геометрии не лучше UNCERTAIN: AH_CANDIDATE и FUTURE_TRAPPED_NO_AH_CANDIDATE сохраняют приоритет, но status['n_unresolved_points'] > 0 и предупреждение, если неразрешённые точки лежат внутри (по R) кандидата.
  3. Исключение для DOUBLY_MARGINAL действует только при τ± ≤ τ_max и если обе соседние точки — разрешённые не-маргинальные.
  4. Для эволюций (вне модуля): «первый горизонт» — первый снимок со статусом AH_CANDIDATE, не первый срез, где 2m/R ≥ 1 хотя бы в одном узле.

15. Изменения v1.3 (C12, C13)

C12 (найдено независимой матрицей v2, тест U62, у обеих реализаций A и B одинаково): на гладких точных данных (скалярный FLRW-фон + возмущение с потоком, N = 100) 𝓗_M в первой точке у центра |X|/σ ≈ 95 → ложный VIOLATED. Причина: узловые значения вычисленных полей (M_MS, Γ) несут негладкую ошибку усечения O(h⁴), а |D⁴f − D⁶f| её не видит. Правило: для производной поля f, вычисленного модулем (M_MS, Γ), σ(f′) = |D⁴f − D⁶f| + Σ_k |w_k| σ(f_k) + σ_round, где w_k — веса D⁴, σ(f_k) — узловая оценка ошибки f (σ(M) = R|Γ|σ(Γ), σ(Γ) = σ(R′)/A).

C13: каждое предупреждение в status['warnings'] начинается с кода: CENTER_IRREGULAR, M_INT_MISMATCH, NEGATIVE_MASS, REL_UNDEFINED, UNRESOLVED_POINTS, UNRESOLVED_INSIDE_AH, CELL_BALL_EXCLUDED, ALPHA_BETA (прочие — OTHER), затем двоеточие и текст.

Принято без изменения контракта: излом (кинк) даёт VIOLATED, а не UNRESOLVED (верификатор, вопрос К26) — ошибка в безопасную сторону; обнаружение негладкости надёжно только по сходимости на двух сетках (см. decision.md).

16. Изменение v1.4 (C14)

Проблема (матрица v2, U62, осталась после v1.3): на гладких точных данных N = 100 в точке i = 1 оценка |D⁴M − D⁶M| случайно почти нулевая (3.5e-9 при 1e-6 у соседей и истинной ошибке 4.5e-7) → |X|/σ = 95, ложный VIOLATED. Разностная оценка ошибки имеет случайные нули.

Правило: для каждой производной σ_trunc(f′)i = max{j ∈ {i−1, i, i+1}} |D⁴f − D⁶f|_j (в пределах сетки); остальные слагаемые σ (узловые, округление, шум) — без изменений.