Skip to content

P0 physics claim-boundary debt: T2b demotion, fitted-state sweep, clamp audit #1358

Description

@neuron7xLab

Goal

Close newly identified physics-governance and model-semantics debt without granting score credit from documentation text.

Findings

P0-1: INV-T2b claim-boundary drift

results/cross_asset_kuramoto/SL_ES_PREREGISTRATION.md records DECISION: REJECT H1 for the Stuart-Landau ES lead claim:

  • leads_rate = 0.90625
  • p_value = 0.7647647...
  • n_episodes = 32
  • rejection reason: circular-shift null makes the apparent lead indistinguishable from chance

.claude/commit_acceptors/T2b-stuart-landau-es.yaml correctly says no T2b signal is wired into the shadow rail.

But .claude/physics/INVARIANTS.yaml still exposes INV-T2b as a qualitative P1 invariant-like physics claim. That creates claim-boundary drift: a rejected empirical hypothesis remains in the hard physics registry.

Required fix:

  • demote/mark INV-T2b as REJECTED_DO_NOT_PROMOTE or move it out of invariant registry into a rejected-hypothesis ledger;
  • preserve INV-SL1 and INV-SL2 as universal implementation bounds;
  • add a guard preventing rejected empirical hypotheses from appearing as active invariant claims.

P0-2: Stuart-Landau sweep ignores fitted market state

fit_stuart_landau() extracts fitted market amplitude, phase, omega, and mu, but _hysteresis_sweep() receives only mu and omega; it initializes z from seeded random normal values.

That means ES proximity can become a function of mu/omega + seed, not a full sweep of the observed market analytic state.

Required fix:

  • pass fitted z0 = amplitude * exp(1j * phase) into _hysteresis_sweep();
  • keep seed only as explicit fallback/noise mode, never as the default fitted-state path;
  • add a regression test showing two windows with same mu/omega but different amplitude/phase produce distinguishable sweep state when physics says amplitude dynamics matter.

P0-3: silent μ clamp without audit surface

_estimate_growth_rate() computes μ as a rate, then clamps to ±1 for Euler stability. That may be a necessary bounds guard, but it silently changes the physical growth-rate distribution.

Required fix:

  • expose mu_raw, mu_clamped, mu_was_clipped, and clipping count/mass in result or diagnostic artifact;
  • add a test that pathological μ is clipped visibly, not silently;
  • forbid interpreting clipped windows as unmodified physical evidence.

P1-1: rolling physics failures become NaN

rolling_es_proximity() catches ValueError / FloatingPointError and writes NaN. For exploratory plotting this is acceptable; for physics evidence it hides failure reasons.

Required fix:

  • add strict mode: fail_closed=True raises with window index and reason;
  • add optional diagnostics ledger for NaN windows;
  • evidence-generation path must use strict mode.

Non-claims

  • Do not raise physics score from this issue alone.
  • Do not promote T2b to shadow rail.
  • Do not weaken existing gates.
  • Do not erase the rejected OOS result.

Acceptance criteria

  • Active registry cannot present rejected empirical hypotheses as live physics invariants.
  • Stuart-Landau ES proximity default path is initialized from fitted analytic state, not random seed.
  • μ clipping is auditable.
  • Rolling failures are fail-closed in evidence mode.
  • Tests and artifacts distinguish implementation bounds (INV-SL1, INV-SL2) from rejected lead claim (INV-T2b).

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions