# V1 development log — areal–CMC spherical Einstein–Vlasov (Stage A step 2) Started 2026-09-24. Code: `pbhgr/cosmo_ev.py` (solver), `pbhgr/cosmo_id.py` (initial data), `pbhgr/ltb.py` (exact LTB), `csrc/kernels.c` (`mass_integrate_cmc`, `shell_constraints`), `scripts/v1_ladder.py` (validation ladder), `scripts/debug_*.py` (diagnostics). Runs in `runs/v1/`. ## Formulation (as in brief_verification/verification_and_plan.md, Appendix B) ds² = −α²dt² + A²(dR + βdt)² + R²dΩ², slicing K = −3H(t), FLRW exterior α = A = 1, β = −HR. Fully constrained: K_θ from the momentum constraint (cumulative momentum), m by the R²-weighted cell integration of the Hamiltonian constraint, 1/A² = 1 − 2m/R + R²K_θ², α from the K-evolution equation (tridiagonal BVP, α′(0) = 0, α(R_out) = 1). Particles carry (x = R/a, P = normal-frame radial momentum, L², N, τ); RK4; grid uniform in x on [0, 5 r_m]. Initial data: Yoo et al. 2026 eqs. (3.4)–(3.11) in spherical symmetry (ε_i = 0.2), cold shells. ## Lessons (each cost a failed test) 1. Super-horizon conditioning. 1/A² = 1 − 2m/R + R²K_θ² is a difference of terms of size (HR)² (≈ 3750 at the box edge at t_i). Any relative error d in m or K_θ becomes d·(HR)² in A. Random (stratified) sampling, random peculiar momenta, cloud-in-cell deposition onto cell centres, midpoint-rule weights and a piecewise-constant source inside cells all failed for this reason (A errors of 10⁻³–10⁻¹, spurious lapse gradients, runaway momenta). A coherent peculiar velocity P relative to the CMC normals at H R ≫ 1 is itself a violent perturbation (δE_shell ≈ P·HR·…), not a small one. Yoo et al.'s regular particle load exists for the same reason. 2. What works: quiet start (particles at volume midpoints of equal sub-intervals, weights from the spline antiderivative of dN/dR), cumulative deposition (running sums over sorted shells interpolated linearly in v = x³ and differenced at cell edges; exact for uniform density, continuous as shells cross edges), exact shell volumes (4π/3)(R³₊ − R³₋), R²-weighted sources inside cells for the mass ODE, 8 RK4 substeps per cell (the mass ODE is stiff at H R ≫ 1: deviations relax on the length 1/(4πρR)). 3. Nearest-cell (cell-sum) deposition with 4 shells per cell is exact at t = t_i but jumps by 25 % per cell when a shell crosses an edge; the lapse solve turns that into a central bump that kicks the innermost shells outward (errors of 150 % at r < 0.2 r_m). Cumulative deposition removed it (unused-equation residual 0.9 → 3×10⁻⁴). 4. A half-shell (shell-code) mass convention has an O(w²(HR)²) discreteness error at the super-horizon start and is worse there than the grid integration; kept in `shell_constraints` for later sub-horizon use. 5. The unused-equation residual (evolution equation of A) is a useful monitor only with the cumulative deposition; with cell sums it is dominated by shells crossing edges between the two solves. ## Validation status (24–25 Sep 2026) | Test | Setup | Result | |---|---|---| | 1 FLRW to 0.3 t_H | K = 1000, 4 shells/cell, x_out = 5 r_m | max|α−1| = 5×10⁻⁹, |A−1| = 5×10⁻⁶, x drift 1×10⁻⁷, P < 10⁻⁶ | | ID vs exact LTB | μ = 0.3 | m and E per shell agree to 10⁻⁶ (≤ 5×10⁻⁶ p95), total mass excess 0 | | 2 LTB cycloid to 0.81 t_C(0), μ = 0.3 | K = 2000 / 4000, 4 shells/cell | median |R/R_LTB − 1| = 1.7×10⁻⁴ / 3.9×10⁻⁵ (second order); enclosed-mass drift 3×10⁻⁵ / 8×10⁻⁶; innermost bin (r < 0.05 r_m) 3.5×10⁻³, limited by the rest-mass → r label interpolation of the prediction, not the dynamics | | 3 AH, μ = 0.5 | K = 2000, 4 shells/cell | first trapped surface on the CMC slice at t = 21.5 t_H (LTB central singularity 7.5 t_H) at x = 0.36 r_m, M_AH = 1.12 M_H(t_k) (shells initially inside 0.79 r_m); then growing (1.95 M_H at 27.8 t_H). Central lapse 10⁻³ by then: CMC singularity avoidance delays the coordinate time at which the slice meets the trapped region. Invariant check (shell proper time at the AH vs LTB t_AH) in progress | ## Open items - Horizon-time definition must be gauge-invariant for the deadline classification: record the proper time of the shells at the AH and the exterior time of the slice; compare with LTB t_AH(r). Yoo's 3D dust runs find the AH at 11–12 t_H for μ = 0.3–0.5 in their slicing (2.20); the CMC lag here is larger. Consider a second slicing later. - Innermost-bin prediction accuracy (label interpolation) — refine the LTB M_rest(r) table or use analytic inversion. - Time-step limiter (dt ≤ 0.02 t) convergence check; compiled pusher for 10⁵–10⁶ shells. - Next physics: μ = 0.3 through the caustic (LTB globally naked) — does the Vlasov evolution trap later? Then the causal-bound runs μ = 0.36, 0.40 (LTB: first protected trapped sphere at 0.51 r_m / 0.37 r_m by proper time 10.1 / 8.6 t_H). ## 25 Sep: stretched grid, particle time step, adaptive mass substeps - `CosmoGrid(stretch=s)`: x_j = x_out sinh(s j/K)/sinh(s); K = 2000, s = 4 gives dx_min = 3.7×10⁻⁴ r_m at the centre and dx_max = 0.01 r_m outside. FLRW stays exact (10⁻⁸); LTB μ = 0.3 to 0.81 t_C(0): median 3.9×10⁻⁵ (as K = 4000 uniform), inner bins 4×10⁻⁶–8×10⁻⁵, in 1207 steps / 71 s. - Time step is now particle-based (cfl × cell width / shell speed, plus dt ≤ 0.02 t and dt ≤ 0.05/|αK_R|); the constraint solve is elliptic so the grid light speed imposes nothing. 3× fewer steps than the light-speed CFL. - The mass ODE is stiff where 4πρR·ΔR ≳ 1 (large outer cells at t_i); the kernel now chooses the RK4 substep count per cell so that h·4πρR ≤ 0.3. Without it the stretched grid's outer cells hit the RK4 stability limit (A error 1.7×10⁻²). - Per-shell trapping records: τ_trap (shell proper time at first 2m/R ≥ 1 with K_θ > 0) and the coordinate time of detection. 2m/R is a scalar at the shell's event, so τ_trap is slicing-independent as long as the slice reaches the event (α > 0). The invariant horizon curve τ_trap(label) is compared with LTB t_AH(r); μ = 0.5 first detection agreed exactly (11.20 vs 11.20 t_H). Deadline classification will use τ_trap of the outer (single-stream) shells, whose proper time equals exterior cosmic time, not the coordinate time of the CMC slice (which lags by up to 10 t_H). - μ = 0.3 (LTB globally naked), uniform grid: a trapped surface formed at proper time 9.12 t_H (LTB t_AH of the shell labelled 0.18 r_m: 9.12) with M = 0.014 M_H inside one grid cell — the core was unresolved and frozen, so this is not yet a Vlasov result; resolution study on the stretched grid in progress. ## 25 Sep: causal-bound test passed; cold caustic freezes the CMC lapse - μ = 0.36, s = 4, K = 2000, cold (L = 0): 3496 shells trapped, labels 0.095–0.875 r_m, τ_trap / t_AH^LTB = 1.0001 (p5–p95 0.9999–1.0027) in every label bin, including the protected shells beyond r₁ = 0.51 r_m (LTB t_AH = 9.95–14.2 t_H). The causal-bound pass criterion (horizon at r ≥ 0.51 r_m by proper time 10.1 t_H) is met exactly. Coordinate lag of the CMC slice at detection: median 7.2 t_H. - The 1854 shells inside the first horizon (labels < 0.137 r_m) have proper times 8.06–8.17 t_H at detection while the LTB caustic is at 8.03 t_H: the core froze 0.03 t_H after the crossing (fraction re-expanded beyond the horizon radius: 0). The CMC lapse collapses on the cold radial caustic — a genuine ρ ∝ 1/R² central singularity for L = 0 — so the post-caustic dynamics are never followed and every later trapping is the dust (LTB) result. Same at μ = 0.3 (LTB globally naked): first trapping at labels 0.18 → 0.16 → 0.11 r_m for dx_min = 2.5×10⁻³ → 3.7×10⁻⁴ → 1.8×10⁻⁴ r_m, each at its LTB t_AH: the sequence converges toward the caustic, not away from it. - Consequence: the cold limit must be regularized physically (velocity dispersion), as the plan and the memo require; the cold L = 0 runs are LTB reproductions with a frozen core, valid only for the protected region (r > r₁). - Dispersion injection implemented (`inject_t`, `inject_sigma`, `inject_xmax`): isotropic Maxwellian in the shell frame added at t = 1 t_H (near entry; at the super-horizon start any random momentum is a violent perturbation, see lesson 1) to shells with x < 2 r_m; radial part into P, tangential into L². Runs with σ = 10⁻³ at μ = 0.36 and 0.30 in progress; the test is whether the core's proper time advances through the crossing and whether the early trapping (labels < r₁) disappears while the protected trapping (μ = 0.36, r > r₁) survives. ## 25 Sep: what happens at the cold caustic (μ = 0.36, s = 4, K = 2000, `scripts/debug_caustic.py`) Shell trace through the crossing (proper time of the inner shells 7.95 → 8.06 t_H, LTB caustic 8.03): - The innermost shells (labels ≤ 0.03 r_m) cross the centre at low speed and exit slowly (P ≈ +0.02–0.08): their enclosed mass has already left with the shells that crossed before them, so they fall through a nearly empty centre. - The next shells (labels 0.06–0.12 r_m) arrive relativistically (P ≈ −0.7 to −4) and are decelerated on exit by the mass that has accumulated inside them; the central compaction 2m/R rises 0.3 → 0.63 → 0.88 → 1.16 within 0.05 t_H of proper time. The CMC lapse collapses after the compaction rises (0.35 → 0.036 → 6×10⁻⁷), i.e. the freeze is the consequence of a genuine trapped core (multi-stream pile-up), not its cause. - The continuum single-passage flux criterion (2m/R = 4ṁ/v with ṁ the LTB arrival rate, `4 mdot` ≤ 0.44 inside r_m for μ = 0.36, ≤ 0.32 for μ = 0.3, ≤ 0.78 for μ = 0.5) would not trap; the pile-up of decelerated outgoing shells does. - The trapped core at first detection: 0.008–0.010 M_H(t_k) (labels ≈ 0.11–0.16 r_m) at τ ≈ t_C(0) + 0.05–0.2 t_H, then growing along the LTB apparent-horizon curve (all later shells trap at their LTB t_AH to 10⁻³). - A dispersion of σ = 10⁻³ at entry changes nothing: the pericentres it implies (≈ 0.07/k for the inner shells) are 40× smaller than the Schwarzschild radius of the mass arriving with them (≈ 2.8/k). The regulator only matters once L/p exceeds 2m of the simultaneously arriving mass, roughly σ ≳ 0.03–0.05 at entry for μ = 0.36. Run with σ = 0.03 in progress. Convergence of the first-trapping label with resolution (0.18 → 0.16 → 0.11 r_m for dx_min = 2.5×10⁻³ → 3.7×10⁻⁴ → 1.8×10⁻⁴ r_m) is not yet established; K = 8000, s = 6 (1.9×10⁻⁵ r_m) in progress. - Reading for the programme: with a small physical dispersion, spherical cold collapse at μ = 0.3–0.36 forms a small black hole right at the caustic, which then accretes along the LTB curve; "globally naked in LTB" (μ = 0.30) does not prevent this. The threshold question therefore moves to lower μ (0.05–0.15, where C_ta ≈ 0.88 μ is small and the pile-up may virialize) and to the σ-dependence; both are the next runs. ## 25 Sep: σ = 0.03 at μ = 0.36 and cold μ = 0.10 - μ = 0.36, σ = 0.03 at entry (x < 2 r_m): still traps at the caustic, now as a puffier core: first detection at coordinate 12.8 t_H, R_AH = 17/k, M_AH = 8.5 = 0.046 M_H (labels < 0.185 r_m, 2305 shells, frozen at τ ≈ 8.08); earliest τ_trap = 8.06 t_H for label 0.24 r_m (before that label's LTB t_AH: the core traps as a whole); trapping curve τ_trap/t_AH^LTB = 1.003 (p5–p95 0.96–1.05). - μ = 0.10, cold: same mechanism. LTB t_C(0) = 25.14 t_H; earliest τ_trap = 25.39 (label 0.053 r_m); first detection at coordinate 28.3 t_H with M_AH = 1.31 = 0.007 M_H (labels < 0.145 r_m); the horizon then grows along the LTB curve (τ_trap/t_AH^LTB = 0.996–1.005 for all labels to 0.74 r_m), reaching 0.41 M_H by 54 t_H. Interior gauge failure (u < 0) grows to 100–230 cells inside 0.005 r_m; the AH sits at 0.03 r_m, so the exterior is unaffected, but excision is now needed for long runs. - Interim reading: for cold data the spherical collisionless collapse traps at the central caustic for every μ tried (0.10, 0.30, 0.36, 0.50), at proper time ≈ t_C(0) = 0.589 e^{3μ} μ^{−3/2} t_H, with a first horizon of 10⁻²–10⁻¹ M_H that then accretes along the LTB apparent-horizon curve. This is the brief's F4 regime (no spherical floor) with the deadline set by the central caustic rather than the r_m shell (t_C(0) ≈ 0.22 t_C(r_m) at small μ, versus the 0.735 t_C(r_m) horizon times of Yoo's triaxial runs). Caveats before this becomes a result: resolution convergence of the first trapping (K = 8000, s = 6 pending), the dispersion dependence at low μ (σ = 0.03 at μ = 0.10 running), and the regular-centre discretization (all shells with 2m(label) < R_c cross unresolved). ## 25 Sep: two bugs caught by new tests; the corrected μ = 0.36 / 0.10 picture - **Mirror-side sign bug (fixed).** During RK4 stages a shell that has crossed the centre carries x < 0; the RHS used P as the outward momentum for those stages, so the velocity and the lapse-gradient force had the wrong sign on the mirror side and crossing shells were braked. Fix: physical outward momentum is sgn(x)·P in the sources (`Po` in `solve_metric`) and sgn(x) factors in `rhs`. Effect: μ = 0.36 unchanged (the trapping there sits on the LTB curve, see below); μ = 0.10 first trapping moved from 25.39 to 26.07 t_H (label 0.088 r_m), i.e. the multi-stream core takes ≈ 0.9 t_H after the caustic to trap instead of 0.25. - **Tangential stress double counted (fixed).** `S_c` used `sp + 2 sq` although `sq = Σ N L²/(R² W)` already holds both tangential components; S = S_R + S_θ + S_φ = `sp + sq`. Only the lapse source 4π(E+S) is affected, and only for shells with L² ≠ 0, i.e. the σ > 0 runs (being redone); cold runs are untouched. Caught by the static test below: with the bug the E0c = 1.3 star had α(0) 2.5 % low and collapsed to a black hole within 1.3 t_dyn. - **Ladder step 4, static Einstein–Vlasov star (`scripts/v1_static_test.py`).** New `StaticBackground` (a = 1, H = 0, K = 0: maximal slicing, α(R_out) = √(1−2M/R_out)); isotropic polytropes from `steady_state.build` (E0c = 1.2: 2M/R = 0.108, max 2m/R = 0.18; E0c = 1.3: 2M/R = 0.134, max 2m/R = 0.236, z_c = 0.40), 4×10⁴ particles with L² ≠ 0 (radial orbits cross the centre: multi-stream, strong field), K = 800. Initial data: α_c matches e^μ to 3×10⁻⁴, m(R) to 1×10⁻³ (sampling noise). Evolution over 3 t_dyn (≈ 4500 steps, 27 min each on the VPS): E0c = 1.2 — max 2m/R = 0.1805 ± 0.0003 (initial 0.1807), α(0) drift 8×10⁻⁶, total Killing energy Σ N α W drift 2×10⁻⁶, per-particle α W rms 9×10⁻⁴; E0c = 1.3 — max 2m/R 0.2360 → 0.2399 (+1.6 %), α(0) −0.5 %, Killing energy −0.24 %, per-particle rms 3×10⁻³ (a slow secular contraction of the near-marginal z_c = 0.4 star, same level as the polar-areal code's earlier 1 % test). This validates the multi-stream pusher, the L² terms and the maximal-slicing lapse; the cosmological runs use the same code paths with K = −3H. - **Corrected μ = 0.36 reading.** All trapped shells trap at their LTB t_AH (median ratio 1.0001, p5–p95 0.9999–1.0027); the first is label 0.093 r_m at τ = 8.10 t_H = its own t_AH^LTB; the shells inside it (< 0.093, which crossed the centre at τ = 8.03–8.09) are enclosed but never themselves on a trapped sphere. So at μ = 0.36 the Vlasov run reproduces the censored LTB collapse: the first horizon is LTB's, not a product of the pile-up. Newtonian shell reference (`scripts/newton_shells.py 0.36 0.05`): 2m/r ≥ 1 first at 1.055 t_C(0) for label 0.02 (m = 0.07), peak 2m/r = 3.1; at 1.02 t_C(0) mass inside r < 2.5 is 0.50 vs 1.34 in GR — the Newtonian shells re-expand through the incoming ones before those reach R = 2m, the GR ones do not (relativistic infall, 2m/R → 1 before the crossing). Expected: the two theories differ where 2m/R is O(1). - **μ = 0.10 is a different regime.** LTB t_AH(0.088 r_m) = 25.41 t_H but the run traps that label at 26.07: the inner shells cross, re-expand and re-collapse (core t_dyn ≈ 0.05 t_H), and the accumulated core reaches 2m/R = 1 only after ≈ 18 core dynamical times. Here the Newtonian reference (10× less mass inside r < 2.5 at 1.04 t_C(0)) is a real discrepancy to resolve, because the pile-up is weak-field until the very end. - **Caustic benchmark (`scripts/v1_caustic_bench.py`).** Isolated cold Gaussian sphere at rest, 2M/R0 = 0.02 and 0.002, identical shells in the GR code (static background) and a Newtonian leapfrog shell code (softening = dx_min), compared at equal central proper time. Low-resolution smoke test (K = 400): m(< 0.03 R0)/M at τ = 1.00, 1.02, 1.05 t_C(0) is 0.011/0.024/0.045 (Newton) vs 0.007/0.018/0.049 (GR) — same pile-up within the 1–2 % time-dilation spread of the C = 0.02 model. Full-resolution runs (K = 2000, s = 4) in progress. ## 25 Sep: the "10× Newtonian discrepancy" at μ = 0.10 was a clock mismatch Corrected μ = 0.10 run (K = 2000, s = 4, diagnostics every 20 steps; `runs/v1/mu01fix2`), Newtonian references `scripts/newton_shells.py 0.10 {0.05, 0.02}` (softening 0.05 and 0.02/k, 4797 shells, labels < 0.4 r_m). - In CMC slicing the core's proper time lags the coordinate (≈ far-away FLRW) time long before any trapping: at the slice where the core reaches τ_core = t_C(0) the coordinate time is already 1.09 t_C(0) (lag 2.3 t_H; core lapse 0.8), and at τ_core = 1.02 t_C(0) the lag is 2.5 t_H (lapse 0.6). The shells arriving at the centre on that slice therefore carry proper times ≈ their LTB t_C, i.e. ≈ 1.03–1.05 t_C(0), not 1.02. Comparing "mass inside R" at equal *core* proper time with the Newtonian universal time (= LTB time of the arriving shells) compares different events. - On the shells' clock (coordinate time here; LTB time in the Newtonian code) the two histories agree to a factor ≲ 2 and the horizon times to 3 %: | t/t_C(0) | GR m(R<1), m(<2.5), m(<5), m(<10) | Newton ε=0.02 | Newton ε=0.05 | |---|---|---|---| | 1.10 | 0.040 0.098 0.185 0.263 | 0.089 0.225 0.432 0.850 | 0.101 0.221 0.420 0.764 | | 1.12 | 0.076 0.182 0.338 0.671 | 0.122 0.273 0.525 0.956 | 0.117 0.233 0.434 0.825 | | 1.14 | 0.185 0.435 0.612 0.926 (2m/R = 0.37) | 0.233 0.356 0.584 1.004 (0.53) | 0.113 0.229 0.443 0.893 (0.35) | | 1.147 | 0.538 0.974 1.156 1.413, **AH** (2m/R = 1.08) | — | — | | 1.16 | (trapped, M_AH growing) | 0.254 0.487 0.823 1.398, **2m/r = 1.3** | 0.104 0.212 0.452 0.899 (0.22) | | 1.18 | | 0.430 0.645 1.074 1.710 (5.6) | 0.104 0.273 0.507 1.065 (2m/r ≥ 1 at 1.185) | GR first AH at coordinate 28.83 t_H = 1.147 t_C(0), M_AH = 0.68 (0.004 M_H, labels < 0.117 r_m; the earlier "1.43, labels < 0.172" was the same run detected 0.13 t_H later with the coarser diagnostic cadence — the per-shell τ_trap record is cadence-independent: label 0.088 at 26.07 t_H in both). Newtonian 2m/r ≥ 1 at 1.16 (ε = 0.02) and 1.185 t_C(0) (ε = 0.05), i.e. 3–4 % (0.3–1 t_H) later than GR, with a core of 0.3–0.6/k³ mass units inside r < 1 by 1.2 t_C(0). GR concentrates the pile-up faster and denser (stronger gravity at 2m/R ≈ 0.4 and the exiting streams are slowed by the deep lapse), but the Newtonian shells also bind a tight core: the "fountain" is not lossless. So the pile-up trapping at μ = 0.10 is a property of cold multi-stream collapse, not of the gauge or of GR alone; GR only moves it earlier. - Softening sensitivity of the Newtonian core is strong (ε = 0.05 vs 0.02: core mass inside r < 1 at 1.2 t_C(0) 0.11 vs 0.51): the Newtonian reference resolves the core only for ε ≲ 0.02, consistent with 2m ≈ 0.1–0.5 of the masses involved. The GR run has dx_min = 9×10⁻⁴/k there. - Consequence for the deadline bookkeeping: report every horizon time twice — per-shell proper time τ_trap (what the local scalar decay clock sees) and CMC coordinate time (the far-away FLRW clock). At μ = 0.10 they differ by 2.8 t_H at first trapping (26.07 vs 28.83 t_H) purely from the lapse lag, not from dynamics. - μ = 0.36, σ = 0.03 rerun with the stress fix: first AH at coordinate 12.82 t_H, M_AH = 8.2 = 0.045 M_H (labels < 0.249 r_m), earliest τ_trap = 8.07 t_H (label 0.239): same as before the fix within 10 % (the tangential stress is a small source at this σ). ## 25 Sep: caustic benchmark, weak field (2M/R0 = 0.002; `runs/bench/caustic_C0.002_K2000_s4.out`) Isolated cold Gaussian sphere at rest, 8000 identical shells in both codes, K = 2000, s = 4 (dx_min = 2.9×10⁻⁴ R0), Newtonian softening = dx_min, GR sampled at equal central proper time (lapse 0.999 → 0.980, so the clock ambiguity is ≤ 2 % of t_C(0) here and the two clocks agree at the 10⁻³ level before the caustic). | τ/t_C(0) | Newton m(<0.01 R0), m(<0.03), m(<0.1), m(<0.3) / M | GR same | |---|---|---| | 0.98 | 0.0003 0.0045 0.039 0.183 | 0.0001 0.0028 0.034 0.180 | | 1.00 | 0.0027 0.0112 0.052 0.200 | 0.0007 0.0069 0.046 0.197 | | 1.02 | 0.0113 0.0248 0.069 0.218 | 0.0071 0.0173 0.062 0.215 | | 1.05 | 0.0141 0.0450 0.099 0.247 | 0.0148 0.0465 0.092 0.244 | | 1.10 | 0.0194 0.0533 0.160 0.298 | 0.0185 0.0539 0.154 0.296 | | 1.20 | 0.0196 0.0603 0.170 0.403 | 0.0223 0.0612 0.185 0.403 | | 1.30 | 0.0205 0.0580 0.177 0.498 | 0.0235 0.0593 0.173 0.498 | The multi-stream pile-up after the caustic agrees between the GR code and the Newtonian shell code to 5–10 % in the mass inside 0.01–0.1 R0 for τ ≥ 1.05 t_C(0); through the caustic itself (1.00–1.02) the GR core lags by ≈ 0.01 t_C(0) (the grid-deposited inner mass reaches the centre slightly later than the exact shell sums; converges with K). The cold pile-up binds 2 % of M inside 0.01 R0 and 6 % inside 0.03 R0 in both codes, i.e. a dense core of ≈ 0.05 M forms by 1.1 t_C(0) in Newtonian dynamics as well. GR run 2140 s (21590 steps) vs 209 s Newtonian. Together with the static-star test this closes the question raised on the μ = 0.10 core: the GR code's multi-stream dynamics is correct in the weak field, and the pile-up is Newtonian physics. Strong-field version (2M/R0 = 0.02) in progress. ## 25 Sep: μ = 0.10 resolution check and σ = 0.03 (fixed code) | run | dx_min (r_m) | earliest τ_trap (label) | first AH: coordinate t, τ_core, M_AH (M_H) | labels ≥ 0.1 r_m: τ_trap/t_AH^LTB | |---|---|---|---|---| | K = 2000, s = 4, n = 4 | 3.7×10⁻⁴ | 26.07 t_H (0.088) | 28.83 t_H = 1.147 t_C(0), 1.033 t_C(0), 0.68 (0.004) | 0.9995 | | K = 4000, s = 4, n = 4 | 1.8×10⁻⁴ | 25.75 t_H (0.060) | 28.38 t_H = 1.129 t_C(0), 1.023 t_C(0), 0.34 (0.002) | 0.9992 | - The trapping of every label ≥ 0.1 r_m on the LTB apparent-horizon curve is converged (10⁻³). The *first* trapping is not: doubling the resolution moves it 0.3 t_H earlier (t_C(0) + 0.93 → + 0.61 t_H), to a smaller label (0.088 → 0.060) and half the mass. The trend points to a horizon emerging from the caustic itself with vanishing initial mass, then growing along the LTB curve — as in the censored case — so the deadline-relevant statement, "a horizon exists from ≈ t_C(0) (+ ≤ 1 t_H) on", is already converged; the mass of the first horizon is not a useful observable. K = 8000 and n = 8 per cell queued (`runs/v1/queue3.sh`) to confirm the direction. - σ = 0.03 at entry (x < 2 r_m), μ = 0.10: still traps, earlier in proper time and as a whole core — earliest τ_trap = 25.33 t_H (label 0.150, before its LTB t_AH = 25.9), first AH at coordinate 27.98 t_H = 1.113 t_C(0) with M_AH = 1.52 = 0.008 M_H (labels < 0.118, of which 34 % had re-expanded beyond R_AH before being caught); trapping curve for labels 0.1–0.3: 0.984 t_AH^LTB. A warm core does not pass through the centre; it virializes with all the arrived mass inside a radius ≈ (σ-set pericentres), and 2M/R reaches 1 sooner than the cold multi-stream pile-up. The σ needed to *prevent* trapping must be found higher up (σ ≳ 0.1?): next scan. - Interpretation for V1: for the Yoo profile at μ = 0.10 (LTB-naked, C_ta ≈ 0.09) spherical collisionless collapse with σ ≤ 0.03 forms a horizon at ≈ t_C(0) = 25 t_H (per-shell proper time) / 28 t_H (CMC coordinate time), i.e. 0.26–0.29 t_C(r_m) — much earlier than Yoo's triaxial 0.735 t_C(r_m). Since t_C(0) = 0.589 e^{3μ} μ^{−3/2} t_H, deadlines 100/300/1000 t_H would correspond to μ ≈ 0.033/0.016/0.007 if the cold spherical result held at all μ; the scan to μ = 0.05 and the σ ladder decide whether it does. ## 25 Sep: why the cold pile-up traps at μ = 0.10 although C_ta ≈ 0.09 — and where the spherical threshold should be Re-reading the Newtonian μ = 0.10 reference (ε = 0.02) and the isolated benchmark in the same dimensionless terms: - By LTB time 1.10 t_C(0) the shells up to label 0.27 r_m (m = 4.6/k³) have reached the centre; most re-expand (fountain), 5–20 % stay inside r < 2.5/k. The retained core has 2m/r ≈ 0.18 at r = 1–10/k (a plateau), rising to 0.5 at 1.18 and 1.0 at 1.20 t_C(0). The turnaround compaction of the shells arriving at those times is |2E(r)| = (2μ/3) r² e^{−r²/6} = 0.027 (1.10), 0.047 (1.20): the plateau is 6–20 × C_ta of the *currently arriving* shells, and C_ta grows ∝ r² as later shells arrive. In the isolated Gaussian benchmark the same code gives a plateau ≈ 2–5 × the collapsed region's compaction, so the amplification is similar; the difference from the plan's estimate ("plateau ~ C_ta ≈ 0.88 μ" from the r_m shell) is that trapping happens when the shells with C_ta ≈ 0.03–0.05 arrive, long before r_m, and that the flat-core synchronicity amplifies by ~10. - GR traps somewhat earlier than the Newtonian shells (1.13–1.15 vs 1.20 t_C(0), i.e. when C_ta ≈ 0.03 instead of 0.05): stronger gravity at 2m/R ≈ 0.3–0.5 plus the deep lapse slowing the exiting streams. - Prediction (to be tested by the μ scan): the cold spherical collapse traps when some shell with C_ta ≳ 0.03–0.05 has arrived. |2E| peaks at r = √6/k = r_m with value 1.47 μ (μ e^{−1}·4 ... = 2μ/3·6/e), so no shell reaches C_ta = 0.05 for μ < 0.034 (0.02 for the GR value 0.03): a cold spherical threshold μ_V,sph ≈ 0.02–0.035 with the horizon time rising steeply towards t_C(r_m) as μ → μ_V,sph — so the deadline matters exactly there. Expected horizon times: μ = 0.07 → ≈ 1.3 t_C(0) ≈ 50 t_H; μ = 0.05 → shells to label ≈ 0.5–0.6 r_m needed, ≈ 1.5 t_C(0) ≈ 90 t_H (near D = 100); μ = 0.04 → ≈ 2 t_C(0) ≈ 170 t_H; μ = 0.03 → only if shells near r_m suffice, ≳ 500 t_H (t_C(r_m)), i.e. NO-COLLAPSE for D ≤ 300. Runs queued: μ = 0.07, 0.05, 0.04, 0.03 (cold, K = 2000, s = 4). ## 25 Sep: μ = 0.10 convergence (cold, s = 4; `runs/v1/mu01fix2`) | run | dx_min (r_m) | earliest τ_trap (label) | first AH: coord t/t_C(0) (t_H) | τ_core/t_C(0) at AH | M_AH, R_AH | wall | |---|---|---|---|---|---|---| | K 2000, n 4 | 3.7×10⁻⁴ | 26.07 t_H (0.088) | 1.1466 (28.83) | 1.0326 | 0.68, 1.27 | 219 s | | K 4000, n 4 | 1.8×10⁻⁴ | 25.75 (0.060) | 1.1288 (28.38) | 1.0229 | 0.335, 0.626 | 672 s | | K 4000, n 8 | 1.8×10⁻⁴ | 25.74 (0.061) | 1.1290 (28.39) | 1.0228 | 0.341, 0.626 | 1114 s | | K 8000, n 4 | 9×10⁻⁵ | 25.60 (0.025) | 1.1203 (28.17) | 1.0176 | 0.355, 0.623 | 2009 s | - Shells per cell: converged (n = 4 vs 8 identical to 10⁻³). Grid: first order in dx_min — the successive differences halve (coordinate AH time 0.0178 → 0.0085 t_C(0); earliest τ_trap 0.32 → 0.15 t_H), so the Richardson limits are: first AH at coordinate ≈ 1.112 t_C(0) = 27.96 t_H, core proper time ≈ 1.012 t_C(0), earliest trapping τ ≈ 25.45 t_H = t_C(0) + 0.3 t_H, emerging from the innermost labels (→ 0); the first detected horizon mass and radius are converged from K = 4000 on: M_AH = 0.34–0.36 (0.002 M_H), R_AH = 0.62/k. - Reading: at μ = 0.10 a horizon exists from ≈ t_C(0) + 0.3 t_H (per-shell proper time) = 25.5 t_H, i.e. 0.26 t_C(r_m), first detected with M ≈ 0.002 M_H at the CMC coordinate time ≈ 28 t_H, then growing along the LTB apparent-horizon curve (all labels ≥ 0.1 r_m trap at 0.999 t_AH^LTB at every resolution). K = 2000 (s = 4) is adequate for horizon times to ≈ 1 t_H and for masses after the first ≈ 0.3 t_H of growth; K = 4000 for the first horizon mass. ## 25 Sep: cold μ scan, first results (K = 2000, s = 4, n = 4; `runs/v1/scan`) | μ | t_C(0) | t_C(r_m) | earliest τ_trap (label) | first AH: coordinate t | τ_core at AH | M_AH (M_H) | arriving label, its C_ta = \|2E\| | labels 0.1–0.3: τ_trap/t_AH^LTB | |---|---|---|---|---|---|---|---|---| | 0.10 | 25.1 t_H | 98.6 | 26.07 (0.088) [→ 25.5 converged] | 28.8 t_H = 1.147 t_C(0) [→ 1.112] | 1.033 | 0.004 [0.002] | 0.30 r_m, 0.037 [0.029] | 0.9995 | | 0.07 | 39.2 | 160 | 41.5 (0.085) | 45.2 t_H = 1.152 t_C(0) | 1.056 | 0.011 | 0.32 r_m, 0.025 | 1.0055 | | 0.05 | 61.2 | 257 | 68.1 (0.078) | 73.7 t_H = 1.204 t_C(0) | 1.109 | 0.015 | 0.36 r_m, 0.023 | 1.074 | | 0.04 | 83.0 | 353 | 97.8 (0.064) | 106.2 t_H = 1.279 t_C(0) | 1.174 | 0.018 | 0.41 r_m, 0.023 | 1.139 | | 0.03 | 124.0 | 534 | 161.3 (0.021) | 178.5 t_H = 1.439 t_C(0) | 1.309 | 0.012 | 0.50 r_m, 0.023 | 1.28 | | 0.025 | 160.6 | 696 | 231.9 (0.048) | 260.1 t_H = 1.619 t_C(0) | 1.460 | 0.032 | 0.57 r_m, 0.024 | 1.43 | | 0.02 | 221.1 | 965 | 361.0 (0.008) | 403.4 t_H = 1.824 t_C(0) | 1.650 | 0.021 | 0.64 r_m, 0.022 | 1.62 | | 0.017 | 279.7 | 1225 | 504.8 (0.056) | 566.9 t_H = 2.027 t_C(0) | 1.830 | 0.025 | 0.69 r_m, 0.020 | 1.80 | - The horizon appears when the shells arriving at the core have turnaround compaction C_ta = |2E(r)| ≈ 0.023–0.03 (K = 2000; the converged μ = 0.10 value is 0.029), independent of μ — the rule anticipated above, with the GR value of the constant. Below μ = 0.05 the trapped shells no longer sit on the LTB curve (τ_trap/t_AH^LTB = 1.07 for labels 0.1–0.3 at μ = 0.05): the core traps as a whole once its multi-stream pile-up reaches 2m/R = 1, and the first horizon is correspondingly more massive (0.015 M_H at μ = 0.05 vs 0.002 at 0.10). - With C_ta,crit ≈ 0.025 and |2E| ≤ 1.47 μ (maximum at r = r_m): cold spherical threshold μ_V,sph ≈ 0.017; predicted first-horizon (coordinate) times from the arrival of the shell with |2E| = 0.025: μ = 0.04 → ≈ 1.3 t_C(0) ≈ 110 t_H; 0.03 → ≈ 1.5 t_C(0) ≈ 185 t_H; 0.02 → ≈ 2.1 t_C(0) ≈ 470 t_H; 0.017 → ≈ t_C(r_m) ≈ 1200 t_H. Deadline map for cold spherical collapse of the Yoo profile: μ_th(100 t_H) ≈ 0.04, μ_th(300) ≈ 0.025, μ_th(1000) ≈ 0.018 (K = 2000 numbers; the first-order resolution error shifts horizon times earlier by ≈ 3 % of t_C(0)). The 100 t_H entry coincides with Yoo et al.'s 3D boundary (0.045–0.050), which they obtained with runs of a few t_H — a coincidence to be examined, not a confirmation. μ = 0.04 came out at 1.279 t_C(0) = 106 t_H (predicted ≈ 1.3, ≈ 110 t_H), with |2E| = 0.023 at the arriving shell and the shells' proper times at trapping 97–100 t_H: the D = 100 t_H boundary of cold spherical collapse is at μ ≈ 0.04 (per-shell proper time) to 0.045 (coordinate time). μ = 0.03: horizon at coordinate 178.5 t_H = 1.439 t_C(0) (predicted ≈ 1.5, 185 t_H), M = 2.2 at detection; the run then died in a diagnostics line (`np.max` of an empty array when the mass kernel reports substep trouble but no edge has u ≤ 0: fixed) — rerun queued together with μ = 0.025, 0.02, 0.017 (D = 1000) and σ = 0.03, 0.1 at μ = 0.05. The arriving-shell rule |2E| ≈ 0.023–0.025 has now held for μ = 0.10, 0.07, 0.05, 0.04, 0.03 (five decades of 2m/R amplification ruled by one number). ## 25 Sep: caustic benchmark, stronger field (2M/R0 = 0.02; `runs/bench/caustic_C0.02_K2000_s4.out`) Same set-up as the weak-field case, ten times the compaction (lapse at the centre 0.99 → 0.70 by 1.2 t_C(0)). | τ_core/t_C(0) | Newton m(<0.01), m(<0.03), m(<0.1) / M; max 2m/r | GR same; max 2m/R | α(0) | |---|---|---|---| | 1.02 | 0.011 0.025 0.069; 0.027 | 0.008 0.018 0.063; 0.023 | 0.92 | | 1.05 | 0.014 0.045 0.099; 0.034 | 0.017 0.048 0.095; 0.038 | 0.86 | | 1.10 | 0.021 0.052 0.160; 0.044 | 0.022 0.061 0.163; 0.052 | 0.82 | | 1.20 | 0.020 0.059 0.172; 0.042 (peak 0.060) | 0.034 0.077 0.206; 0.116 | 0.71 | | 1.30 | 0.021 0.058 0.174; 0.049 (peak 0.074) | black hole (2m/R > 1, α(0) = 0, 308 interior cells with u < 0) | 0 | - Up to 1.1 t_C(0) the two agree as in the weak-field case (GR 5–15 % higher). Then they part: the Newtonian core plateaus at 2m/r ≈ 0.05–0.07 (≈ 3 × 2M/R0), the GR core keeps growing (0.116 at 1.2) and collapses to a black hole between 1.2 and 1.3 t_C(0). Mechanism (the same one that sets C_ta,crit ≈ 0.025 in the cosmological runs): the core's proper time runs slow (α = 0.7–0.85) while the infall from outside continues on the far-away clock, so relative to the core's own relaxation time the feeding rate is 15–30 % higher; the pile-up compaction rises, the lapse drops further — positive feedback with gain > 1 once 2m/R ≈ 0.1. Newtonian dynamics has no such feedback. - This is a strong claim (a cold collisionless sphere with 2M/R0 = 0.02 collapses to a black hole in 1.3 free-fall times) and needs two checks before it is used: resolution (K = 1000 repeat running; K = 4000 later) and an independent slicing/code (the polar-areal pbhgr code on the same shells up to 1.2 t_C(0), where it is still regular). Literature to compare: Shapiro & Teukolsky 1985–86 cold cluster collapse, Rein–Rendall–Schaeffer 1998 and Olabarrieta–Choptuik 2002 (critical amplitudes for isolated Einstein–Vlasov collapse). - GR run: 116 230 steps, 8141 s (2.3 h) — the compiled pusher is now the pacing item for the benchmarks. - μ = 0.025 and 0.02 (runs to 400 and 600 t_H): horizons at 260 and 403 t_H (predicted 250–290 and 470), again when the arriving shell has |2E| = 0.022–0.024. Below μ ≈ 0.05 the core traps as a whole long after the LTB times of its shells (τ_trap/t_AH^LTB = 1.4–1.6) with a first-horizon mass of 0.02–0.03 M_H. - **Cold spherical deadline map (Yoo profile, K = 2000, s = 4; per-shell proper time / CMC coordinate time):** μ = 0.10: 26.1 / 28.8 t_H (converged 25.5 / 28.0); 0.07: 41.5 / 45.2; 0.05: 68.1 / 73.7; 0.04: 97.8 / 106.2; 0.03: 161.3 / 178.5; 0.025: 231.9 / 260.1; 0.02: 361.0 / 403.4; 0.017: 504.8 / 566.9 (predicted ≈ 640). Hence μ_th(D = 100 t_H) ≈ 0.040–0.045, μ_th(300) ≈ 0.022, μ_th(1000) ≈ 0.014–0.015 (|2E|_crit drifts from 0.024 at μ = 0.03 to 0.020 at 0.017; with |2E|_max = 1.47 μ the absolute floor of cold spherical trapping is μ ≈ 0.014, where the horizon time → t_C(r_m)). Resolution shifts these times earlier by ≈ 3 % of t_C(0) (first order in dx); the deadline thresholds move by < 0.002 in μ. - **σ = 0.03 at μ = 0.05 is not a regulator but a violent perturbation**: horizon at coordinate 62.9 t_H = 1.027 t_C(0), *before* the cold caustic, M = 0.012 M_H, with the arriving shells at |2E| = 0.004 only. Reason: the isotropic kick at t = 1 t_H includes a radial component ±σ on shells whose Hubble speed is 0.12 c, so it changes their binding energy by ±v_H σ ≈ ±0.004 — larger than |E| ≈ 0.001–0.005 of the labels ≤ 0.25 r_m at this μ. Half the shells become 2–8× more bound and collapse early into a dense core; the other half are unbound. At low μ the peculiar velocities of the collapsing region are ≈ √|2E| ≈ 0.05–0.15 c, so "σ_ent = 0.03" is hot, not a small regulator. Consequences: (i) the regulator ladder for the cold threshold must use σ ≪ √|2E|_crit ≈ 0.15 c and ≪ |E|/v_H — i.e. σ ≤ 10⁻² at μ = 0.03–0.04, 10⁻³ to be safe; (ii) the physical σ axis needs the brief's maps (Harada et al. eq. 42, Ebrahimian et al. 37–39) evaluated per μ before any run is called "warm"; (iii) a warm distribution function needs many velocity samples per cell (n ≥ 16), not 4. Runs with σ = 10⁻³ and 10⁻² at μ = 0.04 and 0.03 queued; σ = 0.1 at μ = 0.05 running (expected: even earlier sub-collapse). - σ = 0.1 at μ = 0.05: horizon at coordinate 102.7 t_H = 1.68 t_C(0) (τ_core 89.8 t_H), M_AH = 0.025 M_H at R_AH = 8.9/k, when the arriving shell has |2E| = 0.050 (cold: 0.022 at 73.7 t_H; σ = 0.03: 0.004 at 62.9 t_H). So the dispersion axis is non-monotonic at this μ: 0.03 seeds early sub-collapse through the radial kicks, 0.1 is hot enough for the angular-momentum barrier (pericentres ≈ σ R_inj ≈ 4–5/k, comparable to R_AH) to hold until twice the cold critical compaction has arrived, moving the horizon past the 100 t_H deadline in coordinate time (not in proper time). Any statement about σ therefore needs the physical maps and a smooth DF; the present kicks are a discrete-stream caricature (4 velocities per cell). ## 26 Sep: the σ > 0 runs are unreliable at the caustic — unresolved pericentres σ = 10⁻³ and 10⁻² at μ = 0.04 and 0.03 all "trap" within 0.03 t_C(0) of the caustic with M_AH = 0.01–0.016 M_H, and μ = 0.03, σ = 10⁻³ reports M_AH = 392 = 2.1 M_H at R = 20/k (2m/R = 39): impossible — at 1.03 t_C(0) the LTB mass inside R < 5/k is ≤ 0.1, and a kick of v_H σ = 10⁻⁴ cannot move the label-0.24 shells (|E| = 0.004) inward. Cause: a warm shell has L = R_inj σ_t ≈ 45 σ/k, pericentre R_p ≈ L/P ≈ 0.05/k for σ = 10⁻³, while the global RK4 step near the caustic is ≈ 0.4 dR_min/v ≈ 1 time unit (the comoving grid's physical spacing is a·Δx_min ≈ 2.4/k at a ≈ 2700). The step overshoots the pericentre by 20×, the shell lands at R ≪ R_p where W = √(1+P²+L²/R²) is 10–100, and its deposited energy fabricates the "mass". The cold runs are unaffected (L = 0 exactly; the crossing is a reflection). Earlier σ runs: σ = 0.03 at μ = 0.36/0.10 had R_p ≈ 1/k against dR ≈ 1–2/k (marginal, probably qualitatively right but not quantitative); σ = 0.1 at μ = 0.05 had R_p ≈ 4.5/k (resolved). **All σ > 0 numbers are withdrawn until the pusher substeps stiff particles** (per-particle substeps under the stage metric for shells with ω dt = L dt/(R² W) > 0.2), which is now the next code item; a global pericentre time-step limit would slow warm runs by 20–200× and is not an option. - Implemented (26 Sep, `CosmoRun._stiff_substeps`): shells with ω dt = L dt/(R² W) > 0.2 are integrated over the global step with RK4 substeps (n_sub = 4 ω dt/0.2, ≤ 4000) under the metric frozen at the start of the step; their positions at t + dt/2 and t + dt feed the stage sources of the global RK4. Cold shells are untouched. Static-star test unchanged. Reruns of μ = 0.04 σ = 10⁻³/10⁻² and μ = 0.05 σ = 0.03 queued (`runs/v1/scan2`). - First rerun with substepping (`runs/v1/scan2`): still garbage at μ = 0.04, σ = 10⁻³ (M_AH = 331 at R = 70, a shell with P = 5725 at the end); the stiffness test flagged only 49–57 shells because it used the angular frequency at the *start* of the step, while a warm shell at R ≈ 1/k with v ≈ c reaches its pericentre R_p ≈ 0.05/k within one global step and is then kicked by the centrifugal term evaluated at R ≪ R_p. Second version: estimate the pericentre from angular-momentum conservation with the momentum the shell would carry there, R_p = √(L²/(P² + L²/R² + 1)), and flag every warm shell that can travel to within 4 R_p during the step with ω_p dt > 0.2 (n_sub = ω_p dt/0.05, ≤ 4000). Rerun in `runs/v1/scan3`; acceptance: max |P| at the end O(1–10), no mass function above the LTB mass. - Strong-field benchmark at K = 1000 (s = 4, Δx_min = 5.9×10⁻⁴; process ended after the 1.20 row without a traceback, probably killed for memory while five jobs shared the VPS): at τ = 1.20 t_C(0) GR m(<0.01, 0.03, 0.1)/M = 0.031, 0.075, 0.201 with max 2m/R = 0.069 and α(0) = 0.79, versus K = 2000: 0.034, 0.077, 0.206, 0.116, 0.71, and Newtonian 0.020–0.023, 0.059–0.064, 0.172, 0.042–0.047. The GR excess over Newtonian is present at both resolutions (masses within 3 %, the same at both K); the runaway's *timing* is resolution-sensitive (compaction 0.069 vs 0.116 at 1.20), as for the first-trapping time in the cosmological runs. Polar-areal cross-check (K = 4000 uniform, dr = 10⁻³): at τ = 1.05 and 1.10 it gives 0.018/0.052/0.102 (2m/r = 0.040) and 0.028/0.068/0.169 (2m/r = 0.102, e^μ(0) = 0.73): the same excess, and a runaway even earlier than the areal–CMC code. Independent code and slicing therefore confirm the phenomenon; its onset time is what needs resolution and cross-code agreement before it is quoted with a number. - Second version works (`runs/v1/scan3`, μ = 0.04, σ = 10⁻³): max |P| at the end 9.4 (no shell above 10), mass function sane, horizon at coordinate 93.8 t_H = 1.130 t_C(0) (τ_core 88.3 t_H; earliest τ_trap = 88.0 t_H for label 0.166), M_AH = 0.009 M_H at R_AH = 2.8/k. So a 10⁻³ dispersion moves the μ = 0.04 horizon 12 t_H *earlier* than the cold run (106.2 / 97.8 t_H): the exact fountain is broken (shells no longer re-expand through the exact centre, and the radial kicks v_H σ ≈ 10⁻⁴ are 10–20 % of |E| for the inner labels), so more mass is retained. The D = 100 t_H classification at μ = 0.04 stays COLLAPSE in both clocks. Cost: 6096 s — 50–170 shells per step at the 4000-substep cap; the substeps are now bucketed by need (powers of two) to cut that, and the run is repeated (`runs/v1/scan4`) to confirm result and timing before the warm campaign (μ = 0.03–0.07 × σ = 10⁻³–10⁻¹, 4 velocity samples per cell, one case at 8). - Bucketed rerun (`runs/v1/scan4`) reproduces the result (horizon at 93.7 t_H, M_AH = 0.008 M_H, max |P| = 10.3) but took 10 094 s (sharing the VPS with the polar-areal run): the substep loop is Python-bound (np.interp of the metric at every RK4 stage), bucketing only adds loop iterations. The polar-areal cross-check was stopped after 5.5 h CPU at τ = 1.10 (its fixed coordinate step cannot follow the collapsing lapse); its 1.05/1.10 rows are the result. Next: the stiff-shell substepper as a C kernel (linear metric interpolation on the edge grid, RK4), which is the "compiled pusher" item and makes the warm campaign 5–10 min per run. - Compiled substepper (`stiff_substeps` in `csrc/kernels.c`, per-shell even substep counts, linear metric interpolation on the edge grid by bisection): agrees with the Python version to machine precision (|ΔP| < 10⁻¹⁸ on 300 shells × 64 substeps), 300 shells × 4000 substeps in 0.5 s (≈ 100× faster); static-star test unchanged. Run `runs/v1/scan5` (μ = 0.04, σ = 10⁻³) repeats the case with it; the warm campaign (`runs/v1/warm`, `queue9.sh`) is gated on its completion. - `runs/v1/scan5` (compiled substepper): same answer as the Python path — horizon at coordinate 93.6 t_H, τ_trap earliest 88.3 t_H, M_AH = 0.008 M_H, max |P| = 9.3 — in 328 s instead of 6096–10094 s. Warm campaign started (`runs/v1/warm`): μ = 0.04 × σ = {10⁻², 3×10⁻², 10⁻¹}; μ = 0.03 × {10⁻³, 10⁻², 3×10⁻², 10⁻¹}; μ = 0.05 × {10⁻³, 3×10⁻², 10⁻¹}; μ = 0.07 × {10⁻², 10⁻¹}; μ = 0.04, σ = 10⁻² with 8 shells per cell. ## 26 Sep: warm campaign, first six runs (K = 2000, 4 velocity samples per cell; `runs/v1/warm`) | μ | σ_ent | horizon, proper / coordinate (t_H) | cold (proper / coord) | M_AH (M_H), R_AH | arriving \|2E\| | wall | |---|---|---|---|---|---|---| | 0.04 | 10⁻³ | 88.3 / 93.6 | 97.8 / 106.2 | 0.008, 2.8 | 0.010 | 328 s | | 0.04 | 10⁻² | 84.9 / 90.8 | | 0.008, 2.7 | 0.009 | 325 s | | 0.04 | 3×10⁻² | 80.3 / 83.6 (1.007 t_C(0)) | | 0.008, 2.6 | 0.001 | 213 s | | 0.04 | 10⁻¹ | 117.4 / 131.3 (1.58 t_C(0)) | | 0.048, 17.4 | 0.037 | 586 s | | 0.03 | 10⁻³ | 134.3 / 141.8 | 161.3 / 178.5 | 0.011, 3.7 | 0.010 | 364 s | | 0.03 | 10⁻² | 126.4 / 132.9 | | 0.010, 3.5 | 0.005 | 340 s | | 0.03 | 3×10⁻² | 116.6 / 120.3 (0.97 t_C(0)) | | 0.009, 3.3 | 0.000 | 234 s | - σ ≤ 3×10⁻² makes the horizon *earlier* (by 10–40 t_H), σ = 10⁻¹ later and more massive. The early trapping is driven by the radial component of the kick: v_H σ = 0.12 σ is 4 % (σ = 10⁻³) to 100 % (3×10⁻²) of |E| of the labels 0.1–0.2 r_m at these μ, so the inward-kicked shells collapse early and their core traps with |2E| of the *mean* flow as low as 0.001. Whether a smooth warm distribution function does the same, or whether the 4-sample representation makes the early sub-population lumpy and spuriously compact, is what the 8-sample run (queued) and a 16–32-sample run must decide before the σ axis is reported. Deadline reading if it holds: μ = 0.04 is COLLAPSE for D = 100 t_H at all σ ≤ 3×10⁻² in both clocks and NO-COLLAPSE at σ = 10⁻¹ (coordinate 131 t_H, proper 117 t_H); μ = 0.03 is COLLAPSE for D = 300 t_H at every σ tried so far. - Sanity of the six runs: the substep cap (4000) is hit in all of them (the smallest pericentres are under-resolved), but shells ending with |P| > 20 carry ≤ 0.066 mass units (≤ 5 % of M_AH; they are inside the horizon at the end, where the normal-frame momentum grows physically), so the mass functions are not contaminated. n_stiff reaches 1000–1800 shells per step at the caustic. ## 26 Sep: warm campaign complete (13 runs, K = 2000, s = 4; `runs/v1/warm`, `scripts/warm_summary.py`) Horizon time, CMC coordinate / per-shell proper (t_H); M_AH at first detection in M_H: | μ | cold | σ = 10⁻³ | 10⁻² | 3×10⁻² | 10⁻¹ | |---|---|---|---|---|---| | 0.07 | 45.2 / 41.5 | — | 42.4 / 39.6 (0.005) | — | 61.4 / 52.1 (0.041) | | 0.05 | 73.7 / 68.1 | 67.2 / 63.5 (0.006) | — | 63.0 / 59.7 (0.007) | 103.2 / 89.2 (0.040) | | 0.04 | 106.2 / 97.8 | 93.6 / 88.3 (0.008) | 90.8 / 84.9 (0.008); n = 8: 98.7 / 91.8 (0.020) | 83.6 / 80.3 (0.008) | 131.3 / 117.4 (0.048) | | 0.03 | 178.5 / 161.3 | 141.8 / 134.3 (0.011) | 132.9 / 126.4 (0.010) | 120.3 / 116.6 (0.009) | 192.2 / 175.0 (0.052) | - Systematic across μ: σ_ent ≤ 3×10⁻² brings the horizon forward (to 0.97–1.15 t_C(0), earlier for larger σ, with the same 0.005–0.011 M_H first mass as the cold pile-up), σ_ent = 10⁻¹ pushes it back to 1.55–1.7 t_C(0) with a puffier first horizon of 0.04–0.05 M_H at R_AH ≈ 15–18/k, when the arriving shell has |2E| ≈ 0.03–0.06. - Sampling: μ = 0.04, σ = 10⁻² with 8 instead of 4 velocity samples per cell traps 8 t_H later (98.7 vs 90.8 t_H) with 2.5× the first mass — the early-trapping branch is not converged in the DF sampling at the 10 % level (16 samples running). The σ = 10⁻¹ branch (angular-momentum barrier, |2E| ≈ 0.04) is expected to be robust to it. - Deadline reading (both clocks unless stated): D = 100 t_H — μ = 0.04 COLLAPSE for σ ≤ 3×10⁻² (coordinate 84–99 t_H, borderline at n = 8), NO-COLLAPSE at σ = 10⁻¹; μ = 0.05 at σ = 10⁻¹ borderline (coordinate 103, proper 89); μ = 0.07 COLLAPSE at all σ. D = 300 t_H — μ = 0.03 COLLAPSE at every σ ≤ 10⁻¹. So μ_th(100 t_H) moves from ≈ 0.04 (cold, σ ≤ 3×10⁻²) to ≈ 0.05 at σ_ent = 10⁻¹; μ_th(300 t_H) stays ≈ 0.02–0.025 for σ ≤ 10⁻¹. - Caveats carried: (i) DF sampling (n = 4 → 8 → 16); (ii) the σ injection is an isotropic kick at 1 t_H on shells inside 2 r_m, not a physical map (the two maps of the plan are to be evaluated per μ); (iii) first order in Δx. - DF sampling check at μ = 0.04, σ = 10⁻²: 4 / 8 / 16 velocity samples per cell → horizon at coordinate 90.8 / 98.7 / 97.0 t_H (proper 84.9 / 91.8 / 91.1), M_AH = 0.008 / 0.020 / 0.016 M_H, R_AH = 2.7 / 5.8 / 5.7. Converged from 8 samples (2 %); the 4-sample campaign values on the early-trapping branch are early by ≈ 6 % of t_C(0) and their first masses low by 2×. Reading unchanged: σ_ent ≤ 3×10⁻² still traps before the cold time (97 vs 106 t_H coordinate, 91 vs 98 proper at μ = 0.04), COLLAPSE for D = 100 t_H in both clocks. Wall 1090 s at n = 16. ## 26 Sep: resolution at low μ (cold, s = 4; `runs/v1/scan`, K = 2000 vs 4000) | μ | K | first AH coordinate (t_H, t/t_C(0)) | proper (τ_core / earliest τ_trap) | M_AH (M_H), R_AH | |---|---|---|---|---| | 0.03 | 2000 | 178.5 (1.439) | 162.4 / 161.3 | 0.012, 4.3 | | 0.03 | 4000 | 164.9 (1.329) | 153.2 / 152.1 | 0.006, 2.0 | | 0.02 | 2000 | 403.4 (1.824) | 364.8 / 361.0 | 0.021, 7.4 | | 0.02 | 4000 | 362.1 (1.638) | 333.6 / 333.6 | 0.010, 3.4 | - The shift per doubling is 8–10 % at these μ (1.6 % at μ = 0.10): the comoving grid's physical spacing a·Δx_min is 4.2/k at K = 2000 by a ≈ 4700, comparable to R_AH = 2–4/k, so the first horizon is one cell wide there. First-order Richardson limits: μ = 0.03 → ≈ 151 t_H coordinate / 143 proper; μ = 0.02 → ≈ 321 / 293. The deadline map moves down by ≈ 0.002–0.003 in μ: μ_th(300 t_H) ≈ 0.020 (μ = 0.02 is borderline: proper 293 < 300 < coordinate 321), μ_th(100 t_H) ≈ 0.037–0.04, μ_th(1000 t_H) ≈ 0.014. K = 8000 runs at μ = 0.03 and 0.02 queued to close this; the earlier "< 0.002" statement is withdrawn. Lesson for the production setup: add cells or re-stretch the grid as a grows so that a·Δx_min stays below R_AH/10 (≈ 0.3/k) — a comoving grid cannot hold its physical resolution. ## 26 Sep: three resolutions at low μ (cold; K = 8000 runs 2240 s and 4432 s) | μ | K | first AH coordinate (t_H) | earliest τ_trap (t_H) | M_AH (M_H), R_AH (1/k) | |---|---|---|---|---| | 0.03 | 2000 / 4000 / 8000 | 178.5 / 164.9 / 159.5 | 161.3 / 152.1 / 147.7 | 0.012, 4.3 / 0.006, 2.0 / 0.003, 1.0 | | 0.02 | 2000 / 4000 / 8000 | 403.4 / 362.1 / 348.1 | 361.0 / 327.2 / 316.3 | 0.021, 7.4 / 0.010, 3.4 / 0.005, 1.7 | - Differences shrink by 2.5–3× per doubling (better than first order once the horizon is a few cells wide). Extrapolated horizon times: μ = 0.03 → ≈ 156 t_H coordinate / 144 proper; μ = 0.02 → ≈ 341 / 310. The first-detected mass keeps halving with resolution at these μ (the horizon emerges from the innermost, unresolved scales, as at μ = 0.10), so "first mass" is not an observable here; the mass 1–3 t_H later is. - Converged cold deadline map (Yoo profile, per-shell proper time / coordinate time both considered): μ_th(100 t_H) ≈ 0.038–0.040, μ_th(300 t_H) ≈ 0.021 (μ = 0.02 is NO-COLLAPSE in both clocks: 310 / 341 t_H), μ_th(1000 t_H) ≈ 0.014–0.015. Cold floor μ ≈ 0.014. - Cost note: K = 8000 at μ = 0.02 took 74 min on the VPS; the grid that re-stretches with a (or an areal-radius grid in physical units for the core) is the right fix rather than brute K. ## 27 Sep: the σ maps (what σ_ent in the warm runs means physically) Sources read in full text (`scratchpad/harada2023.txt`, `ebrahimian2025.txt`): Harada, Kohri, Sasaki, Terada, Yoo 2023 (arXiv:2211.13950) Appendix A, eqs (36)–(46); Ebrahimian, Abolhasani, Mirbabayi 2025 (arXiv:2507.18312) eqs (31)–(41). 1. **De Broglie map (mine, not from the papers).** In the Vlasov limit of the oscillating scalar the particle momenta are the field's gradient momenta k/a, so the dispersion at horizon entry of the r_m scale is σ_ent ≈ k/(a m) = (k/aH)(H/m) = √6/q_ent. Hence σ_ent = 10⁻³, 3×10⁻³, 10⁻², 3×10⁻², 10⁻¹ ↔ q = 2450, 820, 245, 82, 25. The brief's V1b ladder q = 50–1600 is σ_ent = 0.05–0.0015: exactly the warm campaign's range. Our injection (isotropic kick at entry, momenta then redshifting as 1/a) is the right model for this source. Reading of the campaign on this axis: q ≳ 80 (σ_ent ≤ 0.03) → horizon earlier than cold; q ≈ 25 (σ_ent = 0.1) → horizon delayed to 1.55–1.7 t_C(0); the transition lies at q ≈ 30–80. 2. **Harada et al. 2023, Case I (virialized small-scale halos released at t\*).** Eq. (42): σ_v² ≃ h δ_ent(k), h = 3/5 for a uniform ball, with δ_ent(k) the entry amplitude of a small-scale mode k > k̃ that virializes before the PBH-scale collapse (condition (40)); the dispersion is released to the whole region only at t\* when the collapsing region's mean density reaches ρ_vir = 8 ρ_ent δ_ent³ (eq. 43–44), *unredshifted*. Non-formation needs δ_ent < (h/9)(k̃/k)⁴ (eq. 46). Correspondence if the same dispersion were present at entry: δ_ent(k) = σ_ent²/h = 1.7×10⁻⁶ (σ_ent = 10⁻³) … 1.7×10⁻² (10⁻¹). But our injected dispersion redshifts by a_core/a_ent = (t_hor/t_H)^{2/3} = 9 (μ = 0.10) to 55 (μ = 0.02) before the horizon forms, whereas Harada's is released at t\* at full strength: a released dispersion equal to our *core* dispersion corresponds to δ_ent(k) = 6×10⁻⁶–2×10⁻⁴ for σ_ent = 0.1. Conversely a realistic small-scale amplitude ζ_rms ≈ 0.01–0.05 at k ≈ 10 k̃ (Case I holds for k ≳ 6 k̃ at δ_ent ≈ 0.05) releases σ_v ≈ √(0.6 × 0.03) ≈ 0.13 c at t\* — hotter than anything in the campaign at the core. 3. **Ebrahimian et al. 2025, eq. (39).** Modes k > k₀ superposed on the collapsing region go nonlinear during the contraction (δ_k ∝ ζ_k (k/k₀)² a(t_max) b^{−3/2}, eq. 38) and then carry σ_v,k² ∼ (GM/R)(k₀/k)²; the halting condition (36) is met at the k₀ scale itself when δ_k₀ ∼ 1, giving δ_th ∼ ζ_k₀^{2/5} (eq. 40) and, for a generic peak profile, δ_th ∼ ζ_rms^{1/10} (eqs 49–50). With GM/R ≈ 0.01–0.03 at our cores, k/k₀ = 3, 10, 30 give σ_v,k ≈ 0.03–0.06, 0.010–0.017, 0.003–0.006 at the moment of release — again a release-during-collapse source. Consequence: the entry-injection campaign is the physical σ axis for the scalar-field (de Broglie) source and maps one-to-one onto q; the substructure sources of maps 2 and 3 need a second injection mode — "release at t\*": when the mean density inside the collapsing region reaches ρ_vir(k), give the shells there an isotropic dispersion σ_v = √(h δ_ent(k)) (map 2) or √(m/R)(k₀/k) (map 3). That mode is the next code item after the re-stretch. ## 27 Sep: grid re-stretch (`CosmoRunConfig.dR_target`, driver `--dR`) Every 20 steps the sinh stretch s is raised (never lowered) so that a(t)·Δx_min ≤ dR_target; the scheme is fully constrained, so replacing the grid needs no remapping (particles carry the state). With dR_target = 0.3/k and K = 2000 (s grows 4 → 5.9 at μ = 0.10, → 7.0 at μ = 0.03): - μ = 0.10: first AH at coordinate 1.1203 t_C(0) = 28.17 t_H, τ_core 1.0184, earliest τ_trap 25.63 t_H — identical to the K = 8000 fixed grid (1.1203 / 1.0176 / 25.60), whose physical spacing at the horizon time happens to be the same 0.3/k — in 194 s instead of 2009 s. First-detected mass 0.16 vs 0.355 (not an observable, see above). - The cold deadline map (μ = 0.04, 0.03, 0.025, 0.02, 0.017) and the warm campaign (8 samples per cell) are being rerun with dR_target = 0.3 (`runs/v1/restretch`). ## 27 Sep: "release at t\*" dispersion mode implemented (`CosmoRunConfig.release_mode`, driver `--release`) Per shell, on its own interior (m_i = enclosed mass, R_i = a|x_i|, R_max,i and a at turnaround recorded): - `harada`: released when 3 m_i/(4π R_i³) ≥ ρ_vir = 8 ρ_ent(k̃) (k/k̃)⁶ δ_ent³ (Harada et al. 2023 eqs 43–44, with ρ_ent(k̃) = 3H²/8π at the r_m entry, t_H) and the shell is collapsing; kick σ_v = √(h δ_ent) (eq. 42), isotropic in the shell frame (radial into P, tangential into L² = max(L², (R σ_t)²)). Parameters k/k̃, δ_ent(k), h (3/5). - `ebrahimian`: released when R_i/R_max,i ≤ b_nl = [ζ_k (k/k₀)² a_max,i/a_ent]^{2/3} (eq. 38 with δ_k = 1); kick σ_v,i = √(m_i/R_i) (k₀/k) (eq. 39). Parameters k/k₀, ζ_k. Static test unchanged (mode off). Trial: μ = 0.10, dR = 0.3, `harada` with k/k̃ = 10, δ_ent = 0.05 (σ_v = 0.17 c, ρ_vir/ρ_ent = 10³) running in `runs/v1/release`; for m = 0.5 shells the trigger corresponds to 2m/R ≈ 0.6 and for m = 0.05 to 2m/R ≈ 0.04, so the light inner shells are released first. - μ = 0.03 with dR_target = 0.3 (s → 7.06, 13 601 steps, 633 s): first AH at coordinate 139.1 t_H = 1.121 t_C(0), earliest τ_trap 133.4 t_H — 20 t_H earlier than the K = 8000 fixed grid (159.5), whose core spacing at that time was 0.97/k, not 0.3. Sequence in core spacing 4.2 / 2.1 / 0.97 / 0.3 → 178.5 / 164.9 / 159.5 / 139.1 t_H: the last step is the largest, so the low-μ horizon time is NOT converged; the milestone times t(M_AH ≥ 0.01 M_H) move identically (178.5 / 165.2 / 160.0 / 140.3), so this is the whole trapping event, not a detection artefact (in every run the first horizon is one cell wide). Candidates: time resolution of the crossing (dt ∝ core spacing; the fixed grids took 0.4–1.6 time-unit steps through a core with R/v ≈ 1–3) or shell sampling (0.3 shells per cell at the centre with re-stretch). Checks launched: cfl 0.2 and 8 shells per cell, both at dR = 0.3. At μ = 0.10 the same test converged (K = 8000 and re-stretch both 0.3/k, both 1.1203), so the issue is specific to the long, slow low-μ pile-up. - Release mode, first trial: misfired at t = 0.0006 t_H — the trigger ρ̄ ≥ ρ_vir is satisfied trivially in the expanding phase (ρ(t_i) = 3 ≫ ρ_vir = 8.8×10⁻⁴), and "P < 0" is no collapse criterion in this gauge (P is the peculiar momentum, negative for every overdense shell). Fixed: a shell is a candidate only past its turnaround (R < 0.95 R_max,i). Trial relaunched. (Also: `pkill -f` with the run's own arguments killed the tool shell again — lesson 4 of the devlog, now violated twice; kill by PID only.) - Release mode, corrected trial (μ = 0.10, dR = 0.3, `harada` k/k̃ = 10, δ_ent = 0.05 → σ_v = 0.17 c, ρ_vir = 10³ ρ_ent): first release at coordinate 26.9 t_H (core proper time ≈ t_C(0)), 2787 shells released by the end; horizon at coordinate 29.05 t_H = 1.155 t_C(0) with M_AH = 0.0017 M_H, against 28.17 t_H = 1.120 t_C(0) cold. A 0.17 c dispersion released shell by shell when the shell's interior reaches ρ_vir arrives too late to matter: at that moment the shells sit at 2m/R ≈ 0.04–0.6 with infall speeds 0.3–0.7 c, so the release delays trapping by 3 % of t_C(0) only. Under Harada's Case I map with realistic small-scale power, spherical trapping at μ = 0.10 is therefore not prevented. Scan queued: μ = 0.04 and 0.03 with `harada` (k/k̃ = 10, δ_ent = 0.05) and with `ebrahimian` (k/k₀ = 10, ζ_k = 0.05), all at dR = 0.3. - μ = 0.03, dR = 0.3 checks: cfl 0.2 → 140.3 t_H (28 961 steps; cfl 0.4: 139.1) — converged in the time step; 8 shells per cell → 143.2 t_H (τ_trap 136.3; n = 4: 133.4–134.3). So neither explains the 20 t_H gap to the K = 8000 fixed grid (159.5). Remaining difference: shells per cell at the centre — the fixed K = 8000 grid had 4 shells per 0.97/k cell (shell spacing 0.24/k), the re-stretched K = 2000 grid has 0.3 (n = 4) to 0.6 (n = 8) shells per 0.3/k cell, i.e. shell spacing 1–0.5/k, and the cumulative deposition (uniform density between consecutive shells) then misrepresents the cusp below the shell spacing. The n = 8 run moved 3 t_H toward the fixed-grid value; n = 16 (shell spacing 0.25/k, matching K = 8000) launched to close this. ## 27 Sep: cold deadline map on the re-stretched grid (dR_target = 0.3/k, K = 2000, n = 4; `runs/v1/restretch`) | μ | t_C(0) (t_H) | fixed K = 2000: first AH coord / proper | re-stretch 0.3: first AH coord / proper (t/t_C(0)) | M_AH, R_AH at detection | wall | |---|---|---|---|---|---| | 0.10 | 25.1 | 28.8 / 26.1 | 28.2 / 25.6 (1.120) | 0.001 M_H, 0.31 | 194 s | | 0.04 | 83.0 | 106.2 / 97.8 | 92.8 / 88.1 (1.118) | 0.0018, 0.60 | 834 s | | 0.03 | 124.0 | 178.5 / 161.3 | 140.3 / 134.3 (1.131) | 0.0009, 0.31 | 2703 s (cfl 0.2) | | 0.025 | 160.6 | 260.1 / 231.9 | 179.6 / 173.5 (1.118) | 0.0009, 0.30 | 1444 s | | 0.02 | 221.1 | 403.4 / 361.0 | 248.4 / 241.4 (1.123) | 0.0009, 0.30 | 2127 s | | 0.017 | 279.7 | 566.9 / 504.8 | 313.9 / 306.7 (1.123) | 0.0009, 0.31 | 2593 s | - With the core resolved at 0.3/k the first horizon appears at a **universal 1.12–1.13 t_C(0)** (coordinate; proper ≈ 1.09–1.10) for every μ from 0.10 to 0.017, always in the innermost cell (R_AH = 1 cell, M_AH ≈ 10⁻³ M_H). The "arriving-shell |2E| ≈ 0.022 rule" of the fixed-grid runs was therefore a resolution artefact of the comoving grid at low μ (core spacing 1–5/k there); the trapping is a property of the central caustic's aftermath — the cusp left by the first-collapsed shells — and scales with t_C(0) alone. If it holds under the two remaining checks (16 shells per cell; core spacing 0.15/k, both running), then: no cold floor in μ; the cold deadline map is 1.12 t_C(0) = D, i.e. μ_th(100 t_H) ≈ 0.038, μ_th(300 t_H) ≈ 0.018, μ_th(1000 t_H) ≈ 0.008 (coordinate time; ≈ 5 % lower in per-shell proper time). - Caveat on "resolution-stable": the first horizon is one cell wide at every resolution tried, so the first-detection time may keep moving earlier with finer cells; the brief's criterion (θ₊ = 0 resolution-stable) needs a mass milestone. Milestone times computed next. - Mass milestones on the re-stretched grid (coordinate t/t_C(0) at which M_AH first exceeds 0.002 / 0.005 / 0.01 / 0.02 M_H): μ = 0.10: 1.123 / 1.131 / 1.149 / 1.190; 0.04: 1.118 / 1.121 / 1.128 / 1.150; 0.03: 1.132 / 1.134 / 1.139 / >1.155; 0.025: 1.119 / 1.122 / 1.128; 0.02: 1.124 / 1.126 / 1.132; 0.017: 1.123 / 1.125 / 1.131 (runs stop 3 t_H after first detection). The horizon reaches 1 % of M_H within 0.01–0.03 t_C(0) of its first detection at every μ, so t(M_AH = 0.01 M_H) ≈ 1.13–1.15 t_C(0) is the robust statement of the cold spherical horizon time, independent of where exactly the one-cell first detection sits. - Core spacing 0.15/k (n = 4): μ = 0.10 → first AH 1.1137 t_C(0) (0.3: 1.1203; 0.6: 1.1288 — differences −0.0085, −0.0066 per halving, limit ≈ 1.10); μ = 0.03 → 1.0885 (0.3: 1.131; 0.97: 1.286 — still moving by −0.04 per halving), earliest τ_trap 130.4 t_H = 1.05 t_C(0), which is the LTB t_AH of the label ≈ 0.2 r_m. Reading: as the core is resolved, the low-μ runs approach the LTB apparent-horizon curve — the multi-stream fountain does not prevent trapping once the crossing is resolved; the coarse fixed grids were "numerically warm" (puffy cores, shells re-expanding too far, trapping delayed until more compaction arrived). The cold spherical threshold then vanishes for every μ tried, and the converged cold horizon time is t_C(0)(1 + ε) with ε → 0 in first detection; the mass milestone t(M_AH = 0.01 M_H) is the observable to converge (table next). - Milestones vs core spacing: μ = 0.10 → t(0.01 M_H) = 1.149 (0.3/k) and 1.152 (0.15/k): converged; μ = 0.03 → 1.139 (0.3), 1.106 (0.15), 1.162 (0.3 with 8 shells per cell): still moving toward the LTB value (the label with m = 0.01 M_H = 1.84/k³ is 0.21 r_m, LTB t_AH = 1.06 t_C(0)). So the cold horizon time at low μ is bracketed: LTB curve (1.06 t_C(0)) ≤ t(0.01 M_H) ≤ 1.13 t_C(0). Deadline map from 1.12 t_C(0) = D: μ_th(100) ≈ 0.038, μ_th(300) ≈ 0.018, μ_th(1000) ≈ 0.008; the LTB limit lowers these by ≈ 3 %. Plan, doc and memory updated. - 16 shells per cell at μ = 0.03, dR = 0.3: first AH 146.9 t_H = 1.184 t_C(0) (n = 4: 1.131, n = 8: 1.154; steps +0.023, +0.030 — not converging), milestone t(0.01 M_H) = 1.191 (1.139, 1.162). Finer cells make it earlier (0.15/k: 1.089), more shells later. Reading: at low μ the core lingers for many dynamical times at 2m/R ≈ 0.1–0.5 with only 30–120 shells inside it, and shell-crossing discreteness (force jumps of order N_shell/R² at every crossing) drives a relaxation that concentrates the core — a gravothermal-like collapse of the numerical system, faster for heavier shells and for finer cells (less smoothing). At μ = 0.10 the trapping is LTB-fast and 4 vs 8 shells per cell gave identical results, so that case is safe; at μ ≤ 0.04 the cold horizon time is discreteness-limited and the "universal 1.12 t_C(0)" is not yet the collisionless answer. Action: shell number scan with a dense inner sampling (`--n_inner 16/32/64` for x < 0.5 r_m, `sample_shells_quiet` extended) at μ = 0.03, and a 16-per-cell check at μ = 0.10; the doc's low-μ statements to be re-qualified after it. - μ = 0.10, dR = 0.3, 16 shells per cell inside 0.5 r_m (18 368 shells): first AH 1.1201 t_C(0), earliest τ_trap 25.62 t_H — identical to 4 per cell (1.1203, 25.63). The μ = 0.10 cold result is converged in shells, cells (0.15 vs 0.3/k: 0.6 %) and time step; the discreteness problem is confined to the slow low-μ cores. - Release scan, μ = 0.04 and 0.03 (dR = 0.3, k/k̃ = 10, δ_ent or ζ_k = 0.05): `harada` (σ_v = 0.17 c when the shell's interior reaches ρ_vir = 10³ ρ_ent): first release at 1.016 / 1.009 t_C(0), first AH at 94.0 t_H = 1.132 t_C(0) (cold re-stretch 92.8 = 1.118) and 138.9 t_H = 1.120 (cold 140.3 = 1.131), t(0.01 M_H) = 1.149 / 1.140 — the released dispersion changes the horizon time by ≤ 1.5 % of t_C(0) at all three μ tried (0.10, 0.04, 0.03): under Harada's Case I map with ζ ≈ 0.05 at k = 10 k̃, spherical trapping is not prevented and hardly delayed. `ebrahimian` at μ = 0.04 (σ_v,i = √(m_i/R_i)/10 when R_i ≤ b_nl R_max,i; b_nl clips at 0.95 for these parameters, so the kick comes right after each shell's turnaround, ≈ 0.005–0.02 c): first AH at 125.4 t_H = 1.51 t_C(0), t(0.01 M_H) = 1.512, M_AH = 0.008 M_H — a delay like the σ_ent = 0.1 entry runs, past the 100 t_H deadline. But its first release is logged at 7.3 t_H = 0.09 t_C(0), long before any shell turns around (≈ 0.5 t_C(0)): to be checked before the number is used (μ = 0.03 run in progress). - The early `ebrahimian` releases are a trickle (12 shells at 9.6 t_H, 150 by 0.64 t_C(0)) of the innermost labels (< 0.02 r_m, negligible mass, negligible kick); the bulk (1000+ shells) is released from 0.67 t_C(0) on, at the turnarounds of the flat core as intended. The μ = 0.04 result (first AH 1.51 t_C(0)) therefore stands: a kick of ≈ 0.005–0.02 c given right after turnaround delays the horizon past the 100 t_H deadline, whereas the same substructure released only at ρ_vir (harada) does nothing — the timing of the release, not its amplitude, decides. - `ebrahimian` at μ = 0.03 (101 361 steps, 2.4 h): bulk release after the turnarounds, first AH at 259.7 t_H = 2.09 t_C(0) with M_AH = 0.006 M_H (cold 140.3 = 1.13). The delay under this map grows toward low μ (+0.4 t_C(0) at 0.04, +1.0 at 0.03). Deadline map under the Ebrahimian release (k/k₀ = 10, ζ_k = 0.05): μ = 0.04 → 125 t_H (NO-COLLAPSE for D = 100), μ = 0.03 → 260 t_H (COLLAPSE for D = 300, borderline); by interpolation μ_th(100 t_H) ≈ 0.045 and μ_th(300 t_H) ≈ 0.028 — within Yoo et al.'s 3D boundary 0.045–0.050 for the shorter deadline. Runs at μ = 0.05 and 0.025 queued to pin both (`runs/v1/queue16.sh`, after the shell-number scan). ## 28 Sep: warm campaign on the re-stretched grid (dR = 0.3/k, 8 shells per cell; `runs/v1/restretch`) Horizon, coordinate t_H (t/t_C(0)); M_AH at first detection; cold re-stretched baseline 1.12 t_C(0): | μ | cold | σ_ent = 10⁻³ | 10⁻² | 3×10⁻² | 10⁻¹ | |---|---|---|---|---|---| | 0.07 | ≈ 44 (1.12) | — | 40.7 (1.04) | — | 52.1 (1.33), 0.043 M_H | | 0.05 | ≈ 69 (1.12) | 64.7 (1.06) | — | 74.9 (1.22), 0.028 | 75.9 (1.24), 0.036 | | 0.04 | 92.8 (1.12) | 86.7 (1.05) | 81.0 (0.98) | 101.3 (1.22), 0.025 | 99.7 (1.20), 0.037 | | 0.03 | 140.3 (1.13) | 128.2 (1.03) | 141.8 (1.14) | 151.3 (1.22), 0.022 | 142.1 (1.15), 0.044 | - With the core resolved the σ axis is mild: σ_ent ≤ 10⁻² moves the horizon to 0.98–1.06 t_C(0) (earlier than cold), σ_ent = 3×10⁻²–10⁻¹ to 1.15–1.33 t_C(0) with first masses 0.02–0.04 M_H behind the angular-momentum barrier. The fixed-grid delays (1.55–1.7 t_C(0) at σ = 0.1) were inflated by the coarse core. Threshold under σ_ent = 0.1 (q ≈ 25): μ_th(100 t_H) ≈ 0.040–0.044 against 0.038 cold — a ≤ 15 % effect in μ for the whole de Broglie range q ≥ 25; μ_th(300 t_H) ≈ 0.019–0.021. - Caveats: the early-trapping branch (σ ≤ 10⁻²) shares the low-μ discreteness issue of the cold core (n scan in progress); the σ ≥ 3×10⁻² branch is set by pericentres ≈ 45 σ/k ≫ cell size and should be robust. Shells with |P| > 20 at the end carry negligible mass (checked below); the substep cap is still hit. - Cold re-stretched baselines completed: μ = 0.07 → first AH 43.6 t_H (1.110 t_C(0)), τ_trap 40.5, t(0.01 M_H) = 1.129; μ = 0.05 → 68.5 t_H (1.119), τ_trap 64.4, t(0.01 M_H) = 1.131 (both 8 shells per cell). The universal 1.11–1.13 t_C(0) now holds at every μ from 0.10 to 0.017 on this grid. - Shell-number scan at μ = 0.03 (dR = 0.3): 4 / 8 / 16 / 4+16 inner / 4+32 inner shells per cell (8 000 / 16 000 / 32 000 / 18 368 / 32 192 shells) → first AH 1.131 / 1.154 / 1.185 / 1.185 / 1.209 t_C(0); t(0.01 M_H) 1.140 / 1.162 / 1.191 / 1.191 / 1.215; earliest τ_trap 1.083 / 1.099 / 1.118 / 1.119 / 1.136. The increase is ≈ 0.026 t_C(0) per doubling of the shell number with no sign of saturation (logarithmic, as for discreteness relaxation, not 1/N): in a shell code the cold low-μ core collapses by shell-crossing noise on a time that grows with the number of shells, so its collisionless limit is not reached by these runs and may not trap at 1.1–1.3 t_C(0) at all. Consequences: (a) the cold horizon time at μ ≥ 0.05 stands (fast, LTB-like trapping, shell-number independent at 0.10; to be checked at 0.05/0.04); (b) at μ ≤ 0.03 the cold spherical answer is open — bracketed between the few-shell value ≈ 1.1 t_C(0) and no trapping — and the deadline entries for D = 300 and 1000 t_H are not results; (c) the right tool for the low-μ cold core is a radial phase-space (R, P) Vlasov solver, not shells; noted for the plan. n_inner = 64 running; the same scan at μ = 0.04 and 0.05 queued (`queue17.sh`). - n_inner = 64 at μ = 0.03 (59 840 shells, 5342 s): first AH 1.2092 t_C(0), t(0.01 M_H) 1.2141, τ_trap 1.1351 — identical to n_inner = 32 (1.2092 / 1.2150 / 1.1359). The shell-number dependence saturates between 32 and 64 inner shells per cell: the discreteness relaxation is gone once ≈ 1000 shells sit in the core. Converged cold result at μ = 0.03 on the 0.3/k grid: first AH at 1.21 t_C(0) = 150 t_H (0.01 M_H by 150.7 t_H), 8 % later than the 4-shell value, still COLLAPSE for D = 300 t_H. Check of the cell-spacing dependence at converged shell number (n_inner 64, dR = 0.15) launched; μ = 0.02 and 0.017 at n_inner 32 queued (`queue18.sh`). Deadline map with 1.21 t_C(0) = D: μ_th(300 t_H) ≈ 0.019, μ_th(1000 t_H) ≈ 0.0085 (100 t_H unchanged at ≈ 0.038 if μ ≥ 0.05 is shell-number independent — checks running). - Shell-number checks at μ = 0.05 and 0.04 (dR = 0.3, 8 / 4+16 / 4+32 per cell): μ = 0.05 → first AH 1.119 / 1.115 / 1.115 t_C(0) (t(0.01 M_H) 1.131 / 1.128 / 1.128) — shell-number independent; μ = 0.04 → 1.118 / 1.144 / 1.150 (t(0.01 M_H) 1.128 / 1.154 / 1.160) — weakly dependent and saturating (+0.026, +0.006). The transition from LTB-fast trapping to the discreteness-sensitive slow core lies between μ = 0.05 and 0.04. Converged cold horizon times: μ = 0.05 → 68.3 t_H (1.115); μ = 0.04 → 95.5 t_H first AH, 96.3 t_H for 0.01 M_H (1.15–1.16), still inside the 100 t_H deadline in coordinate time (per-shell proper time 89.7 t_H). Hence μ_th(100 t_H) ≈ 0.039. - Cell spacing at converged shell number (μ = 0.03, n_inner 64): 0.15/k → first AH 1.191 t_C(0) (147.7 t_H), t(0.01 M_H) 1.200, τ_trap 1.117; 0.3/k → 1.209 / 1.214 / 1.135. A 1.5 % shift per halving: the μ = 0.03 cold result is converged at the 2 % level, horizon at 1.18–1.21 t_C(0) = 146–150 t_H (6 h wall at 0.15/k). With μ = 0.05 (1.115) and 0.04 (1.15) the converged cold horizon time rises slowly toward low μ: 1.12 → 1.15 → 1.19 t_C(0) for μ = 0.05 → 0.04 → 0.03 (μ = 0.02, 0.017 at 32 shells per cell running). - `ebrahimian` at μ = 0.05: first AH 76.0 t_H = 1.242 t_C(0), t(0.01 M_H) 1.244, M_AH = 0.007 M_H (cold re-stretch 68.5 = 1.119). With μ = 0.04 → 125 t_H and 0.03 → 260 t_H the delay under this map grows from +0.12 t_C(0) at 0.05 to +1.0 at 0.03; log-linear interpolation puts the 100 t_H crossing at μ ≈ 0.045 (COLLAPSE at 0.05, NO-COLLAPSE at 0.04): μ_th(100 t_H | Ebrahimian, k/k₀ = 10, ζ_k = 0.05) ≈ 0.045. μ = 0.025 (6 h in) will fix μ_th(300 t_H) under this map. - `ebrahimian` at μ = 0.025 (214 380 steps, 6.8 h): no horizon by 450 t_H = 2.8 t_C(0), max 2m/R = 0.18. Under this map the delay grows steeply toward low μ (+0.12, +0.4, +1.0, > +1.7 t_C(0) at μ = 0.05, 0.04, 0.03, 0.025): the early released dispersion (≈ 0.005–0.02 c right after turnaround) acts like a floor near μ ≈ 0.027 for deadlines up to at least 450 t_H. Map under the Ebrahimian release (k/k₀ = 10, ζ_k = 0.05): μ_th(100 t_H) ≈ 0.045, μ_th(300 t_H) ≈ 0.028 (0.03 traps at 260 t_H, 0.025 not by 450), μ_th(1000 t_H) ≤ 0.027 if at all. - μ = 0.02 at 32 shells per cell in the core (32 192 shells, 4.8 h): first AH 1.2835 t_C(0) = 283.8 t_H, t(0.01 M_H) 1.2875 = 284.7 t_H, earliest τ_trap 1.209 = 267 t_H (4 shells per cell: 1.123 = 248 t_H). Converged cold horizon times now rise smoothly toward low μ: 1.115 (0.05), 1.15 (0.04), 1.19–1.21 (0.03), 1.28 (0.02) t_C(0). Deadline map (coordinate / proper): μ = 0.02 → 284 / 267 t_H, COLLAPSE for D = 300 with little margin, so μ_th(300 t_H) ≈ 0.019; μ_th(1000 t_H) ≈ 0.009–0.010 if the factor keeps rising to ≈ 1.5–2 (μ = 0.017 at 32 shells running: t_C(0) = 280 t_H, expected ≈ 380 t_H). - μ = 0.017 at 32 shells per cell (5.6 h): first AH 1.302 t_C(0) = 364 t_H, t(0.01 M_H) 1.306 = 365 t_H, earliest τ_trap 1.232 = 345 t_H (4 per cell: 1.123 = 314 t_H). The converged cold factor t_hor/t_C(0) flattens toward low μ: 1.115, 1.15, 1.2, 1.28, 1.30 at μ = 0.05, 0.04, 0.03, 0.02, 0.017. **Converged cold deadline map (Yoo profile, spherical, coordinate time; per-shell proper time ≈ 5–8 % earlier):** μ_th(100 t_H) ≈ 0.039, μ_th(300 t_H) ≈ 0.019, μ_th(1000 t_H) ≈ 0.0085–0.009 (extrapolating the factor 1.3–1.4; a μ = 0.010 run to 1000 t_H launched to check). No cold floor down to μ = 0.017. Open item (i) of the plan is closed at the 2 % level in cells and shells. - μ = 0.010 at 32 shells per cell (t_C(0) = 607 t_H; 138 041 steps, 6.2 h): first AH 1.307 t_C(0) = 793 t_H, t(0.01 M_H) 795.5 t_H, earliest τ_trap 770 t_H — COLLAPSE for D = 1000 t_H. The converged cold factor is flat at 1.30–1.31 from μ = 0.017 to 0.010, so μ_th(1000 t_H) ≈ 0.0086 (1.31 t_C(0) = 1000 t_H). Cold map closed: μ_th(100 / 300 / 1000 t_H) ≈ 0.039 / 0.019 / 0.0086 in coordinate time (per-shell proper time 3–5 % earlier), no cold floor down to μ = 0.010. ## 26 Sep: next steps agreed (plan 6.11) and item 1 launched (`runs/v1/queue19.sh`) - Added `release_b_nl` (driver `--rel_bnl`): fixed release radius R = b_nl R_max for the Ebrahimian mode, to scan the release *timing* separately from the kick amplitude √(m/R)(k₀/k). Static test unchanged. - Campaign (15 runs, two at a time): group S — σ_ent = 10⁻³ and 10⁻² at μ = 0.04 and 0.03 with 32 shells per cell in the core (dR = 0.3), plus σ = 3×10⁻² at μ = 0.04 as the robust-branch control (`runs/v1/sigma32`); group E — Ebrahimian amplitude k/k₀ = 3, 30 (turnaround release) and timing b_nl = 0.6, 0.3 (k/k₀ = 10) at μ = 0.04, k/k₀ = 3 at μ = 0.05, k/k₀ = 3, 30 and b_nl = 0.6 at μ = 0.03; Harada (k/k̃, δ_ent) = (10, 0.2) and (5, 0.05) at μ = 0.04 (`runs/v1/release2`). Report: μ_th(D; q) and μ_th(D; k/k₀, b_nl) surfaces. ## 27 Sep: σ axis at converged shell number (group S of queue19; 32 shells per cell in the core, dR = 0.3) | μ | cold (converged) | σ_ent = 10⁻³ | 10⁻² | 3×10⁻² | |---|---|---|---|---| | 0.04 | 95.5 t_H (1.15) | 87.9 (1.059) | 89.5 (1.078) | 94.3 (1.136) | | 0.03 | 150 (1.21) | 130.4 (1.051) | 132.8 (1.071) | — | - The early-trapping branch survives the sampling convergence but shrinks: σ_ent ≤ 10⁻² traps 6–13 % of t_C(0) earlier than cold (at 8 shells per cell it was 5–25 %), σ_ent = 3×10⁻² is within 1 % of cold. With the n = 8 values for σ_ent = 10⁻¹ (1.20–1.33 t_C(0)) the whole de Broglie axis q ≥ 25 moves the thresholds by ≤ 15 % in μ, and only upward for q ≲ 30. The σ axis is closed as a result at this level. - Ebrahimian at μ = 0.04 with k/k₀ = 3 (kick 3× the k/k₀ = 10 case, ≈ 0.02–0.06 c at turnaround): no horizon by 300 t_H = 3.6 t_C(0) (125 056 steps, 2 h). So the substructure floor depends strongly on the kick amplitude: k/k₀ = 10 → 125 t_H, k/k₀ = 3 → none by 300 t_H at the same μ. Remaining scan (k/k₀ = 30, timing b_nl, μ = 0.05 and 0.03, Harada points) running. ## 27 Sep: release-source scan complete (queue19 group E; dR = 0.3, 4 shells per cell; `runs/v1/release2`) Horizon, coordinate t_H (t/t_C(0)); cold at this sampling: μ = 0.05 → 68.5 (1.12), 0.04 → 92.8 (1.12), 0.03 → 140.3 (1.13). | source | setting | μ = 0.05 | μ = 0.04 | μ = 0.03 | |---|---|---|---|---| | Ebrahimian, release at turnaround | k/k₀ = 3 (kick ≈ 0.02–0.06 c) | none by 150 | none by 300 | none by 400 | | | k/k₀ = 10 (≈ 0.005–0.02 c) | 76.0 (1.24) | 125.4 (1.51) | 259.7 (2.09) | | | k/k₀ = 30 (≈ 0.002–0.006 c) | — | 100.8 (1.21) | 167.3 (1.35) | | Ebrahimian, k/k₀ = 10, later release | b_nl = 0.6 R_max | — | 117.8 (1.42) | 221.5 (1.79) | | | b_nl = 0.3 R_max | — | 110.2 (1.33) | — | | Harada, release at ρ_vir | (k/k̃, δ_ent) = (10, 0.05): σ_v = 0.17 c at 1.0 t_C(0) | — | 94.0 (1.13) | 138.9 (1.12) | | | (10, 0.2): σ_v = 0.35 c at 1.05 t_C(0) | — | 90.2 (1.09) | — | | | (5, 0.05): σ_v = 0.17 c from 0.61 t_C(0) | — | 115.3 (1.39) | — | - The substructure "floor" is set by the kick amplitude and the release time together, not by the map: a kick of ≈ 0.03 c at turnaround prevents trapping to ≥ 2.5–3.6 t_C(0) at every μ tried, ≈ 0.01 c delays it by 0.1–1 t_C(0) (growing toward low μ), ≈ 0.003 c by ≤ 0.15 t_C(0); releasing the same kick later (0.6, 0.3 R_max) shortens the delay monotonically even though √(m/R) is then larger; a release at ρ_vir matters only if ρ_vir is low enough to fire near turnaround (Harada k/k̃ = 5: +0.27 t_C(0)), and is irrelevant when it fires at the caustic (k/k̃ = 10, any δ_ent). - Deadline map under substructure released at turnaround: k/k₀ = 30 → μ_th(100 t_H) ≈ 0.040, μ_th(300) ≈ 0.025; k/k₀ = 10 → 0.045 / 0.028; k/k₀ = 3 → no spherical PBH at any μ ≤ 0.05 within 300 t_H. Since nonlinear modes at k = 3–10 k₀ with ζ ≈ 0.05 are what a realistic spectrum supplies, the cold "no floor" result is fragile against substructure, in line with Ebrahimian et al.'s Newtonian claim and with Yoo et al.'s 3D boundary; the decisive test is 3D with a real small-scale spectrum (plan 6.11, item 3b), where the release is not modelled but simulated. ## 27 Sep: item 2 (profile shapes) and the 3D semi-analytics started - `pbhgr/profiles.py`: mean peak profiles of log-normal spectra (BBKS conditioning on ν and the mean curvature x̄(ν, γ), eq. 6.14) for Δ = 0.1 and 0.5 at ν = 4, and a near-top-hat control ½[1 − tanh((r − 2)/0.5)]; `LTBProfile` in `ltb.py` (spline ζ, r_m = argmax of −2E, t_H = t_i (r_m H_i)³); `yoo_spherical_cmc(..., zeta_fns=)`; driver `--profile {yoo, ln0.1, ln0.5, tophat}`. Gaussian reproduced through the tabulated path to 1e-8. Profile facts at μ = 0.3: ln0.1 → r_m = 2.68/k_p, Ψ crosses zero at r ≈ 3.2 (underdense ring), t_C(r_m)/t_C(0) = 2.2; ln0.5 → r_m = 1.87, t_C(r_m)/t_C(0) = 5.7; tophat → r_m = 2.06, −2E peaks at 0.84 at the edge, t_C(r_m)/t_C(0) = 1.01 (all shells collapse together). Validation (LTB cycloid test at μ = 0.3) running (`runs/v1/profiles/val_*.out`). - `scripts/ellipsoidal_collapse.py`: Bond–Myers ellipsoid with linear external tide, Zel'dovich initial conditions, per-axis freeze at 1 % of the maximum; collapse times t₁ ≤ t₂ ≤ t₃ relative to the spherical case and the Sheth–Mo–Tormen (e, p | ν) distribution for ν = 4. Running (slow: elliptic integrals inside the RHS). - Profile validation (LTB cycloid test, μ = 0.3, to 0.9 t_C(0)): ln0.1 and ln0.5 pass at the Yoo level (median |R/R_LTB − 1| ≤ 9×10⁻⁵, p95 ≤ 2.7×10⁻³, mass drift 10⁻⁶). The tanh "top-hat" failed twice — a shifted tanh has a nonzero slope at r = 0 (cusp: t_C(0) → 0) and, when widened, negative energy density in the long-wavelength CMC data — and is replaced by the super-Gaussian exp(−(r/2.5)⁴): smooth at the centre, flat core (no central growing mode: t_C(0) = ∞, the first caustic is a shell crossing near r_m = 2.5/k, t_C(r_m) = 93 / 192 / 345 t_H at μ = 0.05 / 0.03 / 0.02 in its own t_H = 260 t_i); its LTB test passes. Driver falls back to t_C(r_m) when t_C(0) is not finite. Profile maps re-queued (`runs/v1/queue22.sh`); the tanh run was discarded. ## 27 Sep: ellipsoidal-collapse semi-analytics (ν = 4) and first profile-map results - Bond–Myers ellipsoid (linear external tide, Zel'dovich initial conditions, δ_i = 10⁻², per-axis freeze at 1 % of maximum; spherical case reproduces the top-hat collapse time to 0.3 %). Collapse times relative to the spherical one, (e, p): t₁ / t₂ / t₃ = 0.975 / 0.998 / 1.011 at e = 0.05; 0.936 / 0.995 / 1.031 at 0.10; 0.892 / 0.991 / 1.060 at 0.15; 0.847 / 0.987 / 1.097 at 0.20; 0.757 / 0.978 / 1.206 at 0.30 (p = 0; p = ±e/2 changes t₃ by < 1 %). Zel'dovich ellipticity of ν = 4 peaks (Sheth–Mo–Tormen): median e = 0.132 → pancake at 0.91 t_sph, last axis at 1.05 t_sph; 90th percentile e = 0.19 → 0.85 / 1.09. Reading: for the typical ν = 4 peak the last-axis collapse is only 5–9 % later than the spherical collapse, so if the horizon needs the third axis the deadline map shifts by ≤ 3 % in μ; the pancake comes 9–15 % early, and whether a pancake of a μ ≈ 0.04 peak can already satisfy the hoop criterion is the question for the Newtonian 3D step (its compaction at the pancake is ≈ C_ta ≪ 1, so presumably not). Oblateness alone does not explain a 3D boundary at 0.045–0.05 against the spherical 0.039; substructure (the release scan) does. - Profile maps (interim, 32 shells per cell, own t_H of each profile; t_ref = t_C(0), or t_C(r_m) for the flat core): ln0.1 (narrow spectrum, Gaussian-like with an underdense ring) behaves like the Yoo profile — first AH at 1.10 t_C(0) (μ = 0.03) and 1.16 (μ = 0.02), first mass 7×10⁻⁴ M_H; ln0.5 (broad spectrum, steep profile, t_C(r_m)/t_C(0) = 8) traps much later — 1.48 t_C(0) at μ = 0.05 and not by 1.8 t_C(0) (153 t_H) at μ = 0.03 with 2m/R = 0.67 still rising (run extended to 320 t_H); the super-Gaussian flat core traps at 0.99–1.05 t_C(r_m) with 0.79–0.82 M_H at once — the classic top-hat collapse to a black hole at the edge caustic. The synchronization of the collapse (how fast t_C(r) grows outward) sets the pile-up rate and hence the horizon time: flat core → immediate full-mass horizon; Gaussian-like → 1.1–1.3 t_C(0) seed; steep → delayed or absent. Profile shape is a first-order effect for the deadline map, comparable to the substructure axis. - μ = 0.02 rows: ln0.1 → 1.158 t_C(0) (186.7 t_H); ln0.5 → no horizon by 272 t_H = 1.8 t_C(0) with max 2m/R only 0.08; tophat → 0.965 t_C(r_m) (333 t_H) with 0.77 M_H. The queue scripts for the ln0.1 μ = 0.05 rerun and the ln0.5 μ = 0.03 extension died silently (as did the original ln0.1 μ = 0.05 run, empty output at launch); both relaunched directly. - Cause of the silent deaths: the OOM killer (dmesg: two python processes killed at 1.35 and 1.5 GB RSS). A 32-shell per-cell run needs ≈ 1–1.5 GB; the 3.7 GB VPS holds two concurrently, not three. Rule from now on: at most two dense-sampling runs at a time (queues 25+ obey it). - ln0.5 μ = 0.03 extended to 320 t_H: first AH at 153.3 t_H = 1.81 t_C(0) (0.001 M_H), i.e. just past the end of the first run — COLLAPSE for D = 300 t_H, at 1.8 t_C(0) against 1.2 for the Yoo profile. The ln0.1 μ = 0.05 run was OOM-killed a second time when started next to a dense run; relaunched alone (third attempt). - ln0.1 μ = 0.05 (third attempt, alone): first AH 48.5 t_H = 1.086 t_C(0), 0.0013 M_H. Root cause of the launch deaths found: `lognormal_peak_profile` built a 4001 × 20001 outer product (three ≈ 640 MB arrays, ≈ 2 GB transient) at import, so a log-normal-profile run starting next to another dense run tripped the OOM killer; now chunked (peak RSS ≈ 100 MB, identical Ψ). Cold profile map complete: | profile | μ = 0.05 | μ = 0.03 | μ = 0.02 | |---|---|---|---| | ln0.1 (t_C(0) in own t_H: 44.6 / 90.5 / 161) | 1.086 t_C(0) | 1.100 | 1.158 | | ln0.5 (41.9 / 84.9 / 151) | 1.484 | 1.803 | none by 1.8 (2m/R = 0.08) | | super-Gaussian (t_C(r_m): 93 / 192 / 345) | 1.046 t_C(r_m), 0.82 M_H | 0.992, 0.79 M_H | 0.965, 0.77 M_H | - σ_ent = 0.03 points per profile (32 shells per cell): ln0.1 μ = 0.03 → first AH 100.4 t_H = 1.109 t_C(0) with 0.022 M_H (cold: 1.100, 0.0007 M_H) — as for the Yoo profile, a small dispersion leaves the time unchanged and makes the first horizon puffier. ln0.5 μ = 0.05 and the flat core μ = 0.03 running. - σ_ent = 0.03 points complete: ln0.1 μ = 0.03 → 1.110 t_C(0) (cold 1.100); ln0.5 μ = 0.05 → 1.663 t_C(0) (cold 1.484, +12 %: the steep profile is the one sensitive to dispersion, its slowly fed pile-up being easier to disturb); flat core μ = 0.03 → 0.975 t_C(r_m) with 0.75 M_H (cold 0.992, 0.79 M_H). **Item 2 closed.** Reading for the programme: the deadline map is profile-dependent at first order through the synchronization of the collapse — Gaussian-like/narrow-spectrum profiles give the universal 1.1–1.3 t_C(0) seed; broad-spectrum (steep) profiles delay trapping by 50–80 % and lose it at low μ within 1.8 t_C(0); flat cores form a near-M_H black hole at once at the edge caustic. Any threshold quoted for the early-matter era must state the profile (i.e. the spectrum shape), as the brief's Section 6.4 anticipated. ## 27 Sep: item 3b started — Newtonian 3D particle-mesh code for one triaxial peak (`pbhgr/pm3d.py`, `scripts/pm3d_peak.py`) Comoving PM in an EdS box (periodic, side L in units of r_m), CIC deposit/interpolation, FFT Poisson with the 1D code's units (G = 1, k_p = 1, H_i = 5, a_i = 1), canonical momentum p = a² dx/dt and a kick-drift-kick leapfrog in a (dx/da = p/(a³H), dp/da = −∇Φ/(aH), ∇²Φ = (3/2)H_i² δ/a). Zel'dovich initial data at a = 1 from ζ(x) = μ Ψ(r_ell) with the peak made triaxial through the profile (A_i ∝ λ_i^{−1/2} of the Zel'dovich eigenvalues (1+3e+p, 1−2p, 1−3e+p)/3, ∏A_i = 1) plus an optional small-scale tail (Gaussian field, flat dimensionless power ζ_rms² / ln(k₂/k₁) between k₁ and k₂). Diagnostics: comoving semi-axes of the inner Lagrangian sets (r_ell,q < 0.1, 0.2, 0.3 r_m) → pancake, filament and third-axis collapse times; hoop compactness 2M/√((a₁²+a₂²)/2) of those sets; enclosed mass and 2M/R within 1–8 cells of the densest point. - Bugs found in the smoke tests: the initial displacement was sampled half a box off (mesh arrays are indexed on [0, L)); fixed. Lattice + CIC discreteness: at 1 particle per cell the central density on a 2-cell block grows 2–3× faster than linear theory (mass transport of a compressed lattice through CIC overestimates the inflow by 1.5 at first order), at 8 per cell 0.73× — the density and the force are wrong on the scale of 1–2 particle spacings, which made the innermost ≈ 30 particles collapse at 0.5 t_C(0). Remedy: resolve the profile by ≥ 30 cells (N = 192 on a 6 r_m box, dx = 0.031 r_m) so that the biased region is < 0.06 r_m (negligible mass); the physical radii of the 1D horizons (0.3–10/k) are far below any 3D resolution (they are 10⁻⁴–10⁻³ of the box in comoving units), so the 3D code measures collapse *times* of Lagrangian sets, not 2m/R at trapping. - Production: N = Np = 192 (7.1 M particles, ≈ 1 GB, ≈ 12 s per step, ≈ 1.5 h per run to 1.3 t_C(0) at μ = 0.10). Spherical calibration run launched (`runs/pm3d/sph_N192.out`): the 0.2 and 0.3 r_m sets must reach their minimum size at the LTB times 1.02 and 1.05 t_C(0). - Calibration at N = 192 FAILED: the 0.1 / 0.2 r_m Lagrangian sets reach their minimum size at 0.45 / 0.54 t_C(0) (LTB: 1.01 / 1.06) and then bounce; the collapse is 2× too early independently of N (also at 64), so it is not a cell-scale effect. Direct checks at a = 1: mesh density within 10 % of the continuum field, radial force within 6 % of Gauss's law — the initial force is right. Linear regime (a ≤ 150): displacements and momenta 0.8–0.95 of linear theory (slightly low) while the central 2-cell density grows 3× faster than linear. Suspect: the lattice instability of PM codes (Marcos et al. 2006) — with the particle spacing equal to the mesh spacing, CIC forces on a regular lattice have anisotropic errors whose modes grow faster than the fluid growth rate, triggered first where δ is largest. Test running (`scripts/pm3d_shelltest.py`): Lagrangian-shell radii against the exact LTB R(t)/(a r) for plain CIC, Gaussian force smoothing of 1 and 2 cells, and 8 particles per cell with smoothing. - Shell test (`runs/pm3d/shelltest.out`, N = 96, spherical μ = 0.1; LTB comparison per unit Lagrangian q, i.e. R/(a e^ζ r)): plain CIC at 1 particle per cell collapses the inner shells at 0.3–0.5 t_C(0) — the lattice instability is confirmed; Gaussian force smoothing of 1 cell is not enough, 2 cells suppress it: the shells then follow LTB to ≈ 5 % up to 0.7 t_C(0) and lag by 10–15 % near their collapse when their radius approaches the smoothing scale (at N = 192 that scale is 0.06 r_m). 8 particles per cell at N = 64 with 1-cell smoothing is too slow throughout (the profile spans only 11 cells there). Production adopted: N = Np = 192, L = 6 r_m, smoothing 2 cells; the spherical calibration runs alongside the first triaxial case (`runs/pm3d/queue_pm.sh`: e = 0 & 0.13; 0.19 & 0.3; tails ζ_rms = 0.05 at k = 2–10 for e = 0 and 0.13 (two seeds)). ≈ 1.5 h per pair, ≈ 6 h in all. - Production pair A: the spherical calibration and (later) the e = 0.3 run were OOM-killed at 1.4 GB each — the VPS is now shared with other sessions' processes (a local app server, test matrices, pytest jobs; ≈ 1 GB), so two 3D runs no longer fit. The pair queue was stopped; the remaining runs go one at a time with a free-memory gate of 2 GB before each launch (`runs/pm3d/queue_pm2.sh`): e = 0 (calibration, rerun), e = 0.3, then the three tail runs. The e = 0.13 run survived: 0.3 r_m set pancakes (a₃ minimum, a₃/a₁ → 0.03) at 0.71 t_C(0), a₂ at 0.82, a₁ at 1.35; 0.2 r_m set a₂ at 0.78, a₁ at 1.04 — earlier than Bond–Myers (pancake ≈ 0.9 of the set's spherical time); to be judged against the spherical calibration before any reading. ## 29 Sep: item 3b results — Newtonian 3D PM, μ = 0.10, N = Np = 192, L = 6 r_m, 2-cell smoothing (`runs/pm3d`) Collapse times of the Lagrangian sets (first time an axis falls below 0.1 of its initial comoving length), in t_C(0), and the same divided by the spherical PM run (which itself collapses 15–20 % before LTB: 0.80 / 0.85 for the 0.2 / 0.3 r_m sets against 1.03 / 1.08 — the residual lattice bias; ratios are the robust output): | run | set | a₃ (pancake) | a₂ (filament) | a₁ (third axis) | ratios to spherical PM | Bond–Myers t₁ / t₃ | |---|---|---|---|---|---|---| | e = 0.13 | 0.2 / 0.3 | 0.61 / 0.65 | 0.75 / 0.82 | not by 1.35 | 0.77 / 0.94–0.97 / > 1.7 | 0.91 / 1.05 | | e = 0.19 | 0.2 / 0.3 | 0.48 / 0.54 | 0.71 / — | not by 1.35 | 0.60–0.64 / 0.89 / > 1.7 | 0.85 / 1.09 | | e = 0.30 | 0.2 / 0.3 | 0.26 / 0.28 | 1.32 / — | not by 1.35 | 0.32 / 1.66 / > 1.7 | 0.76 / 1.21 | | tails (ζ_rms = 0.05, k = 2–10 k_p), e = 0 and 0.13, two seeds | 0.2 / 0.3 | — | — | — | no axis below 0.1 a₀ by 1.35 t_C(0); smallest axes 0.08–0.16 (2.5–5 cells) | — | - The initial data carry the intended tidal ellipticity (deformation-tensor eigenvalues at the peak give e_eff = 0.130 / 0.190 / 0.300 for the nominal values), so the disagreement with Bond–Myers is not a set-up error: a *peaked* profile with the tidal ellipticity of a ν = 4 peak collapses far more anisotropically than the homogeneous ellipsoid — pancake at 0.77 (not 0.91) and third-axis collapse beyond 1.7 (not 1.05) of the spherical time at e = 0.13; at e = 0.3 the pancake forms at a third of the spherical time. Reading for the deadline map (third-axis collapse as the Newtonian proxy for the horizon): a typical ν = 4 peak needs ≥ 1.7 × the spherical time, which moves μ_th(100 t_H) from 0.039 to ≈ 0.06 if the factor is 1.7 and to ≈ 0.055 at 1.5 — above Yoo et al.'s 3D boundary 0.045–0.050 (their e = 0.2 runs). Runs extended to 2.5 t_C(0) to pin t₃. - Enclosed mass around the densest point at 1.35 t_C(0) (within 2 / 4 / 8 cells; 0.3 r_m set = 5.0 units, M_H = 184): spherical 25 / 51 / 71; e = 0.13: 20 / 44 / 67; e = 0.19: 12 / 34 / 60; e = 0.3: 4 / 15 / 37 — the central object grows more slowly with ellipticity. With the tail the outcome is realization-dependent: e = 0.13 seed 0 still builds a dominant central clump (26 / 54 / 69), seed 1 fragments the region (6 / 10 / 13); e = 0 with tail: 16 / 46 / 69. So substructure at ζ_rms = 0.05, k = 2–10 k_p prevents a compact central collapse in a fraction of realizations (1 of 3 here) and delays it in the rest — in line with the 1D Ebrahimian-release scan (k/k₀ = 3–10 with the same ζ: trapping prevented or delayed), now from a spectrum rather than a map. Two seeds are not statistics; a seed ensemble is the next step if this axis is pursued. - Caveats: the 8-cell radius is 0.25 r_m comoving (physical 920/k at the end), so the compaction reachable here is 2M/R ≈ 0.15 — the 3D code sees collapse times and mass assembly, not trapping; the spherical PM runs 15–20 % early (lattice residual after smoothing); one μ only (Newtonian scaling makes the ratios μ-independent). - Extended runs to 2.5 t_C(0) (`runs/pm3d/long`): third-axis collapse (a₁ < 0.1 a₀) at e = 0.13: 2.13 / 2.26 t_C(0) for the 0.2 / 0.3 r_m sets = 2.67 × the spherical PM time; at e = 0.19: 1.36 / 1.49 = 1.7–1.76 × (the filament of the stronger tide knots sooner — the threshold criterion on the long axis is sensitive to how the filament fragments, so take 1.7–2.7 as the range, not a trend). Bond–Myers gives 1.05–1.09. Mass within 2 / 4 / 8 cells at 2.5 t_C(0): 31 / 78 / 142 (e = 0.13), 26 / 81 / 126 (e = 0.19) — the central object does assemble, only later. - Reading for the deadline map: in the Newtonian picture the horizon forms somewhere between the filament stage (≈ 0.9–0.97 × the spherical time, if the hoop criterion is met along the two short axes — unresolvable here) and the third-axis collapse (1.7–2.7 ×). Hence μ_th(100 t_H) lies between the spherical 0.039 and ≈ 0.06–0.08 (t_C(0) f₃ × 1.15 = 100 t_H with f₃ = 1.7–2.7); Yoo et al.'s 3D boundary 0.045–0.050 sits inside this bracket. Closing it needs GR (a filament's compactness), i.e. item 3c. ## 29 Sep (evening) — GRChombo stack built (stage 1 of plan §6.12 prerequisites) `scripts/grchombo/build_grchombo_ax102.sh` (stages pkgs/clone/config/chombo/grchombo/grtresna/env/tests/smoke/python + bench/tune) run end to end on the Hetzner CCX33 at compute server (8 vCPU EPYC Milan, Ubuntu 24.04.3) and on the 2 vCPU VPS. Versions: Chombo (GRChombo fork) 8684f2e, GRChombo 37e6595 (main, Apr 2026, ships Examples/ScalarFieldCosmo), GRTresna 2e671e1 (GRTLCollaboration). GCC 13.3 -O3 -march=native, OpenMPI 4.1.6, HDF5 1.10.10, PETSc 3.19.6 (AH finder on). CCX33 timings: Chombo 35 s, ScalarFieldCosmo 15 s, GRTresna ~1 min, 17/17 GRChombo tests in 1m43s (incl. ApparentHorizonFinderTest3D), smoke: analytic-IC run 1 s, GRTresna CTTK solve 32³ 8 s, GRChombo restart from it 2 s; venv with yt 4.4.2. Total ~5 min. Fixes found by the test runs: NAMESPACE=TRUE renames artefacts to *3d_ch.*; Make.defs.local must append (`cxxcppflags +=`) or GRTresna loses -DUSE_CTTK; GRChombo's restart path does not create hdf5/pout/data subdirs; the GRTresna cosmo example needs dx = 2 (dx = 4 → NaN at step 1). Bench 96³ × 10 steps on CCX33: 8x1 16.4 s, 4x2 16.1 s, 4x1 18.3 s, 2x2 19.4 s, 2x4 20.3 s (SMT +12 %; hybrid 4x2 ≈ 8x1). Instructions: docs/grchombo_ax102.md. Next: replace InitialScalarData with the ζ-profile + GRTresna constraints for the e = 0 test against the spherical map. ## 29 Sep (night) — stage 1 launched: GRChombo e = 0 test, μ = 0.1 Design (the scalar-field proxy cannot start at ε = 0.2: 10⁵ H_i⁻¹ of super-horizon evolution with resolved oscillations): the 3D run starts from the exact LTB solution at t_0 = 0.5 t_C(0) (central turnaround, K(0) = 0), converted to isotropic coordinates (ϱ → a(t_0) r far away, χ = (ϱ/R)², K^ϱ_ϱ = −Ṙ'/R', K^θ_θ = −Ṙ/R), matter = real scalar with φ = 0, Π = √(2ρ): ρ_sf = ρ and J = 0 exactly, so the LTB geometry satisfies the constraints exactly (1D check 1e-4, 64³ FD 1e-3). De Broglie map q = m/H_ent = 1.5 m t_H, σ_ent = √6/q: first run m t_H = 30 (q = 45, σ_ent = 0.054; matched 1D warm reference to be run), later 100 and 300. Box 8 a(t_0) r_m (periodic-face constraint violation 2e-5; 4 r_m gives 20 %), N = 64, nested spheres 2.5/1.0/0.4/0.2 r_m (levels 3–4 gated by ρ > 50/300 ρ_far(t_0)), dt = 0.2/m (oscillation-limited, 16× below the coarse CFL; non-subcycled stepping tried: 17× larger Ham violation, rejected). Gauge: first tried 1+log with K − K_corner (FLRW far field): the far lapse stays 1, but in the core K − K_far ≥ 2/t, so α_c ∝ (t_0/t)⁴ (R/R_0)⁶ and the core's proper time saturates at ~0.17 t_C(0) — the slice would never reach the collapse (standard 1+log is unusable for a slow collapse from a diffuse turnaround state; the CMC lapse lags only 10 %). Adopted: ∂_t α = −ε α (K − f(x) K_far(t)), f = K_0(x)/K_0(far) carried as a static grid variable (1 far away, 0 at the centre), ε = 0.3: α ≡ 1 initially everywhere (12-step test: centre 0.99997, corner 0.999999), and in the core α ∝ (R/R_0)^{3ε} — a CMC-like mild collapse. Found: GRChombo's ScalarFieldCosmo example sets K_mean on a gauge object that never reaches MatterCCZ4RHS (upstream bug). Run: /root/pbh_runs/mu0.1_L8 on the CCX33, 3394 coarse steps to 1.4 t_C(0), ~500 time units/h early (≈ 15 h total); AH search from 1.0 t_C(0); 1D reference (cold, CMC time): first AH at 1.1203 t_C(0). 1D references for the 3D test (μ = 0.1, 32 shells/cell, re-stretched grid, runs/v1/sigma32): cold: first AH 1.1203 t_C(0), M_AH ≈ 0.01 M_H; σ_ent = 0.016 (q = 150 ↔ m t_H = 100): 1.1379 t_C(0), M_AH = 0.0033 M_H, τ_core 1.0365; σ_ent = 0.054 (q = 45 ↔ m t_H = 30, the running 3D case): 1.2120 t_C(0) = 30.48 t_H, M_AH = 0.0159 M_H at x_AH = 0.0016 r_m, τ_core 1.090; M_AH grows slowly afterwards (0.05 M_H at 1.33 t_C(0)). Consequence for the comparison: the first 1D horizon is a core of comoving radius 0.0016 r_m (≈ 3 coordinate units at t_0 against a finest cell of 13) — unresolvable in 3D at any affordable resolution; the 3D finder will only see the horizon once M_AH ≳ 0.2–0.3 M_H. The observable for the 3D–1D test is therefore the time at which M_AH reaches a given mass (0.1, 0.3 M_H), which is also far less slicing-dependent than the first tiny horizon; extended 1D runs (stop 50 t_H after the first AH, cold and σ = 0.054) are running in runs/v1/ref3d to provide the M_AH(t) curves. ## 30 Sep — 1D horizon-growth curves for the 3D test (μ = 0.1, runs/v1/ref3d, 50 t_H after the first AH) | M_AH / M_H | cold, t/t_C(0) | σ_ent = 0.054, t/t_C(0) | |---|---|---| | first AH | 1.1202 (0.001 M_H) | 1.2120 (0.016 M_H) | | 0.03 | 1.224 | 1.251 | | 0.05 | 1.289 | 1.329 | | 0.1 | 1.428 | 1.548 | | 0.2 | 1.678 | 1.819 | | 0.3 | 1.922 | 1.959 | | 0.5 | 2.431 | 2.388 | The horizon grows slowly (accretion of the outer shells): the resolvable 3D horizon (0.1–0.3 M_H) appears at 1.5–2.0 t_C(0), so the 3D run (currently stopping at 1.4 t_C(0)) must be extended to ≈ 2.2 t_C(0) (restart from the 750-step checkpoint with stop_time = 10500): ~2× the cost, ≈ 30 h on the CCX33 (15 h on a CCX43). The cold and warm curves converge above 0.3 M_H (2.43 vs 2.39 at 0.5 M_H): the σ effect is confined to the first ~0.2 M_H. ## 30 Sep 11:40 UTC — 3D run at 1.5 t_C(0): the scalar core bounces (no horizon) μ = 0.1, m t_H = 30 (q = 45), profile-referenced weak gauge; far field FLRW to 0.07 % (K_corner·t = −2.0015), lapse 1.0001. Central density ρ(0)/ρ_far: 5.6 (0.5 t_C(0)) → 19.6 (0.75) → 233 (1.00, the LTB caustic time) → 5.1 (1.25) → 2.3 (1.50), with 0.1–0.2 r_m evacuated (0.13/0.02 ρ_far) at 1.50; lapse_min 0.79 at 1.12 recovering to 0.93; no AH. The 1D warm Vlasov run with the "matched" σ_ent = 0.054 traps 0.016 M_H at 1.21 t_C(0). Interpretation: the coherent field is not a warm Vlasov fluid; the free-field Kaup limit M_max = 0.633/m = 0.028 M_H (m t_H = 30) exceeds the first-horizon masses of the 1D map (0.016 warm, 0.001 cold), so the de Broglie pressure reflects the converging core instead of trapping it. A dust-like proxy for the M_AH ≥ 0.1 M_H observable needs M_Kaup ≲ 0.01 M_H → m t_H ≥ 100 (0.0084) to 300 (0.0028), at 3–10× the present cost (≈ 4–12 days on the CCX33; subcycled fine levels dominate: dt = 0.2/m is 16–400× below the CFL). The first tiny horizon of the cold map can never be reproduced by an affordable scalar (m t_H ~ 10⁴ would be needed). Options: (1) finish this run to 2.2 t_C(0) to see whether the re-accumulated 0.1–0.2 M_H (≫ M_Kaup) collapses later; (2) validate the 3D pipeline against the 1D map at large μ (0.3: t_C(0) ≈ 9 t_H, first AH ≳ 0.1 M_H, ~5× cheaper); (3) the small-μ regime needs particles (stage 2, GRTeclyn) or m t_H = 100 on a 16-core machine (2–3 days). ## 30 Sep 12:00 UTC — decisions (user: "1–3 as you see fit") 1. μ = 0.1, m t_H = 30 run continues to 2.2 t_C(0) (does the re-accumulated mass ≫ M_Kaup collapse later?). 2. Pipeline validation at μ = 0.3 queued on the CCX33 after run 1 (/root/pbh_runs/mu0.3_L8): t_C(0) = 8.82 t_H, t_0 = 0.5 t_C(0), m t_H = 60 (q = 90, σ_ent = 0.027, M_Kaup = 0.014 M_H ≪ the expected first horizon 0.01–0.1 M_H of the μ = 0.3 map), box 8 r_m, N = 64, 5 levels, 2380 coarse steps (≈ 8–12 h); 1D references (cold and σ = 0.027, 30 t_H after the first AH) running in runs/v1/ref3d. Generator check: chi(0) = 0.449, Ham residual 5e-5. 3. Stage 2 survey: GRTeclyn 542500d (Sep 2026, AMReX port) has matter = ScalarField/KleinGordon only; "ParticleInterpolator" is an interpolation utility built on AMReX particles (metric/field values at particle positions), no particle matter source. A Vlasov (N-body) matter module therefore has to be written: particle push (geodesics in the BSSN metric, using the existing interpolation), deposition of ρ, S_i, S_ij with proper-volume weights, coupling to the CCZ4 matter terms and constraints, tests against the 1D Einstein–Vlasov code (dust collapse, σ maps). Design note to follow in docs/. ## 30 Sep — 1D references for μ = 0.3 (runs/v1/ref3d; t_C(0) = 8.817 t_H) | M_AH / M_H | cold, t/t_C(0) | σ_ent = 0.027, t/t_C(0) | |---|---|---| | first AH | 1.3521 (0.0025 M_H, x = 0.0005 r_m, τ_core 1.004) | 1.4506 (0.015 M_H, x = 0.0027 r_m, τ_core 1.033) | | 0.03 | 1.487 | 1.480 | | 0.1 | 1.691 | 1.669 | | 0.3 | 2.034 | 2.078 | | 0.5 | 2.312 | 2.300 | | 0.7 | 2.606 | 2.652 | At μ = 0.3 the first horizon is again a tiny core (the earlier expectation of a large first horizon at high μ was wrong — that number came from an older setup); the resolvable 0.1 M_H horizon appears at 1.67–1.69 t_C(0), so the queued 3D run is extended to 2.2 t_C(0) (stop_time 3671.6, ≈ 4500 coarse steps, 12–18 h). M_Kaup(m t_H = 60) = 0.014 M_H is crossed by the 1D horizon mass at ≈ 1.45 t_C(0), so a BH should form in the scalar run around 1.5 t_C(0) and be resolved by 1.7. ## 30 Sep 14:00 UTC — run 1 at 1.87 t_C(0): dispersal confirmed; μ = 0.3 scalar run cancelled ρ(0)/ρ_far: 1739 at 1.09 t_C(0) (caustic) → 1.9 (1.29) → 2.3 (1.48) → 0.30 (1.68) → 0.34 (1.87); everything inside 0.5 r_m is below the background density, the matter has flowed out beyond ~1 r_m; χ(0) 0.12, lapse(0) 0.97; no AH. The bounce happens within ~0.1 t_C(0) of the caustic, whereas the 1D horizon mass crosses M_Kaup only 0.2–0.5 t_C(0) later (μ = 0.1: 0.028 M_H at 1.24; μ = 0.3 with m t_H = 60: 0.014 M_H at 1.45) — the core disperses before enough mass is present. A scalar proxy that traps at the caustic needs M_Kaup below the first-horizon mass: m t_H ≈ 340 for μ = 0.3 (0.0025 M_H), ~10⁴ for the cold μ = 0.1 core — infeasible. The queued μ = 0.3 scalar run (m t_H = 60) is therefore cancelled; its setup (/root/pbh_runs/mu0.3_L8, 1D references above) becomes the e = 0 test case for the particle module (stage 2), and the CCX33 is kept free for stage-2 builds after run 1 ends (~2.2 t_C(0), 4 h). ## 30 Sep 17:00 UTC — stage 2, milestone 2: Vlasov particles as matter in GRTeclyn work (FLRW dust test) `grteclyn/PBHVlasov` (GRTeclyn AHFinder fd76177 + AMReX 2ceecb3, built on the CCX33 in ~10 min): particles carry (m, u_i); CIC deposition of ρ = Σ mΓW/(√γ dV), S_i, S_ij into 10 grid variables read by `ParticleMatter` in `CCZ4RHSWithMatter`; midpoint-RK2 geodesic push from linearly interpolated (α, β, χ, h̃) and 4th-order derivatives. FLRW dust (16³, 8 particles/cell, geodesic slicing, H_0 = 1, t = 0 → 1.5, a: 1 → 2.2): ⟨K⟩/(−2/t) = 0.998–1.000, ⟨χ⟩ a² = 1.000–1.002, ⟨ρ⟩/ρ_FLRW = 1.000–1.003, rest mass 0.119366 and N_p = 32768 conserved exactly, ρ_max/⟨ρ⟩ = 1.00000. The 0.2–0.3 % drift is the first-order source lag (sources deposited at t^n, held through the RK4 step); a midpoint deposit can remove it later. Bugs found on the way: dangling CellData reference in the matter Vars (crash), collective TotalNumberOfParticles inside the I/O-rank block (MPI hang), post_regrid hook fired before the particles exist, line extraction end point on the periodic boundary. Next: LTB e = 0 (μ = 0.3) on particles in geodesic slicing up to ~0.95 t_C(0) against the analytic LTB (ρ(0,t), shells), then the K − f K_far lapse and the AH finder. ## 30 Sep 17:40 UTC — stage 2, milestone 3a: LTB e = 0 on particles agrees with the exact solution μ = 0.3, t_0 = 0.5 t_C(0), box 8 r_m, 64³ single level (dx = r_m/8), 8 particles/cell (2.1 M), geodesic slicing, zero shift (coordinates stay attached to the LTB labels through the t_0 map); 41 steps to 0.96 t_C(0) in 98 s on 8 ranks. Ratios 3D/LTB at 4 / 6 / 8 / 12 / 16 / 24 cells from the centre: ρ 0.997–1.021 / 1.002–1.005 / 1.002–1.005 / 1.001–1.004 / 1.001–1.003 / 1.000–1.002; K 0.999–1.04 / 0.993–1.000 / 0.994–1.000 / 0.996–1.000 / … ; χ 0.995–1.000 / 1.000–1.003 / … — i.e. 0.2–0.5 % agreement everywhere the LTB profile is resolved, up to the caustic; at 2–3 cells the CIC smearing of the contracting core shows (ρ 0.79–0.97). Far field FLRW: ⟨χ⟩ a² and ⟨K⟩ t as in the FLRW test. Script: scripts/grchombo/vlasov_ltb_compare.py; generator writes ltb_vlasov_table.dat + params_vlasov.txt. Next (3b): weak profile-referenced lapse (K − f K_far) and AH finder in GRTeclyn, AMR levels for the core, then the μ = 0.3 run through the horizon epoch against the 1D M_AH(t) table (0.1 M_H at 1.69 t_C(0)). ## 30 Sep 18:30 UTC — stage 2: gauge and AMR status Weak profile-referenced lapse (ε = 0.3, Γ-driver shift) ported to GRTeclyn (`PBHGaugeTeclyn`, fref state variable, K_far = min K on level 0): μ = 0.3 single-level run stable to 0.96 t_C(0) (lapse_min 0.82, χ_min 0.24). AMR: level-aware particle lattice (n_per_dir·2^l per level-0 cell under level l) and average-down of the deposited sources; FLRW on two levels keeps the mass exactly but shows 1 % mean density deficit and 2–3 % inhomogeneity at the coarse–fine interface: the per-level CIC deposit drops the fine particles' clouds that cross into the coarse region and misses coarse particles' clouds entering the fine grids. Fix: use AMReX's multilevel AssignDensity (virtual + ghost particles, as in Nyx) with the 10 weighted quantities in particle slots — in progress. AH finder: capped, quiet copy of the GRTeclyn AHFinder-branch class (`PBHAHFinder`) prepared for in-run horizon searches. ## 30 Sep 22:40 UTC — stage 2: consistent coarse–fine deposition Per-level CIC deposition is inconsistent at AMR interfaces (FLRW two-level test: −12 % in the coarse cells outside the fine grids, +12 % inside; AMReX's AssignDensity gives a similar dipole). Fixed with (i) a level-aware lattice with a 2-cell buffer so that particles on both sides of an interface have the same mass, (ii) ghost copies of coarse particles within 1 coarse cell of a fine grid deposited on the fine level with the fine kernel (AMReX CreateGhostParticles/AddParticlesAtLevel, ghost extent ≤ deposit ghost cells − 1, otherwise out-of-bounds writes hang the run), (iii) copies of fine particles within one coarse cloud of the fine boundary deposited on the coarse level with the coarse kernel, (iv) average-down of the covered coarse cells. FLRW two-level line profile through the interface: 0.998–1.004 (was 0.86–1.12); a 3 % spike remains somewhere off the line (to be located). `sum_fine_to_coarse` is not used (double counts with (iii)). ## 30 Sep 23:10 UTC — stage 2, milestone 3b: AMR particles validated FLRW on two levels (32³ + half-box level 1, 710k particles, 240 coarse steps): ⟨K⟩/K_FLRW 0.9993, ⟨χ⟩a² 1.0004, ⟨ρ⟩/ρ_FLRW 1.001, mass exact; a static 3 % local spike remains off the extraction line (to be located; the line profile through the interface is within 0.4 %). LTB e = 0, μ = 0.3 on three levels (64³ + halves, 8.3 M particles, 41 coarse steps, 720 s on 8 ranks): ratios 3D/LTB at 4–24 coarse cells: ρ 1.000–1.006, K 0.997–1.018, χ 1.000–1.002 up to 0.96 t_C(0); ρ(0) resolved to 587 ρ_far (single level: 126). A +0.4–0.5 % ρ excess sits at the two interfaces (8 and 16 cells). Cost ≈ 18 s per coarse step with 3 levels; the horizon run needs ≈ 6–7 nested levels (finest cell ~1.5 physical units for a 37-unit horizon) → ~2 M particles per level, estimate a few hours. ## 30 Sep 22:40 UTC — horizon run launched (μ = 0.3, particles, 7 levels) Lattice generation rewritten per level (grown level grids minus the next level's grown region, disjoint box lists — the coarse-cell buffer around a deep level had produced 10⁸ particles and an OOM). Regression: FLRW two-level test identical (710144 particles, mass exact, interface profile within 0.4 %). Horizon configuration: μ = 0.3, t_0 = 0.5 t_C(0), box 8 r_m, 64³ per level, nested halves to level 6 (finest cell 1.5 physical units; horizon at 0.1 M_H ≈ 37), 17.8 M particles, weak lapse (ε = 0.3) + Γ-driver, AH search every 8 coarse steps from 1.3 t_C(0) (capped at 300 iterations). Shakedown: 7 levels run; ≈ 150–200 s per coarse step (AH cost not yet separated) → ≈ 8 h to 2.2 t_C(0). Run: /root/pbh_runs/vlasov_mu0.3_hor (run.log, pbh_vlasov_out.dat, pbh_ah.dat). 1D references: cold first AH 1.352, 0.1/0.3 M_H at 1.691/2.034 t_C(0); σ = 0.027: 1.451, 1.669/2.078. ## 1 Oct 10:10 UTC — horizon run aborted at the first AH search; module rewritten for speed The μ = 0.3 particle run reached 1.31 t_C(0) (72 coarse steps, 9.3 min per coarse step, lapse_min 0.70, χ_min 0.12, mass exact, through the caustic without incident) and aborted at the first apparent-horizon search: the AMReX TimeIntegrator inside the AH finder requires `integration.type = RungeKutta` and `integration.rk.type = 4` (now in the generator). The old checkpoints carry no particles (restart hooks were missing), so the run must be repeated. Meanwhile the module was rewritten (commit 65c6bf0): each level deposits only its own particles (+ ghost copies from the coarser and virtual copies from the finer level) at its own step instead of all levels at every finest step; fields are interpolated inside the push (no 44 per-particle slots, memory 2.5× lower); particle checkpoint/restart hooks added. Regression on the VPS and the AH-finder unit test on the server are running before the relaunch. ## 1 Oct 16:00 UTC — rewritten particle module validated on the VPS FLRW single level: identical to before (K 0.998, χa² 1.002, ρ 1.003). FLRW two levels (710 144 particles, 240 coarse steps): ⟨K⟩/K_FLRW 0.9993, ⟨χ⟩a² 1.0004, ⟨ρ⟩/ρ_FLRW 1.0006, mass exact, and now rho_max/⟨ρ⟩ = 1.0000–1.0001 with the interface line profile 0.9999–1.0007 — the 3 % spike of the all-level deposit is gone (it came from double counting in the old scheme). Server: AH finder unit test passes (38 iterations, 8 s). Disk: 29 GB of plots/checkpoints purged. ## 1 Oct 17:30 UTC — server regression of the rewritten module; AH finder runaway LTB e = 0 (μ = 0.3) on three levels with the per-level deposit: 400 s (was 720 s), 3D/LTB ratios ρ 0.994–1.002, K 0.989–1.019 (near the centre), χ 0.997–1.002 up to 0.96 t_C(0); the interface excess dropped from +0.5 % to +0.2 %. Horizon configuration (7 levels, 17.8 M particles): ≈ 80 s per coarse step (was 560 s → ≈ 3.5 h for the whole run); the particle checkpoint is written (chk00000/vlasov_particles). A forced AH search without a horizon ran away (surface radius −2·10⁵, interpolation abort) → runaway guard added to the finder copy (surface must stay within [dx_finest/2, 0.4 L], otherwise "no horizon"). ## 1 Oct 18:10 UTC — horizon run relaunched with the rewritten module Shakedown with a forced AH search: the finder now stops gracefully without a horizon (42 iterations, "no horizon"). Production: /root/pbh_runs/vlasov_mu0.3_hor, 7 levels, 17.8 M particles, AH search every 8 coarse steps from 1.3 t_C(0) (≤ 300 iterations, surface bounds), plots every 5 and checkpoints (with particles) every 20 coarse steps, old checkpoints pruned; expected ≈ 3.5–4 h to 2.2 t_C(0). Observable: time at which M_AH reaches 0.1 and 0.3 M_H versus the 1D table (cold 1.69/2.03, σ_ent = 0.027: 1.67/2.08 t_C(0)). ## 2 Oct 01:00 UTC — horizon run: crash at 1.62 t_C(0), diagnosis, restart from chk00080 - Timing: 4.75 min per coarse step on the 8 ranks (the "80 s" above was the 3-level test), 65 steps in 4.9 h. At coarse step 100 (t_run 2419 = 1.62 t_C(0)) all 8 ranks segfaulted in `VlasovParticles::push` → `interp_fields_at` (out-of-bounds read of the 1-ghost field MultiFab). The flow AH finder had run 7 searches from 1.30 t_C(0) and found nothing: from the guess radius 77.4 (the generator's comoving estimate) the hyperbolic flow with cfl_factor 7 moved the surface by ≈ 15 coordinate units per iteration, jumped over the real horizon (5 finest cells, below) and ran away to h ≈ −570 until the runaway guard stopped it (43 iterations every time). - Core state (checkpoints read with `scripts/grchombo/chk_diag.py`, spherical expansion along the x axis): step 60 (1.17 t_C(0)): no trapped surface, χ_min 0.033, α_min 0.36, M_MS(R = 103) = 0.087 M_H. Step 80 (1.396 t_C(0)): Θ < 0 inside r = 7.6 coordinate units (5 finest cells), R_AH = 55.6, M_AH = R/2 = 0.151 M_H (M_MS there 0.146 M_H), χ_min 0.0021, α_min 0.14, |β| ≤ 0.09, max particle displacement 0.06 cells per fine step. Steps 84–99 (line extractions): the centre collapses to a puncture-like core two cells wide (χ_c 7·10⁻⁵, α_c at the 10⁻⁴ clamp, K_c 0.8, ρ_p,c ≈ 10⁷ ⟨ρ⟩); the interpolated lapse and χ at the centre go negative (overshoot between cells). The exact trigger of the out-of-bounds read is not known (no checkpoint after step 80): a non-finite rhs from the collapsed core (NaN position) or a > ½-cell midpoint excursion. - Fixes: (1) the CIC stencil is clamped to the field box; a particle with non-finite fields or rhs keeps its state for the step ("frozen", counted); the displacement per push is capped at `pbh_vlasov.max_disp_cells` = 0.8 cells (counted); per-coarse-step maxima and counts are appended to `pbh_vlasov_out.dat` (columns 10–13: max_disp_cells n_clamped n_capped n_frozen) and printed per level step when non-zero. (2) Ray expansion diagnostic every coarse step: chi, h̃_ij, K, Ã_ij interpolated (4th order) at 256 points (dx_f/2 spacing) along ±x, ±y, ±z; Θ = 2R'/(R√γ_nn) − 2K/3 + Ã_nn/h̃_nn, R = r√(h̃_T/χ), M_MS; the outermost zero crossing per ray → `pbh_ah_rays.dat` (time, rays found, ⟨r_AH⟩, ⟨R_AH⟩, M = ⟨R⟩/2, R_min, R_max, r_AH per ray); full profiles every 4 steps in `theta_profiles/`. (3) The flow finder is seeded with the ray radius (`ah_finder.cfl_factor` 2). Checkpoint/restart with particles verified bit-identical on the FLRW two-level test (6 steps vs 3 + restart + 3). - Restarted 01:01 UTC from chk00080 (1.396 t_C(0)), plots every 10 steps with h11 h22 A11 A22 shift1 added; 70 coarse steps to 2.2 t_C(0) ≈ 5.5 h (ETA ≈ 06:30 UTC). - Interpretation caveats. (a) Pure LTB (e = 0, no shell crossing) traps the shells holding 0.1/0.15/0.3 M_H at proper time τ = 1.13/1.18/1.32 t_C(0) (`LTBGaussian.t_AH`); the 3D horizon with 0.15 M_H appears between 1.17 and 1.40 of far-field time, consistent with LTB plus the lapse lag of the profile-referenced 1+log slicing (α ≈ 0.4 around the horizon). (b) The 1D table (cold: 0.1 M_H at 1.69, 0.3 at 2.03) is in the areal-CMC slicing; the far-field time at which a given M_AH is reached depends on the slicing, so the coordinate-time comparison planned on 1 Oct is not invariant. Invariant alternative for the next run: per-particle proper time (dτ/dt = α/Γ) and the proper time of the matter at the horizon when M_AH = 0.1/0.3 M_H versus τ_trap of the 1D labels (≈ t_AH^LTB). (c) Resolution: the horizon forms at 2–5 finest cells; the first-horizon time and the early M_AH(t) need 2–3 more nested levels (32³, ≈ ×2 cost). ## 2 Oct 08:30 UTC — restarted run finished (2.2 t_C(0)): horizon tracked to 0.35 M_H, puncture blow-up at 1.62 - Restart 01:01–08:03 UTC (72 coarse steps). Ray diagnostic: the six rays agree in R_AH to 0.1 (spherical to the finest cell); M_AH = R_AH/2 grows linearly at ≈ 0.95 M_H per t_C(0) of far-field time: 0.159 at 1.4075, 0.20 at 1.449, 0.30 at 1.555, 0.349 at 1.609. The flow finder, seeded with the ray radius (cfl 2), hovers at the horizon (mean h 10.4 vs 8.6–9.4 from the rays) but never meets the 1e-4 tolerance in 3000 iterations and its area/mass (coordinate area) are not usable; for spherical runs the ray diagnostic is the instrument. - Blow-up: during coarse step 100 (t_run 2395–2420, 1.609–1.620 t_C(0)) the level-6 fields inside r ≈ 20 became NaN, reproducing the original crash time exactly (that segfault was NaN particle positions). The guarded push caught the onset: max displacement 0.54 → 0.61 → 0.89 cells per fine step over four level-6 steps, then 13.6 M frozen particles; afterwards everything is frozen (1.27·10⁹ frozen events per coarse step) and the rays find nothing. plt00100 has NaN inside r ≈ 20 with the outer fields intact. Cause: the puncture-like core (χ_c ~ 10⁻⁵, α_c at the clamp) is two cells wide — unresolved puncture plus the matter piling up in it. - Lost checkpoint: the waiter's pruning (keep the last two) deleted chk00080, so the lapse_coeff = 2 experiment from 1.396 t_C(0) cannot be run; pruning now keeps every 40th checkpoint as well. - Next: rerun from t_0 with per-particle proper time (dτ/dt = α/Γ, `pbh_vlasov.tau0` = t_0) and τ statistics of the matter at the ray horizon (`pbh_ah_tau.dat`: shell |r − r_AH| < max(dx_f, 0.05 r_AH), inside, core), same resolution and gauge (lapse_coeff 0.3): ≈ 8 h on the CCX33 to the blow-up. Observable: (M_AH, τ_AH) versus τ_trap of the 1D labels / LTB t_AH(M) (0.1/0.15/0.3 M_H at 1.13/1.18/1.32 t_C(0)). ## 2 Oct 17:00 UTC — μ = 0.3 rerun with particle proper time: invariant 3D vs 1D comparison Rerun `/root/pbh_runs/vlasov_mu0.3_tau` (08:12–16:33 UTC, 100 coarse steps, same resolution and gauge as before; results in `runs/v1/vlasov3d/mu0.3_tau`): identical M_AH(t_far) to the first run, blow-up again inside coarse step 100 (1.609–1.620 t_C(0); "NaN in GRAmrLevel::post_timestep"). The ray horizon is first seen at 1.318 t_C(0) with M = 0.084 M_H and r_AH = 2.3 finest cells (smaller horizons are not resolvable). Proper time of the matter at the horizon (`scripts/grchombo/vlasov_tau_compare.py`; 1D: τ_trap of the labels paired with the 1D M_AH at the moment of trapping; LTB: t_AH of the shell with m = M): | M_AH / M_H | 3D far time | 3D τ_AH | 1D cold τ | 3D − 1D | LTB t_AH(m = M) | |---|---|---|---|---|---| | 0.09 | 1.326 | 1.163 | 1.121 | +0.042 | 1.122 | | 0.10 | 1.339 | 1.174 | 1.131 | +0.043 | 1.132 | | 0.15 | 1.398 | 1.225 | 1.172 | +0.054 | 1.180 | | 0.20 | 1.449 | 1.272 | 1.217 | +0.055 | 1.226 | | 0.25 | 1.503 | 1.321 | 1.268 | +0.053 | 1.273 | | 0.30 | 1.555 | 1.369 | 1.314 | +0.055 | 1.319 | - 1D cold reproduces LTB to 0.001–0.009 t_C(0) (shell crossing barely changes the trapping of these labels; the label at the AH is within 6 % of M_AH). The 3D horizon's matter is 0.04–0.055 t_C(0) (≈ 4 %) later in its own proper time at every mass, roughly a constant offset. The far-field times differ from the 1D (CMC) coordinate times by 0.35–0.5 t_C(0) — pure slicing, as suspected. - Candidates for the 4 % offset: the CIC-softened core (8 particles per finest cell, horizon at 2–14 cells) delaying the collapse of the inner shells; a systematic in the ray horizon location (constant offset argues against a pure resolution error of the AH location, which should shrink with r_AH/dx). Test running: the same setup with one level fewer (finest dx doubled, `/root/pbh_runs/vlasov_mu0.3_lowres`, 6 levels, 15.2 M particles, ≈ 2.4 min per coarse step, ≈ 4 h). If the offset doubles, it is first-order resolution error and Richardson gives the limit; if it stays, the cause is elsewhere (τ initialisation or the shell definition). - Core proper time at the first detected horizon: τ_core = 1.114 t_C(0) (1D cold: τ_core 1.004 at its first AH of 0.0025 M_H at 1.352 coordinate time — not the same event). ## 2 Oct 18:00 UTC — low-resolution test: disk full at 0.95 t_C(0), restarted The 6-level run aborted at coarse step 40 with `VisMF::Write failed` — the disk was full (checkpoints with particles are 5–6 GB each; the τ run had kept four, the first run two). Fields at that point agree with the 7-level run to 1e-4 at the centre (lapse 0.775, χ 0.217), so nothing physical. Cleanup: all checkpoints of the first horizon run (NaN states), the τ run's chk00000/40/60/100 (chk00080 at 1.396 t_C(0) kept as the restart point for gauge experiments), the partial chk00040 of the test; 32 GB free. Restarted 17:59 UTC from chk00020 (0.72 t_C(0)); the .dat files were truncated to the checkpoint time to avoid duplicate rows. ≈ 3.3 h to the expected blow-up (≈ 21:30 UTC). ## 2 Oct 21:45 UTC — the 4 % offset is a bug in the particle equation (lapse term); low-resolution test; fix - Low-resolution test (6 levels, finest dx doubled; run `/root/pbh_runs/vlasov_mu0.3_lowres`, results in `runs/v1/vlasov3d/mu0.3_lowres`): no blow-up up to the stop at 1.71 t_C(0) (M_AH 0.44 M_H); τ_AH(M) within 0.003 of the 7-level run at every mass (3D − 1D cold: +0.053/+0.057/+0.055/+0.057 at 0.15/0.20/0.25/0.30 M_H). The offset is resolution-independent, so it is not CIC softening or the horizon location. - Central clock check (τ run, `runs/v1/vlasov3d/centre_values.txt`): ρ_c(τ_core) against the LTB central density at the same proper time agrees to 1 % up to τ_core ≈ 0.82 t_C(0) and then lags: ratio 0.92 at 0.86, 0.86 at 0.91, 0.66 at 0.95; the central caustic (ρ_c maximum) is reached at τ_core = 1.047 instead of 1.000. The lag starts exactly when the central lapse drops below ≈ 0.85 and equals the horizon offset — the collapse is slowed where α < 1. - Cause: `MetricAtParticle::rhs` had du_i/dt = −αΓ ∂_iα + …; Hamilton's equations of H = αΓ − β^j u_j give −Γ ∂_iα (no extra α). Every earlier validation (FLRW, LTB in geodesic slicing) had α = 1 and could not see it; the production gauge has α = 0.3–0.8 in the core, so the lapse-gradient force was 20–70 % too weak there. Fixed in `VlasovParticles.cpp` (and the design note). The τ-run and low-resolution results above are therefore wrong by this bug and are superseded. - Check running: the 3-level LTB test (`vlasov_mu0.3_gaugecheck/{geo,prod}`) with the fixed push in geodesic slicing and in the production gauge to 0.97 t_C(0) — ρ_c(τ_core) must agree between the two gauges and with LTB. Then the 7-level production rerun (≈ 8 h). - Storage: all run directories now live on the 200 GB volume (`/mnt/HC_Volume_107018529/pbh_runs`, symlinks in `/root/pbh_runs`); local disk 47 GB free. ## 2 Oct 22:05 UTC — gauge check inconclusive at the centre; corrected production run launched - 3-level check (`runs/v1/vlasov3d/gaugecheck`, `scripts/grchombo/vlasov_gauge_check.py`): in geodesic slicing ρ_c/ρ_LTB(τ) = 0.994 → 0.955 (τ 0.53 → 0.90), the late decline being the 3-level smoothing of the central peak; in the production gauge the central value oscillates ±5 % (the lattice drifts through the grid with the shift, CIC phase noise) around 1.0 up to τ ≈ 0.84 and then falls faster than geodesic (0.92 at 0.895, 0.78 at 0.92). At this resolution and with the single-point measure the gauge dependence cannot be separated from the smoothing of the tilted slice, so the check is inconclusive; the production run carries the decisive diagnostics instead. - Added `tau_profiles/tau_.dat` (every `theta_profile_interval` steps): bins of 2 dx_f with particle count, rest mass, cumulative rest mass, ⟨τ⟩, ⟨Γ⟩ — together with `theta_profiles/` (R, Θ, M_MS per ray) this gives the invariant comparison with LTB before the caustic: M_MS and R at (⟨τ⟩, label M_in) against the LTB shell. - Production rerun with the fixed rhs: `/mnt/HC_Volume_107018529/pbh_runs/vlasov_mu0.3_fix` (symlink in /root/pbh_runs), 7 levels, launched 22:04 UTC, stop 2.2 t_C(0); ≈ 8 h to 1.62 t_C(0). ## 3 Oct 01:20 UTC — corrected run follows LTB to the caustic (shell-by-shell invariant check) `scripts/grchombo/vlasov_shell_check.py` on `vlasov_mu0.3_fix` (profiles every 4 coarse steps; bins of 2 dx_f, the cumulative rest mass inside the bin's outer edge fixes the LTB label, the bin's ⟨τ⟩ the LTB time; 3D R and M_MS from the +x ray profile at the same radius): | step | ⟨τ⟩/t_C(0) | R_3D/R_LTB (bins 4–32 = 15–100 units) | M_MS/m_LTB | |---|---|---|---| | 8 | 0.589 | 0.9998–1.0009 | 0.9996–1.0037 | | 24 | 0.757–0.760 | 0.9992–1.0001 | 0.9961–0.9998 | | 32 | 0.835–0.841 | 0.9982–0.9998 | 0.9935–0.9996 | | 40 | 0.907–0.918 | 0.9972–0.9987 | 0.9931–0.9984 | | 44 | 0.941–0.957 | 0.9955–0.9972 | 0.9955–1.0001 | The 2-cell bin scatters by ±1–3 % (CIC phase noise). With the corrected lapse term the production gauge reproduces the LTB shells to ≤ 0.5 % in R and M up to τ = 0.96 t_C(0), where the buggy run's central density already lagged by 30 %. The run continues into the horizon phase (first ray horizon expected around coarse step 75, ≈ 04:30 UTC). ## 3 Oct 05:10 UTC — corrected run: 3D horizon growth agrees with 1D and LTB to < 1 % in proper time `vlasov_mu0.3_fix` (22:04–05:03 UTC, 86 coarse steps): first ray horizon at far time 1.228 t_C(0) with M = 0.065 M_H (r_AH = 2.3 finest cells, τ_AH = 1.097); growth to 0.273 M_H at 1.452; NaN in the core during coarse step 86 (1.452–1.463 t_C(0)) — the puncture blow-up now comes at M_AH ≈ 0.27 instead of 0.35 because the collapse is no longer slowed. Invariant comparison (`vlasov_tau_compare.py`, results in `runs/v1/vlasov3d/mu0.3_fix`): | M_AH / M_H | 3D far time | 3D τ_AH | 1D cold τ | 3D − 1D | LTB t_AH(m = M) | 3D − LTB | |---|---|---|---|---|---|---| | 0.09 | 1.260 | 1.1234 | 1.1212 | +0.002 | 1.1221 | +0.001 | | 0.10 | 1.271 | 1.1321 | 1.1310 | +0.001 | 1.1320 | +0.000 | | 0.15 | 1.326 | 1.1794 | 1.1716 | +0.008 | 1.1798 | −0.000 | | 0.20 | 1.378 | 1.2258 | 1.2170 | +0.009 | 1.2263 | −0.001 | | 0.25 | 1.428 | 1.2708 | 1.2682 | +0.003 | 1.2725 | −0.002 | | 0.27 | 1.449 | 1.2895 | 1.2844 | +0.005 | 1.2910 | −0.002 | The 3D horizon's matter proper time sits on the LTB trapping curve to ±0.002 t_C(0); the 1D cold run is 0.001–0.009 earlier than LTB (its own resolution/shell-crossing imprint), so 3D − 1D ≤ 0.009 (< 1 %). Stage 2's e = 0 test is passed for the horizon-growth observable at M_AH = 0.09–0.27 M_H; the first-horizon time itself (1D: 0.0025 M_H at τ_core 1.004) stays below the 3D resolution (smallest detectable horizon ≈ 0.06 M_H at dx_f = r_m/512). - Running: gauge experiment `vlasov_mu0.3_fix_eps2` — restart from chk00080 (1.385 t_C(0), M_AH 0.21) with the standard 1+log coefficient (lapse_coeff 2 instead of 0.3) to see whether the slice freezes before the core blows up; launched 05:06 UTC, 6 steps to the previous blow-up time, stop 2.2 t_C(0). ## 3 Oct 12:30 UTC — standard 1+log coefficient carries the horizon phase to 2.2 t_C(0); e = 0 map matched to 0.58 M_H `vlasov_mu0.3_fix_eps2` (restart from chk00080 at 1.385 t_C(0) with lapse_coeff 2.0; 05:06–12:25 UTC, 72 coarse steps to the 2.2 t_C(0) stop): no NaN, no frozen or capped particles, mass conserved; the slice freezes in the core (interpolated central lapse at the clamp, χ_c → 8·10⁻⁵) and the horizon keeps growing: M_AH 0.23 → 0.58 M_H (r_AH 9–20 finest cells). Invariant comparison (`runs/v1/vlasov3d/mu0.3_fix_eps2`): | M_AH / M_H | 3D far time | 3D τ_AH | 1D cold τ | 3D − 1D | LTB t_AH | 3D − LTB | |---|---|---|---|---|---|---| | 0.25 | 1.449 | 1.2713 | 1.2682 | +0.003 | 1.2725 | −0.001 | | 0.30 | 1.687 | 1.3213 | 1.3137 | +0.008 | 1.3191 | +0.002 | | 0.35 | 1.847 | 1.3687 | 1.3565 | +0.012 | 1.3665 | +0.002 | | 0.40 | 1.940 | 1.4155 | 1.4133 | +0.002 | 1.4151 | +0.000 | | 0.45 | 2.015 | 1.4632 | 1.4571 | +0.006 | 1.4651 | −0.002 | | 0.50 | 2.091 | 1.5147 | 1.5070 | +0.008 | 1.5166 | −0.002 | | 0.55 | 2.162 | 1.5678 | 1.5599 | +0.008 | 1.5699 | −0.002 | Together with the 0.3-coefficient segment (0.09–0.27 M_H) the 3D particle code reproduces the spherical e = 0 horizon growth of the 1D code and LTB over 0.09–0.58 M_H to ≤ 0.012 t_C(0) in the matter's proper time (3D − LTB within ±0.002). The far-field (coordinate) times are gauge: with lapse_coeff 2 the same M_AH is reached 0.2–0.4 t_C(0) later in far time than with 0.3. Conclusion for the horizon phase: use the standard coefficient 2 (the weak 0.3 was chosen for the scalar stage); the 0.3 run blows up at M ≈ 0.27 because the slice keeps advancing into the two-cell puncture. - Next run (launched 12:35 UTC, `vlasov_mu0.3_eps2full`): the same setup from t_0 with lapse_coeff 2 throughout — one gauge, full M_AH(τ) curve 0.065–0.58 M_H; also tests whether the pre-horizon phase is unaffected by the stronger coefficient. ≈ 12 h. ## 4 Oct 07:00 UTC — one-gauge reference run (lapse_coeff 2 from t_0) finished: e = 0 map confirmed `vlasov_mu0.3_eps2full` (3 Oct 12:29 – 4 Oct ≈ 00:30 UTC, 152 coarse steps to 2.2 t_C(0)): no NaN, no flagged particles, mass conserved. With the standard coefficient the slice lags more in the core, so the ray horizon is first seen later in far time (1.710 t_C(0)) and already at M = 0.18 M_H (3.4 finest cells); it grows to 0.523 M_H at 2.2. Results in `runs/v1/vlasov3d/mu0.3_eps2full`. | M_AH / M_H | 3D far time | 3D τ_AH | 1D cold τ | 3D − 1D | LTB t_AH | 3D − LTB | |---|---|---|---|---|---|---| | 0.20 | 1.739 | 1.2219 | 1.2170 | +0.005 | 1.2263 | −0.004 | | 0.30 | 1.901 | 1.3198 | 1.3137 | +0.006 | 1.3191 | +0.001 | | 0.40 | 2.030 | 1.4123 | 1.4133 | −0.001 | 1.4151 | −0.003 | | 0.50 | 2.171 | 1.5128 | 1.5070 | +0.006 | 1.5166 | −0.004 | Pre-caustic shell check in this gauge (steps 24/40/48, τ = 0.73–0.92): R_3D/R_LTB 0.996–1.000, M_MS/m_LTB 0.994–1.008. Summary of the e = 0 test (three corrected runs, two gauges): the proper time of the matter at the horizon versus M_AH agrees with LTB to ±0.004 t_C(0) and with the 1D cold run to ≤ 0.012 over 0.09–0.58 M_H; far-field times depend on the lapse coefficient by up to 0.4 t_C(0) and are not an observable. Trade-off between the gauges: 0.3 shows the horizon earliest and smallest (0.065 M_H) but dies at 0.27 M_H; 2.0 is stable to the end but first shows the horizon at 0.18 M_H. For e ≠ 0 runs: start with 0.3 and switch to 2.0 at the first ray horizon (as in fix + fix_eps2), or run 2.0 throughout when only M_AH ≳ 0.2 M_H matters. ## 5 Oct 09:20 UTC — warm particles in 3D (σ = 0.0272, the 1D "σ_ent" reference); run launched - 1D convention (`cosmo_ev.inject_dispersion`): at t_inj = t_H an isotropic Maxwellian of 1D width σ is added in the shell rest frame (radial part to P, tangential to L²) for shells with R/a < 2 r_m. The 3D run starts at t_0 = 0.5 t_C(0), so the generator (`--sigma_inj 0.0272`) writes the local dispersions at t_0 as ratios to σ: collisionless evolution conserves R w_t and (R'/√(1+2E)) w_r for small σ, hence σ_t/σ = R(t_inj)/R(t_0) and σ_r/σ = R'(t_inj)/R'(t_0) (table columns 7–8): 0.566 isotropic at the centre (core near turnaround), 0.33/0.43 (r/t) at r_m, zero beyond 2.5 r_m,phys. The six cold columns are bit-identical to the table of the reference runs. - 3D sampling: quiet start. The 2³ particles of every lattice cell get the corners of a randomly rotated cube scaled by a Maxwellian speed (hash-based, independent of the MPI layout): each particle is marginally N(0, 1) per component, each cell has zero net momentum and an isotropic second moment; the velocity is then scaled by (σ_r, σ_t) in the local radial frame and added non-relativistically to the bulk; rest mass = ρ√γ dV/Γ with the particle's own Γ, so the deposited energy density equals the cold constraint-satisfying ρ. - Checks (3 levels): σ = 0 with the new code reproduces the cold run bit for bit; σ = 0.0272 gives ⟨Γ⟩ − 1 = 2.7·10⁻⁴ within 0.5 r_m (expected 3σ_loc²/2 ≈ 2.5–3.5·10⁻⁴), rest mass −2.5·10⁻⁵, ⟨ρ⟩ unchanged to 10⁻⁶. - Production: `vlasov_mu0.3_warm` (7 levels, lapse_coeff 2 from t_0, stop 2.2 t_C(0)), launched 09:16 UTC, ≈ 12 h. Reference: the 1D σ = 0.027 run (first AH 0.015 M_H at 1.451 coordinate; τ(M_AH) to be binned from the shell data). ## 5 Oct 10:05 UTC — stage 1b: early-start pipeline implemented; FLRW test exposes two time-lag systematics (fixed) - Implemented in the development copy (`Examples/PBHVlasovDev` on the server; design in `docs/stage1b_design.md`): `init = yoo` (long-wavelength CMC data for the triaxial Yoo profile, matter from the vacuum constraints of the code's own operators, cold lattice particles), `dt_mode = 1` (dt_0 = min(0.25 dx/√χ_max, 0.03 (t + t_i)) with per-level n_cycle ∈ {1, 2} chosen every coarse step; Kreiss–Oliger σ and the Γ-driver coefficient scaled with the far-field coordinate light speed), `sphere_diag` (expansion of coordinate spheres on 96 directions). - Test 1, FLRW from t_i (2 levels, 225 coarse steps of 3 %, a = 1 → 84), first attempt: closed-universe drift — K ratio 0.87 at a = 21, recollapse at a ≈ 80, far lapse 0.93. Two lags of one coarse step, harmless at dt/t ≲ 1 % but not at 3 % over hundreds of steps: 1. the deposit stored ρ = D χ^{3/2} with χ frozen at deposit time, so through all RK stages of a step the source was the start-of-step density (too high by ≈ 3 dt/t on average) → Ω_eff > 1; 2. K_far of the lapse condition was the value at the end of the previous step → K − K_far > 0 on average → the far lapse decreased by 0.3 · (dt/2t) · |K| dt ≈ 2.7·10⁻⁴ every step. Fixes: the grid now carries the coordinate densities D = Σ mΓW/dV (S_i, S_ij likewise) and `ParticleMatter` multiplies by χ^{3/2} of the current stage; K_far is extrapolated inside the step as dust FLRW, K_far(t) = K_n / (1 − K_n (t − t_n)/2) (`pbh_vlasov.k_far_extrap`, default on). Retest: ⟨χ⟩a², ⟨K⟩t/2, ⟨ρ⟩6πt² = 1 to 10⁻⁶ over the whole run, far lapse 0.999999, τ_core = t + t_i to 5·10⁻⁵. - Consequence for the earlier (late-start) runs: at level 0 they had dt/t = 2.2 % → 0.5 %, i.e. a far-field source lag of that order and a far lapse drifting to ≈ 0.97; the fine levels (dt/t ≤ 10⁻³) and all proper-time comparisons are unaffected at the quoted accuracy, but "far time" in those tables is coordinate time with α_far slightly below 1. The plot variable `rho_p` is the coordinate density from now on (physical ρ = rho_p χ^{3/2}). - Test 2 running: Yoo data μ = 0.3, e = 0, three levels, t_i → 0.97 t_C(0). At t_i: E/E_FLRW − 1 ∈ [−4·10⁻⁴, +4.4·10⁻³], |J| ≤ 4·10⁻⁷, total rest mass 11074.363 (LTB table of the late-start runs: 11074.320, 4·10⁻⁶ apart). ## 5 Oct 12:50 UTC — stage 1b test 2 (Yoo data, e = 0, three levels): super-horizon sensitivity of the binding energy - First attempt (plain constraint-derived particles): the shells run ahead of LTB — R_3D/R_LTB at the shell's τ and rest-mass label = 1.014–1.021 (labels 0.16–0.5 r_m) at τ = 0.07 t_C(0) and 1.035–1.054 at 0.23, 0.994–0.998 outside 1.6 r_m; at t_i everything agreed to 10⁻³. The core is ≈ 20 % under-bound. - The Yoo data themselves are right: in spherical symmetry (`cosmo_id.yoo_spherical_cmc`) the energy function 2E = U² − 2m/R of the dust (U = Γ(−R K_θ + v/A)) equals the LTB one to 10⁻⁴ at equal m for ε_i = 0.2, 0.1, 0.05, and the 3D tensor form reduces to the spherical one exactly (checked on the x axis). - Cause: at ε_i = 0.2, 2E = −0.05…−0.4 is the difference of U² and 2m/R ≈ 10–600, so a relative error η in the gravitating mass seen by a shell changes E by η (RH)²/|2E| ≈ 10²–10³ η. (i) The deposited density differed from the constraint density by 8·10⁻⁴ max, 2.6·10⁻⁴ rms on the finest level (CIC smoothing of the O(1) variation of √γ E, level interfaces). (ii) With 3–5 % steps the sources lag the particle motion by half a step. - Fixes: (a) `build_deposit_correction`: particle masses (and u_i) iterated until the deposited coordinate sources equal the constraint ones on the cells not covered by a finer level: 8·10⁻⁴ → 1·10⁻⁵ max, 10⁻⁶ rms after six corrections (total rest mass −2.8·10⁻⁵). With it: R ratio 0.9993–1.0003 at τ = 0.008, 1.001 at 0.055, but still 1.005–1.011 at 0.22 and 1.012–1.024 at 0.55–0.6 for labels < 0.66 r_m (0.9997–0.998 outside r_m). (b) Strang splitting (`pbh_vlasov.strang = 1`): half particle step and deposit before the grid update (sources at mid-step), second half after it; also a time-centred single push (`push_centred`) for the old scheme. FLRW with 5 % steps: χ, K, ρ ratios 1 ± 2·10⁻⁵. - Running: test 2 with matched deposit + Strang (`dev_tests/yoo_mu0.3_l2s`). - Note for the comparison with Yoo et al.: any 3D particle run started at ε_i = 0.2 has this sensitivity; their one-particle-per-cell top-hat deposit on 80³ cannot satisfy it at the 10⁻⁴ level, which may contribute to the offset of their thresholds (to be quantified once our pipeline is validated). ## 5 Oct 14:50 UTC — stage 1b: geodesic early phase reproduces LTB to 10⁻⁴; gauge switch-on time - Strang splitting did not help (R ratios at τ = 0.02: +0.1–0.2 % in the core against +0.05 % without it), so the half-step source lag is not the leading error of the gauged early phase. - Isolation test in geodesic slicing (lapse 1, shift 0; `dev_tests/yoo_mu0.3_l2g`, matched deposit, 5 % steps, 186 coarse steps to 0.28 t_C(0)): R_3D/R_LTB = 0.9995–1.0001 at τ = 0.02, 0.057, 0.126, 0.237 for all bins ≥ 4 cells, no drift; M_in per coordinate bin stays constant (the particles sit on their lattice sites). In the gauged runs the Γ-driver shift streams the lattice through the grid (+15 % rest mass inside r' = 435 by t = 46), and during the super-horizon phase the binding energy cannot tolerate the associated 10⁻⁴-level errors. - Consequence: the early phase is run in geodesic slicing and the gauge is switched on later (`pbh_vlasov.gauge_on_time`): at the first coarse step past that time fref = K(x)/K_far is taken from the current slice and the lapse condition and Γ-driver start from lapse 1, shift 0 — the same situation as the validated late-start runs, which began at 0.5 t_C(0) from the synchronous LTB slice. - Running: test 2 with the switch at 0.5 t_C(0) and lapse_coeff 2 afterwards (`dev_tests/yoo_mu0.3_l2sw`), to 0.97 t_C(0). ## 5 Oct 16:20 UTC — stage 1b test 2 passed: early start + geodesic phase + gauge switch follows LTB to ≤ 0.2 % `dev_tests/yoo_mu0.3_l2sw` (Yoo data μ = 0.3, e = 0, three levels, matched deposit, 5 % steps; geodesic slicing to 0.5 t_C(0), then lapse_coeff 2 and the Γ-driver with fref = K/K_far of that slice; 251 coarse steps to 0.977 t_C(0)): | step | ⟨τ⟩/t_C(0) | phase | R_3D/R_LTB (bins 4–48, labels 0.25–2.4 r_m) | M_MS/m_LTB | |---|---|---|---|---| | 200 | 0.390 | geodesic | 0.9996–1.0001 | 0.995–1.003 | | 220 | 0.561 | gauge on | 0.9996–1.0003 | 0.996–1.003 | | 240 | 0.77–0.80 | gauge on | 0.9978–1.0015 | 0.998–1.003 | This is as good as the late-start validation (0.2–0.5 % at the caustic), so the complete early-start chain is validated before the caustic: analytic long-wavelength data → constraint-derived, deposit-matched particles → expansion-aware steps → gauge switch. Next: the coordinate-sphere diagnostic on an existing horizon (restart of the cold reference run), then the seven-level e = 0 run through the horizon phase and e = 0.2. ## 5 Oct 16:50 UTC — coordinate-sphere diagnostic validated; seven-level early-start e = 0 run queued - `sphere_diag` on the horizon of the cold reference run (restart of `vlasov_mu0.3_eps2full` from chk00152 for one step with the development binary): rays r_AH = 19.071, R = 194.66, M = 97.328; spheres r_out = 19.062 (no trapped point outside), M_out = √(A/16π) = 97.326; r_in = 18.874 (largest sphere trapped everywhere), M_in = 96.975; spread of Θ over the 96 directions at r_in 2.9·10⁻⁵ (cubic grid anisotropy). The area mass agrees with R/2 of the rays to 2·10⁻⁵; [r_in, r_out] brackets the spherical horizon within 1 % in radius. - Ladder step 3 queued behind the warm run (`queue_yoo_e0.sh`, frozen binary `bin/PBHVlasov3d.stage1b_a.ex`, template `params_yoo_mu0.3_e0_prod.txt`): Yoo data μ = 0.3, e = 0, seven levels, geodesic to 0.5 t_C(0), then lapse_coeff 2 + Γ-driver, expansion-aware steps throughout (fallback `dt_scale_max = 1` freezes the step after the switch), rays + spheres + τ profiles, stop 2.2 t_C(0). Estimated 12–14 h. ## 6 Oct 03:45 UTC — warm particles (σ = 0.0272 at t_H): no measurable change of the horizon growth at M ≥ 0.18 M_H `vlasov_mu0.3_warm` (late start, lapse_coeff 2, 152 coarse steps to 2.2 t_C(0), 5 Oct 09:16 – 6 Oct 03:39 UTC, slowed by the development tests; no NaN, no flagged particles). Results in `runs/v1/vlasov3d/mu0.3_warm`, compared with the cold run in the same gauge (`mu0.3_eps2full`): | t_far/t_C(0) | M_AH warm | M_AH cold | τ_AH(M) warm − cold | R_min/R_max warm | |---|---|---|---|---| | 1.710 (first ray horizon) | 0.180 | 0.182 | −0.001 | — | | 1.80 | 0.233 | 0.235 | +0.001 | 0.997 | | 2.00 | 0.377 | 0.379 | +0.001 | 0.997 | | 2.20 | 0.518 | 0.521 | +0.001 | 0.998 | Against LTB and the 1D cold run the warm 3D run sits where the cold one does (3D − LTB −0.003…+0.002, 3D − 1D cold ≤ 0.008 t_C(0) over 0.2–0.5 M_H). The dispersion lowers M_AH(t_far) by 0.4–1 % and delays τ_AH(M) by 0.1 %, and the thermal noise makes the horizon aspherical at the 0.2–0.5 % level (cold: 10⁻⁵). The 1D warm reference differs from the 1D cold run only at the first tiny horizon (0.015 M_H at 1.451 vs 0.0025 at 1.352 coordinate time) and is within its own noise at M ≥ 0.2; the 3D resolution (smallest horizon ≈ 0.06–0.18 M_H depending on the gauge) cannot see that regime. Conclusion for the σ_ent = 0.027 map: the de Broglie dispersion of this size does not change the growth of horizons above ≈ 0.1 M_H; its effect is confined to the first-horizon epoch, where the 1D code remains the instrument. Cost note: the warm run took ≈ 7.5 min per coarse step alone (cold: 4.75), the particle redistribution of the thermally moving lattice. - Started 03:39 UTC: `vlasov_yoo_mu0.3_e0` (ladder step 3; matching converged to 1.7·10⁻⁵). ## 7 Oct 00:45 UTC — ladder step 3 passed: seven-level early-start e = 0 run reproduces the horizon map; e = 0.2 started `vlasov_yoo_mu0.3_e0` (Yoo data from t_i, seven levels, geodesic to 0.5 t_C(0), then lapse_coeff 2 + Γ-driver, expansion-aware steps throughout; 307 coarse steps, 6 Oct 03:39 – 23:59 UTC, no NaN, no flagged particles). Shell check before the caustic: R_3D/R_LTB = 0.9991–1.0001 (labels 0.03–0.19 r_m) through the geodesic phase, 0.9965–1.0001 at τ = 0.56 after the switch, 0.995–0.996 at τ = 0.77 for labels 0.2–0.34 r_m (the late-start runs showed the same −0.5 % near the caustic). First ray horizon at far time 1.4175 with M = 0.105 M_H (3 finest cells; spheres bracket [0.104, 0.110]); M_AH = 0.70 M_H at 2.21 t_C(0). Results in `runs/v1/vlasov3d/yoo_mu0.3_e0`: | M_AH / M_H | far time | τ_AH early start | τ_AH late start (`mu0.3_eps2full`) | LTB t_AH | early − LTB | |---|---|---|---|---|---| | 0.11 | 1.427 | 1.1368 | — | 1.1418 | −0.005 | | 0.20 | 1.559 | 1.2222 | 1.2219 | 1.2263 | −0.004 | | 0.30 | 1.681 | 1.3134 | 1.3198 | 1.3191 | −0.006 | | 0.40 | 1.798 | 1.4049 | 1.4123 | 1.4151 | −0.010 | | 0.50 | 1.929 | 1.5101 | 1.5128 | 1.5166 | −0.007 | | 0.60 | 2.065 | 1.6197 | — | 1.6250 | −0.005 | The early-start pipeline agrees with the late-start one to ≤ 0.007 t_C(0) in the matter's proper time at the horizon and with LTB to ≤ 0.010 (3D − 1D cold −0.008…+0.018, the 1D itself being 0.002–0.02 earlier than LTB at these masses); the far-field (coordinate) times of the two pipelines differ by 0.18–0.24 t_C(0) — gauge, as before. Cost: 20.3 h on the CCX33 (the deep levels subcycle from the start, so the early phase was not as cheap as planned). - Ladder step 4 started 00:45 UTC: `vlasov_yoo_mu0.3_e02` — e = 0.2, p = 0, μ = 0.3 (Yoo et al.'s particle runs have a horizon for μ ≥ 0.05 at this e), same pipeline; matching converged to 2.7·10⁻⁵, rest mass 11078.0 (e = 0: 11074.0). Observables: sphere diagnostic (r_in/r_out, M from the area), first-horizon time and M_AH(τ) against the e = 0 run. ## 7 Oct 20:45 UTC — ladder step 4: e = 0.2, p = 0, μ = 0.3 — no horizon by 2.2 t_C(0) `vlasov_yoo_mu0.3_e02` (same pipeline as the e = 0 run; 310 coarse steps, 7 Oct 00:44 – 20:40 UTC, gauge on at 0.51 t_C(0), no NaN, no flagged particles; results in `runs/v1/vlasov3d/yoo_mu0.3_e02`). No trapped surface forms in the core by the 2.2 t_C(0) stop: on the coordinate spheres Θ ≥ +0.08 inside r′ = 7 (M_MS ≈ 0.05 M_H) throughout, with the direction spread Θ_max/Θ_min falling from 1.8 (0.8 t_C(0)) to 1.2 (2.2) as the core rounds off; the only negative value (−0.0013 at r′ = 150, M_MS ≈ 1.1 M_H, last profile) is a single-point artefact at the outer edge of the diagnostic. Core against the e = 0 run at the same far time: | far time | lapse_min e = 0.2 / e = 0 | χ_min | ρ_c/⟨ρ⟩ | |---|---|---|---| | 1.4 | 0.603 / 0.514 | 0.234 / 0.174 | 80 / 276 | | 1.8 | 0.529 / 0.399 | 0.157 / 0.105 | 146 / 6200 | | 2.2 | 0.459 / 0.335 | 0.103 / 0.074 | 263 / 25 000 | At e = 0 the puncture formed at 1.42 (first horizon 0.105 M_H) and reached 0.70 M_H by 2.2; at e = 0.2 the core has only a ×260 overdensity, a lapse of 0.46 and τ_core = 1.58 t_C(0) — the triaxial collapse (pancake → filament → third axis; Newtonian PM estimate of the third-axis collapse at ≈ 1.7–1.8 t_sph for e = 0.19) has not yet produced a trapped region. Yoo et al.'s particle run at this (μ, e) shows the lapse collapse at ≈ 20 t_H = 2.27 t_C(0), just beyond our stop time, and the central density is still rising, so the run is to be continued from chk00310 to ≈ 3 t_C(0) after the CCX43 rescale (first job on the new machine). Server idle at 20:45 UTC for the rescale. ## 8 Oct 03:45 UTC — e = 0.2, p = 0, μ = 0.3: a ≈ 1 M_H horizon appears at 2.97 t_C(0) (τ = 2.09) The run was continued on the CCX43 (16 ranks) from chk00310 and then chk00320 to 4.0 t_C(0) (7 Oct 22:00 – 8 Oct 03:35 UTC; no NaN, no flagged particles). Results in `runs/v1/vlasov3d/yoo_mu0.3_e02` (sphere diagnostic: r_in = largest sphere trapped in every direction, r_out = radius beyond which no point is trapped, M from the area): | far time | r_in | M_in | r_out | M_out | M (rays) | R_min/R_max (rays) | τ (matter at r_in) | lapse_min | |---|---|---|---|---|---|---|---|---| | 2.73 | — | — | < 140 | — | — | — | — | 0.33 | | 2.974 | 57 | 0.87 | 98 | 1.07 | 0.97 | 0.805 | 2.09 | 0.29 | | 3.256 | 89 | 1.10 | 127 | 1.27 | 1.15 | 0.94 | 2.38 | 0.25 | | 3.552 | 114 | 1.27 | 150 | 1.44 | 1.32 | 0.99 | 2.64 | 0.22 | | 3.965 | 127 | 1.42 | 172 | 1.63 | 1.52 | 0.94 | 2.97 | 0.19 | - The first trapped point appears at 2.73 t_C(0), the first fully trapped sphere at 2.97 — already with 0.87–1.07 M_H and strongly aspherical (ray R_min/R_max 0.80); it rounds to 2–6 % within 0.5 t_C(0) and grows to 1.4–1.6 M_H by 4.0. At 3.2 the inner core (r′ < 8, M_MS < 0.5) is still untrapped (a thick trapped shell around a core with lapse 0.25); by 3.7 the spheres are trapped down to r′ = 3 and the lapse keeps collapsing (0.19 at 4.0). - Against e = 0 (same μ, same pipeline): there the horizon was born tiny (0.105 M_H at far time 1.42, τ = 1.13) and grew to 0.70 M_H by 2.2 (τ_AH 1.68 at 0.65 M_H); at e = 0.2 nothing is trapped until the matter's proper time at the eventual horizon is 2.09 t_C(0), when the horizon appears with roughly the mass the spherical one would have reached by then (≈ 1 M_H, extrapolating the e = 0 growth of ≈ 1.1 M_H per t_C(0)). This is the triaxial sequence of the Newtonian estimate (pancake → filament → third-axis collapse at ≈ 1.7–1.8 t_sph for e ≈ 0.2) followed by trapping of the whole assembled core. - Yoo et al. (particles, 80³, e = 0.2, μ = 0.3): lapse collapse at ≈ 20 t_H = 2.27 t_C(0). Our first trapped point at 2.73 and sphere at 2.97 are in a different slicing (and their criterion is the lapse, not a trapped surface); the invariant statement from our run is τ = 2.09 t_C(0) at the matter of the first fully trapped sphere. - Machine note: on the CCX43 the 16 hardware threads (8 Milan cores) give ≈ 4.0 min per coarse step against 4.75 on the CCX33 — far from 2×; to be checked whether 8 ranks bound to cores do better. ## 8 Oct 07:05 UTC — CCX43 benchmark and the stage-1b queue - Benchmark (restart of the e = 0.2 run from chk00360, two fully subcycled coarse steps): 16 ranks on the 16 hardware threads 4.2–4.7 min per coarse step; 8 ranks bound to the 8 Milan cores 3.4 min (restart + 2 steps 471 s vs 639 s). The hyperthreads cost more than they give for this memory-bound code; production uses `--map-by core --bind-to core -np 8`, ≈ 1.4× the CCX33. - `scripts/grchombo/stage1b_params.py` writes the early-start parameters for any (μ, e, p) with the exact LTB t_C(0), a_ref = a(0.5 t_C(0)) and the same comoving box as the validated μ = 0.3 runs (resolution identical in units of t_C(0) and M_H). Queue started (`queue_stage1b.sh`, each run to 3.5 t_C(0), checkpoints every 20 steps): `s1b_mu0.1_e0.2` (t_C(0) = 6159, a_ref = 811, L′ = 12457) → `s1b_mu0.05_e0.2` → `s1b_mu0.05_e0.13` (t_C(0) = 14994, a_ref = 1468, L′ = 22544). Expected ≈ 1 day per run.