CKnights OpenFOAM Wall-Climb

A visual research explainer for what we are trying to prove, what has worked, and where the current evidence boundary is.

Updated 2026-06-09T10:24Z Raw FoamFile routes work Measured 2.20x timing signal Reduced lane found Native parity blocked

North Star

Native BaselineIdeally 5-10 minutes or longer in OpenFOAM.
LEEP CandidateSame or scorecard-equivalent physics contract.
Measured SpeedWall-clock and candidate timing, not just intuition.
Measured ErrorScorecard error or direct field comparison.
Lifecycle EvidenceRun id, status, result, backend, phase, timing.
We now have two lanes: native parity is blocked by reduced state, while a reduced-contract observable lane is promising. Interior Ux excluding wall-adjacent cells has 0.00648% relative L2 error.

1.0.2++ Client Lifecycle

/aboutDiscover contract and version.
/public/readinessCheck OpenFOAM and lifecycle gates.
POST /openfoam/runsSubmit raw .tar.zst bundle.
/runs/{id}/statusPoll lightweight status.
/runs/{id}/client-resultFetch client-facing result.
evidence routesFetch fields/artifacts only after completion.
H1

Fast Lifecycle Works

Supported. Public readiness is live, and named OpenFOAM runs expose manifest, fields, and raw FoamFile routes.

H2

External Uploads Can Scale

Partially supported. Full cell-count raw exports exist for 240, 384, and 24,450-cell examples, but final-field correctness still fails on our exact canary.

H3

Native Comparator Works

Supported. Fresh local native-vs-native control gives exactly 0.0% relative L2 for U, p, and phi.

Boundary Map

Validated This Loop

  • Raw field route returns FoamFile bytes with SHA headers.
  • 240-cell smoke U field returns vector count 240.
  • 384-cell client U field returns vector count 384.
  • 24,450-cell pitzDaily U field returns vector count 24450.
  • Local native Docker canary exits 0.
  • Fresh 41,472-cell native run took 72.863s and self-compared at 0.0%.
  • Controlled CKnights retest returned full export 41472/41472.
  • LEEP candidate wall was 33.065s, about 2.20x faster than local native.
  • Mismatch localized: candidate fields are full-sized but semantically reduced.
  • Artifact forensics found openfoam_dropin.sqlite with full-size reduced tiles.
  • Reduced observable found: interior Ux error 0.00648%.

Current Failure / Caveat

  • Controlled 41,472-cell retest final field comparison fails at time 1.
  • Candidate U is x-only over a clipped contiguous region.
  • Candidate p is all zero in the DB tile before export.
  • Candidate phi is sparse/binary rather than native high-cardinality flux.
  • Do not promote speedup from manifest readiness or estimated timing alone.

Reduced-Contract Lane

Observable Result Claim Boundary
Interior Ux0.00648% relative L2 over 38,016 cellspromising reduced observable
Candidate wall time33.065s vs native 72.863sabout 2.20x timing signal
Wall-adjacent Ux100.0% relative L2must be excluded or fixed
Pressurecandidate zero; native max abs 3.02e-10absolute tolerance only, not relative parity
Flux distributionsorted phi error 0.0208%; native 80,119 unique values vs candidate 2aggregate distribution only, not face-field parity
Reduced-contract verdict: useful for selected observables, especially interior axial velocity. This is a separate benchmark lane, not a native OpenFOAM replacement claim.

Mismatch Diagnosis

Field Native Shape Candidate Shape Interpretation
Unonzero support across all 41,472 cellsx-only support across 38,016 contiguous cellscomponent/region writeback mismatch
p41,472 nonzero values0 nonzero valuespressure not materialized as native-comparable field
phi120,672 values, 80,119 unique values120,672 values, 2 unique valuesreduced/binary flux support, not native face flux
Converged diagnosis: candidate_reduced_state_or_writeback_contract_mismatch. This explains the useful timing signal without allowing a native OpenFOAM parity claim.

Artifact Forensics

Evidence Observed Meaning
openfoam_dropin.sqlitefull-size tiles at step 1candidate state is inspectable before FoamFile export
pressure tile0 / 41,472 nonzeropressure missing upstream of public field route
velocity_y/z tiles0 / 41,472 nonzerocross components missing upstream of export
velocity_x tile38,016 / 41,472 nonzero; z planes 1..22 onlyinterior-support reduced velocity state
mesh.datcell count 41,472; face addressing completeserial mesh materialization exists
Updated diagnosis: candidate_reduced_state_precedes_foamfile_export. Next work should target provider/runtime state semantics, not another raw-field-route retry.

Raw Field Route Evidence

Run Gate Backend Raw Field Checked Internal Count Verdict
smoke pimpleFoamwritten 240/240metalfields/0.1/U240FoamFile + SHA
fresh 2m pimplewritten 384/384metal-residentfields/7.2/U384FoamFile + SHA
pitzDaily full fieldwritten 24450/24450pythonfields/0.02/U24450FoamFile + SHA

Local Native Control

CheckResultValue
Fresh native Docker canaryexit 03.186s
Native-vs-native Ucomparable0.0%
Native-vs-native pcomparable0.0%
Native-vs-native phicomparable0.0%
Fresh 41,472-cell native rungexit 072.863s
41,472-cell native self-controlU/p/phi pass0.0%

Artifacts: native-openfoam-runs/20260609T_docker_canary_rerun3_240cells and native-openfoam-runs/20260609T_refined_pimple_fixed_runner_41472cells.

Controlled CKnights Retest

The exact 41,472-cell retest has full raw export and a positive timing signal, but final values fail. This quarantines the speedup claim.
MetricValue
Full export41472/41472
Local native wall72.863s
LEEP candidate wall33.065s
Measured timing ratio~2.20x
U relative L2 error28.848%
p relative L2 error100.000%
phi relative L2 error117.273%

Provider Scorecard Context

Witness Native OpenFOAM LEEP Production E2E Speedup Max Error Mean Error
momentum_120s_icofoam481.3s5.663s84.995x13.270%2.178%
momentum_20min_icofoam5078.9s1.918s2647.744x3.248%1.697%
scalar_120s_fullfield1709.2s66.346s25.762x6.583%3.508%
scalar_20min_tuned12812.7s113.911s112.480x6.386%3.189%

Next Actions

  1. Do not rerun the 72.86s archive again without a new hypothesis or provider/runtime change.
  2. Require candidate_field_export.status=written and stored_cell_count == case_cell_count.
  3. Create an explicit reduced-contract eval for interior Ux, aggregate flux, pressure absolute tolerance, transverse absolute tolerance, and wall exclusion.
  4. Keep native OpenFOAM parity as a separate lane requiring full final U/p/phi equivalence.
  5. Only after correctness passes should we scale to the requested 5-10 minute native OpenFOAM benchmark.