The evidence behind the number.

One command. Three files.

$ courant attest ./my-case --context-of-use use.txt wrote  attest_report.jsonwrote  attest_report.pdfwrote  inputs.manifest
attest_report.json
The assessment as data. The only place a number lives.
attest_report.pdf
The same assessment, as the document a reviewer reads.
inputs.manifest
Every file read, its SHA-256, and the exact command.

Eight sections, in the reviewer’s order.

  1. 01SummaryThe grade, the rule that produced it, the reported value.
  2. 02Context of useWhat the result decides, in your words.
  3. 03ModelSolver, turbulence, schemes, mesh, boundaries.
  4. 04VerificationConvergence and discretization error.
  5. 05ValidationComparison with the reference.
  6. 06Setup and applicabilityAll twelve rules, with status.
  7. 07Not assessedEvery check that could not run, and why.
  8. 08AppendixEvery threshold, every value, the manifest.

Checkable without trusting us.

REG.MESH_QUALITYPASS

Mesh quality

Inputs
checkMesh · pitzDaily
Method
Max non-orthogonality and skewness, against thresholds
Threshold
70° · 4.0
Value
5.95° · 0.26

simpleFoam · pitzDaily · OpenFOAM v2406 · read from the certification corpus · sha256 30b05aa353e42dc8

Every finding carries these four. A reviewer checks any of them against the case without asking us.

What holds on every pack.

Reproducible
To the byte, from the manifest.
No model numbers
A language model drafts prose. Never a number.
Redacted copies
Share it without the geometry.
Not assessed, verbatim
Every check that could not run and every missing input, stated in fixed words.
Verify
courant attest --verify re-runs the assessment and reports any difference.

Send a result that has to hold up.

The credibility report for ASME V&V 40 and NRC review. Reproducible to the byte.