summaryrefslogtreecommitdiff
path: root/docs/reviews/2026-07-31-claude-opus-4.6.md
blob: 2ff822740d25afb7972f5217e5378e75e698503b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Review: Claude Opus 4.6 (agy, 2026-07-31)

Adversarial review of the J-space replication project. Full brief: /tmp/jspace_brief.md.

## Headline

**The implementation computes the wrong quantity.**

Anthropic's J-lens vectors are rows of `W_U · E[∂h_final/∂h_ℓ]` — the Jacobian stops at
the final *residual stream*, before softmax. Our code (jlens_v2.py) differentiates through
`log_softmax`, which folds in a `(1 − p(k))` factor that mechanically anticorrelates norm
with frequency. The r = −0.65 may be an artefact of this difference, not a property of the
model's representations.

## Q1

The 67% causal drop and the min(V,d) rank law both follow from the softmax gradient
mechanics and linear algebra respectively — neither requires a "workspace" explanation.
The causal experiment doesn't control for the softmax saturation confound.

## Q2

The cheapest kill-or-save experiment: compute J-lens BOTH ways (our `∇ log p` vs
Anthropic-faithful `∇ h_final` composed with `W_U`) on the *existing* trained model.
If the correlation vanishes with the faithful method, the thesis is dead.
~30 min of compute, zero retraining.

## Q3

gpt2_jlens.py also has a norm-averaging bug: it accumulates `E[‖∇‖]` (average of norms)
rather than `‖E[∇]‖` (norm of average), which are different quantities by Jensen's
inequality.

## Q4

Frame as "open confounds to control," not "refutation." We haven't faithfully replicated
their method, and we haven't addressed any of their functional experiments (steering,
verbal report, reasoning ablation).