SIMULATION · O0-CRP-035

SIM-CRP-003 · Perspective Distillation — What survives when an observer is compressed

STATUSINCONCLUSIVE (primary) - plateau condition BC(L*) >= 0.7 AND BC(L*+1) < 0.4 misses cleanly firing at L4/L5 (0.892 >= 0.7 but 0.458 > 0.4). SUBSTANTIVE SECONDARY: In the properly context-dependent v1.2 observer, WEIGHTS (the W matrix in R^{d x K}) carry the identity signal. L4 (W preserved, p=0) gives BC_TV=0.892 vs random 0.282, gap 0.61 TV, 0.62 AM. This REVERSES the v1.1 F2 claim (which was a mathematical tautology from softmax shift-invariance). Memory-no-op finding (F1) replicated across both observer designs.
EVIDENCE TYPECOMPUTATIONAL SIMULATION · linear-bandit observers with per-action weight matrix W in R^{d x K} (v1.2 fixed observer), 8 preregistered compression levels, TV + argmax-match primary metrics, n=30 confirmatory. INCLUDES A PUBLIC DESIGN-CORRECTION NOTE: v1.0/v1.1 observer had w shape (d,) which was behaviorally invisible under softmax shift-invariance; v1.2 fixed this, and F2 (v1.1) REVERSED.
REPLICATIONINTERNALLY REPLICATED (v1.2 observer) by sister study CRP-036 — same WEIGHTS_DOMINATE finding from an inverted compression pipeline. CRP-037 registered for cross-architecture PP-observer replication.
PHYSICAL VALIDATIONNONE (linear-bandit computational model).
VERSION1.2.0
DATE

O0-CRP-035 · Perspective Distillation — Scientific Record (v1.2)

**Semantic name:** SIM-CRP-003 · Perspective Distillation

**Record class:** SIMULATION

**Program:** Contact and Revelation (CRP-001)

**Non-drift question:** PERSPECTIVE (primary)

**Version:** 1.2.0 (supersedes v1.1 findings)

**Date:** 2026-07-30

**Status:** INCONCLUSIVE primary verdict · WEIGHTS-CARRY-IDENTITY secondary finding

**Preregistration:** [preregistration.md](preregistration.md) (frozen v1.1, 2026-07-30)

---

⚠ Design-correction notice (v1.1 → v1.2)

