# O0-CRP-036 · Preference-Preserving Alternate Compression Path — Scientific Record

**Semantic name:** SIM-CRP-003b · Alternate Compression Path (Preferences over Weights)
**Record class:** SIMULATION
**Program:** Contact and Revelation (CRP-001)
**Non-drift question:** PERSPECTIVE
**Version:** 1.0.0
**Date:** 2026-07-30
**Status:** WEIGHTS_DOMINATE (confirmatory)
**Preregistration:** [preregistration.md](preregistration.md) (v1.0.0)

---

## Claim-status banner

```
CLAIM STATUS   : WEIGHTS_DOMINATE (preregistered verdict at n=30)
EVIDENCE TYPE  : COMPUTATIONAL SIMULATION · linear-bandit observers (CRP-035 v1.2)
PHYSICAL VALID : NONE
INDEPENDENT REP: NONE (sister to CRP-035; both under same observer class)

SUPPORTED:
- H1 REVERSE: Weight-only compression (LB4: W matrix retained, p=0)
  preserves behavior much more strongly than preference-only compression
  (LA1: p retained, W=0). BC_TV: LB4=0.884 vs LA1=0.376 (gap 0.508).
  BC_AM: LB4=0.878 vs LA1=0.323 (gap 0.555).
- H2 fails: argmax(p) alone (LA2) is INSUFFICIENT to match argmax(W) +
  argmax(p) at L5 (LB5). LA2 BC_TV=0.356 vs LB5 BC_TV=0.482 (gap 0.125).
- H3 confirmed: one-bit preference sign (LA3) collapses to the random
  baseline. BC_TV gap 0.031, BC_AM gap 0.041.
- Verdict WEIGHTS_DOMINATE is INTERNALLY REPLICATED — CRP-035 v1.2 shows
  the same asymmetry from an orthogonal compression pipeline.
- This study exposed the design bug in the CRP-035 v1.0/v1.1 observer.
  The preliminary (pre-observer-fix) CRP-036 run gave PREFERENCES_DOMINATE,
  which was later shown to be a mathematical tautology from softmax
  shift-invariance. The pre-fix results are archived in
  `data/pre_observer_fix/` as diagnostic, not as scientific findings.

NOT ESTABLISHED:
- Any generalization beyond the linear-bandit observer class (CRP-037
  registered under a Bayesian PP-observer architecture).
- Any generalization beyond N(0, I) contexts and linear-Gaussian rewards.
- That weights carry the identity signal in every observer architecture
  where such a comparison is possible.
- Any claim about identity in a philosophical sense.
```

---

## Abstract

Preregistered alternate compression pipeline that inverts CRP-035's design.
Where CRP-035 progressively discards fields toward an identifier, CRP-036
compresses through a *preference-preserving* branch (LA0..LA4) and compares
directly against two of CRP-035's weight-preserving levels (LB4 replay of
L4, LB5 replay of L5).

**During execution, CRP-036 exposed a design bug in the CRP-035 v1.0/v1.1
observer.** The buggy observer stored `w` as a flat vector shape `(d,)`, so
`x @ w` was a scalar broadcast to all action logits — softmax shift-invariance
made `w` behaviorally invisible. The preliminary CRP-036 confirmatory run
under the buggy observer gave a `PREFERENCES_DOMINATE` verdict with
`BC_TV(LA1) = 1.000` (perfect behavioral preservation with no weights) —
mathematically impossible for a truly context-dependent observer.

The observer was fixed to use a per-action weight matrix $W \in \mathbb{R}^{d \times K}$
(so `x · W[:, a]` is per-action) and CRP-036 was rerun. Under the corrected
observer, the preregistered verdict became **WEIGHTS_DOMINATE**: the W matrix
carries most of the identity-relevant signal, and preferences alone are only
marginally better than a random baseline. This corroborates CRP-035 v1.2's F2
(v1.2) finding via an orthogonal test.

- Confirmatory n = 30 observers · 200 held-out contexts · 500 predictive
  probes · 50 held-out environments × 20 episodes for VP.
