Preserve bounded validation evidence and historical failures
This commit is contained in:
1 parent
cdbb9c42f6
commit
263f3b0c7a
239 files changed
+74191
No files matched your search
@@ -0,0 +1,115 @@
|
||||
Shear diagnostic v0.2 — Horsea review and single bounded run
|
||||
2026-10-13 (Asia/Shanghai); completed 13:02:45 local time.
|
||||
|
||||
Result: exit 0; N_BOOLEAN_HARD_CHECKS=22; ALL_HARD_CHECKS_PASS=True.
|
||||
The delivered script ran exactly once: 7 runs, 32 coarse steps each. No extra
|
||||
cases, tests, retries, algorithm edits or tolerance changes were performed.
|
||||
The original script, Grok output, joint report and source manifest are retained
|
||||
byte-for-byte. The reference remains the pinned CPUREF-0.3 original.
|
||||
|
||||
Review before execution
|
||||
Read the complete 790-line script, joint report, Grok output, input manifest
|
||||
and existing reference. Followed .github/skills/lbm-ref-architecture-guard/
|
||||
SKILL.md and its discovery/architecture checklists. No applicable AGENTS.md
|
||||
was found on the workspace/test-directory ancestor chain. No numerical issue
|
||||
blocks this fixed-scope rerun; this is Horsea's own review, not the Mac review.
|
||||
|
||||
Reference findings (local files read only; no external package execution):
|
||||
1. ref/lbmpy/src/lbmpy/relaxationrates.py: lattice nu=(tau-1/2)/3.
|
||||
2. ref/OpenLB/src/core/unitConverter.h: physical nu=lattice nu*dx^2/dt.
|
||||
With dx_f=dt_f=1/2, tau_c=.8 and tau_f=1.1 both give physical nu=.1;
|
||||
the lattice velocity conversion is unchanged and B needs two fine steps.
|
||||
3. ref/lbmpy/tests/full_scenarios/shear_wave/scenario_shear_wave.py:
|
||||
periodic modes decay as exp(-nu*|k|^2*t); log-amplitude fits estimate
|
||||
decay. This supports the diagnostic, not an accuracy threshold here.
|
||||
4. ref/lbmpy/tests/test_shear_flow.py: the second moment needs the convective
|
||||
contribution and relaxation correction considered before stress comparison.
|
||||
The supplied global Pi_xy mean is not used as stress evidence.
|
||||
5. Existing cpu_reference.py: arrival_f input/output, tick advances by 2,
|
||||
two fine hops, one coarse ghost explosion, closed-corner coalescence.
|
||||
Reviewed full source and confirmed the unchanged hash before execution.
|
||||
|
||||
Architecture/scope: script main -> run_uniform(B/C), run_composite(A/A_T) ->
|
||||
reference advance_coarse_once -> existing collision/hops/coalescence. Observation
|
||||
restricts rho and j to the same 16x16 coarse cells before dividing to obtain u.
|
||||
All observations are arrival_f. Exact cell-average sine velocity includes sinc
|
||||
and the patch coordinate offset; equilibrium of that velocity is not the exact
|
||||
cell average of nonlinear equilibrium populations. Fit 4..32 means coarse steps
|
||||
(reference ticks 8..64), despite the legacy PER-TICK table heading.
|
||||
Only the new script and this evidence directory are in scope. No src, existing
|
||||
test, strategy document, old evidence, reference or DynamisLab changes.
|
||||
|
||||
Nonblocking limits: composite conservation uses the reference's _leaf_totals;
|
||||
this diagnostic is not a fresh independent conservation implementation. The
|
||||
uniform solver has an unused intermediate equilibrium calculation; it does not
|
||||
change its returned values. Retained both without cleanup to preserve delivery
|
||||
bytes. The explicit CPU_REFERENCE_PATH is required in this layout because the
|
||||
script's default filename is cpu_reference_v0.3.py.
|
||||
|
||||
Execution evidence
|
||||
results_horsea.json records the exact complete parent/child argv, cwd, process
|
||||
environment, versions, timestamps, hard limits, exit code and measured memory.
|
||||
run_once.py is the stdlib-only recorder, not another numerical test. It refuses
|
||||
existing execution logs/results and checks the script/reference hashes and hard
|
||||
limits before launching. Both it and the child ran through existing prlimit:
|
||||
address space 268435456 bytes (soft=hard)
|
||||
file size 2097152 bytes (soft=hard), core 0
|
||||
OPENBLAS_NUM_THREADS=1, PYTHONDONTWRITEBYTECODE=1, PYTHONNOUSERSITE=1.
|
||||
PYTHONPATH is this exact multigrid directory; CPU_REFERENCE_PATH is its exact
|
||||
cpu_reference.py. PYTHONOPTIMIZE=0 keeps assertions enabled. No global changes.
|
||||
Existing Python 3.10.13 / NumPy 1.26.4; no dependency installation.
|
||||
Start/end UTC: 05:02:42.804589 / 05:02:45.056308 on 2026-10-13.
|
||||
Child wall time 2.237032 s; peak child RSS 37.69140625 MiB, parent 18.75 MiB.
|
||||
Combined stdout/stderr plus recorder metadata: 11421 bytes, below 2 MiB.
|
||||
No CelerisLab, Simulation or pycuda imports; no production/GPU/SSH/system work.
|
||||
|
||||
Comparison with Grok
|
||||
HARD CHECKS and SUMMARY_LINES blocks match exactly at printed precision.
|
||||
All 22 individual Boolean values were parsed and matched, and checked against
|
||||
the printed list of 22 names. All 33 summary values match; all printed numeric
|
||||
differences in these two blocks are zero. See comparison.json for each value.
|
||||
This is not a claim of full-precision field or whole-stdout byte equality;
|
||||
reference path, runtime and recorder metadata are environment-specific.
|
||||
|
||||
lambda per coarse step:
|
||||
A phi0 0.0158522189
|
||||
A phi(pi/2) 0.0158419175
|
||||
B both 0.0153991657
|
||||
C both 0.0155497331
|
||||
analytic 0.0154212569
|
||||
Conservation mass drift <=8.242e-13, momentum drift <=1.690e-13, versus
|
||||
unchanged mass-scaled tolerance 2.560e-10. Transpose error 6.661338e-16
|
||||
passes 1e-15. Initial matches and all finite-state checks pass unchanged.
|
||||
|
||||
Interpretation qualifications to the preserved joint report
|
||||
The ~2.94% / ~2.88% excess decay relative to B is a diagnostic observation
|
||||
over this fixed window, not a hard-threshold failure. A good exponential fit
|
||||
over steps 4..32 does not establish longer-time persistence or exclude all
|
||||
initialization effects. Symmetry cancels the global Pi mean; it is not stress
|
||||
transfer evidence. Time-held ghost supply and unscaled nonequilibrium copying
|
||||
are candidate explanations, not an exhaustive set or an identified mechanism.
|
||||
In particular, a negative time-interpolation result would not establish the
|
||||
other candidate by elimination. Original joint_report.md remains unchanged.
|
||||
|
||||
Next minimal verification — specification only, not implemented or run
|
||||
First specify a phase- and unit-matched local shear observation on the same
|
||||
7-run/32-step setup: arrival_f Pi_xy^neq=sum(cx*cy*f)-rho*ux*uy, restricted
|
||||
with consistent volume weighting and the appropriate relaxation/unit conversion.
|
||||
Measure a cosine shear-mode projection and signed profiles on both sides of
|
||||
the patch faces, with B/C as controls; avoid cancellation by a domain mean.
|
||||
Keep all 22 checks, initialization and fit window fixed. Report differences
|
||||
without inventing a pass/fail stress threshold. This can test localization and
|
||||
phase structure, but does not alone prove causation.
|
||||
Before any later time-interpolated-ghost variant, jointly specify the available
|
||||
donor time levels, arrival_f/postcollision_g phase, interpolation order and flux
|
||||
accounting. Coarse g(t+1) is unavailable before the present fine hops; silently
|
||||
reordering the step or using unspecified future data would confound that test.
|
||||
No such variant, new observation code or reference continuation is part of this run.
|
||||
|
||||
Audit
|
||||
baseline.json freezes HEAD, Git status and 281 existing file hashes before any
|
||||
input extraction. Its scope includes tracked/nonignored project files and the
|
||||
prior baseline's ignored records; excludes the read-only ref tree and bytecode.
|
||||
manifest.json records final old-file/input/reference verification and every new
|
||||
file's path, bytes and SHA256, except its own hash reported in the handoff.
|
||||
No commit or push. Stopped for joint acceptance.
|
||||
Reference in new issue
Block a user