O0-CRP-034 · Track 2 Physical-Data Leg — Matched-Source Indistinguishability Holds in Real ECG
**Study ID:** O0-CRP-034
**Version:** 1.1.0
**Date:** 2026-07-30
**Verdict:** PHYSICAL_HOLDS
**Record class:** REPLICATION / EXTENSION
---
CLAIM STATUS BANNER
- **CLAIM STATUS:** PROVISIONALLY SUPPORTED (physical data)
- **EVIDENCE TYPE:** REAL PHYSICAL MEASUREMENT · MIT-BIH Arrhythmia Database ECG, 1980
- **PHYSICAL VALIDATION:** SINGLE PATIENT, N=1 SIGNAL SOURCE
- **INDEPENDENT REPLICATION:** NONE (registered followups: CRP-034b second patient, CRP-034c non-ECG signal)
- **SUPPORTED:** Matched-source indistinguishability extends to real ECG data. All four preregistered rules pass.
- **NOT ESTABLISHED:** Extension to other patients, other physical signals, other measurement modalities, biological systems generally, or any metaphysical claim.
---
1. Abstract
Every prior Track 2 study (CRP-022 through CRP-033) used simulated dynamical systems. A recurring critique states the finding is confined to "AI/ML infrastructure — you have tested computation, not reality." This study runs the same discriminability protocol on real physical ECG data (MIT-BIH Arrhythmia Database, record 208, recorded ~1980, distributed as `scipy.datasets.electrocardiogram()`).
Under a preregistered v1.1 protocol, the classifier gets **AUC 0.4514** discriminating IDENTITY windows from MATCHED_DUAL windows (both drawn from the same patient's ECG, non-overlapping temporal segments) — inside the preregistered chance band [0.30, 0.70]. Positive control (vs Gaussian noise) achieves AUC 1.0000; shuffled-time control achieves AUC 1.0000. Verdict: **PHYSICAL_HOLDS**. Matched-source indistinguishability is a property of the discrimination method, not a property of the simulator.
An epsilon control on bit-identical inputs (SAME_TRAJECTORY) yields AUC 0.008 — documenting a scikit-learn duplicate-handling artifact. This artifact motivated a preregistration correction from v1.0 (bit-identical MATCHED_DUAL) to v1.1 (interleaved non-overlapping windows, the correct physical analog of CRP-022's same-M-different-noise construction).
---
2. Preregistration correction (v1.0 → v1.1)
During pre-execution diagnostic testing of the v1.0 design, we discovered:
1. **Bit-identical MATCHED_DUAL is a mathematical tautology.** No classifier can distinguish bit-identical inputs. Any AUC obtained is a scikit-learn implementation artifact (near-zero, due to how RandomForest handles duplicate rows in stratified k-fold cross-validation), *not* a substantive test.
2. **CRP-022's actual construction was different from our v1.0 design.** Reading `research/studies/O0-CRP-022/src/run_study.py` line 437 — CRP-022 uses `trial_offset + 10_000` for MATCHED_DUAL, distinct from IDENTITY's `trial_offset + 0`. So MATCHED_DUAL trajectories in CRP-022 share the world matrix M (same "source dynamics") but use *different* w_t noise realizations — they are independent draws from the same distribution, not bit-identical.
3. **O0-PAPER-001 (Track 2 synthesis) misdescribes MATCHED_DUAL as "bit-identical."** This overstates the construction. The correct description is "same source distribution, different noise realization." The AUC-in-chance-band finding is real (0.40-ish across the studies, e.g., 0.3993 with 300 trials, 0.4514 in this study), but the paper's wording needs correction. See §7 of this record for the correction, and O0-PAPER-001 v1.1.
The v1.0 diagnostic outputs (bit-identical MATCHED_DUAL) are preserved at `data/v1.0_diagnostic/`. The v1.1 preregistration corrects the design to match CRP-022's actual protocol — interleaved non-overlapping ECG windows — before any v1.1 outputs are inspected.
This is exactly the kind of correction the archive is designed to preserve. We report it prominently rather than quietly.
---
3. Data source and provenance
- **Signal:** 5-minute single-lead ECG at 360 Hz (108,000 samples)
- **Underlying dataset:** MIT-BIH Arrhythmia Database, record 208
- **Original recording:** ~1980, real human patient
- **Distribution:** `scipy.datasets.electrocardiogram()` (fetched from official scipy dataset repository)
- **Preprocessing:** z-score standardization (mean 0, unit variance); no filtering or artifact removal
- **Predates modern ML:** Yes — the signal was digitized and archived four decades before scikit-learn, deep learning, or any modern AI/ML infrastructure existed
**Excerpt of the physical signal:**

The characteristic P–QRS–T complexes and irregular ventricular ectopy are clearly visible. Real, non-simulated data.
---
4. Method
4.1. Trajectory extraction
The scalar ECG is windowed and delay-embedded into 8-channel trajectories using standard delay-coordinate reconstruction (Takens, 1981):
- **Window size:** 235 samples
- **Delay lags:** [0, 5, 10, 15, 20, 25, 30, 35] samples (~24–116 ms at 360 Hz)
- **Effective trajectory length T:** 200 (after dropping the max-delay prefix)
- **Stride between windows:** 480 samples (>2× window size, guarantees non-overlap of adjacent windows)
4.2. Universe classes
| Class | Construction |
|---|---|
| **IDENTITY** | 200 ECG windows starting at [0, 480, 960, …] |
| **MATCHED_DUAL** | 200 ECG windows starting at [240, 720, 1200, …] — same signal, interleaved with IDENTITY, non-overlapping |
| **SAME_TRAJECTORY** (epsilon control) | Bit-identical copies of IDENTITY — documents classifier artifact |
| **NULL_CONTROL** | 200 Gaussian white noise trajectories, matched dimensions |
| **SHUFFLED** | IDENTITY trajectories with per-channel time permutation |
Preregistered overlap check confirms IDENTITY and MATCHED_DUAL windows do not overlap: `max_overlap_samples = 0`.
**Sample trajectories from each class:**

The IDENTITY and MATCHED_DUAL panels are structurally similar (both come from the same patient's heart at nearby time windows). NULL_CONTROL is featureless noise. SHUFFLED destroys all temporal structure.
4.3. Feature battery and classifier
Reused from CRP-022 verbatim (imported via `importlib.util.spec_from_file_location`):
- 146 features per trajectory (marginal moments, autocorrelations, cross-correlations, VAR(2) summary, Granger causality summary, mutual information, gzip compression, innovation entropy).
- RandomForest with default scikit-learn parameters, 5-fold stratified CV ROC-AUC.
4.4. Preregistered decision rules
| Rule | Threshold | Preregistered before execution |
|---|---|:---:|
| Positive control gate | IDENTITY vs NULL_CONTROL AUC > 0.95 | ✓ |
| Shuffled-time control | IDENTITY vs SHUFFLED AUC > 0.90 | ✓ |
| Matched-source chance band | IDENTITY vs MATCHED_DUAL AUC ∈ [0.30, 0.70] | ✓ |
| No-overlap check | max_overlap_samples = 0 | ✓ |
| Epsilon-control documentation | IDENTITY vs SAME_TRAJECTORY AUC recorded for transparency | ✓ |
---
5. Results
5.1. Discrimination outcomes

| Comparison | Mean AUC | Std |
|---|---:|---:|
| IDENTITY vs NULL_CONTROL (positive control) | **1.0000** | 0.0000 |
| IDENTITY vs SHUFFLED (time-structure control) | **1.0000** | 0.0000 |
| **IDENTITY vs MATCHED_DUAL (primary test)** | **0.4514** | 0.0557 |
| IDENTITY vs SAME_TRAJECTORY (epsilon control) | 0.0079 | 0.0102 |
5.2. Preregistered verdict
| Rule | Result | Status |
|---|:---:|:---:|
| Positive control (>0.95) | AUC = 1.0000 | ✓ PASS |
| Shuffled control (>0.90) | AUC = 1.0000 | ✓ PASS |
| Matched-source chance band [0.30, 0.70] | AUC = 0.4514 | ✓ PASS |
| No-overlap check | max_overlap = 0 | ✓ PASS |
**All four preregistered rules pass. Verdict: PHYSICAL_HOLDS.**
5.3. Feature-space visualization

In the top-2 principal components of the 146-feature space:
- IDENTITY (dark teal) and MATCHED_DUAL (light teal) clusters overlap substantially — visually consistent with the AUC = 0.4514 result.
- NULL_CONTROL (red) is far from ECG-derived clusters.
- SHUFFLED (gold) forms its own cluster distinct from IDENTITY.
The scatter-plot geometry mirrors the classifier's AUC values.
5.4. Epsilon-control artifact (documented)
IDENTITY vs SAME_TRAJECTORY (bit-identical) AUC = 0.0079 with std 0.0102 across CV folds. This is *not* chance-band; it is a classifier artifact of duplicate-row handling in stratified k-fold CV with a fixed random_state. We document it explicitly:
- When training data contains rows with identical feature vectors labeled to different classes, scikit-learn's RandomForest bootstrap sampling produces asymmetric leaf compositions across trees, leading to systematic (rather than random) misclassification on the test fold.
- The correct interpretation of AUC = 0.008 on bit-identical inputs is: "the classifier's output is degenerate on this pathological input; treat as inadmissible for chance-band inference."
- The v1.1 preregistration excludes bit-identical MATCHED_DUAL from the primary test for exactly this reason.
---
6. Discussion
6.1. What this establishes
- The Track 2 matched-source indistinguishability finding is not a peculiarity of simulated dynamical systems.
- The same discrimination protocol — 146-feature battery + RandomForest + 5-fold CV — applied to real physical ECG data from 1980 yields matched-source AUC = 0.4514 (chance band), with positive and shuffled controls both passing at AUC = 1.0.
- The result therefore reflects a property of the *discrimination method itself*, not of the simulator. Any physical or synthetic source that shares its underlying process across independent draws will be indistinguishable from itself under this protocol.
6.2. What this does not establish
- Extension to other patients (only one patient's ECG is tested — N=1 signal source).
- Extension to other physical signals (EEG, seismic, financial, meteorological).
- Extension to non-time-series data.
- Any claim about consciousness, non-dual identity, or metaphysics.
- Any claim that the underlying physical system has a "single source" in any philosophically loaded sense — we only claim that *independent samples from the same signal are indistinguishable to this classifier*.
6.3. Response to the "AI research" critique
The critique that Track 2 findings live entirely on AI/ML infrastructure and therefore test computation not reality is *substantially weakened* — but not eliminated — by this result:
**Weakened because:** the input trajectories are now unambiguously physical measurements from a physical process (a human heart) recorded before any modern ML infrastructure existed. The classifier is still ML infrastructure, but the *data* is not.
**Not eliminated because:** the classifier (RandomForest) and the feature battery (146 statistical features) are still computational artifacts. A strong version of the critique — "any tool that can distinguish structure requires ML infrastructure" — is not tested here. Physical data + non-ML classifiers (e.g., analytical decision rules, Kolmogorov-Smirnov tests on individual features, human-eye inspection) would be needed to close that remaining gap.
However, the AUC = 1.0 on the positive and shuffled controls demonstrates the classifier *does* pick up structure when structure differs. The chance-band matched-source result is therefore not a failure of sensitivity — it is a positive finding of indistinguishability.
6.4. Adversarial interpretations
- **Non-stationarity artifact:** ECG is quasi-periodic but not strictly stationary. Different physiological events (P-waves, QRS complexes, arrhythmic beats) may occur at different rates in different segments. Response: *this makes indistinguishability harder to achieve*, not easier. If the classifier could pick up systematic drift, AUC would be > 0.5. It doesn't. Chance-band AUC despite non-stationarity is a stronger result.
- **Delay-embedding artifact:** The embedding introduces cross-channel correlation. Response: applied symmetrically to all classes. The positive control (Gaussian noise) uses no delay embedding but comparison is on the same feature battery — controls confirm the battery works.
- **Small-sample bias:** N=200 trajectories per class. Response: five-fold CV, positive control at ceiling, chance-band AUC well within preregistered [0.30, 0.70]. Larger N registered as followup CRP-034b.
6.5. Registered followups
- **CRP-034b** — replication on a second ECG record (different patient), same protocol.
- **CRP-034c** — replication on a non-ECG physical signal (e.g., seismic microtremor, sunspot activity, or NOAA weather-station timeseries).
- **CRP-034d** — non-ML discrimination methods (analytical decision rules, per-feature KS tests, human-eye) on the same ECG data. Addresses the residual gap in §6.3.
---
7. Correction of O0-PAPER-001 wording
O0-PAPER-001 (Track 2 synthesis paper) describes MATCHED_DUAL as "bit-identical construction to IDENTITY (same seed, same matrix, same noise realization)." This is incorrect. The correct description, which matches CRP-022's actual code (line 437) and every subsequent Track 2 study:
> **MATCHED_DUAL** — same world matrix M as IDENTITY (shared "source dynamics"), but a *different* noise-realization trial seed (independent random draw from the same distribution).
The realization theorem check performed as a sanity gate *does* verify bit-identity when seeds match — but it is a separate sanity test, not the primary discriminability comparison. The AUC-in-chance-band findings in Track 2 are legitimate: two independent draws from the same distribution are statistically indistinguishable via the tested classifier.
O0-PAPER-001 will be revised to v1.1 with this correction, and the SCOPE-002 claim registry will add a correction note under C002 (realization theorem) clarifying the distinction between the bit-identity sanity check and the primary chance-band test.
---
8. Limitations
- Single ECG signal (one patient, one recording, five minutes). N=1 signal source.
- Single classifier family (RandomForest). Other classifiers not tested in this study — see CRP-025 for classifier-invariance in simulation.
- Delay embedding is one specific reconstruction method. Alternative reconstructions (differential embedding, empirical mode decomposition) not tested.
- The scipy dataset uses lossy re-sampling (originally 128 Hz upsampled to 360 Hz). This is documented scipy behavior; results should reproduce on the original MIT-BIH source data at 128 Hz.
---
9. Data and code availability
- **Preregistration:** `research/studies/O0-CRP-034/preregistration.md`
- **Runner:** `research/studies/O0-CRP-034/src/run_study.py`
- **Analysis:** `research/studies/O0-CRP-034/src/analyze.py`
- **v1.0 diagnostic (preserved):** `research/studies/O0-CRP-034/data/v1.0_diagnostic/`
- **v1.1 result summary:** `research/studies/O0-CRP-034/data/result_summary.json`
- **Feature arrays:** `research/studies/O0-CRP-034/data/features_*.npy`
- **Figures:** `research/studies/O0-CRP-034/figures/`
Reproduce by installing scipy ≥ 1.10, matplotlib, scikit-learn, then running `python research/studies/O0-CRP-034/src/run_study.py`. The scipy ECG dataset is fetched on first use to `~/AppData/Local/scipy-data/`.
---
10. Revision history
- **v1.0** (2026-07-30, pre-execution) — proposed bit-identical MATCHED_DUAL. Diagnostic run revealed this was a mathematical tautology / sklearn artifact. Not published; preserved in `data/v1.0_diagnostic/`.
- **v1.1** (2026-07-30) — corrected design using interleaved non-overlapping ECG windows (matches CRP-022's actual protocol). Verdict: PHYSICAL_HOLDS.
11. References
- Moody, G. B., & Mark, R. G. (2001). "The impact of the MIT-BIH Arrhythmia Database." *IEEE Engineering in Medicine and Biology*, 20(3), 45–50.
- Takens, F. (1981). "Detecting strange attractors in turbulence." *Dynamical Systems and Turbulence*, Warwick 1980. Lecture Notes in Mathematics vol. 898, 366–381. Springer.
- Kalman, R. E. (1960). "A New Approach to Linear Filtering and Prediction Problems." *J. Basic Eng.* 82(1):35–45.
- SciPy Community (2024). "scipy.datasets — Sample datasets." SciPy documentation, version 1.17.



