# H2 — Surface-feature contamination of the credibility direction

## Hypothesis (H2)

The credibility direction is partially recoverable from surface features that carry no explicit credibility content (dialect, disfluency, interpreter-mediated grammar, formality). If so, that is the mechanism of concern for the discrimination argument.

*Framing note (spec §2):* registers are **linguistic surface features only** and are never labelled with protected characteristics. The claim is about the model's representations, not about any real person.

## Setup

- model: `Qwen/Qwen2.5-7B-Instruct` (quant `4bit`), H1 layer **19**
- H1 direction quality at this layer: AUROC=0.977
- registers: ['dialectal', 'high_disfluency', 'l2_interpreter', 'low_disfluency', 'standard_formal']
- fact content and credibility framing held constant across registers

## Probe 1 — projection by register (CIs)

Mean projection onto the credibility direction per register (framing constant; contamination ⇒ registers separate):

| register | mean | ci_lo | ci_hi | n |
| --- | --- | --- | --- | --- |
| dialectal | -11.283 | -11.592 | -10.957 | 60 |
| high_disfluency | -5.324 | -5.715 | -4.894 | 60 |
| l2_interpreter | -10.343 | -10.722 | -9.958 | 60 |
| low_disfluency | -12.391 | -12.715 | -12.068 | 60 |
| standard_formal | -8.339 | -8.800 | -7.862 | 60 |

Permutation tests vs `standard_formal` (BH-corrected):
- **dialectal** vs standard_formal: Δmean=-2.944, p=0.000, significant(BH)=True
- **high_disfluency** vs standard_formal: Δmean=+3.015, p=0.000, significant(BH)=True
- **l2_interpreter** vs standard_formal: Δmean=-2.004, p=0.000, significant(BH)=True
- **low_disfluency** vs standard_formal: Δmean=-4.052, p=0.000, significant(BH)=True

![register projection](figures/h2_register_projection.png)

## Probe 2 — reverse probe & geometric alignment

Register classifier CV accuracy = **1.000** (chance = 0.200); above chance = True.

Cosine alignment between each register weight-vector and the credibility direction:
- dialectal: |cos|=0.049
- high_disfluency: |cos|=0.086
- l2_interpreter: |cos|=0.022
- low_disfluency: |cos|=0.096
- standard_formal: |cos|=0.044

Max |cosine| = **0.096**, permutation p = 0.005 ⇒ non-orthogonal = True.

## Probe 3 — behavioural cross-check

Does the model's own unsteered reliability rating of each register statement track its position on the credibility direction? If projection and behaviour agree, the contamination finding stands on representation *and* behaviour; if they diverge, that is the finding.

- dialectal: projection -11.283, unsteered rating 2.87 (n=60)
- high_disfluency: projection -5.324, unsteered rating 2.82 (n=60)
- l2_interpreter: projection -10.343, unsteered rating 4.23 (n=60)
- low_disfluency: projection -12.391, unsteered rating 4.90 (n=60)
- standard_formal: projection -8.339, unsteered rating 5.77 (n=60)

Projection-vs-rating Spearman: item-level = **-0.139** (300/300 scored), register-level = **-0.300** (n=5 registers).

## Result

**Verdict: ✅ SUPPORTED** — Surface register shifts the credibility projection with framing held constant (≥1 register significant after BH), register is decodable above chance (acc=1.00 vs chance 0.20), and the register and credibility directions are non-orthogonal beyond a permutation null (max cosine=0.10, p=0.005).
