# Lockstep-as-failure empirical test

**Source:** `cwola_export_20260414.json` (N = 1865; A = 125, B = 1740)

Testing whether the Phase 0 v2 drilldown finding — that the top-10 B-bucket sema_boost queries had all 9 tiers firing with high cosine agreement — generalises from that 10-row slice to the full 1865-row dataset.

**Gate:** does any candidate lockstep scalar produce |Pearson r| ≥ 0.2 against the 0/1 bucket label? If yes, the antiresonance signature is a load-bearing training signal, not a top-10 curiosity.

## Candidate scalars

| scalar | definition | meaning |
|---|---|---|
| `n_tiers_fired` | how many of the 9 tiers produced a score | higher = more dimensions active |
| `all9_fired` | binary: did every tier fire? | 1 = full lockstep possible |
| `mean_z` | mean z-score across fired tiers | high = all fired tiers are above their own mean |
| `min_z` | min z-score across fired tiers | high = the weakest fired tier is still above average (strongest lockstep signal) |
| `max_z` | max z-score across fired tiers | high = at least one tier is strong |

## Results

### Per-bucket means

| scalar | mean_A | mean_B | Δ (A−B) |
|---|---|---|---|
| n_tiers_fired | 7.3440 | 7.3856 | -0.0416 |
| all9_fired | 0.0560 | 0.0224 | +0.0336 |
| mean_z | 0.0807 | -0.0005 | +0.0812 |
| min_z | -0.8280 | -0.9322 | +0.1042 |
| max_z | 1.1522 | 1.1339 | +0.0183 |

### Pearson r vs bucket label (A=0, B=1)

| scalar | r | |r| ≥ 0.2? |
|---|---|---|
| n_tiers_fired | +0.0177 | no |
| all9_fired | -0.0541 | no |
| mean_z | -0.0309 | no |
| min_z | -0.0416 | no |
| max_z | -0.0044 | no |
| cos(q,c) | +0.0612 | no |

## Verdict

**Gate FAILS.** No lockstep scalar exceeds |r| = 0.2 on this dataset. Possible reasons:

1. The top-10 drilldown pattern is real but narrow — it holds    for the extreme high-score tail but not across the full    score distribution.
2. The 95% B-rate is diluting signal by mislabelling many    low-lockstep queries as B.
3. A scalar summary of the 9-tier pattern loses the structure;    the 9×9 matrix may still carry the signal but not any single    projection of it.
4. The pattern requires interaction with query length or query    type, not captured by these scalars.

## Signed interpretation

Regardless of whether the gate passes, the **sign of each correlation** is the interesting part:

- **Positive r** means higher lockstep → more likely to be bucket B   (failed retrieval). This is the antiresonance signature: agreement   = failure mode.
- **Negative r** means higher lockstep → more likely to be bucket A   (accepted). This is the conventional prior: agreement = confidence.

The conventional prior predicts all correlations should be **negative**. If correlations are positive (even if small), that directionally supports the antiresonance hypothesis even without clearing the 0.2 threshold.

## Next moves

1. If the gate passes: bake the best-performing scalar into batman's    agreement head as a baseline before the 9×9 matrix takes over.
2. If the gate fails but signs are consistently antiresonance-aligned:    still a useful direction, but needs the full matrix to surface.
3. If signs are mixed: the top-10 drilldown was content-specific —    dig into query-type segmentation before designing the head.

— Laude (generated by `scripts/pwpc/lockstep_test.py`)