Analyze the frozen CDEB matrix, and only what the freeze names - #528
Merged
Conversation
The analyzer reads row files the public freeze names, and refuses one that is on disk without being named. Discovery is the defect, not a convenience: the M5 analyser globbed its inputs and pulled 1,835 rows from four different experiments into one analysis, then passed its own stopping rule on the contamination (#441). A file nobody registered cannot enter a matrix by being in the right directory. Every figure in the report is computed by the code that emits it. A number typed into a document is right once and wrong after the next run, and nothing about looking at it says which state it is in, so the report is regenerated whole and overwrites whatever was there. The controls are the deliverable rather than a formality. A bootstrap will produce a confident interval around a meaningless difference, so the null control has to show nothing where there is nothing and the positive control has to recover an effect that was planted. Both are fixtures the suite runs, not a procedure someone is expected to follow. Tail probability is `(opposite + 1) / (replicates + 1)`. Ten thousand draws resolve to one part in ten thousand and one; a reported zero would claim resolution the procedure does not have. Revival is reported as an absolute difference, because a relative change on a small base reads as large and says almost nothing. Unavailable usage propagates rather than disappearing. A run whose stream did not fully parse makes the token claim unavailable, and leaves the two behavioural gates alone -- §16.6 separates them so that a missing cost number cannot quietly take a behavioural result with it, or be taken by one. Limit: the paired bootstrap describes resampling stability within these five frozen repositories and thirty frozen tasks, and says nothing about any other repository, task or agent population Ruled-out: discovering row files under the result directory | an unregistered file contaminates the matrix while leaving every stopping rule looking satisfied Ruled-out: filling or dropping unavailable usage | both change a token aggregate without evidence, one by inventing a number and one by redefining the population Warn: the orchestrator must freeze 180 opaque analysis_inputs.row_files and write canonical rows only at those paths; a row written elsewhere will be refused rather than found Blast: module Undo: easy Certainty: firm Verified: twenty-nine cases pass across the analyzer and verifier suites, covering an unnamed row file, a null control, a positive control recovered through ratio-of-sums, a finite-replicate tail p, an absolute revival interval, gate independence under unavailable usage, and a report regenerated over a manual figure; package and bench typechecks clean; two builds leave dist unchanged; both bench verifiers pass Unverified: no live study ran, so every input here is a deterministic fixture rather than a measured matrix Provenance: authored Record-Id: r-cdeb08an
CommitLore — record lintTrailers: clean — 1 commit in Active constraints for the paths this PR touchesLimits (27)
Ruled out (71)
Warnings (21)
Trailer violations fail this check. Active constraints are informational — they are what the repository already decided, not a verdict on this PR. |
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.
CDEB-08. Depends on #520 and #524 (both merged).
Discovery is the defect
The analyzer reads the row files the public freeze names, and refuses one that is on disk without being named.
This is #441 in structural form. The M5 analyser discovered its inputs by globbing, pulled 1,835 rows from four different experiments into one analysis, and then passed its own stopping rule on the contamination. A file nobody registered must not be able to enter a matrix by sitting in the right directory.
No number is typed
Every figure in the report is computed by the code that emits it. A hand-copied number is right once and wrong after the next run, and nothing about looking at it tells you which state it is in — so the report is regenerated whole and overwrites whatever was there. One test writes a manual figure into the report and checks that regeneration destroys it.
The controls are the deliverable
A bootstrap will happily produce a confident interval around a meaningless difference. So:
Both are fixtures the suite runs, not a procedure someone is expected to remember.
Two reporting rules
Tail probability is
(opposite + 1) / (replicates + 1). Ten thousand draws resolve to one part in ten thousand and one; a reported zero claims resolution the procedure does not have.Revival is stated as an absolute difference. A relative change on a small base reads as large and says almost nothing.
Unavailable usage stays unavailable
Carrying forward #524: a run whose stream did not fully parse makes the token claim unavailable and leaves the two behavioural gates alone. §16.6 separates them precisely so a missing cost number cannot quietly take a behavioural result with it — or be taken by one.
Handoff to CDEB-07
The freeze must supply 180 opaque
analysis_inputs.row_filespaths, and canonical rows must be written only at those paths. A row written elsewhere is refused rather than found — which is the point, but the orchestrator has to know it.29 cases pass across the analyzer and verifier suites; both typechecks clean; two builds leave
distunchanged; both verifiers pass. No live study ran, so every input here is a deterministic fixture rather than a measured matrix.