The same system, read twice, reading differently

Rendered from gate/RESULT-REPLACEMENT.md
Contents
  1. Question or issue resolved
  2. What this says about the standard
  3. Two defects found while building this
  4. Conclusion

Run: gate/replacement.pygate/replacement.json Date: 2026-09-21. Plan §6A item 6 — the continuity rung.

Question or issue resolved

Every reading this register issues away from human cortex rests on an assumption it has never stated and never tested: that the measure reads a system's causal organization rather than what the system happens to be made of. The plan names item 6 as "the bridge on which every extrapolation away from human report depends, and currently the weakest link in the design." If swapping a system's parts for functionally equivalent ones moves the number, then a mouse reading, a human reading and an artificial-system reading are not the same kind of object, and no amount of caveat text repairs that.

The replacement here is exact, which is what makes the test worth running. A node of a linear-Gaussian system is replaced by two units that split its incoming drive in proportion α and 1−α and are read by everything downstream as their sum. Writing D for the split and M for the aggregation, the replaced system is

A_fine = D A M,     with     M D = I

so the aggregate of the two units follows the original dynamics exactly, not approximately. The deterministic causal effect at every retained variable is preserved to 4.8 × 10⁻⁷, and the nonzero eigenvalues of A_fine are those of A to 10⁻⁸. Nothing about the system's function has changed. Only what it is made of has.

An experimenter recording a replaced system records the units it actually has. So the same system is read twice — once coarse-grained back to its original variables, once at its real units — and both readings are compared against integrated information computed the same two ways.

Finding 1: the ground truth is invariant, and its normalization is not

Normalized integrated information falls by 43% across the sweep — 1.00 at no replacement to 0.57 at full replacement, in a clean staircase. That number is entirely an artifact of a convention this program adopted and defended at length.

nodes replaced 0 1 2 3 4 5 6 7
Φ, normalized 1.00 1.00 0.80 0.80 0.67 0.67 0.57 0.57
Φ, unnormalized 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000

Unnormalized integrated information is invariant across the entire sweep to 1.7 × 10⁻⁷ — which is the right answer, and a strong check that the replacement does what it claims. The staircase above is exactly 4 / min(|part|) as the minimum information partition's smaller side grows from 4 units to 7.

The normalizer is not wrong; gate/RESULT-LINEARGAUSS.md adopted it because the unnormalized quantity is minimized by the most unbalanced cut, and that was a real defect. But it is a convention, it is not grain-invariant, and it moves the reported answer by 1.75× under a change that alters nothing about the system. Any comparison of normalized Φ across systems with different unit counts is partly a comparison of unit counts. That was not known here until this run.

Finding 2: every screened measure is grain-dependent, and not because of channel count

The six candidates the register screens, read at the system's actual units, against the same system read at its original variables:

measure coarse-grained fine-grained duplication null
delta_magnitude 1.000 0.533 0.950
delta_spread 1.000 1.293 0.759
delta_lz 1.103 1.795 1.023
delta_dimensionality 1.000 0.864 1.143
participation_ratio 1.022 0.865 1.060
lz_response 0.991 1.590 1.005

The coarse column is the machinery checking itself: read the replaced system back at its original variables and every measure returns what it returned before. The two small deviations, both on Lempel-Ziv measures, are the binarization threshold responding to a different noise realization — Q_fine is not Q — and they bound how much of the fine column is noise. It is not much.

The fine column is the result. A system whose causal function is unchanged to machine precision reads up to 1.8× differently, purely as a function of which units are recorded. And it drifts monotonically: delta_lz runs 1.03, 1.18, 1.23, 1.32, 1.46, 1.54, 1.56, 1.79 as nodes are replaced one at a time. This is a gradient, not a jump.

The duplication null is what makes the claim narrow enough to trust. Record the unchanged system at the same inflated channel count, by duplicating seven of its nodes exactly — no substrate change, only more channels. Every measure moves by ≤ 5%, or moves in the opposite direction: delta_spread rises 29% under replacement and falls 24% under duplication; delta_dimensionality falls under replacement and rises under duplication. So the shift is not "the measure counts channels," which would be mundane. It is that a real replacement redistributes a node's drive across its units, and these measures read amplitude and its distribution across whatever units exist.

What this says about the standard

METHOD.md contains no statement about recording grain. It fixes the perturbation, the response window, the parameter set, the channel admission rule, the recording geometry and the modality tier — and says nothing about the size of the thing each channel reads. This run shows that omission is not harmless:

METHOD §3.5 is added in response, and INSTRUCTION.md gains the questions that make it decidable at the bench.

Two defects found while building this

  1. A noise-free shortcut broke two of the six measures. The first version computed a deterministic impulse response, which is the same causal effect and much faster — and leaves the pre-stimulus window exactly zero. Two measures scale their binarization threshold against that window, so both went constant. Control 5, the variance floor this register adopted three hours earlier as METHOD §9.4.4, caught it on its first outing against a new run. The run now uses the register's actual paired design.
  2. A float comparison silently produced nan. The replacement gradient was keyed by fraction, and 1/7 does not survive a round-trip through rounding and an equality tolerance. The endpoints looked correct and every intermediate step was nan. Keyed by integer count now.

Conclusion

The continuity rung is built, and the assumption it was built to test fails in the form the method currently states it. Causal organization, measured as unnormalized integrated information, is exactly invariant to substrate replacement — the assumption holds for the quantity the standard is ultimately about. What does not hold is the assumption for anything the standard actually computes: the normalization convention and all six screened measures move, monotonically, by factors comparable to the state contrasts this register publishes, under a change that alters nothing about the system.

The repair is not to abandon the measures. It is to fix the grain, declare it on the face of the reading, and refuse cross-grain comparison the way §3.3 already refuses cross-geometry comparison. That is what §3.5 now does.

The weakest link in the design is no longer unexamined, and it turned out to be weaker than stated: the problem is not that extrapolation across substrates might be unsound, it is that a reading was not fully specified until now, including for the human cortex readings already in the register. Those readings are not edited — §8 forbids it — and their grain is only partly recoverable: NS-0012 records "37 to 61 channels after exclusions" in its caveat prose, and the contact pitch that would fix its grain lives in the source deposit rather than in the record. That is itself the argument for making grain a declared field rather than something a reader reconstructs.