{"id":"round4-elastic-correction-results-amendment","title":"Round-4 Elastic Correction — Results and Preregistration Amendment","subtitle":"Confirmatory fail (0/4, 0/1) with the post-lock violation recorded void and repaired; B0 descriptive-only; zero verdict changes.","category":"validation","tags":["round-4","elastic","preregistration","amendment"],"source":"articles/docs/plans/2026-07-19-round4-preregistration-amendment.md","lang":"en","words":853,"readMinutes":4,"toc":[{"depth":2,"text":"1. Violation: analysis tool implemented after the candidate lock","id":"1-violation-analysis-tool-implemented-after-the-candidate-lock"},{"depth":2,"text":"2. Repair: execution binding named the wrong jobs; per-cell image digest null","id":"2-repair-execution-binding-named-the-wrong-jobs-per-cell-image-digest-null"},{"depth":2,"text":"3. Correction: B0 removed from the confirmatory denominator","id":"3-correction-b0-removed-from-the-confirmatory-denominator"},{"depth":2,"text":"4. Rescope: perovskite elastic constants are exploratory-only","id":"4-rescope-perovskite-elastic-constants-are-exploratory-only"},{"depth":2,"text":"5. Effect on the registered outcomes","id":"5-effect-on-the-registered-outcomes"}],"html":"<h1 id=\"round-4-preregistration-amendment-post-lock-repairs-2026-07-19\">Round-4 preregistration amendment — post-lock repairs (2026-07-19)</h1><blockquote>\n<p><strong>Status:</strong> AMENDMENT to <code>2026-07-14-round4-preregistration.md</code>, dated\n2026-07-19, after Round-4 measurement artifacts existed. The frozen\nregistration is not rewritten and cannot be rescued retroactively; this\namendment records three registration defects found in pre-review, the\nconcrete repair applied to each, and the exact scope of every resulting\nchange to the analysis outputs. Raw measurement artifacts\n(<code>data/candidates/round4/cloud_artifacts/**</code>) are hash-locked evidence and\nare byte-identical before and after this amendment.</p>\n</blockquote>\n<h2 id=\"1-violation-analysis-tool-implemented-after-the-candidate-lock\">1. Violation: analysis tool implemented after the candidate lock</h2><p>Preregistration §5 required the v2 analysis implementation to be &quot;committed\nand tested BEFORE the evaluation set is locked&quot;. The evaluation set was\nlocked 2026-07-17 (<code>data/candidates/round4_targets.lock.json</code>, SHA-256\n<code>b7562637c860b15b92f64659f0b063bc6d2b6c0c12899e21f370359cccb914f1</code>). The\nanalysis tool that executed the campaign, <code>tools/round4_cloud_campaign.py</code>,\nwas implemented and first committed on 2026-07-19, after the lock and after\nthe measurements. This is a preregistration violation; the Round-4 analysis\nwas not, in fact, frozen before evaluation data existed.</p>\n<p><strong>Mitigation (fix-forward, not absolution):</strong> the tool is now committed on\nthe campaign branch with the repository test suite green, so the analysis is\nat least reproducible and reviewable from this point. The measurement\nresults it produced are immutable: all 64 per-cell result artifacts are\nSHA-256-addressed in <code>data/candidates/round4/report.json</code> and re-verify\nbyte-for-byte, and both measurement rows form an intact hash chain over the\nreport and campaign-manifest hashes. The tool therefore cannot have been\ntuned against undisclosed intermediate states without detection from here\nforward, but the pre-lock freeze §5 promised did not happen and is recorded\nas void.</p>\n<h2 id=\"2-repair-execution-binding-named-the-wrong-jobs-per-cell-image-digest-null\">2. Repair: execution binding named the wrong jobs; per-cell image digest null</h2><p>The campaign&#39;s endpoint receipt embedded the frozen endpoint lock\n(<code>gcp/mlip-cell-runner/round4_endpoints.lock.json</code>), which names the shared\npre-round jobs (<code>mlip-cell-chgnet</code>, <code>mlip-cell-mace-mp-small</code>,\n<code>mlip-cell-mace-mp-medium</code>, <code>mlip-cell-mace-mpa-0-medium</code>). The Round-4\nmeasurements did not run on those jobs. Per the captured execution receipt\n(<code>data/candidates/round4/execution-receipt.json</code>, run\n<code>correction-round4-20260719</code>), they ran on isolated Round-4 jobs:</p>\n<ul>\n<li><code>mlip-cell-chgnet-round4</code> (execution <code>mlip-cell-chgnet-round4-8bbp8</code>),\nimage <code>mlip-cell-chgnet@sha256:6a443b3817f9c2e580e1eeefddc1a032efb00fd785b377fa526039b3f4130617</code></li>\n<li><code>mlip-cell-mace-round4-mp-small</code> (execution <code>mlip-cell-mace-round4-mp-small-k94mk</code>),\nimage <code>mlip-cell-mace-round4@sha256:37b83d134c8e20e8f26603b50a4e8b0b4359632c2e2b2b2bc1dc553716315b53</code></li>\n<li><code>mlip-cell-mace-round4-mp-medium</code> (execution <code>mlip-cell-mace-round4-mp-medium-mmcjq</code>),\nsame MACE image digest</li>\n<li><code>mlip-cell-mace-round4-mpa-0-medium</code> (execution <code>mlip-cell-mace-round4-mpa-0-medium-6979j</code>),\nsame MACE image digest</li>\n</ul>\n<p>Both digests equal the immutable image digests recorded in the frozen\nendpoint lock, so the measured binaries are exactly the locked ones; only\nthe job names in the receipt were wrong. Separately, every hash-locked cell\nartifact carries <code>execution.runner_image_digest: null</code> — the runner did not\nrecord its own digest at capture time. Because those artifacts are\nhash-locked, the null cannot be repaired in place.</p>\n<p><strong>Repair applied:</strong> <code>report.json</code> now carries a <code>measurement_binding</code>\nsection binding each registered model to its isolated job, execution name,\nand measurement-time image digest (each flagged against the endpoint-lock\ndigest), alongside the untouched endpoint lock and execution receipt. The\nlive Cloud Run jobs have since been redeployed with <code>z1-barrier-20260719</code>\ntagged images for the Z1 campaign (verified read-only via\n<code>gcloud run jobs describe</code>, 2026-07-19); current live state is NOT the\nmeasurement binding and is recorded nowhere as such. Both locked digests\nremain present in Artifact Registry (verified 2026-07-19), so replay against\nthe exact measured binaries stays possible.</p>\n<h2 id=\"3-correction-b0-removed-from-the-confirmatory-denominator\">3. Correction: B0 removed from the confirmatory denominator</h2><p>Preregistration §5 states &quot;B0 concordance remains descriptive-only (errata\nfinding 4)&quot;. The executed analysis nonetheless computed group verdicts over\nall five properties, counting B0 in the 2/3 confirmatory denominator for\nboth groups. <strong>Repair applied:</strong> <code>tools/round4_cloud_campaign.py</code> now tags\nevery group/property summary with a disposition and computes group verdicts\nover confirmatory properties only. B0 is still measured, corrected, and\nreported — descriptively, with its scope note attached.</p>\n<h2 id=\"4-rescope-perovskite-elastic-constants-are-exploratory-only\">4. Rescope: perovskite elastic constants are exploratory-only</h2><p><strong>Rationale.</strong> The elastic instrument measures clamped-ion finite\ndifferences (±0.5% strain) on cells isotropically scaled to the nearest\nsealed 2.5%-spaced volume, then compares against relaxed or experimental\nreferences. For the perovskite group this is not a defensible confirmatory\ncomparison: when a model&#39;s equilibrium a0 sits between probe volumes the\nconstants are evaluated on a strained cell — up to 1.25% from the model&#39;s\nown equilibrium — and no internal relaxation is applied, while the\nreferences are relaxed (JARVIS OptB88-vdW) or experimental. The resulting\nerror is dominated by the instrument&#39;s volume mismatch and clamped-ion\napproximation rather than by the correction law under test, so a win or loss\non these cells would not evidence the registered hypothesis either way.</p>\n<p><strong>Repair applied:</strong> perovskite C11/C12/C44 summaries are marked\n<code>exploratory</code> in the analysis and excluded from confirmatory statistics;\ntheir numbers remain in the report verbatim with the scope note attached.\nRocksalt elastic constants are unaffected and remain confirmatory.\n<strong>Follow-up:</strong> task <code>round4-elastic-relaxed-recompute</code> — re-evaluate\nperovskite elastic constants at each model&#39;s own relaxed equilibrium volume\nwith internal relaxation enabled before any confirmatory use of these\nproperties (tracked in <code>RESEARCH_COMMAND_CENTER.md</code>).</p>\n<h2 id=\"5-effect-on-the-registered-outcomes\">5. Effect on the registered outcomes</h2><p>Under the corrected accounting the confirmatory sets are\nionics-rocksalt {a0, C11, C12, C44} (n=4) and perovskites {a0} (n=1). No\nproperty&#39;s win/loss outcome changed, and no group verdict changed:\nionics-rocksalt FAIL (0/4), perovskites FAIL (0/1), theorem consistency\nstill zero licensed oracle-in-hull worsened cells. The registered conclusion\nof Round 4 — the correction scope remains &quot;same-class lattice constants\nonly&quot; and cap tuning is frozen absent a new theorem — is unchanged.\n<code>report.json</code>, <code>ROUND4_REPORT.md</code>, and the two hash-chained measurement rows\nwere regenerated from the untouched hash-locked cell artifacts; the row\nchain, manifest hash, and all 64 artifact hashes re-verify under the\nregenerated outputs.</p>\n<p>This amendment changes no registered criterion, threshold, cap, or\ncandidate, and authorizes no re-measurement.</p>\n"}