{
  "source_10m": {
    "file": "csi_udp_20261010_10m.anon.bin",
    "size_bytes": 60612922,
    "sha256": "527466ceb8b5f835e55ff348f02808736b947db39e7baac1f34e375de146a440"
  },
  "source_60s": {
    "file": "csi_demo_60s_anonymized.bin",
    "size_bytes": 2938066,
    "sha256": "41c35d9d23e5c03ddd34ae97617e772fecdb55e8545156181828b060605a87a6"
  },
  "capture_10m": {
    "outer_records": 57293,
    "closed_groups": 7609,
    "rows": 7608,
    "subcarriers": 256,
    "duration_s": 599.924075,
    "malformed_records": 0,
    "incomplete_tail_records": 1,
    "missing_fixed_chain": 0,
    "duplicate_fixed_chain": 0,
    "invalid_fixed_chain": 1,
    "selected_chains": {
      "tx0/rx0": 7608
    }
  },
  "capture_60s": {
    "outer_records": 2777,
    "closed_groups": 347,
    "rows": 347,
    "subcarriers": 256,
    "duration_s": 59.791602,
    "malformed_records": 0,
    "incomplete_tail_records": 1,
    "missing_fixed_chain": 0,
    "duplicate_fixed_chain": 0,
    "invalid_fixed_chain": 0,
    "selected_chains": {
      "tx0/rx0": 347
    }
  },
  "subcarrier_correlation": {
    "active_subcarriers": 256,
    "median_signed": -0.058292,
    "median_abs": 0.204452,
    "p95_abs": 0.96037,
    "max_abs": 1.0,
    "adjacent_signed_median": 0.900779,
    "adjacent_abs_mean": 0.856893,
    "fraction_abs_ge_0_75": 0.17451,
    "fraction_abs_ge_0_9": 0.100643
  },
  "pca_dimensions": {
    "variance_90": 6,
    "variance_95": 9,
    "variance_99": 20,
    "effective_rank": 4.568732,
    "first_component_variance": 0.33933,
    "top_10_variance": 0.968578
  },
  "cross_session": {
    "profile_pearson": 0.954781,
    "temporal_cv_pearson": 0.984305,
    "median_profile_l1_distance": 0.267042
  },
  "subcarrier_temporal_cv_10m": {
    "min": 0.087431,
    "p25": 0.173107,
    "median": 0.24888,
    "p75": 9.274449,
    "p95": 10.816894,
    "max": 12.641809,
    "fraction_above_1": 0.378906
  },
  "subcarrier_temporal_cv_60s": {
    "min": 0.056579,
    "p25": 0.102854,
    "median": 0.135704,
    "p75": 7.475848,
    "p95": 7.849462,
    "max": 8.561378,
    "fraction_above_1": 0.363281
  },
  "method": {
    "group_boundary": "chain_info bit 15",
    "chain_selection": "tx0/rx0 only; no fallback chain",
    "row_normalisation": "divide each 256-bin amplitude vector by its median",
    "correlation": "Pearson correlation after centring and scaling each subcarrier over time",
    "pca": "eigendecomposition of the 256 x 256 subcarrier correlation matrix",
    "dimension_threshold": "first component count reaching 90%, 95%, or 99% cumulative variance",
    "effective_rank": "participation ratio: (sum eigenvalues)^2 / sum(eigenvalues^2)"
  },
  "limitations": [
    "The subcarrier array index is not mapped to a physical frequency, antenna position, or 802.11 resource unit.",
    "High amplitude correlation can come from the radio front end, shared gain, multipath, or the data format; correlation alone does not establish a causal source.",
    "The two captures come from one GL-MT6000, one client, one home, one bandwidth, and similar firmware; they do not establish cross-device generality.",
    "There is no noise-only baseline, controlled subject position, or human-event ground truth.",
    "PCA variance depends on row normalisation and standardisation choices; the published matrix and script are required for comparison.",
    "The result supports data-redundancy checks and dimension reporting, not breathing, fall, occupancy, identity, or medical claims."
  ]
}
