# PH-NUM-002 **Name:** Refinement convergence rate below expected **Severity:** warning **Input modes:** adapter+dump PH-NUM-002 detects observed convergence-order on explicitly declared method-of-manufactured-solutions (MMS) cases for the Laplace equation. The rule extracts the residual at increasing grid refinements, computes $\log_2(e_h / e_{h/2})$ using the classical Roy 2005 formula, and reports `refinement_rate` as the asymptotic observed order. The expected rate is **case-specific** and depends on PDE, backend, and boundary treatment — it must be declared up front per case. Three regimes the rule recognizes: - **Boundary-dominated FD4 (non-periodic).** The $4N$-cell 2nd-order boundary band dominates the $N^2$-cell 4th-order interior at $O(h^{2.5})$ on 2D problems. Rule expects rate ≈ 2.5; PASSes within $\pm 0.25$. - **Saturation floor.** Harmonic fixtures on periodic grids (Liouville forces constants) or harmonic polynomials on non-periodic FD grids (2nd-order FD exact). Both produce residuals below the rule's `_SATURATION_FLOOR = 1e-11` and report `rate = inf PASS`. - **All other cases.** `SKIPPED` (Poisson and heat are not in v1.0 scope per `ph_num_002.py:92`). The rule is Laplace-only by v1.0 scope and uses pure numpy — no mesh assembly, no torch, no scikit-fem. It does not certify convergence for arbitrary PDE/backend/BC triples; the expected rate must be declared up front per case.