The v1.0 and v1.1 versions of this record made a claim (F2: "preferences carry

more identity signal than weights") that was in fact a **mathematical

consequence of a design bug**, not an empirical finding.

**The bug.** The v1.0/v1.1 observer stored `w` as a flat vector of shape `(d,)`,

and computed `q(x) = x @ w + p`. Because `x @ w` is a **scalar** (dot product

of two vectors), it was broadcast to all K action logits before softmax. The

softmax function is **shift-invariant under a constant added to all logits**:

$$\text{softmax}(v + c \cdot \mathbf{1}) = \text{softmax}(v)$$

Therefore the observer's policy `π(a | x) = softmax((x @ w + p) / τ)` is

mathematically equal to `softmax(p / τ)` — **independent of x** and

**independent of w**. `w` was learned but behaviorally invisible.

Under this bug, every finding of the form "w carries no identity signal" or

"preferences dominate weights" was mathematically forced, not empirically

discovered. The v1.1 F2 was a tautology.

**The fix.** In v1.2 the observer state uses a per-action weight matrix

$W \in \mathbb{R}^{d \times K}$ and computes $q(x)[a] = x \cdot W[:, a] + p[a]$.

Now `x · W[:, a]` is a **different scalar for each action**, so softmax

shift-invariance no longer collapses the x-dependent contribution. Policies

are genuinely context-dependent, and w-vs-p comparisons are meaningful

empirical questions.

**Detection.** The bug was exposed by O0-CRP-036 (the sister study that

inverts CRP-035's compression pipeline). CRP-036's LA1 level ("preferences

only, w=0") produced `BC_TV = 1.000` — perfect behavioral preservation with

no weights — which is mathematically impossible for a truly context-dependent

observer. Investigation revealed the softmax shift-invariance issue.

**What this v1.2 supersedes.**

  • v1.1 F2 ("preferences dominate weights"): **REVERSED**. Under the fixed

observer, weights (as the W matrix) carry most of the identity signal.

L4 (W preserved, p=0) gives BC_TV = 0.892 vs random 0.282 — a huge gap.

  • v1.1 F1 ("memory is behavioral no-op"): **REPLICATED**. BC_TV(0) = BC_TV(1)

= BC_TV(2) = 1.000 under both observer designs. Memory not being used by

the decision rule is design-invariant.

  • v1.1 F3 ("argmax(p) bit lifts behavior"): **REFRAMED**. Under v1.2, L5

(argmax of per-action W column + argmax(p)) does lift behavior above the

random baseline (BC_TV = 0.458 vs random 0.299), but the per-action W

structure is what does the lifting, not argmax(p) alone.

**What this v1.2 does NOT supersede.**

  • The preregistration schema (v1.1 metrics — TV distance and argmax match —

are still primary; cosine is still auxiliary). Metric definitions unchanged.

  • The verdict rules. Applied identically to v1.2 data.
  • The 8-level compression pipeline structure. Only the reconstruction and

observer arithmetic changed.

The v1.1 record has been retained in git history for full audit. **This v1.2

record is the current scientific finding.**

---

Claim-status banner


CLAIM STATUS   : INCONCLUSIVE (primary) · WEIGHTS-CARRY-IDENTITY (secondary)
EVIDENCE TYPE  : COMPUTATIONAL SIMULATION · CONTEXTUAL-BANDIT OBSERVERS
PHYSICAL VALID : NONE
INDEPENDENT REP: NONE (CRP-037 registered — PP-observer cross-architecture)

SUPPORTED:
- Memory summary preservation is a behavioral no-op in this observer class
  (BC_TV(0) = BC_TV(1) = BC_TV(2) = 1.000). The decision rule does not use
  memory. Replicated across the v1.0/v1.1 buggy observer AND the v1.2
  corrected observer.
- In a properly context-dependent linear-bandit observer, WEIGHTS carry the
  identity-relevant signal. L4 (W matrix retained, preferences discarded)
  preserves BC_TV = 0.892 vs random baseline 0.282 (gap 0.61 TV, 0.62 AM).
- Argmax compression of per-action W columns preserves a small but
  measurable identity signal at L5 (BC_TV = 0.458 vs random 0.299,
  gap 0.16 TV, 0.26 AM), consistent with per-action structure being
  the dominant signal carrier.
- Under further compression (L6 one-bit, L7 identifier), behavior collapses
  to the random-parameter baseline.
- Design correction: the v1.0/v1.1 observer's "context-dependent policy"
  claim was mathematically false due to softmax shift-invariance;
  documented and fixed here.

NOT ESTABLISHED:
- Whether the preregistered plateau condition (BC(L*) >= 0.7 AND
  BC(L*+1) < 0.4) is meaningful under this floor structure — L4 satisfies
  the first part (0.892 > 0.7) but L5 (0.458) does not clearly satisfy the
  second part (< 0.4). Registered followup CRP-035-R4 will recalibrate the
  rule.
- Whether these findings generalize to observer architectures other than
  linear-bandit — registered as CRP-037.
- Whether "perspective" in the philosophical sense survives compression.
- Whether the specific W-vs-p asymmetry is a property of this training regime
  (linear-Gaussian reward on N(0, I) contexts) or generalizes to other
  environment classes.

---

Abstract

Second preregistered execution of SIM-CRP-003 (Perspective Distillation)

under the corrected v1.2 observer. Contextual-bandit observers with state

$(W, \mu_0, \eta, \tau, p, M, \text{id})$ where $W \in \mathbb{R}^{d \times K}$

are progressively compressed at 8 levels. At each level we measure

behavioral continuity via total-variation distance (`BC_TV`) and argmax match

rate (`BC_AM`) as primary metrics, plus self-recognition (SR), value

preservation (VP), predictive similarity (PS), and recoverability (Rec).

Under n=30 observers, 200 held-out contexts, and adversarial random-parameter

and cross-observer controls:

  • **Primary verdict:** INCONCLUSIVE (the preregistered plateau condition

BC(L*) ≥ 0.7 AND BC(L*+1) < 0.4 does not fire cleanly — L4 satisfies the

first clause but L5 = 0.458 fails the < 0.4 second clause). A verdict-rule

recalibration is registered as CRP-035-R4.

  • **Secondary finding (WEIGHTS-CARRY-IDENTITY):** L4 (W matrix retained,

preferences and memory discarded) preserves behavior nearly perfectly:

BC_TV = 0.892, BC_AM = 0.885 vs random 0.282 and 0.266 — a gap of 0.61

TV and 0.62 AM. **In this properly context-dependent observer class, the

W matrix is the identity carrier.**

  • **Consistent replication (F1):** Memory summary compression is a behavioral

no-op. BC_TV(0) = BC_TV(1) = BC_TV(2) = 1.000. The decision rule does not

use memory, so its compression has no cost.

The design correction from v1.1 to v1.2 (fixing softmax shift-invariance in

the observer definition) reversed the v1.1 F2 finding: preferences do NOT

dominate weights when the observer is genuinely context-dependent. This

correction is publicly documented and the sister study CRP-036 (which

exposed the bug) also reports WEIGHTS_DOMINATE under the fixed observer.

1. Historical and conceptual background

Unchanged from v1.1. Opens the PERSPECTIVE non-drift branch of CRP-001,

motivated by the O/0 "end credits contain only your name" motif — a

philosophical claim that perspective compresses to a single identifier. The

study operationalizes compression and measures behavioral preservation

without evaluating the philosophical claim.

2. Source-claim audit

Unchanged from v1.1.

3. Research question

For a bounded contextual-bandit observer with specifiable internal state,

what is the smallest representation that preserves behavior, self-recognition,

value structure, and predictive similarity on held-out environments?

4. Operational definitions

See preregistration.md §3.

5. Formal model (v1.2)

Observer state $\theta = (W, \mu_0, \eta, \tau, p, M, \text{id})$ with:

  • $W \in \mathbb{R}^{d \times K}$ — per-action reward weight matrix (updated online)
  • $\mu_0 \in \mathbb{R}^d$ — scalar prior mean, broadcast to all action columns at initialization
  • $\eta \in (0, 1]$ — learning rate
  • $\tau \in [0.15, 0.5]$ — softmax temperature (v1.1 range preserved)
  • $p \in \mathbb{R}^K$ — per-action preference bonus
  • $M$ — bounded FIFO memory (cap 100)
  • id — stable identifier

Decision rule: $q(x)[a] = x \cdot W[:, a] + p[a]$, $\pi(a | x) = \text{softmax}(q(x) / \tau)$.

Update rule: on receiving reward $r$ for action $a$ in context $x$,

$W[:, a] \leftarrow W[:, a] + \eta (r - q(x)[a]) x$ and

$p[a] \leftarrow p[a] + 0.1 \eta (r - q(x)[a])$.

Training environment: $W_{\text{env}} \in \mathbb{R}^{d \times K}$,

$p_{\text{env}} \in \mathbb{R}^K$, reward $r = x \cdot W_{\text{env}}[:, a] + p_{\text{env}}[a] + \epsilon$

with $\epsilon \sim \mathcal{N}(0, \sigma^2)$.

6. Methods

Confirmatory: n=30 observers, seeds 12000..12029; N=200 held-out contexts

(seed 13000); N=50 held-out environments for value preservation (seeds

14000..14049). Cross-observer control on all 30×29 pairs. Random-parameter

baseline generated at seeds 88000..96000 across 8 levels. Full protocol

frozen in preregistration.md v1.1.

7. Results (v1.2)

7.1 Primary metrics table

| L | Interpretation | BC_TV | BC_AM | BC_cos | SR | VP | PS | BC_TV_random | BC_AM_random | BC_TV_cross | BC_AM_cross |

|---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|

| 0 | Full | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 0.292 | 0.281 | 0.259 | 0.246 |

| 1 | Memory summary | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 0.272 | 0.261 | 0.259 | 0.246 |

| 2 | No memory | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 0.257 | 0.242 | 0.259 | 0.246 |

| 3 | PCA-3 latent | 0.489 | 0.503 | 0.643 | 0.100 | 0.585 | 0.527 | 0.316 | 0.267 | 0.310 | 0.270 |

| **4** | **W matrix + τ (no p)** | **0.892** | **0.885** | **0.936** | **0.433** | **0.927** | **0.986** | 0.282 | 0.266 | 0.260 | 0.247 |

| 5 | argmax(W per action) + argmax(p) | 0.458 | 0.505 | 0.655 | 0.067 | 0.413 | 0.613 | 0.299 | 0.242 | 0.305 | 0.248 |

| 6 | Invariant bit | 0.326 | 0.257 | 0.524 | 0.033 | 0.384 | 0.071 | 0.317 | 0.260 | 0.316 | 0.245 |

| 7 | Identifier only | 0.319 | 0.261 | 0.544 | 0.033 | 0.333 | 0.000 | 0.319 | 0.261 | 0.319 | 0.261 |

Chance thresholds: SR = 1/N = 0.033 · AM = 1/K = 0.250.

7.2 Preregistered verdict application

1. MEASUREMENT_FAILURE — BC_TV(0) = BC_AM(0) = 1.000 ≥ 0.95 · PASS.

2. METRIC_SATURATION — BC_TV_cross(0) = 0.259 < 0.85; BC_AM_cross(0) = 0.246 < 0.85 · PASS (cleaner than v1.1).

3. TRIVIAL_COMPRESSION — L1 (1.0-1.0=0), L2 (1.0-1.0=0) but L3 gap = 0.173 > 0.1. Rule not fired.

4. PERSPECTIVE_SURVIVES_TO_L(4) — BC_TV(4) = 0.892 ≥ 0.7 ✓ AND BC_TV(5) = 0.458 < 0.4 ✗. Rule does not fire on the second clause (0.458 is above 0.4).

5. BEHAVIOR_IDENTITY_DISSOCIATE — BC_TV(4) = 0.892 > 0.7. Fail.

6. HOLISTIC_IDENTITY — BC_TV(7) = 0.319 < 0.5. Fail.

7. NOTHING_SURVIVES — BC_TV(1) = 1.0 > 0.3. Fail.

**Primary verdict: INCONCLUSIVE.** The plateau condition misses by 0.058

on BC_TV(5). A CRP-035-R4 rule recalibration (gap-from-random criterion) is

registered.

7.3 Substantive secondary findings (v1.2)

**F1 · Memory is not a behavioral carrier.** BC_TV(0) = BC_TV(1) = BC_TV(2) =

1.000. Compressing memory to a summary or discarding memory entirely does not

change action distributions on held-out contexts. **Predicted at

preregistration, confirmed under both observer designs (v1.0/v1.1 buggy and

v1.2 corrected).** The decision rule does not use memory, so its removal has

no behavioral cost. This finding is design-invariant.

**F2 (v1.2) · Weights carry the identity signal.** L4 (W matrix retained,

preferences and memory discarded) preserves behavior nearly perfectly:

  • BC_TV(4) = 0.892 vs BC_TV_random(4) = 0.282 (gap **0.610**)
  • BC_AM(4) = 0.885 vs BC_AM_random(4) = 0.266 (gap **0.619**)
  • SR(4) = 0.433 (13× chance)
  • VP(4) = 0.927 (value preserved almost fully)
  • PS(4) = 0.986 (predictive similarity near-perfect)

**In the properly context-dependent observer, the W matrix is the identity

carrier.** This is the OPPOSITE of the v1.1 F2 claim (which was a mathematical

tautology from softmax shift-invariance).

**F3 (v1.2) · Argmax(W per action) + argmax(p) lifts behavior modestly.**

L5 preserves per-action argmax structure of W plus argmax(p):

  • BC_TV(5) = 0.458 vs random 0.299 (gap 0.159)
  • BC_AM(5) = 0.505 vs random 0.242 (gap 0.262)

The per-action structure of W (retaining WHICH context feature each action

attends to) preserves substantial identity signal even after most numeric

information is discarded.

**F4 (v1.2) · Sub-argmax compression collapses to random.** L6 (one bit of

W trace sign) and L7 (identifier only) both give BC_TV ≈ 0.32, matching the

random-parameter baseline. **The full identity signal in this observer class

does not survive compression below the per-action argmax level.**

7.4 The uniformity floor (v1.2)

Under the v1.2 observer, the random-parameter baseline for BC_TV is

~0.28–0.32 across levels — substantially lower than the v1.1 floor of ~0.64.

This is because per-action weight matrices produce more diverse policies:

two randomly-chosen W matrices give policies with expected TV distance

around 0.7, hence BC_TV around 0.3.

The lower baseline means the preregistered `BC(L+1) < 0.4` threshold is now

achievable (L6 = 0.326, L7 = 0.319 both fall below), but the L4→L5→L6

transition is gradual rather than a sharp cliff. The plateau rule was

designed assuming a step-shaped BC curve; the observed curve is closer to a

declining ramp with a clear plateau only at L4.

8. Uncertainty

All BC/SR/VP/PS estimates are per-observer means with reported SEM in

`results/summary_confirmatory.json`.

9. Limitations

  • Single observer architecture (linear-bandit). CRP-037 replicates in a PP

observer.

  • Single environment class (Gaussian-context linear-reward bandit).
  • Single softmax temperature range.
  • The compression pipeline is one of many possible; CRP-036 explored an

alternate (preference-focused) path and confirmed WEIGHTS_DOMINATE.

  • **v1.2 corrects a v1.0/v1.1 design bug (softmax shift-invariance). Prior

versions of this record are archived in git history but should not be

cited as evidence.**

10. Alternative interpretations

  • The INCONCLUSIVE verdict may reflect a badly-calibrated verdict rule

(plateau requires a specific curve shape). CRP-035-R4 recalibration.

  • L4 preserving 0.892 might depend on the specific N(0, I) context distribution.
  • The argmax-based L5 metric loses per-action MAGNITUDE information; a

quantized-W compression (retain d bits per action) might close the L4→L5 gap.

11. Replication procedure


cd research/studies/O0-CRP-035/src
python run_study.py --phase exploratory   # ~15 s
python run_study.py --phase confirmatory  # ~3 min
python analyze.py

Determinism: exact reproduction requires numpy ≥ 1.26 with the

default_rng bit generator. All seeds documented in preregistration §8.

12. Code and data manifest

  • `preregistration.md` (v1.1, frozen 2026-07-30; metric definitions unchanged)
  • `src/observer.py` — Observer dataclass (v1.2) with `W` shape (d, K)
  • `src/compressors.py` — 8 compression operators (v1.2) + decompress + random baseline
  • `src/measurements.py` — BC_TV, BC_AM, BC_cos, SR, VP, PS, Rec
  • `src/run_study.py` — exploratory + confirmatory drivers with verdict rules
  • `src/analyze.py` — figure generation
  • `results/summary_exploratory.json` — v1.2 exploratory pilot (n=6)
  • `results/summary_confirmatory.json` — v1.2 confirmatory (n=30)
  • `data/v1.0_diagnostic/summary_exploratory_v1.0.json` — v1.0 archived diagnostic
  • `figures/01_bc_curves.png` — primary BC curves with baselines (v1.2)
  • `figures/02_all_metrics.png` — all metrics (v1.2)
  • `figures/03_gap_from_random.png` — non-triviality gaps (v1.2)
  • `figures/04_heatmap.png` — metric heatmap (v1.2)
  • `figures/05_v10_vs_v11.png` — v1.0 diagnostic vs v1.1/v1.2 curves

13. Relationship to the philosophical archive

**Conceptual provenance is not empirical support.** Unchanged from v1.1.

14. Registered follow-ups

  • **O0-CRP-036** — Preference-preserving alternate compression path.

**EXECUTED under v1.2 observer** (same 2026-07-30). Verdict:

WEIGHTS_DOMINATE. LA1 (preferences only, W=0) gives BC_TV = 0.376 vs

LB4 (W only, p=0) BC_TV = 0.884 — a gap of 0.508 TV. Confirms F2 (v1.2)

from an inverted design.

  • **O0-CRP-037** — Cross-architecture PP-observer replication of the

compression pipeline. REGISTERED, uses a genuinely different observer

design (Bayesian predictive processor with beliefs and precisions

instead of linear weights + preferences), so it is immune to the

softmax shift-invariance issue.

  • **O0-CRP-035-R3** — Multi-environment generalization.
  • **O0-CRP-035-R4** — Verdict rule recalibration to a gap-from-random

criterion.

15. References

Unchanged from v1.1.

16. Revision history

| Version | Date | Change |

|---|---|---|

| 1.0.0 | 2026-07-30 | Initial preregistration and code. Exploratory pilot revealed cosine-BC metric saturation. |

| 1.1.0 | 2026-07-30 | Preregistration revised (TV BC, AM primary, τ narrowed). Confirmatory executed (n=30). Verdict: INCONCLUSIVE (primary), three secondary findings. |

| **1.2.0** | **2026-07-30** | **Design correction: observer.w shape (d,) → observer.W shape (d, K), fixing a softmax shift-invariance bug that made w behaviorally invisible. All v1.2 confirmatory results are with the corrected observer. F2 REVERSED (weights, not preferences, carry identity). F1 REPLICATED. Sister study CRP-036 executed under v1.2 as WEIGHTS_DOMINATE.** |

Figures

Figure from O0-CRP-035: 01 bc curves
Figure from O0-CRP-035: 01 bc curves
Figure from O0-CRP-035: 02 all metrics
Figure from O0-CRP-035: 02 all metrics
Figure from O0-CRP-035: 03 gap from random
Figure from O0-CRP-035: 03 gap from random
Figure from O0-CRP-035: 04 heatmap
Figure from O0-CRP-035: 04 heatmap
Figure from O0-CRP-035: 05 v10 vs v11
Figure from O0-CRP-035: 05 v10 vs v11

Source proposition

“PERSPECTIVE non-drift question: "What survives when an observer is distilled?" Philosophical inspiration: "end credits contain only your name" - the O/0 motif that a perspective reduces to a single identifier.”

Conceptual provenance is not empirical support.