Independent verification of nine published studies
Every number on nine published report pages was recomputed from the frozen raw artifacts by code that cannot see the code being checked. One published figure did not survive.
Verdict
ONE FINDING IN 431 CHECKED CLAIMS
Three records disagreed, all in the molded-fiber cushioning tray study and all from a single mechanism: published days-to-failure were reported at grid points rather than at the model crossing.
For the uncoated tray the published figure overstates time to failure by 6.8 times. The other 428 records agree or are recorded as not independently derivable.
The verifier is forbidden from seeing the work it checks
A checker that imports the code it audits will agree with it. That agreement measures nothing.
So the rule here is structural: the verifier never imports production source, never reads a project's own results file as an input to its own computation, and never copies a production formula. It re-derives from the lowest-level frozen artifact, or it reports the claim as not independently derivable.
The rule is enforced by code rather than by instruction. An import-graph scan runs across every claim source, a provenance gate checks formula origin, and a mutation test requires that a deliberately corrupted production formula must not move the verifier's number.
Where the rule binds hardest is the third class of study. Those verifications read declared input literals from the project, because that is what the class means, but re-implement every equation from the cited literature.
Nine studies, three classes, 431 records
Class 1 studies carry an external frozen dataset. Class 2 studies re-derive from raw instrument or solver output. Class 3 studies are fed the same declared inputs and checked against independently implemented equations.
| Study | Class | Records | Agree | Disagree | Not derivable |
|---|---|---|---|---|---|
| Adsorption BDST | 1 | 61 | 61 | 0 | 0 |
| SECOM yield analysis | 1 | 79 | 20 | 0 | 59 |
| Packed-column flooding | 1 | 19 | 13 | 0 | 6 |
| Gage R&R | 2 | 38 | 38 | 0 | 0 |
| Reliability qualification | 2 | 52 | 47 | 0 | 5 |
| Molded-fiber cushioning tray | 2 | 65 | 62 | 3 | 0 |
| Van de Vusse reactor | 3 | 49 | 41 | 0 | 8 |
| Pinch heat integration | 3 | 21 | 21 | 0 | 0 |
| Green hydrogen techno-economics | 3 | 47 | 40 | 0 | 7 |
The adsorption BDST study is the only one with a complete independent derivation and no residue: 61 of 61 claims re-derived and agreeing.
The SECOM study's 59 non-derivable records are not a weakness discovered late. They depend on a frozen model split and trained estimators, so they are claim-checked rather than recomputed, and counted as such.
The finding: a published number quantized to its own plot grid
The molded-fiber cushioning tray study publishes the day on which a molded-fiber pocket swells past its 1.0 mm specification: 0.8 days uncoated, 3.8 days with a PLA liner, 11.3 days with wax.
The frozen diffusion model crosses 1.0 mm at 0.111, 3.08 and 11.24 days. The published values are not those crossings. They are the first points of a 120-step evaluation grid at or after each crossing.
The grid step is 90/119 days, and the three published values are exactly 1, 5 and 15 steps. Those exact rationals are what pin the mechanism: this is not a transcription slip but a systematic quantization, and the same arithmetic reproduces all three.
| Coating | Published | Model crossing | Grid steps |
|---|---|---|---|
| Uncoated | 0.8 days | 0.111 days | 1 step, 90/119 |
| PLA liner | 3.8 days | 3.08 days | 5 steps, 450/119 |
| Wax | 11.3 days | 11.24 days | 15 steps, 1350/119 |
The consequence is uneven. For wax the quantization is cosmetic. For the uncoated tray it overstates survival time by 6.8 times, and that is the direction that matters for a shelf-life claim.
The rest of that study reproduces exactly. Every structural claim checks out, including the 52,200-element production mesh under every case deck. The finding is narrow and it is real.
Two discrepancies that did not change a verdict
The reliability qualification's bootstrap bounds could not be reproduced, and the project said so first. The published 90 percent lower bounds are recorded as not independently derivable because the bootstrap seed was never written down. An independent resampling lands below the published spread, which is consistent with the project's own statement that the bound is not method-robust.
What matters is that the load-bearing claim survives. Every independent bound also falls below the acceptance criterion, so the conclusion does not depend on the exact number.
The Van de Vusse reactor study uses three activation energies that carry no citation. They are labelled as a scenario assumption. The verifier records this rather than sourcing it, because an uncited constant cannot be checked against anything: a wrong value would pass silently. Saying so is the only honest available result.
The checks were tested by breaking the code on purpose
A verification that reports no problems is worthless until it is shown capable of reporting one. Thirteen faults were injected into copies of the projects, and each had to be caught by a named detection.
| Injected fault | Study | Result |
|---|---|---|
| Fill in the 18 missing held-out observations | Adsorption BDST | Caught |
| Substitute the stated geometry for the implied one | Adsorption BDST | Caught |
| Reverse a qualification sentence | Adsorption BDST | Caught |
| Soften the verdict from 20 to 10 percent | Adsorption BDST | Caught |
| Attach a licence the artifact does not carry | SECOM yield analysis | Caught |
| Exit successfully while writing nothing | Adsorption BDST | Caught |
| Ship a stale page that no longer matches its inputs | Adsorption BDST | Caught |
| Swap a symbol, keep the number correct | Adsorption BDST | Caught |
| Change a denominator, keep the numerator | SECOM yield analysis | Caught |
| Replace an assertion with one that cannot fail | Adsorption BDST | Caught |
| Corrupt an injected-truth recovery | Reliability qualification | Caught |
| Break mesh-to-claim correspondence | Molded-fiber tray | Caught |
| Change an input literal, leave the page unchanged | Van de Vusse reactor | Caught |
Thirteen of thirteen were caught. The column that carries the weight, though, is the one measuring the opposite: each detection was also run against an unmutated copy, where it had to stay silent. A check that fires on clean code is not detecting the fault.
That control earned its place. One detection had previously been recorded as passing while it was structurally incapable of failing: the sweep it relied on excluded the very directory holding the mutated copy, so it always reported nothing, and the test asserted that nothing was absent from an empty list. Re-running with the control in place showed the fault had in fact survived.
What was checked, and against what
| Studies verified | Nine, spanning three verification classes |
| Claim records | 431 checked; 343 agree, 3 disagree, 85 not independently derivable |
| Independence | Enforced by import-graph scan, provenance gate and mutation test |
| Fault injection | 13 mutations, 13 caught, every detection cleared by a no-op control |
| Source access | Read-only mounts of each project's frozen artifacts |
| Finding | Molded-fiber cushioning tray, records F-083 and F-084; the second pins the quantization mechanism |
What this means
The arithmetic on these nine studies holds. After four prior audits that is the expected result, and it is not the interesting one.
The risk that remains sits in prose and in derivability, not in calculation. A page can render a faithful number that answers a different question than the sentence around it claims, which is exactly the shape of the one finding here.
The 85 not-derivable records are the honest measure of the method's reach. They are not failures, and they are not passes. They mark where an independent check was impossible, and reporting them as anything else would misstate what verification can do.