Files
MeanField/experiments/COUPLED_TRIAL_CORRECTION_2026-09-18.md

284 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Bounded coupled second-order trial correction
Branch `research/coupled-trial-correction-20260918`, based on the completed
nonlinear obstruction investigation at `2944dd5`. The configured worktree
retains its existing name, `worktrees/preconditioner-improvement`, so that
build reuse does not disturb the preceding branch or immutable executables.
## Hypothesis
At the recorded n = 1.5, J = 0 endpoint, tenfold tighter linear accuracy did
not improve the useful trial range. The full directional derivative was
consistent with the prepared residual. Gravity-only correction reduced the
remainder norm but increased its adverse projection through hydrostatic,
EOS and surface balance. The next hypothesis is that correcting the entire
trial remainder can preserve the intended Newton response over larger steps.
For the captured base residual F0 and verified Newton direction p, preserve
L(alpha) = F0 + alpha J0 p. At a prepared candidate y, solve
J(y) c = -(F(y) - L(alpha)),
then prepare and evaluate y+c. All equations, normalization factors and
ordinary full-residual acceptance thresholds remain unchanged. A separate
auxiliary true-defect check is required; the base Newton report is never
replaced by a correction report. The locally second-order argument requires
sufficient residual smoothness and a bounded inverse, neither of which is
assumed to hold uniformly in this model.
## Implementation contracts
- A third, defaulted compile-time trial-path policy composes with the
established enthalpy and gravity policies. Existing two-policy recipes
retain their types and behavior. The new policy is incompatible with the
eliminated-gravity path until a corresponding reduced-manifold contract
is designed; unsupported combinations fail at compile time.
- The auxiliary solve has its own backend, a finite iteration budget and an
independent application of the complete candidate Jacobian. Its initial
options are relative tolerance 0.03, absolute tolerance 1e-14, at most160
iterations and restart160.
- Limit the correction norm to alpha||p|| by default. The initial work limit
is one actual auxiliary solve per Newton iteration, and one solve per
selected candidate. Runtime expert controls change these bounds explicitly.
- Select correction only after a prepared candidate fails the existing
acceptance predicate. Reuse the exact configured metric for selecting
between original and corrected candidates. An already acceptable step
incurs no coupled solve; an unprepared candidate cannot invoke one.
- Recheck the same selected admissibility policy and actual geometry after
correction. Retain the original candidate if the auxiliary solve fails,
the norm cap rejects it, preparation/admissibility fails, or its metric
worsens. Restoring a fallback includes fresh operator preparation, not
merely copying state vectors.
- The exported numerical core and trial transaction are shared by production
and frozen diagnostics. The physics-facing model API is unchanged.
## Initial screen
The committed `coupled_trial_screen_2026-09-18.json` records complete controls
and immutable input paths. All heavy builds and numerical cases run serially.
Evidence is written to `diagnostics/coupled_trial_2026-09-18/` in the task
workspace; individual campaign directories are immutable.
Use the previously saved late eta0.03 direction, independently reapplying the
full Jacobian at the restored base before using it. This avoids conflating a
new linear solve with the new trial map. Test both raw and gravity-corrected
starting candidates at alpha1/16,1/64,1/256,1/1024. The middle two previously
prepared but failed the merit test. The largest failed pressure preparation;
the smallest already decreased the residual and must not trigger correction.
The seed control uses its saved eta0.03 direction and alpha1 with the
gravity-corrected path. Its candidate already passes; it should preserve that
result without auxiliary coupled work. Each frozen alpha is an independent
trial with a fresh per-iteration budget, not a simulated live line search.
Record inputs/factors/layout, F0,p,J0p, the actual auxiliary RHS and J(y)c,
candidate and returned state/residual vectors, true defects, norm-cap gates,
selection/fallback decisions, restoration invariants and complete work.
Useful frozen progress is a prerequisite for a bounded nonlinear campaign.
Any accepted model must also be checked for virial balance and internal
admissibility; a lower residual alone is insufficient.
## Result and present recommendation
The opt-in implementation is complete and tested. It creates a newly
Armijo-acceptable frozen candidate at alpha = 1/256 for both trial paths,
but does not establish a production convergence or speed improvement. Do not
enable it by default on the strength of these measurements.
The nominal fourfold increase over the previously accepted alpha = 1/1024
overstates the realized displacement. The coupled correction largely reverses
the original Newton direction. Its own nonlinear curvature is much larger
than the checked auxiliary linear error, and the useful candidate remains
internally nonphysical despite passing enthalpy-based virial checks.
Each frozen alpha has a fresh one-attempt budget. In a live search that spends
the default budget at the unsuccessful 1/64 trial, the later 1/256 trial
cannot use this correction. Thus these independent samples are not a measured
live line-search speedup. The existing seed protocol projects radial profiles
and regenerates fields and shape; it cannot faithfully resume the arbitrary
saved late state. No diagnostic mutation of accepted state was used to bypass
that restriction, and no new initialization API was added.
## Numerical results
The common late state has ||F0|| = 1.3966991043973936e-5 and the saved outer
direction again passes the full-J gate with relative defect 0.02955918315.
All four distinct auxiliary solves pass the independent 0.03 relative gate
and the norm cap. No auxiliary failure or relaxed acceptance threshold
explains the outcomes below.
| Prepared path | alpha | Before correction: ||F||/||F0|| | Corrected: ||F||/||F0|| | Selection | Auxiliary iterations | Added transaction time |
|---|---:|---:|---:|---|---:|---:|
| Raw | 1/64 | 1.80726810 | 1.03360191 | Improved, still fails Armijo | 34 | 27.33 s |
| Raw | 1/256 | 1.00250966 | 0.99746464 | Passes Armijo | 52 | 37.59 s |
| Gravity-corrected | 1/64 | 1.08032296 | 1.09566246 | Worse; original restored | 55 | 47.60 s |
| Gravity-corrected | 1/256 | 1.00202482 | 0.99810801 | Passes Armijo | 62 | 43.53 s |
At 1/16, both raw preparations fail at the pressure-force thermodynamic-domain
check, before any coupled solve. At 1/1024, the original candidates already
pass Armijo and receive no coupled solve: their residual ratios are
0.9991695118 (raw) and 0.9993941386 (gravity-corrected).
The Lane–Emden seed's gravity-corrected full step likewise remains acceptable
without a coupled solve. All frozen probes preserve accepted buffers,
normalization factors and direction buffers; the final residual and Jp at
the restored base agree exactly with the initially captured values.
Raw timings above come from the uncontended repeat. An initially launched
artifact audit accidentally rebuilt a gravity-index set for every vector
entry and overlapped the first raw case. It was stopped, the checker was
made linear in state size, and the raw case was repeated. Its trial vectors
and residuals reproduce the first run. The original evidence is retained;
its raw timing is excluded. All 50 saved vector files are byte-identical in
the repeat. See `AUDIT_RUN_NOTES.md` in the evidence folder.
The added times include refresh, solve, independent verification, candidate
preparation, and any fallback restoration. They do not include the original
trial preparation or captured base action. At 1/256 the full candidate-path
costs are 43.86 s (raw) and 63.45 s (gravity-first), versus 6.30 s and 18.59 s
for their already acceptable 1/1024 controls. Outer Newton work, previous
rejected trials, base capture and physical postprocessing are separate.
Timings are single observations, not statistical performance estimates.
## Why a verified solve does not ensure useful correction
For the actual candidate y, let b = L - F(y), delta = J(y)c - b and
E = F(y+c) - F(y) - J(y)c. The exact saved-vector identity is
F(y+c) - L = delta + E.
The auxiliary gate bounds delta. It does not bound E. At alpha = 1/256,
||E|| is about 11.28 times the verified defect for the raw path and 254 times
for the gravity-first path. For the two gravity-first attempts,
||E||/||c||^2 is 13.5756 and 13.5358; the raw 1/256 value is 13.5271.
This is evidence that the correction's own quadratic curvature, rather
than inaccurate solution of its linear equation, dominates its remaining
nonlinear error.
On the gravity-first path at 1/256, the affine-target remainder actually
grows from 8.87747e-8 to 6.23769e-7 (7.03 times), despite the improved merit.
The raw path reduces that remainder by about 3.165 times. Gravity completion
before the coupled solve therefore does not help this particular comparison.
The correction/direction cosines are -0.9999330 (raw) and -0.9999942
(gravity-first). The realized displacement norms at 1/256 are only 1.7596
and 1.2342 times their respective raw-direction 1/1024 displacement norms.
On the gravity-first path, ||c||/||b|| increases from 480.8 to 2418.1 when
alpha decreases fourfold. These samples do not demonstrate a stable small
second-order correction regime. They do not identify a null mode either.
Tightening the auxiliary tolerance is consequently a weak next target.
Near collinearity is insufficient to conclude that scalar damping is
equivalent: small transverse displacements can have large Jacobian action.
The final scalar controls below address that attribution directly.
## Matched scalar controls
For each selected 1/256 candidate z, compute
t = dot(z-x,p)/dot(p,p), then freshly prepare x+t*p through the existing
`--replay-candidate` path. The input generator validates and hashes the
source artifacts before writing normalized candidates. No new linear solve,
repair, or acceptance threshold is introduced.
| Coupled candidate being matched | Scalar t | Scalar ||F||/||F0|| | Coupled ||F||/||F0|| | Scalar residual decrease | Coupled residual decrease |
|---|---:|---:|---:|---:|---:|
| Raw + coupled | 0.00171818301767 | 0.9988437736 | 0.9974646400 | 0.115623% | 0.253536% |
| Gravity-first + coupled | 0.00120521815790 | 0.9990306561 | 0.9981080052 | 0.096934% | 0.189199% |
Both scalar controls prepare and pass the ordinary Armijo criterion at t.
Their normalized base and full base residual reproduce the coupled screen
byte for byte. The replay uses the independent preconditioner configuration
because that is the existing replay interface; no inverse or linear solve is
used in evaluating these candidates. The equation operator and normalization
are the same. The campaign executable is byte-identical to both screens.
The coupled candidate produces 2.19 times the residual decrease of the
matched scalar control on the raw path, and 1.95 times on the gravity-first
path. Thus the small transverse changes have measured nonlinear benefit.
The result cannot be dismissed as scalar damping alone, but it is a small
absolute gain bought with an extra full coupled solve. This does not measure
an entire Newton iteration or prove amortized speedup. The scalar replay
records preparation and residuals; it is not an additional physical-model
certification or quadrature study.
The next bounded question is whether damping or otherwise limiting the
already computed correction can retain this transverse benefit while
reducing its own nonlinear curvature, using additional preparations instead
of additional full solves. Test that together with a work-aware attempt
trigger; simply increasing the attempt budget can spend multiple outer-solve
equivalents on rejected candidates. Keep normalization, equations, physical
validation and true-defect gates fixed during that comparison. This follow-up
is not implemented here.
## Physical validation
Every available selected state is freshly prepared and evaluated at
quadrature orders 14 and 18, using the existing field reconstruction,
rotation, Piola transforms and physical diagnostics. This postprocessing is
separate from timed trial selection and does not change acceptance.
At alpha = 1/256 and quadrature order 18:
| Quantity | Raw + coupled | Gravity-first + coupled |
|---|---:|---:|
| Enthalpy-pressure energy virial error | 4.05889e-6 | 4.06134e-6 |
| Enthalpy-pressure force virial error | 2.56495e-6 | 2.56840e-6 |
| Absolute mass error | 3.13178e-6 | 3.13420e-6 |
| Angular momentum Jz | 0 | 0 |
| Minimum sampled density | -8.28793e-4 | -8.24696e-4 |
| Negative density samples | 9600 | 9600 |
| Negative-density mass fraction | 2.89684e-5 | 2.89654e-5 |
| Scaled EOS density mismatch RMS | 1.28264e-4 | 1.28231e-4 |
Enthalpy-pressure virial errors are below 1e-5, with order-14 to order-18
differences near 1.83e-9. However, pressure inferred from the negative density
is undefined for this EOS, so the corresponding density-pressure virials
are undefined too. A finite enthalpy-pressure virial is not a substitute for
internal admissibility or pointwise EOS agreement. Negative-density volume
fractions also change with quadrature (about 2.83% to 1.87% on the
gravity-first candidate). No internally correct, converged stellar model,
continuum accuracy, or mesh-convergence claim follows from this trial.
## Tests and reproduction
- The Release `tests` and `plateau_diagnostic` targets build successfully.
- Fifteen focused correction/transaction cases pass in serial (584
assertions) and on two MPI ranks (586 assertions per rank). These include
analytic mixed curvature, a lying backend, bounded real FGMRES failure,
norm caps, stale preparation, zero remainders, nonfinite/overflow handling,
empty-rank collectives, budgets, rollback and exceptions.
- Thirty-five relevant stellar/Newton/gravity regression cases pass with
356,933 assertions, including typed polynomial composition, optional
borders, original-report preservation and observer/rollback behavior.
- The independent checker passes 27 synthetic tests. The completed screen
and uncontended repeat pass artifact, provenance and physical-replay
consistency checks. Its observational mechanism statistics distinguish
the checked linear defect from the correction's own nonlinear remainder.
Their final audits pass 2,105 and 885 checks; the separate scalar-control
audit passes 68 hash, projection, shared-base and replay checks.
- Full stellar MPI operation remains outside this validation; its existing
interpolation restriction is unchanged.
Evidence root:
`/Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/coupled_trial_2026-09-18`.
`tests_provenance.json` records the test executable and log hashes. The
campaign directories contain complete commands, source revisions, immutable
executables and hashes of mesh, inputs and outputs. All three campaign
executables are byte-identical (SHA256 begins `620d625636bc77b1`).
Source checkpoints: implementation `0d87b8b`; initial campaign/checker
`2d0d32b`; checker fix and raw timing repeat `5aa48dc`; scalar-control
generator `0c926f4`. The original checkout and its unrelated quadrature
formatting change are preserved.
From this worktree, reproduce the initial screen with
`experiments/run_plateau_campaign.py`, the committed
`coupled_trial_screen_2026-09-18.json`, the configured Release build,
`sandbox.smesh`, and a new output directory. Use
`coupled_trial_raw_repeat_2026-09-18.json` for the raw repeat. Run
`check_coupled_trial.py CAMPAIGN --output OUTSIDE_CAMPAIGN.json` afterward.
`make_coupled_scalar_controls.py SCREEN FRESH_OUTPUT` generates the two
normalized scalar inputs and `cases.json` for the existing campaign runner.
All runs use one FEM rank; the seed and outer direction inputs are saved
from the preceding investigation and are hashed into the new evidence.