Skip to content

Commit c0e0afe

Browse files
committed
docs: Valhalla graduated — rename what the harness experiments on
Framing torque flagged in review on #82: the repo kept saying 'the Valhalla lab' after #81 made production the Valhalla arm, which reifies the superseded topology (Panama real, Valhalla experimental annex) the implementation had just removed. - docs/panama.md carried an objectively stale paragraph: the lab compiled with -source 27 --enable-preview and was 'never on the classpath the production tests run against', with physical separation as a structural guarantee against preview poisoning. All three are false now -- both arms are JDK 28, both load the production API, and that API is itself preview-marked. - README's stack diagram drew 'stable-JDK implementation / Valhalla laboratory' as layers; replaced with JDK 28 Panama + JEP 401 production and representation probes. - docs/valhalla-lab.md gains a legacy-name banner; the directory keeps its name for path compatibility. - The #82 arc bullet and LATEST_STATE now name the experiment as object-model and layout consequence, not Valhalla. Historical board entries are left as history. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HScwwezRdMxFfTs3WLG19d
1 parent 229ff39 commit c0e0afe

5 files changed

Lines changed: 41 additions & 19 deletions

File tree

‎.claude/board/LATEST_STATE.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
## 2026-09-19 — PR #81 merged (`07aa441`): production IS the Valhalla arm; Panama × Valhalla is one membrane
22

33
**The frame, because it is easy to file this wrong:** this was not a JDK
4-
26→28 upgrade. Production was Panama-only and Valhalla lived in the lab; they
4+
26→28 upgrade. Production WAS Panama-only with Valhalla in a lab arm; they
55
are now **one production membrane**, with JDK 28 as the enabling toolchain.
66
Panama = the verb, Valhalla = the noun, **lance-graph / T0 owns storage**.
77

‎.claude/board/PR_ARC_INVENTORY.md‎

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,15 @@
5959
on the wrong side of the cliff and no performance claim may be read off its
6060
`isValue()`. Valhalla changes what the VOCABULARY costs; it does not touch
6161
the membrane. No second graph representation, no row hydration introduced.
62-
- **Lab re-scoped, and the re-scope removed a confound it always carried:** the
63-
old A/B was `(record, JDK 26)` vs `(value record, JDK 27 EA)` — two
64-
variables. Both arms now run JDK 28, so the object model is the only
65-
difference. Two things it forced: **preview marking is transitive** (the
62+
- **The harness is now a REPRESENTATION probe suite, not a "Valhalla lab" —
63+
Valhalla graduated to production infrastructure and is no longer the thing
64+
under test.** `valhalla-lab/` keeps its directory name for path
65+
compatibility only; a doc banner says so. What it measures is object-model
66+
and layout consequence: `record` vs `value record` **on one JDK, against the
67+
same Valhalla-enabled production API**, with flattening and EA toggled.
68+
**The re-scope also removed a confound the harness always carried:** the old
69+
A/B was `(record, JDK 26)` vs `(value record, JDK 27 EA)` — two variables.
70+
Both arms now run JDK 28, so the object model is the only difference. Two things it forced: **preview marking is transitive** (the
6671
`record` arm also runs `--enable-preview`; it is a record arm on a preview
6772
JVM, not a preview-free one), and **`ValueClass.isFlatArray` narrowed from
6873
`Object` to `Object[]`** since 27-jep401ea3, which broke the flattening probe

‎README.md‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,11 @@ Rust, SoA layout, SIMD, FFM, or graph-engine internals.
2828
|
2929
View / Mask / Lens DSL <- lazy, monotonic-narrowing
3030
|
31-
stable-JDK implementation
32-
|
33-
Valhalla laboratory <- the tiny vocabulary only
31+
JDK 28: Panama FFM + JEP 401 <- value-typed vocabulary,
32+
| production, not a lab arm
33+
representation probes <- object-model / layout
34+
measurements (historical
35+
directory: valhalla-lab/)
3436
3537
====================== PANAMA FFM ======================
3638

‎docs/panama.md‎

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,20 @@ remains the only thing Panama asks for. What changed is that production
8080
deliberately uses Valhalla value classes (JEP 401, preview on this build), so
8181
`--release 28 --enable-preview` is now part of the shipped build contract.
8282
Read every "no preview" claim below as scoped to FFM: **Panama needs no
83-
preview; the vocabulary types do.** The Valhalla lab
84-
(`valhalla-lab/src/valhalla`) is compiled *separately*, with its own
85-
`-source 27 --enable-preview`, into its own output directory
86-
(`results/valhalla-lab/`), and is never on the classpath the production
87-
tests or the bench harness run against. `--enable-preview`-compiled
88-
classfiles carry a preview marker that poisons every consumer that loads
89-
them; keeping the two trees physically separate (rather than, say,
90-
compiling once and gating features at runtime) is what makes this a
91-
structural guarantee rather than a discipline someone could accidentally
92-
violate. See `.claude/knowledge/jdk-toolchain-facts.md` for the exact
83+
preview; the vocabulary types do.** ⊘ **The paragraph that stood here is doubly stale and is replaced.** It said
84+
the lab compiles *separately* with `-source 27 --enable-preview` and is
85+
*"never on the classpath the production tests run against"*, and it argued
86+
that physical separation kept preview marking out of production. All three
87+
are now false: both probe arms run **JDK 28** with `-source 28 -target 28`,
88+
both **compile and load the production API**, and that API is itself
89+
preview-marked — so there is nothing to quarantine production *from*. The
90+
separation argument was load-bearing only while production was preview-free,
91+
and it stopped being that when production adopted JEP 401.
92+
93+
The isolation that remains is ordinary and smaller: the probe harness builds
94+
into its own output directory and is not on the classpath of the shipped
95+
artifact. It is not a structural guarantee against preview poisoning, because
96+
preview marking is now a property of production itself. See `.claude/knowledge/jdk-toolchain-facts.md` for the exact
9397
verified flag matrix across all three JDKs this project touches.
9498

9599
## What Panama did NOT need to solve here

‎docs/valhalla-lab.md‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
# The Valhalla lab — synthesis
1+
# Representation probes — synthesis
2+
3+
> ⊘ **Legacy name.** The directory is still `valhalla-lab/` and this file is
4+
> still `valhalla-lab.md`, because renaming paths buys churn rather than
5+
> clarity. **The name no longer describes the experiment.** Valhalla is
6+
> production infrastructure — the six vocabulary types are `value record`s on
7+
> JDK 28 (PR #81) — so it is not what is being tested. What this harness
8+
> measures is the CONSEQUENCE of object-model and layout realizations:
9+
> `record` vs `value record` **on the same JDK, against the same
10+
> Valhalla-enabled production API**, with flattening and escape analysis
11+
> toggled. Read every "Valhalla arm" below as "value-record arm", and never as
12+
> evidence that production is fundamentally Panama with Valhalla bolted on.
213
314
> Companion to `valhalla-lab/README.md` and `valhalla-lab/docs/three-truths.md`
415
> (the raw findings and numbers) and `.claude/knowledge/valhalla-three-truths-method.md`

0 commit comments

Comments
 (0)