Implement final adversarial statistical audit - #6
Open
rickyjreyes wants to merge 25 commits into
Open
rickyjreyes wants to merge 25 commits into
rickyjreyes wants to merge 25 commits into
Conversation
Owner
Author
|
Release gate update (2026-09-11):
Release blocker fixed in this PR: Also fixed dependency metadata: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Goal
Implement the strict final adversarial statistical audit for the NIST atomic-line analysis without changing the canonical scanner.
What changed
R/run_final_adversarial_audit.R, a fail-closed one-command final runner with explicit full-resolution budgets and no hidden 500/1,000-trial caps.R/run_alternative_nulls.Rwith five scan-global null stress tests:R/global_multiple_testing.Rfrom the old limited family to the complete declared Fe preprocessing multiverse plus source and neighbouring-ion controls.kremains train-only and locked, while test-null calibration is now computed both with the observed smoothing baseline fixed and with the smoothing baseline re-estimated in every null replicate. The final holdout verdict uses the larger p-value.R/build_final_adversarial_summary.Rto emit conservative global evidence, strict claim-by-claim verdicts, andfailed_claims.csvcontaining every non-passing claim.Final default budgets
Failure preservation
The final claim matrix deliberately does not soften negative results. For example:
fail, not silently promoted;mixed;faileven when the in-sample fit is very strong;not established.largest_reported_global_pis only a conservative diagnostic maximum across reported global/multiplicity/alternative-null p-values. It is explicitly not a newly combined formal p-value.Resolution-mode follow-up
The branch also contains a standalone exploratory follow-up in
R/run_resolution_mode_diagnostics.R, documented byRESOLUTION_MODE_DIAGNOSTICS.md.This follow-up does not run inside the final audit and cannot overwrite its verdicts. It was added to diagnose the observed resolution-dependent winner by:
sigma=6-bins baseline withsigma(B)=6*B/160, which approximately fixes smoothing width inell=log(wavenumber)space;k=9.602325620315224at every dense bin resolution;The GWTC value predates this NIST follow-up, but noticing the NIST/GWTC match is post-hoc. These diagnostics are therefore explicitly exploratory and do not rescue a failed 80% bin-stability claim.
Reproduction
Final audit:
Resolution follow-up, after preserving the final audit outputs:
The heavy full-resolution audit is intentionally separate from CI. CI sources/parses the new R modules, runs the unit tests, and checks the canonical Python scanner/container. Final Monte Carlo outputs are produced by the commands above.