Magnitude-construction diagnostic — 2026-09-10
Run: results/magnitude-construction-2026-09-10/ · Driver:
scripts/magnitude_construction_diagnostic.py · Records read:
results/phase5-2026-09-10/merged.jsonl (the paper-grade run, 9,500 units)
The paper-grade Phase 5 run returned gate decision HOLD on the two
magnitude mandatory controls (magnitude/angle 0.276, magnitude/shape 0.742 against a 0.0695 bound). This
diagnostic establishes what causes those responses and whether they are fixable, so the Phase 5 exit review
can choose between a method revision and a claim revision on evidence.
Both verdicts point the same way: method revision. The magnitude surgery's off-target response is
entirely an artefact of scaling one omic block's δ and not the others, and a construction that scales all
three together is exactly size-pure in the measurement space. Nothing about the angle or shape
estimators is implicated.
1. Mechanism: the response exists only in the concatenation
magnitude_kind='all' (semisynthetic.py) scales delta_methyl alone and leaves delta_expr and
delta_protein at baseline, while the measurement space standardizes and concatenates all three omic blocks
(evaluation.py). The per-omic scopes recorded in the paper-grade run show the consequence directly
(block_decomposition.csv, checkpoint population_standardized, median over 500 replicates):
| statistic | scope | e = 0.25 | 0.50 | 0.75 | 1.00 | anchor |
|---|---|---|---|---|---|---|
angle |
methylation / expression / proteomics | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
angle |
joint | 6.6978 | 12.1199 | 16.5890 | 20.3293 | 0.0 |
shape |
methylation / expression / proteomics | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
shape |
joint | 0.0076 | 0.0138 | 0.0187 | 0.0226 | 0.0 |
delta |
methylation | 9.9148 | 18.1365 | 24.8473 | 30.3300 | 0.0 |
delta |
expression / proteomics | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0 |
block_localization_summary.csv records the verdict as joint_only = True for magnitude/angle and
magnitude/shape at population_standardized: every individual block is flat while the joint scope moves.
Within each omic block the surgery is exactly size-pure. The zeros are analytic, not small — angle is
0.0000 and shape lands at 8.4e-18, floating-point dust from the Procrustes routine. Only delta moves, and
only in the block whose δ was scaled. The off-target response is created by concatenation: lengthen one
component of a vector and leave the others, and the vector rotates. That is ordinary geometry, not a defect
in any estimator.
Across all four checkpoints the causal chain is fully attributable:
| checkpoint | per-block angle |
joint angle |
|---|---|---|
population_native |
0.0000 at every effect | (no joint scope recorded) |
population_standardized |
0.0000 at every effect | 6.70 → 20.33 |
observed_standardized |
constant in effect (7.91 expression, 6.24 proteomics — a sampling floor) | 10.70 → 21.96 |
pls_latent |
(joint only) | 3.30 → 7.59 |
Two things follow that correct beliefs recorded in the repository:
- It is not the methylation
rev.logitnonlinearity.specificity.pypreviously stated that magnitude bends shape through that nonlinearity. Atpopulation_native— before any standardization and before any sampling — the per-omicangleandshapeare 0.0000 at every effect, so the nonlinearity does not bend the methylation trajectory at all. The module docstring is corrected in this change. - The PLS projection attenuates the rotation rather than creating it. Joint
angleis 20.33° atpopulation_standardizedand 7.59° atpls_latent. Whatever the latent space does here, it reduces the off-target geometry it is handed.
2. Constructibility: a size-pure magnitude change is realizable
The open question was whether scaling every omic's δ together survives per-block standardization, which
z-scores each block on pooled data and so divides back out part of what the scaling adds. It does
(uniform_delta_comparison.csv, population-standardized geometry, n_stages = 4):
| construction | e | joint delta |
joint angle |
joint shape |
max block angle |
|---|---|---|---|---|---|
production (delta_methyl only) |
0.25 | 5.9456 | 6.2898 | 1.095e-02 | 0.000e+00 |
| production | 1.00 | 18.1360 | 18.9097 | 3.288e-02 | 0.000e+00 |
| uniform probe (all three δ) | 0.25 | 14.9623 | 8.538e-07 | 9.558e-16 | 8.538e-07 |
| uniform probe | 1.00 | 44.7980 | 2.561e-06 | 9.995e-16 | 1.479e-06 |
| anchor (e = 0, either) | 0.00 | 0.0000 | 0.000e+00 | 1.008e-15 | 0.000e+00 |
The uniform-δ construction grows the trajectory strongly (joint delta 14.96 → 44.80) while holding joint
angle at 8.5e-07 → 2.6e-06 and joint shape at ~1e-15 — the anchor's own floating-point floor — at every
effect. Per-block standardization does not defeat it. A genuinely size-only magnitude change is
constructible in this measurement space.
One calibration caveat for whoever adopts it: the effect axis is not comparable between constructions. At
e = 1.00 the uniform probe reaches joint delta 44.80 against production's 18.14, because three blocks grow
instead of one. A corrected mode needs its own effect-size calibration before its power curve can be read
beside the existing one.
3. Shape-free confirmation
At two stages the trajectory is a single step and Procrustes shape is undefinable, so the orientation
response can be observed with no possibility of shape contaminating it
(uniform_delta_comparison.csv, n_stages = 2):
| n_stages | construction | e | joint delta |
joint angle |
joint shape |
|---|---|---|---|---|---|
| 2 | production | 1.00 | 5.4250 | 19.0470 | (undefinable) |
| 2 | uniform probe | 1.00 | 12.9072 | 1.000e-06 | (undefinable) |
| 4 | production | 1.00 | 18.1360 | 18.9097 | 3.288e-02 |
| 4 | uniform probe | 1.00 | 44.7980 | 2.561e-06 | 9.995e-16 |
The production construction's joint angle is 19.05° at two stages against 18.91° at four — indistinguishable.
The rotation is real and independent of the shape-removal step; it is not an artefact of Procrustes alignment
in the four-stage design. This was a confirmation of an already-analytic finding and it confirmed it.
4. Localization: the instrument, recalibrated
localize_off_diagonal normalizes delta by mean path length and angle by 180°, but passes shape
through raw. At e = 1.00 the joint values normalize to angle 20.3293/180 = 0.1129 (≥ the 0.05 cut → material)
and shape 0.0226 (< 0.05 → not_material) — while the RRPP shape test rejects at 0.742. A single absolute
cut cannot serve a statistic whose entire response range lies below it.
The recalibrated null_dispersion rule judges each excess in units of the zero-effect null's dispersion at
the same checkpoint. Where that dispersion is degenerate — zero or dust, as it is at every population
checkpoint for an analytically null construction (measured: delta sd exactly 0.0, angle sd 8.7e-07,
shape sd 3.5e-16) — it falls back to "excess exceeds the dust tolerance", the limit of the rule as the null
variance goes to zero. Each row records which path decided it.
Classifications under both rules (localization_by_rule.csv); 12 of 32 pairs change:
| mode / statistic | e | absolute rule | null-dispersion rule |
|---|---|---|---|
magnitude / angle |
0.25–1.00 | construction_present |
construction_present |
magnitude / shape |
0.25–1.00 | not_material |
construction_present |
orientation / delta |
0.25–0.75 | not_material |
construction_present |
orientation / delta |
1.00 | projection_associated |
construction_present |
orientation / shape |
0.25 | not_material |
construction_present |
orientation / shape |
0.50–1.00 | construction_present |
construction_present |
shape / angle |
0.25–1.00 | construction_present |
construction_present |
shape / delta |
0.25–0.75 | not_material |
construction_present |
shape / delta |
1.00 | construction_present |
construction_present |
translation / angle |
0.25–1.00 | not_material |
not_material |
translation / shape |
0.25–1.00 | not_material |
not_material |
Two properties of that table matter more than the individual rows:
- The negative control is preserved. Translation stays
not_materialon all eight rows under the recalibrated rule. The rule is calibrated, not merely permissive — its population off-target geometry is exactly zero, so nothing promotes it. - No response anywhere remains
projection_associated. The paper-grade run's single such classification, orientation/deltaat e = 1.00, becomesconstruction_present. Under the absolute rule its population-standardized excess fell below the 0.05 cut, so localization skipped forward topls_latent; once the population checkpoint is judged against its own (degenerate) null, the response is seen where it actually first appears.
Interpretive shift this implies, stated plainly. Because population checkpoints carry analytically zero
nulls, the recalibrated rule makes them very sensitive: any non-dust population-level off-target geometry now
localizes as construction_present. That is the right standard for a localization instrument — a
construction with any real off-target population geometry is impure, by definition, and the old cut was
hiding real impurity behind an arbitrary threshold. But it answers "is this construction exactly pure?", not
"is the impurity large enough to matter". The latter is read from the response magnitude, which the same
tables carry. The exit review should not read construction_present as a severity claim.
5. What this hands the exit review
| deviation from the paper-grade run | what this diagnostic establishes | revision implied |
|---|---|---|
mandatory_control[magnitude,angle] 0.276 |
Block-asymmetric δ scaling; exactly size-pure within every block; rotation confirmed shape-free at two stages; a uniform-δ construction is exactly pure in the joint space | Method revision. Correct the magnitude construction to scale all omics' δ together, recalibrate its effect axis, and re-measure. The angle estimator is not implicated. |
mandatory_control[magnitude,shape] 0.742 |
Same mechanism; and the response was real all along — the 0.05 absolute materiality cut mis-reported it as not_material |
Method revision, same fix. The diagnostic prerequisite the paper-grade report named is discharged: the threshold is recalibrated and the pair now classifies. |
orientation/shape predeclared "projection-associated" |
Not supported. Orientation's response is present within each omic block (max block angle 90.08° against joint 89.93°; max block shape 0.108 against joint 0.059), and under the recalibrated rule no pair in the study is projection_associated |
Claim revision. Drop the projection-associated framing for orientation; it is construction-present cross-talk of a per-omic feature permutation. No gate impact — both orientation off-diagonals are descriptive roles. |
power[orientation,angle] monotonicity |
Untouched by this diagnostic — it is a property of the angle null's pivotality, not of a construction |
Claim revision, as the paper-grade report stated. Out of scope here. |
Nothing here adopts a revision. The uniform-δ construction is reachable only from the diagnostic entry point
(generate_semisynthetic_trajectory(..., _probe_uniform_delta=True)); it is not a magnitude_kind value, and
a study configuration naming it is refused at load time. Adopting it as the production magnitude mode is the
exit review's decision.
6. Reproduction
export LD_LIBRARY_PATH=/nix/store/61a1nwx3w6rqyaisj5rn1sal1981apm7-zlib-1.3.2/lib:$LD_LIBRARY_PATH
python scripts/magnitude_construction_diagnostic.py \
--merged results/phase5-2026-09-10/merged.jsonl \
--out-dir results/magnitude-construction-2026-09-10
Steps 1 and 2 read committed records only. Step 3 generates data but computes analytic population geometry —
no sampling, no RRPP, no PLS fit — so the whole diagnostic runs on a workstation in minutes with no cluster
and no R runtime. The LD_LIBRARY_PATH export is the local numpy/zlib workaround, not a project requirement.