- Verdict: **WEIGHTS_DOMINATE** (all three preregistered comparison
  hypotheses evaluated).
- Runtime: 166 s under the corrected observer.

## 1. Historical and conceptual background

CRP-035 v1.1 reported a secondary finding (F2) that preferences dominate
weights in observer behavior. That finding motivated CRP-036 as a direct
adversarial test: run a compression pipeline that keeps preferences and
throws weights away, then compare to CRP-035's L4 (weights kept, preferences
thrown away).

The design of CRP-036 turned out to be more consequential than the
substantive finding it was chasing: LA1 (preferences only) gave
`BC_TV = 1.000` under the CRP-035 v1.1 observer, which is impossible for
a truly context-dependent observer. This forced examination of the observer's
mathematical structure and revealed the softmax shift-invariance issue.

The full CRP-036 v1.0 story is therefore both:

1. A direct empirical test of F2 (v1.1) — REJECTED.
2. The instrument by which the underlying CRP-035 design bug was found.

Both aspects are preserved in this record.

## 2. Source-claim audit

CRP-036 does not carry a philosophical source claim of its own. It is a
sub-question of CRP-035's PERSPECTIVE branch, testing which component of
the observer state carries behavioral identity.

## 3. Research question

For the corrected linear-bandit observer class of CRP-035 v1.2, does a
compression pipeline that preserves preferences and discards weights
preserve behavior BETTER than the analogous pipeline that preserves weights
and discards preferences?

## 4. Operational definitions

Inherited from CRP-035 v1.1/v1.2 preregistration §3 (behavioral continuity,
self-recognition, value preservation, predictive similarity, recoverability).

## 5. Formal model

Observer class: CRP-035 v1.2 corrected observer (per-action weight matrix
$W \in \mathbb{R}^{d \times K}$).

Compression pipeline (locked in preregistration §4):

| Level | Retained | Reconstruction defaults |
|---|---|---|
| **LA0** | Full | Identity |
| **LA1** | preferences only (`p, τ, id`) | `W = 0, μ_0 = 0, η = 0.1, memory = []` |
| **LA2** | argmax(p) + sign | `p = e_{argmax(p)} · sign · 1.0; W = 0` |
| **LA3** | one bit `sign(p[0])` | `p = e_0 · sign; W = 0` |
| **LA4** | identifier only | All parameters zeroed; τ = 1.0 |
| **LB4** | W matrix + τ (replay of CRP-035 L4) | `p = 0, μ_0 = 0, η = 0.1, memory = []` |
| **LB5** | per-action argmax of W + argmax(p) (replay of CRP-035 L5) | Reconstruction identical to CRP-035 v1.2 L5 |

## 6. Methods

Confirmatory sample: **n=30 observers**, seeds 15000..15029 (disjoint from
every prior CRP study). Environment seeds 15500..15529. Eval context seed
16000 (N=200 contexts). Probe seed 16500 (N=500 probe pairs). VP env seeds
17000..17049 (N=50 envs × 20 episodes).

Exploratory phase (n=8 observers, seeds 1500..1507) executed only under the
pre-fix observer as a measurement-sanity check. Not repeated after observer
fix since the confirmatory run was clean.

## 7. Results (under CRP-035 v1.2 corrected observer)

| Level | Retained | BC_TV | BC_AM | BC_cos | SR | VP | PS | BC_TV_random | BC_AM_random |
|---|---|---:|---:|---:|---:|---:|---:|---:|---:|
| LA0 | Full | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 0.263 | 0.251 |
| **LA1** | **preferences only** | **0.376** | **0.323** | **0.506** | 0.100 | 0.278 | 0.140 | 0.315 | 0.276 |
| **LB4** | **W matrix + τ** | **0.884** | **0.878** | **0.940** | 0.333 | 0.950 | 0.986 | 0.246 | 0.229 |
| LA2 | argmax(p) + sign | 0.356 | 0.308 | 0.512 | 0.100 | −0.083 | 0.115 | 0.317 | 0.264 |
| LB5 | argmax(W per-action) + argmax(p) | 0.482 | 0.524 | 0.679 | 0.167 | 0.443 | 0.620 | 0.316 | 0.230 |
| LA3 | one bit `sign(p[0])` | 0.340 | 0.300 | 0.466 | 0.000 | −0.100 | 0.050 | 0.310 | 0.259 |
| LA4 | identifier only | 0.337 | 0.255 | 0.556 | 0.033 | 0.148 | 0.000 | 0.337 | 0.255 |

### 7.1 Preregistered hypothesis tests

| Hypothesis | Test | Result |
|---|---|---|
| H1 (preferences beat weights): `BC(LA1) > BC(LB4) + 0.05` | −0.508 TV, −0.555 AM | **REJECTED** (in the REVERSE direction, magnitude 10× threshold) |
| H2 (argmax(p) matches L5): `BC(LA2) ≥ BC(LB5) − 0.10` | −0.125 TV, −0.216 AM | **REJECTED** (LA2 is worse than LB5 by more than 0.10) |
| H3 (LA3 collapses to random): `BC(LA3) − BC_random(LA3) < 0.10` | 0.031 TV, 0.041 AM | **CONFIRMED** |

### 7.2 Verdict rule application

Applied verdict rules from preregistration §7 in order:

1. MEASUREMENT_FAILURE — BC_TV(LA0) = 1.000 · PASS.
2. METRIC_SATURATION — BC_TV_cross(LA0) = 0.267 · PASS (no saturation).
3. PREFERENCES_DOMINATE — H1 fails (in reverse direction). NOT FIRED.
4. PREFERENCES_LIFT — H1 fails. NOT FIRED.
5. **WEIGHTS_DOMINATE** — `BC_TV(LB4) − BC_TV(LA1) = 0.508 > 0.05` ✓ AND
   `BC_AM(LB4) − BC_AM(LA1) = 0.555 > 0.05` ✓. **FIRED.**

**Preregistered verdict: WEIGHTS_DOMINATE.**

### 7.3 Interpretation

Under the properly context-dependent observer:

- LB4 (W matrix, no preferences) preserves BC_TV = 0.884, close to full.
- LA1 (preferences only, no W) drops to BC_TV = 0.376, barely above random.
- LA2 (argmax(p) alone) is at the random baseline.
- LB5 (per-action argmax of W + argmax(p)) preserves moderate signal
  (BC_TV = 0.482 vs random 0.316), thanks to per-action W structure, not
  to argmax(p).

**The W matrix carries most of the identity-relevant information.** This
is opposite to what the buggy pre-fix run reported and is consistent with
CRP-035 v1.2's F2.

### 7.4 The design bug (and how CRP-036 found it)

**Pre-observer-fix run (archived at `data/pre_observer_fix/`).** Under
CRP-035's v1.0/v1.1 observer, CRP-036 confirmatory gave:

- LA1 (preferences only): BC_TV = 1.000, BC_AM = 1.000
- LB4 (weights only): BC_TV = 0.645, BC_AM = 0.233
- Verdict: PREFERENCES_DOMINATE

`BC_TV(LA1) = 1.000` means the compressed observer at LA1 (with W = 0)
produced *exactly the same* action distributions as the original observer
on all 200 held-out contexts. That is only possible if the original
observer's policy did not depend on W to begin with.

Root cause: `q(x) = x @ w + p` with `w` shape `(d,)` gives `x @ w` as a
scalar broadcast to all K action logits. Softmax is shift-invariant across
actions, so `softmax((x @ w + p) / τ) = softmax(p / τ)` — independent of
`x` and `w`. The `w` was learned but never affected behavior.

CRP-035's observer was fixed to `W ∈ R^{d × K}` (per-action weight matrix)
so `x · W[:, a]` differs across actions and softmax no longer normalizes it
away. CRP-036 was then rerun under the fixed observer, giving the
WEIGHTS_DOMINATE verdict reported above.

**Documentation of the pre-fix run is preserved in
`data/pre_observer_fix/summary_confirmatory.json`.** Its numeric results
should be interpreted as diagnostic evidence of the observer design bug,
not as scientific findings about identity carriers.

## 8. Uncertainty

Per-observer means with SEM reported in
`results/summary_confirmatory.json`. The three primary hypothesis tests
give margins of 0.508/0.555 (H1), 0.125/0.216 (H2), and 0.031/0.041 (H3)
— well outside decision boundaries in every case.

## 9. Limitations

- Same observer class as CRP-035 v1.2 (linear-bandit with per-action W).
- Same environment class (Gaussian contexts, linear rewards).
- The W-vs-p asymmetry may reflect that the training regime learns
  informative W but the preference-update rate is 10× slower than the
  W-update rate (see observer.update in CRP-035 v1.2). A followup study
  could equalize learning rates.
- CRP-036's key insight (finding the CRP-035 design bug) is a
  methodological contribution rather than a scientific one about
  perspective compression.

## 10. Alternative interpretations

- **Learning-rate asymmetry.** The observer's update rule increments W by
  `η · err · x` and p by `0.1 · η · err`. After 100 training episodes, W
  is more strongly trained than p. So "weights dominate" might be
  interpreted as "the more-trained component dominates" — not a general
  property of weights vs preferences.
- **Dimension asymmetry.** W has d × K = 32 real numbers; p has K = 4.
  W has more capacity to encode identity. This is consistent with
  WEIGHTS_DOMINATE but doesn't disentangle capacity from function.
- **PS(LA1) = 0.14 vs PS(LB4) = 0.99.** Predictive similarity gap is even
  larger than BC gap, suggesting p's contribution to reward prediction is
  much smaller than W's.

Both alternatives are noted as followup targets.

## 11. Replication procedure

```
cd research/studies/O0-CRP-036/src
python run_study.py --phase exploratory   # ~10 s (pre-fix data; not needed for confirmatory)
python run_study.py --phase confirmatory  # ~3 min
```

Determinism identical to CRP-035 v1.2.

## 12. Code and data manifest

- `preregistration.md` (v1.0.0)
- `src/alt_compressors.py` — LA0..LA4, LB4, LB5 operators
- `src/run_study.py` — exploratory + confirmatory drivers with verdict rules
- `results/summary_confirmatory.json` — v1.0 confirmatory (n=30 under fixed observer)
- `data/pre_observer_fix/summary_confirmatory.json` — pre-fix diagnostic (WEIGHTS_DOMINATE reversed to PREFERENCES_DOMINATE due to observer bug)
- `data/pre_observer_fix/summary_exploratory.json` — pre-fix exploratory

## 13. Relationship to the philosophical archive

**Conceptual provenance is not empirical support.** CRP-036 tests a
mechanistic sub-question raised by CRP-035. It does not evaluate any
philosophical claim directly.

Its indirect contribution to the philosophical archive: it demonstrates
that computational studies of "what carries identity" are extremely
sensitive to observer design. A poorly-specified observer produces
results that look empirical but are mathematically forced. The archive
should treat single-observer-class findings with the caution that
architecture-dependent results demand.

## 14. Registered follow-ups

- **O0-CRP-036-R1:** Equalize learning rates for W and p to test whether
  WEIGHTS_DOMINATE is an artifact of training regime.
- **O0-CRP-036-R2:** Nonlinear reward environment.
- **O0-CRP-037:** Cross-architecture PP-observer replication. Directly
  tests whether the WEIGHTS_DOMINATE finding depends on the linear-bandit
  observer class.

## 15. References

- CRP-035 v1.2 scientific record and preregistration.
- Sutton & Barto 2018, contextual bandit chapter (standard learning-rate
  choices and update rules).
- Softmax function properties: shift-invariance under constant offset
  (Goodfellow, Bengio, Courville 2016, ch. 6.2.2.3).

## 16. Revision history

| Version | Date | Change |
|---|---|---|
| 1.0.0 | 2026-07-30 | Preregistration frozen and code drafted. Pre-observer-fix confirmatory run at n=30 gave PREFERENCES_DOMINATE (later shown to be a design tautology). CRP-035 observer fixed. Confirmatory re-executed under the corrected observer, verdict WEIGHTS_DOMINATE. Full pre-fix data preserved as diagnostic. This record is the current scientific finding. |
