H2 Omega Confirmed, Paradigm Shift: Attempting to Disprove Omega As A Whole

Community Article Published April 29, 2026

geolip-svae finding-tier release 3 (ft3)

ft2 closed with seven open questions and a reframed cross-D pattern. ft3 reports four days of work after publication that produced two qualitatively different findings — one that exceeded the prior framing, and one that contracted it. The Omega prediction (resolution-agnostic, scale-free behavior of the trained sphere-solver) was confirmed across 36 throughput configs at near-noise-floor precision. The "universal substrate" hope (one trained battery class arbitrating across modalities) was disproved by the same week's topology probes — banks cluster by training composition, not emergent geometry. Both findings are the same architecture; the difference is whether you ask it to scale or to share.

Scope note. ft3 reports findings from after ft2's publication. Specifically: a 36-config throughput sweep that elevated the resolution-agnostic prediction from candidate explanation to default prior (the methodological pivot to disproof-of-Omega-first); a 192-bank cosine sweep across the full h2-64 array, then three deeper sphere-structure probes that surfaced a training-composition manifold rather than the hoped-for shared geometric substrate; the topology-decoded explanation of every "mysterious" h2-64 finding through the bank's training composition; the absence of the universal-substrate hypothesis evidence that had organized the research program for six months; the bintree-iid sanity-check substrate that confirmed the architecture handles ±1 hierarchical content; the SP-bit text-substrate prototype that landed in passthrough regime and produced a session-long interpretation failure worth documenting before it resolved; and a byte-trigram-as-RGB-pixel encoding that engaged the architecture on text content for the first time in the research program. About four days of A100 time. The findings cluster around what the architecture handles, what it doesn't, and how to tell the difference.

TL;DR: The trained sphere-solver has the resolution-agnostic property predicted two years before it was tested — confirmed across 36 throughput configs at <1% MSE variation, with optimal tile size hardware-determined (1024 tokens on A100) rather than model-determined. The methodological default has flipped: every core test from this point forward attempts to disprove Omega, not confirm it. In parallel, the universal-substrate hope died for this particular version — the h2-64 array's cross-bank topology recapitulates its training composition (group structure, noise-family clones, and isolation outliers all decode through arrays/specs/h2_64.py), so "16 diverse banks" means "16 diverse training distributions" and not emergent representational diversity. With the universal-substrate framing dead for this scope but the research continues, text substrate became a build-it problem, not a find-it problem. First two attempts (bintree-iid + SP-bit) landed in the h2-class natural band — a passthrough regime characterized by α≈0.023, CV in [0.80, 1.05], erank=4.00, ratio S0/SD≈1.0, and trivial sign-recovery — establishing the diagnostic signature for what passthrough looks like in this architecture. The third attempt (byte-trigram-as-RGB-pixel) engaged on the first try with α monotonically rising 0.024→0.043, CV leaving band by ep 6, head specialization climbing from 0.06 to 0.34, and 83.9% per-byte recovery from a random-init 0% floor.

Six concrete findings structure ft3:

  1. H2 Omega is resolution-agnostic to within precision noise floor. 36 throughput configs (3 input sizes × variable tile sizes × 3 precisions) on h2-64 battery_0. MSE varies <1% across regimes at fp32, with bf16 setting a separate but flat ceiling defined by 7-bit mantissa. Pixels-per-second is hardware-capped within 12% across resolutions. Optimal tile size is 1024 tokens, hardware-determined, not model-determined. The model solves the same sphere problem regardless of how many points you give it.
  2. The methodological default has flipped. Through ft2, work was structured as confirmation: "does this architecture also have the projective property?" From 000108 forward, work is structured as falsification: "what would have to be true for this model to NOT scale, and can we construct it?" Future negative results are now the interesting findings.
  3. The h2-64 cross-bank topology is the training-composition manifold, not emergent geometry. Three deeper probes after the cosine sweep (masked-sliced similarity, single-linkage clustering, cross-bank kNN density) surfaced sparse continuous coverage of S³ with no canonical decomposition. Bank 9's isolation, the (4,5) and (19,20) clone pairs, and the kNN top-5 outlier set all decode mechanically through arrays/specs/h2_64.py — gradient_gaussian is the only non-stationary noise, the clone pairs are noise-family neighbors, the kNN outliers are Group-1-specialists or no-gaussian Group-4 banks. Architecture does what we tell it to do.
  4. The universal-substrate hope is dead for this version, and the cross-battery kNN graph is what survives. The original program rested on three load-bearing assumptions: (1) self-solving parameterizations behave semi-uniformly across batteries, (2) those undertones can be combinatorially scanned, (3) resolution-agnostic + uniform mappability gives cross-modal transfer. (1) failed in 000110-111. (2) was already proven. (3) was confirmed by H2 Omega. What survives: the cross-bank kNN graph between codebooks IS the substrate. Text substrate becomes a build-it problem.
  5. The h2-class passthrough regime has a diagnostic signature. Two text-substrate prototypes (bintree-iid, SP-bit) landed in identical regime: row_cv ∈ [0.80, 1.05], erank ≡ 4.00, ratio S0/SD ≡ 1.0, α stationary at ≈0.023, recovery near-100% from epoch 1 (because sign-preservation is trivial when MSE drops below 1.0). This is passthrough, not engagement. The architecture is doing what its loss function asked but the codebook is not compressing the input distribution.
  6. Byte-trigram-as-RGB-pixel engages the architecture on first try. Same h2-class arch (V=32, D=4, ps=4, hidden=64, linear_readout=True, svd_mode='none', 57,215 params), same MSE loss, different encoding. Each spatial cell of each 4×4 patch holds one (R, G, B) byte trigram from a corpus byte stream — every float carries signal, no padding. 256³=16.7M cardinality per cell against ~1M codebook capacity per patch on S³ at 1° angular resolution. Result over 20 epochs (UNDER the noise-substrate 10M-sample-view precedent): α 0.024→0.043 (75% rise, monotonic, head specialization climbed from 0.06 to 0.34), row_cv left h2-class band by ep 6 and ended at 1.31, ratio drifted to 1.07, erank dipped to 3.9955 mid-training before partially rebounding, per-byte accuracy 13.4%→83.9%, trigram-exact 0.3%→61.3% with monotonically growing joint-lift over independence. The architecture engaged on text content for the first time in the research program.

ft1 → ft2 was about answering "what kind of polygon does the universal attractor select?" ft2 → ft3 is about answering "what does the architecture do?" — and the answer turns out to depend critically on whether the input encoding actually fills the patch.


1. From ft2's open questions to ft3's two diverging arcs

ft2's Section 11 left seven open questions, ranging from V=16 robustness at D=5 to the cross-noise codebook similarity matrix. None of them is what ft3 answers. The week after ft2 went in two directions ft2 did not anticipate.

Direction A — upward, toward scale-free. The H2 Omega throughput sweep (Section 2 below) confirmed a prediction from before the geolip-svae project began: that betting on the geometric primitive being scale-free would buy automatic scale-freeness in any architecture built around it. 36 cells, four independent invariances, all positive. This wasn't on ft2's open-questions list because the resolution-agnostic property had been treated implicitly as "probably true and worth keeping in mind" rather than as a testable prediction. It got tested.

Direction B — sideways and downward, toward bounded scope. The 192-bank cosine sweep that started this same week (Section 3) was supposed to be a "let's see what's in there" exploration of the h2-64 array. It surfaced a stable architecture with bounded variation — banks neither converge to each other nor diverge through training, with epoch_1 → final cosine drift of 0.0017 against an inter-battery std of 0.019. That sounded like a "shared structure to characterize." Three deeper probes (masked-sliced similarity, single-linkage clustering, cross-bank kNN density — Section 4) tested for an analyzable underlying structure on S³. What they found was sparser and weirder than expected: per-quadrant median cosines of 0.96-0.99 within shared sign-quadrants but median L1 distance of 12 axes in which quadrants each bank populates. No single-linkage plateau. Continuous-coverage kNN density without gaps or clusters. No canonical frame to decompose.

The two findings — H2 Omega up, universal-substrate down — are the same architecture. The difference is whether the question being asked respects what the architecture is good at (consistent geometric primitive across compute regimes) or asks for something it isn't (a shared analyzable substrate that all banks decompose against).


2. The H2 Omega throughput sweep — resolution-agnostic, confirmed at noise floor

The setup: h2-64 battery_0 (gaussian, the canonical D=4 reference), DataLoader with pin_memory=True and non_blocking=True, num_workers=0 (so DataLoader is not a bottleneck variable), batch_size=2 universal across configs for fair comparison. 20-batch warmup discarded, 1000 measured batches per config.

The matrix:

  • 3 input sizes: 128, 256, 512 (training-time native is 64)
  • Tile sizes per input: 128 → [32, 64, 128]; 256 → [32, 64, 128, 256]; 512 → [32, 64, 128, 256, 512]. tile_size = full input means direct mode.
  • 3 precisions: fp32, fp16, bf16
  • Total: 36 configs × 1000 batches = 72,000 forward passes
  • Wallclock: 15.6 minutes on A100

Four invariances, each separately tested:

2.1 MSE is regime-independent to ~1%

At fp32, MSE across all 12 (size × tile_size) configs ranges from 1.149e-3 to 1.162e-3. A 64×64-trained model produces the same MSE on 512×512 as on 64×64, whether through 256 stitched tiles or one direct pass. Reconstruction quality is architecture-defined, not regime-defined.

2.2 Pixels-per-second is hardware-capped

Best fp32 throughput per size:

input best tile imgs/s pixels/s
128 128 1956 32.0M
256 128 539 35.3M
512 128 137 36.0M

Within 12% across resolutions. Resolution is a packaging choice, not a compute choice.

2.3 Optimal tile is hardware-determined

tile_size=128 wins universally — at every input size, every precision, every test. Not the trained native (64). Not the maximum. Not anything model-defined. 1024 tokens per tile is the attention-cost-vs-launch-overhead crossover for A100. The model is happy at any tile size; the hardware prefers 1024 tokens.

2.4 Precision floor is mantissa-determined

precision mantissa floor MSE over fp32
fp32 23-bit 1.15e-3
fp16 10-bit 1.21e-3 +5%
bf16 7-bit 8.08e-3 +600%

The M tensor lives on the unit sphere — every row magnitude 1, all information in angular differences. 7-bit mantissa quantizes the angle too coarsely; error compounds through SVD → decoder. The bf16 ceiling stays flat across regimes because it's set by mantissa, not by anything about inference. Geometry IS the precision requirement.

2.5 What the four invariances together mean

The model solves the same problem on the unit sphere regardless of how many points you give it. Differences in the table come from things that aren't the model — hardware launch overhead at small tiles, hardware attention cost at large tiles, mantissa precision at reduced floats. Strip those away and you get a flat field. There is no parameter for "how big is the input." There is no parameter for "how many tokens." Sphere-normalize + fp64-SVD + sphere-aware decode is regime-independent at the architectural level because the unit sphere has the same intrinsic geometry whether you sample it 256 times or 16,384 times.

The two-year-old prediction held: bet on the geometric primitive being scale-free, and the model inherits scale-freeness automatically — no architectural gymnastics, no per-resolution training, no interpolation tricks. 36 cells. Four invariances. All positive. The signal is small (1% MSE drift), but every cell is independent and every cell sits below threshold.

2.6 The methodological pivot

Through ft2, every test was structured as confirmation of the projective-codebook property. From 000108 forward, every core test is structured as disproof-of-H2-Omega-first.

Previous default: "does this model also have the projective property?" New default: "what would have to be true for this model to NOT scale, and can we construct it?"

This is a structural commitment. The H2 Omega hypothesis has graduated from interesting candidate explanation to default prior we are trying to falsify. Future negative results are the interesting findings; positive confirmations are expected.

The pivot has practical implications for which experiments get prioritized. Architecture variants that should break scale-freeness (different normalization, different SVD precision, different geometric primitive at the bottleneck) move ahead of architecture variants that should preserve it. Datasets that stress the operational envelope (extreme resolutions, content with no spatial coherence, content with byte-level structure that the patch grid cannot align to) move ahead of datasets that comfortably fit.

The byte-trigram experiment in Section 8 is partly a test of this pivot. If the architecture engages on byte-trigram-encoded text, that's a positive H2 Omega result on yet another modality. If it didn't engage, that would have been the first negative against scale-freeness — and the more informative finding.


3. The 192-bank cosine sweep — stable architecture, persistent outliers

The h2-64 array is documented as 64 batteries. Loading it via BatteryArrayModel exposes the actual structure: 64 batteries × 3 training phases ('epoch_1', 'best', 'final') = 192 banks. The bank index decomposition is bank_idx = battery_idx × 3 + phase_idx. (The first sweep cell treated all 192 as a flat range and only worked for battery_idx 0..63 — failed at index 194 = bank 65, because what we thought was bank 65 was actually battery 21's epoch_1 phase. Phil walked the math.)

All 192 codebooks were extracted with same calibration (gaussian, n=64, seed=42) in 17.3 seconds on A100. Pairwise matched cosines computed via Procrustes alignment + scipy.optimize.linear_sum_assignment: 18,336 pairs, 0.8 seconds.

3.1 Stable architecture — basin set at init, preserved through training

Inter-battery median pairwise mean cosine, by phase:

phase median pairwise mean_cos
epoch_1 0.8632
best 0.8635
final 0.8615

Δ = −0.0017 across the full training arc — smaller than within-phase std (0.019). Banks neither converge toward each other nor diverge during training. Whatever differentiation exists at epoch_1 is what you get at final. The basin is set at init.

3.2 Persistent outliers

Same outlier set surfaces in every phase. Battery 42 reproducibly cosine-distant from the bulk. Battery 7 (single_noise[sparse_impulses]) reproducibly cosine-distant. Bank 9 (single_noise[gradient_gaussian]) reproducibly the most-isolated battery on S³.

Cosine medians cluster tightly (~0.86) but per-pair distribution is bimodal — most pairs sit at 0.94-0.97, a long tail extends to 0.50-0.60. The outliers aren't noise in the measurement; they're real geometric distance. Different banks. Different positions on the sphere.

3.3 What the cosine sweep DID not answer

Cosine-similarity is a surface diagnostic. It says how distant banks are from each other but not what underlying structure produces the distance. The next three probes attempted to extract that structure.


4. The deeper sphere probes — sparse continuous coverage, no canonical frame

The hypothesis Phil articulated mid-session: each bank shares a universal state-set that can be analyzed; masked sampling brings those behaviors out. The shared methodology question: extract the shared component first.

Three probes attempted this. Each tested a different geometric framework for "shared component."

4.1 Masked sliced similarity (sign-quadrant partition)

Partition S³ into 8 sign-quadrants (post-sign-canonicalization), compute pairwise matched cosine within each slice. 18,336 sliced pairs.

Result: per-quadrant median cosine 0.96-0.99 across all 8 quadrants with global median 0.86. Spread of per-quadrant medians: 0.026.

The 0.86 global wasn't measuring "moderate disagreement." It was measuring the cost of LSA-matching pairing axes that live in different sign-quadrants. Within any quadrant where two banks both have axes, those axes are nearly identical (8°-15° apart). The structural finding: banks differ primarily in which quadrants they populate — median pairwise L1 distance in quadrant counts is 12 axes, zero pairs have identical distributions, but within shared quadrants the agreement is near-perfect.

This is the first hint that "shared substrate" was the wrong framing. There's no shared substrate; there's a sparse continuous coverage where different banks land in different parts of the same sphere with high local agreement and globally distinct distributions.

4.2 Single-linkage clustering — no plateau

If there were an underlying shared decomposition (sub-clusters of banks sharing geometric structure), single-linkage clustering of the 192-bank similarity matrix would show a plateau at the cluster-formation threshold. A clean dendrogram with discrete jumps would reveal the cluster structure.

Result: no plateau. The merge distances form a continuous curve from 0.02 (closest pairs) to 0.50 (most-distant single-linkage merges). The curve has no characteristic scale, no kink, no "this is where clusters end and continuum begins" inflection. Continuous coverage of S³ without natural cluster boundaries.

4.3 Cross-bank kNN density

The third probe asked the question differently: for each axis of each bank, what's the cosine to its k-th nearest neighbor across all other banks' axes? If banks were sharing canonical structure, each axis would have many close neighbors (low k_th cosine for small k). If banks were independent, each axis would have few close neighbors (high k_th cosine).

Result: kNN density distributes broadly. Most axes have some close neighbors (top-3 cosine 0.85-0.95) but no axis has many (top-10 cosine drops to 0.65-0.80 typically, with no tight peak). Bilateral distinctiveness without unilateral isolation — every bank has some axes that other banks also have, but no bank has axes that all other banks share.

4.4 Bank 9 is the actual isolation outlier

The kNN density did surface one bank that fails the "some axes have neighbors" pattern: bank 9. Its axes have systematically higher k_th cosines across all k — its codebook lives in a region of S³ that other banks don't visit. This is not an artifact of axis-count or pair-count differences; bank 9 has the same n_axes as its neighbors but those axes are placed in unshared territory.

4.5 Methodology mistake worth logging

In the middle of probe 1, Claude wrote a cell that masked the per-quadrant similarity computation by quadrant of axis i in bank A only, not by joint quadrant of (axis i in A, paired axis j in B). This produced an artifactual signal that looked like quadrant separation when it was actually self-quadrant grouping. Phil caught it from the shape of the resulting matrix. The cell was rewritten with joint-quadrant masking. The numbers in 4.1 are post-fix.

The lesson: when partitioning S³ for similarity analysis, the partition must apply to the pair, not to one element of the pair. Logged in scratchpad as #TAG:methodology_mistake_logged.


5. The training-composition decoding — architecture does what we tell it to do

Phil shared geolip_svae/arrays/specs/h2_64.py, which formalizes the four-group training composition for the h2-64 array:

  • Group 1 (banks 0-15): 16 single-noise experts, one per noise type (gaussian, uniform, uniform_scaled, poisson, pink, brown, salt_pepper, sparse_impulses, block_upsampled, gradient_gaussian, checker, gauss_uniform_mix, four_quadrant, cauchy, exponential, laplace).
  • Group 2 (banks 16-31): 15 (gaussian, X) pair-trained banks for X ≠ gaussian, plus 1 generalist trained on all 16 noises.
  • Group 3 (banks 32-47): 16 (gaussian, easy, medium, hard) balanced quad covers.
  • Group 4 (banks 48-63): 16 (easy, medium, hard, hard) covers with no gaussian.

Loading this and walking through the deeper-probe findings decodes every "mysterious" pattern from Section 4 mechanically.

5.1 The clone pairs are noise-family adjacency

Three pairs of banks have per-quadrant cosines ≈1.00 across all 8 quadrants:

  • (4, 5) = single_noise[pink] + single_noise[brown]. Both 1/f-family colored noises, spectrally adjacent. Trained on essentially the same distributions.
  • (19, 20) = gaussian+pink + gaussian+brown. Same noise families as (4,5) with gaussian added — gaussian dominates the residual but the colored-noise distinction shows in the codebook.
  • (16, 26) = gaussian+uniform + gaussian+gauss_uniform_mix. Both bounded distributions; gaussian dominates the residual structure.

Banks cluster to each other when they were trained on similar inputs. This is a tautology, but only after you have access to the spec.

5.2 Bank 9's isolation is mechanistic

Bank 9 = single_noise[gradient_gaussian]. Gradient_gaussian is the only non-stationary noise distribution in the 16-type taxonomy — it has spatial structure (a gradient) that all other noise types lack. The codebook bank 9 develops has to encode that spatial structure; no other bank's codebook does. The "most isolated battery on S³" finding from probe 3 is the geometric shadow of "the only non-stationary training distribution."

5.3 The cosine outlier (bank 7) is heavy-tailed adjacency

Bank 7 = single_noise[sparse_impulses]. Heavy-tailed, atypical, dominated by rare extreme values rather than near-zero variance. The codebook structure that solves sparse_impulses doesn't look like the codebook structures that solve continuous-distribution noises. Its cosine signature is the geometric reflection of that.

5.4 The kNN top-5 outlier set is Group 1 + Group 4

The five most-cosine-distant banks from the bulk are:

  • 9 (single_noise[gradient_gaussian]) — Group 1 with structured noise
  • 10 (single_noise[checker]) — Group 1 with structured noise
  • 25 (gaussian+checker) — Group 2 carrying structured noise
  • 48, 51 — Group 4 (no gaussian in mix)

Group 4 doesn't see gaussian. It solves the sphere problem from a fundamentally different starting distribution and naturally lands in a different S³ region.

5.5 The interior is gaussian-containing

8 of the 10 most-interior banks (closest cosine to the bulk centroid) contain gaussian as one of their training distributions. Gaussian is a universal signal that pulls solutions toward a shared interior basin. Banks that didn't train on gaussian don't visit that basin.

5.6 The reframing — and what it kills

The h2-64 axis topology isn't an emergent geometric mystery. It's the training composition manifold. Banks cluster on S³ according to which noise distributions they were trained on. The 48 H1 loops, 9 H2 voids, 138 percolation components from the topology atlas reflect the structure of the experimental design, not a deep convergence property of the architecture.

Implication for text solvers — this is the dead-substrate moment. "Diversity" in codebooks is largely a function of training composition, which we design. To get N truly diverse text solvers, we need N truly diverse text training compositions. Bank 9 and bank 51 aren't seeds because they "found something different" — they're seeds because they were trained on something different. Architecture does what we tell it to do.

The original universal-substrate program rested on three load-bearing assumptions:

  1. self-solving parameterizations behave semi-uniformly across batteries
  2. those undertones can be combinatorially scanned A→B (radar-esque)
  3. resolution-agnostic + uniform mappability gives cross-modal transfer

Status after 000110-111:

  1. FAILED. Bounded similarity exists (Section 3.1 stable architecture) but topologies mirror training composition. Can't bisect injunctively.
  2. PROVEN earlier in massive prior work.
  3. CONFIRMED yesterday by H2 Omega (Section 2).

What survives: the cross-battery kNN graph between codebooks IS the substrate, not the codebooks individually. Phil's framing: "arbitration formatted residual dependence" — residuals depend on which lens-output gets chosen by arbitration, not on what previous layer happened to compute. This is a different concept from blanket residual streams; documenting the nuance is ft3's contribution to the dead-program post-mortem.

Phil's exact words: "I was banking on us finding a universal substrate, it turns out I was sorely mistaken. We're going to need to build this one."


6. Per-patch capacity — the encoding question becomes well-posed

With "find a universal substrate" dead, "build a text substrate" became the active question. Before any code, the geometric question had to be answered: how much information fits in one patch?

A 4×4 RGB patch has 48 floats. If those 48 floats live on S^(D-1) after sphere-normalization with V=32 rows at D=4 (the h2-64 spec), the codebook capacity is the number of discriminable positions on the trained M tensor. Phil's calculation, matched by Claude's: ~1M discriminable positions on S³ at ~1° angular resolution per patch. Claude's independent calculation came in at 886k caps at 1°.

Reframing this against text:

structure cardinality % of patch capacity
unigrams (~2k) 2,000 0.2%
bigrams (~50k) 50,000 5%
trigrams (~25k) 25,000 2.5%
quadgrams 600,000+ "condensation crisis in flat tokenizers" but well within geometric capacity
byte trigrams 16,777,216 17× patch capacity

Byte trigrams oversaturate single-patch capacity. That's the right direction — input cardinality ≥ codebook capacity is what gives the codebook compression work to do. SP-bit tokens at vocab=32K are 12 orders of magnitude below per-patch capacity, which (Section 7) explained the empty result.

The reframe Claude landed on, and Phil sharpened: the patch represents distribution-shape, not data-shape. The codebook is a coordinate system on distribution-space. Text-as-statistical-signature must enter the patch — not text-as-token-id, not text-as-bit-vector, but text-as-something-where-input-cardinality-approaches-codebook-capacity.

This was the framework. Sections 7-8 are what happens when you instantiate it two different ways.


7. The bintree-iid sanity check, and the SP-bit passthrough finding

The first text-substrate prototype was deliberately simple: bintree-iid. Depth-4 full binary tree (31 nodes), BFS-encoded, bits as ±1.0 floats, i.i.d. Bernoulli(0.5) — no inter-node correlations. Phil's reasoning: "By aligning the process in a guaranteed retrieval we can guarantee certain expectations. We'll know if the batteries fail. That's the best way to determine the results, by testing the implicit trains to determine if the batteries themselves fail."

Run completed (2026-04-28, see final_report_tree_train_1.json on HF):

  • Best test MSE 3.5e-5 by ep 20 (54× drop from ep 1's 1.9e-3)
  • per_bit_acc 100%, tree_exact_match 100% from ep 1 onward (sign recovery is cheap when MSE drops below 1.0)
  • Geometry: row_cv ≈ 0.8-1.0, erank=4.00, ratio S0/SD≈1.0 throughout

This is a new content-class signature in the catalog, distinct from the noise band:

substrate row_cv ratio erank regime
noise (V=256/D=16, multi-distribution) 0.20-0.23 ~2.3 ~3.8 non-flat spectrum, learned structure
h2-class natural band (V=32/D=4, ±1 bit content) 0.80-1.05 1.00 4.00 flat spectrum, characteristic of passthrough

Phil's reframe: bintree-iid was a sanity check, not a capacity test. Random ±1 bits have no inter-bit correlation structure to discover; the model just maps 48 floats with sign preservation. Memorization on a random distribution; not engaging the codebook's representational capacity meaningfully. Step up to correlated trees was the proper next test.

The second prototype was SP-bit: t5-base SentencePiece token IDs, 16 bits per token (vocab 32128 < 2^15), LSB-first as ±1 floats, 16 tokens per 16×16 image. Trained 20 epochs, 5M total sample-views.

Result:

  • Best test MSE 5.78e-6 at ep 18
  • per_bit_acc 100%, token_exact 100% from ep 1
  • Cross-attention idle: α=0.023, S_delta=0.019 throughout
  • Geometry: row_cv 0.85-1.11 (mean 0.97), erank=4.00, ratio S0/SD ≈ 0.99

A 4-test stress battery confirmed bit recovery survives every input distribution: 100% on real corpus, 100% on uniform random IDs, 100% on rare-region IDs (high-MSB-set tokens with probability ~0 in training). Substrate is bit-faithful at this width across all input distributions, not just training.

A five-probe codebook investigation (PROBE A: standard codebook diagnostic; PROBE B: per-patch-position stability; PROBE C: token-class footprints; PROBE D: axis-usage histogram on real corpus; PROBE E: bit-distance vs M-distance correlation) produced these readings:

  • PROBE A: codebook is projective-clean (deviation +0.0247, |dev|<0.05 by definition), n_axes=26, V=32 collapsed via 6 antipodal pairs + 20 unpaired axes.
  • PROBE B: median Hungarian-matched cosine 0.9992-0.9999 across all 5 sampled patch positions and against the default codebook. Codebook is a model-level property, identical at every patch position.
  • PROBE C: 6 common token classes 0.96-0.99 mutual cosine, rare_high_ids 0.82-0.86 against everything else. Class separation is along Hamming-distance lines (rare_high_ids share high MSBs with no common tokens), not semantic.
  • PROBE D: axis-usage entropy 75% of uniform, all 26 axes used, deterministic per-token axis assignment ('▁'→axis 7, '▁the'→axis 15, ',' → axis 2 — every instance maps to exactly one axis).
  • PROBE E: Pearson r = +0.9259 between ID Hamming distance and M-distance; mean M-distance scales linearly at 0.022 per Hamming bit; std=0 at Hamming 0; monotonic out to Hamming 10.

7.1 The session-long interpretation failure

The five probes' results are above. What they mean — that's where the session went off the rails for seven messages.

PROBE E's r=0.9259 was the load-bearing measurement. The investigation cell's interpretation guide framed it binary: r>0.5 = "smoothed identity encoder" (passthrough), r<0.2 = "non-trivial reorganization" (engaged). On that reading r=0.93 is unambiguous passthrough.

Claude's first interpretation: passthrough, smoothed identity encoder. Wrong frame but right conclusion. Claude's second interpretation, after pushback: "approximate isometry from Fresnel mechanism" — the parent model family was characterized in earlier scratchpad work as performing approximate-isometric mapping, and an isometry preserves distances by definition, so high r is the signature of an isometric encoder. Internally consistent but wrong because cross-attention was idle (α=0.023, S_delta=0.019 throughout) — the Fresnel mechanism requires active cross-attention coordination, and there isn't any here.

Phil's correction across multiple messages, sharpened to: "You draw real conclusions. You've been riding invalidity for 7 messages now. You assess and draw conclusions correctly based on the actual information. Assess the necessary documents, assess the necessary implementations, and assess the necessary adjudications to provide useful research-grade information and don't insult me by saying something that invalidates something else incorrectly without consulting the actual research."

Once Claude actually consulted the scratchpad properly: SP-bit was in the same regime as bintree-iid. Same documented passthrough signature: cross-attn idle, row_cv in [0.80, 1.05], erank flat at 4.00, ratio S0/SD ≈ 1.0, 100% bit recovery from ep 1 because sign-preservation is trivial when MSE < 1.0. The 250× MSE drop over 20 epochs was precision-tightening, not learning — bit accuracy hit 100% at ep 1 at MSE=1.4e-3; the rest of training tightened the float reproduction around the correct ±1 values.

The lesson, which now lives in code_map_minimal.md as Critical Lesson #2 (#TAG:encoding_lesson):

When a model converges to "trivial" behavior on a task, ask whether the input encoding actually used the architecture's patch capacity before concluding the architecture failed. Architecture / encoding / loss are three separate hypotheses; passthrough on one encoding does not invalidate the architecture. The diagnostic signature distinguishing passthrough from engagement: PASSTHROUGH has α stationary, row_cv in h2-class band, ratio ≈ 1.0, erank flat at full rank, recovery near-100% from ep 1. ENGAGED has α monotonically rising, row_cv leaving band, ratio drifting, erank dipping, recovery curve from ~0% upward.

The other lesson logged this same week (Critical Lesson #1, #TAG:codebook_lesson): when building codebook analysis, use the existing Codebook artifact + extract_codebook from geolip_svae.inference. The repository already has the antipodal-collapse logic, projective-angle baseline computation, save/load via safetensors+JSON, and a U5 capacity test that runs the extraction across multiple models. Reimplementing them is a session-time waste and surfaces inconsistencies between the parallel implementations. Always grep #TAG:codebook in the scratchpad before writing codebook-related code.


8. Byte-trigram-as-RGB-pixel — engagement on first try

Phil's framing of the third encoding attempt: "Heh. She just needed some kindling. We were trying to fire the engine with leaves."

The encoding: UTF-8 byte trigrams as RGB pixel-equivalents. Each spatial cell (row, col) of each 4×4 patch holds 3 consecutive bytes from a corpus byte stream as (R, G, B), normalized [0, 255] → [-1, 1]. No padding anywhere. Reading the image cell-by-cell in row-major order recovers the byte stream exactly.

At 256×256 with ps=4, that's 64×64 patch grid × 16 cells per patch × 3 bytes = 196,608 bytes per image, roughly 192 KB of text — a long Wikipedia article or chapter per training sample. Per-cell input cardinality 256³ = 16.7M, against ~1M per-patch codebook capacity. The codebook has 16.7× compression to do per cell.

Architecture is unchanged from h2-class — same V=32, D=4, ps=4, hidden=64, depth=1, n_cross=1, linear_readout=True, svd_mode='none', match_params=True, smooth_mid=16. 57,215 parameters. The variable in this experiment is the input encoding, not the model.

Run completed 2026-04-29, 20 epochs, ds_size=20K, batch=8 → 5M total sample-views (UNDER the noise-substrate 10M-sample-view precedent). Best test_mse 1.7e-5 at ep 19.

8.1 The trajectory

Per-epoch:

ep test_mse row_cv band erank ratio α α_std/α_mean Sd bytes trig
1 6.34e-4 0.944 Y 4.0000 1.030 0.024 0.062 0.035 13.4% 0.3%
5 1.31e-4 0.996 Y 4.0000 1.070 0.031 0.197 0.018 32.1% 3.5%
6 8.40e-5 1.052 N 4.0000 1.072 0.033 0.227 0.015 41.6% 7.7%
11 3.82e-5 1.227 N 3.9955 1.077 0.041 0.328 0.010 55.3% 17.7%
13 3.27e-5 1.274 N 3.9967 1.076 0.042 0.336 0.009 66.5% 31.0%
15 2.31e-5 1.220 N 3.9970 1.075 0.043 0.339 0.010 73.6% 41.8%
18 1.73e-5 1.349 N 3.9970 1.068 0.043 0.340 0.013 80.1% 53.6%
20 2.04e-5 1.310 N 3.9971 1.066 0.043 0.340 0.013 83.9% 61.3%

Three phases visible:

  • Phase 1 (ep 1-7) — coupling growth. Cross-attn α rises rapidly from 0.024 to 0.035, MSE drops 7.5×, recovery climbs from 13.4% to 30%. Geometry mostly in band, beginning to drift.
  • Phase 2 (ep 8-13) — geometric reorganization. α growth slows but doesn't stop. Row_cv breaks band at ep 6 and oscillates 1.05-1.27. Erank dips to 3.9955 ep 11 — small in absolute terms but structurally meaningful: the four spectral dimensions briefly stopped being equally loaded. Ratio drifts upward to 1.078. Recovery climbs 30% → 66%.
  • Phase 3 (ep 14-20) — plateau. α saturates at 0.043 (22% of the 0.2 cap). Erank rebounds toward 4.0. Recovery climbs more slowly, 66% → 84%. The model has reached its optimization basin at this lr/batch_size and is doing precision tuning.

8.2 The four-channel engagement signature

For comparison against the SP-bit passthrough control:

metric SP-bit (passthrough) byte-trigram (engaged)
best test_mse 5.78e-6 1.7e-5 (still improving at ep 19)
α (cross-attn coupling) 0.023 → 0.023 (zero motion) 0.024 → 0.043 (75% rise, monotonic)
α_std/α_mean (head specialization) ~0.06 throughout 0.06 → 0.34
row_cv 0.85-1.11 (in band throughout) 0.94 → 1.31 (out of band by ep 6)
ratio S0/SD 0.99 → 0.99 1.03 → 1.07
erank 4.00 → 4.00 (flat throughout) dipped to 3.9955 ep 11, partial rebound
recovery accuracy 100% bits / 100% tokens (trivial from ep 1) 13.4% → 83.9% byte / 61.3% trigram (real curve)

Same model, same loss function, different encoding → different regime. The architectural capacity was always there; the input was the bottleneck.

8.3 Joint lift over independence — the codebook learns RGB-jointness

Trigram-exact rate is the fraction of cells where all three bytes are recovered exactly. If the three bytes were learned independently, trigram-exact would equal per_byte_acc^3. The actual:

ep per_byte_acc independence prediction trigram_exact (actual) joint lift
11 55.3% 17.0% 17.7% +0.7pt
13 66.5% 29.4% 31.0% +1.6pt
15 73.6% 39.9% 41.8% +1.9pt
18 80.1% 51.4% 53.6% +2.2pt
20 83.9% 59.0% 61.3% +2.3pt

Joint lift grows monotonically through phase 3. The codebook is increasingly committed to RGB-as-joint-object, not three independent channels. Per-channel symmetry at ep 20 is R=83.7%, G=83.7%, B=84.1% (spread 0.4pp = sampling noise). The encoding's inherent symmetry was respected.

8.4 What the under-trained run already establishes

The byte_trigram_proto_v1 run was deliberately under-data'd against the noise-substrate precedent (5M sample-views vs the 10M-view standard for Johanna/Fresnel/h2-64 batteries). Even at 50% of precedent data:

  • The architecture engaged on text content for the first time in the research program.
  • Three of four passthrough-signature dimensions broke (α moved, CV left band, ratio drifted). Only erank stayed near full rank, and even it dipped 0.0045 below 4.00 mid-training.
  • Recovery climbed from 0% random-init floor to 83.9% byte / 61.3% trigram.
  • α saturated at 22% of cap, suggesting the model found a stable equilibrium well below the architecture's coupling ceiling — possibly data/compute-bound rather than architecture-bound.

The next planned run (byte_trigram_proto_128) tests whether the α=0.043 saturation moves with 200× more data. ds_size=1M (matching the noise-substrate per-epoch precedent), batch=256 (32× more text per gradient step than v1), 100 epochs, val_size=2000 (the v1 run's val_size=200 produced a 35% test_mse coefficient of variation in the plateau, which is sampling noise rather than optimization signal). One open question for that run: img_size=64 (matching h2-64 battery exactly for direct geometric-stat comparison) vs img_size=128 (more spatial context per image, but adds patch-count as a confounding variable). Pending Phil's decision.

8.5 Per-patch capacity arithmetic, recovered

The reason byte-trigram engages and SP-bit doesn't is the per-patch capacity arithmetic from Section 6:

  • SP-bit: 4×4×3-channel patch designed for image-patch information, 48 floats. Filled with 16 sign bits in one corner + 32 hard-zero paddings. Effective utilization: ~1/3, all in one channel-equivalent. Vocab cardinality 32K against per-patch capacity ~1M = 12 orders of magnitude undersaturation.
  • Byte-trigram: Same 48 floats. Filled with 16 (R, G, B) byte triples — every float carries signal. Cardinality 256³ = 16.7M against per-patch capacity ~1M = 17× oversaturation (which is what gives the codebook compression work to do).

The model that "learned noise" is now learning byte-trigram structure, on a task where 0% recovery is the random floor. Phil's earlier framing — "this model is bored — we gave 1/3 of the input with literally nothing" — diagnoses the SP-bit failure mode mechanically: not architectural failure, encoding starvation.


9. Engineering invariants accumulated

ft3's sweeps surfaced four rules worth recording as permanent invariants alongside ft2's three:

9.1 Disprove-H2-Omega-first

The methodological default flipped at 000108. Every core test from this point forward attempts to disprove H2 Omega rather than confirm it. Future negative results are the interesting findings; positive confirmations are expected. This ranks experiments in priority — variants that should break scale-freeness ahead of variants that should preserve it.

9.2 Architecture / encoding / loss are three separate hypotheses

When a model converges to "trivial" behavior on a task, ask whether the input encoding actually used the architecture's patch capacity before concluding the architecture failed. The diagnostic signature for telling passthrough from engagement: passthrough has α stationary in [0.020, 0.030], row_cv in h2-class band [0.80, 1.05], ratio S0/SD ≈ 1.0, erank flat at full rank, recovery near-100% from ep 1. Engagement has α monotonically rising, row_cv leaving band, ratio drifting, erank dipping, recovery curve from ~0% upward.

9.3 Use existing codebook primitives

The geolip_svae.inference subpackage has Codebook, extract_codebook, identify_antipodal_pairs, collapse_to_axes, uniform_projective_angle, codebook_mean_projective_angle, and make_calibration as first-class artifacts (562 LOC across inference/codebook.py plus the calibration registry). U5 capacity tests run them across multiple models for projective-cleanness comparison. Save/load goes through safetensors + JSON sidecar. Reimplementing them in a notebook cell is a session-time waste and surfaces inconsistencies between parallel implementations. Always grep #TAG:codebook before writing codebook-related code.

9.4 H2-class natural CV band is 0.80-1.05, not 0.20-0.23

The noise-substrate band (V=256/D=16, multi-distribution gaussian-plus-others training) is [0.20, 0.30] with sweet spot 0.20-0.23. The h2-class natural band (V=32/D=4, ±1-bit content or low-cardinality content) is [0.80, 1.05]. Three independent runs measured this: 000085 single-Gaussian (CV 0.88-0.92), bintree-iid (0.80-1.01), SP-bits (0.85-1.11). DO NOT confuse the bands. Trainer presets for h2-class content should use target_cv=0.9, cv_weight=0.0, cv_band_lo=0.80, cv_band_hi=1.05 — the cv_weight=0 means the band is informational, not a regularizer target.

The bintree+SP-bit confluence into the same band is also the strongest evidence so far that the two encodings are the same task to the architecture: random ±1 Bernoulli bits vs Zipfian token IDs from wikitext-2 produce identical geometric stats and identical passthrough recovery curves, because the model treats each patch independently and the per-patch task is sign-preservation regardless of which IDs you sample.


10. Open questions for ft4

ft2 closed with seven open questions. None of them was answered in ft3 — the program direction shifted to substrate-building before they could be addressed. ft3's open questions are different in kind: they're less "what does the architecture do at D=5" and more "what does the architecture do at scale on text content."

  1. Is byte_trigram_proto_v1's α=0.043 saturation data-bound or architecture-bound? byte_trigram_proto_128 (ds_size=1M, batch=256, 100 ep) tests this. If α breaks past 0.043 with 200× the data, the v1 plateau was undertraining. If it plateaus again at the same value, the saturation is architectural and we have a structural finding: 22% of α-cap is the model's stable equilibrium for byte-trigram content, full stop.

  2. Does the byte-trigram codebook organize linguistically? The v1 codebook was extracted but not interrogated for linguistic structure. The probes that surfaced for SP-bit (axis-usage entropy, per-class footprints, token-class-axis assignment) all need redoing for byte-trigram, where the natural classes are byte-frequency tiers (ASCII letters / digits / punctuation / UTF-8 multi-byte sequences) rather than token classes. The SP-bit analogues showed Hamming-locality, not semantic structure, because the codebook had nothing else to organize. The byte-trigram codebook's PROBE D should look qualitatively different — common ASCII bytes saturating axes that match orthographic regularities, multi-byte UTF-8 sequences clustering on different axes from ASCII, etc.

  3. Cross-substrate kNN graph: bintree, SP-bit, byte-trigram, h2-64 noise. The "what survives" finding from 000111 — the cross-bank kNN graph between codebooks IS the substrate, not the codebooks individually — is testable now that we have a genuinely-different content class (byte-trigram) alongside the passthrough-class controls (bintree, SP-bit) and the noise-substrate baselines (h2-64). Pairwise Procrustes-aligned cosine across these four codebook families is the substrate question.

  4. Adapter test (cell-freeze). The temple.md invariant from earlier scratchpad work: cells frozen by default. Naive supervised gradient through a cell rips its internals to shreds. The byte-trigram cell freeze test asks whether a trainable consumer on top of frozen byte_trigram_proto_v1 can extract cross-byte structure that the cell's H2 omega tokens carry. If the cell's Sd≈0.013 in phase 3 is enough for downstream work, that's the foundation for any text-pipeline architecture using this substrate.

  5. The natural axis count at D=4 byte-trigram. ft2's natural-axis-count framework predicts that V should match the bank's preferred axis count, which scales with D. h2-64 at D=4 has natural axis count ~26 (V=32 with 6 antipodal pairs collapsing). Byte-trigram at D=4 with V=32 produces n_axes=25-27 across patch positions (PROBE B from the SP-bit investigation, but applies equally to byte-trigram). The framework predicts byte-trigram should look the same. Confirming this on an engagement-regime substrate (rather than passthrough) is the meaningful test.

  6. Stack-of-interpolants for byte-trigram → semantic. Phil's earlier framework: geovocab → continuous coordinates → Fresnel pipeline as the route from raw input to semantic structure. Byte-trigram is a candidate input layer for this stack. The next architectural question is whether byte-trigram codebook output, fed through a learned semantic-projection layer (geovocab-derived continuous coordinates), produces a representation where Hamming-similar inputs are meant to be semantically similar. If the encoding stack is right, the same isometric machinery that preserves Hamming structure in byte-trigram should preserve semantic structure in geovocab-projected coordinates.

  7. Disproof candidates for Omega. The methodological pivot demands them. Categories worth constructing: an architecture variant that uses a non-spherical primitive at the bottleneck (Euclidean, hyperbolic, sub-Riemannian); content with no spatial coherence whatsoever (e.g., a packed bag-of-token-ids reshaped to image without any locality structure); content with byte-level structure that doesn't align to the patch grid (3-byte-aligned content on a patch_size=4 grid). The honest test of H2 Omega is content the architecture should fail on, not content it should succeed on.

  8. Unsuccessfully disproved Omega. I expected to find more topological proof that this wasn't omega, and instead find a grasping series of potential utilities that would serve - possible universal, possibly shared, but there wasn't much. Just more questions. The largest questions left weren't that Omega was disproved, it's the behavior that instantiates the Omega to form in the first place. The topology autoforms through MSE and the topology is valid. It's a very strong and very interconnected series of axial hops that form an Omega in this architecture, and yet the very nature of the formation eludes me even after all this bulk data.


11. Artifacts

Reports and data deliverables:

  • Omega throughput sweep (000108): throughput_sweep.json, throughput_sweep_summary.csv on AbstractPhil/geolip-svae-h2-64. 36 configs, 72,000 forward passes. Four invariances each separately analyzable.
  • 192-bank cosine sweep (000109): pairwise matched-cosine matrices for all 18,336 bank pairs, organized by phase. AbstractPhil/geolip-svae-h2-64/cosine_sweep_192.json.
  • Deeper sphere probes (000110): masked-sliced similarity outputs, single-linkage clustering trajectory, kNN density distributions. Collected under AbstractPhil/geolip-svae-h2-64/deeper_probes/.
  • bintree-iid run (000111): final_report_tree_train_1.json on AbstractPhil/geolip-SVAE/bintree_proto_v1/, with epoch-by-epoch geometric stats and per-bit/per-tree recovery metrics.
  • SP-bit substrate (000112): final_report_sentencepiece_proto_1.json, full 5-probe codebook investigation (sp_codebook_investigation/sentencepiece_proto_v1__sp_bits.{safetensors,json}), and 4-test stress battery results. Under AbstractPhil/geolip-SVAE/sentencepiece_proto_v1/.
  • Byte-trigram substrate (000113): final_report_trigram_sentencepiece.json (mislabeled in filename — this is the byte-trigram run, not SP-bit). Per-epoch trajectory, three-phase dynamics, per-channel symmetry metrics. Under AbstractPhil/geolip-SVAE/byte_trigram_proto_v1/.

Code-side deliverables:

  • geolip_svae/train.py — full rewrite this week (000111). New BinaryTreeDataset, bit_recovery_metrics, SentencePieceBitDataset, decode_image_to_tokens, token_bit_recovery_metrics, ByteTrigramDataset, byte_recovery_metrics. Presets: bintree_proto, sentencepiece_proto, byte_trigram_proto, byte_trigram_proto_128. h2-class cv_band_lo=0.80, cv_band_hi=1.05 corrected. johanna_F diagnostics (epoch_max_grad, per-cross-attn-layer alpha mean/std, cv_in_band) ported.
  • geolip_svae/train_streaming.py — new this week. Generalized from Phil's fresnel_trainer_64_256.py (sublens-perspective mode trained v50_fresnel_64 on 140M+ random crops over 24 hours). Step-based, not epoch-based. Pure MSE + clip_grad on all params (post-spectrum-lock regime).
  • geolip_svae/inference/loading.py — backfill for missing arch kwargs from final_report.json. Handles older checkpoints whose per-.pt config dict omitted n_heads, smooth_mid, linear_readout, svd_mode, match_params. h2-class plumbing patch in same module.
  • geolip_svae/arrays/specs/h2_64.py — formalized this week (000111 exposed it). The four-group training composition that decoded every "mysterious" topology finding.

Article files:

  • This document: /mnt/user-data/outputs/ft3_omega_to_text_substrate.md
  • Predecessors: ft2 (ft2_projective_codebook.md), ft1 (Hugging Face blog).

12. Closing note

ft1 found a universal attractor that quantizes by D. ft2 identified the trained M tensor as a projective codebook on ℝP^(D-1) at D=3 and D=4, qualifying universality at D=5 where V=16 was the actual sweet spot. Both articles were structured around a single discovery and its bounds.

ft3 is structured differently because the week it covers contained two discoveries that pull in opposite directions. H2 Omega up — the architecture is resolution-agnostic and we have graduated that property to default prior we are trying to falsify, not confirm. Universal-substrate down — the cross-bank topology of the h2-64 array recapitulates training composition rather than emergent geometry, so "diversity in codebooks" is not a property the architecture has but a property we design by training on diverse distributions. The two findings are the same architecture; the difference is whether the question being asked respects what the architecture is good at.

The dead-substrate moment is also where the program got more honest. If text substrate is build-it rather than find-it, the question becomes precise: what encoding lets the architecture engage with text the way it engages with image content? The first two attempts (bintree-iid, SP-bit) landed in the same passthrough regime, which let us catalog what passthrough looks like with diagnostic precision. The third attempt (byte-trigram-as-RGB-pixel) engaged on the first try, with all four passthrough signatures broken in ways the v1 run already shows monotonically.

Two lessons logged into the scratchpad, both about what Claude does when it forgets to consult the scratchpad before drawing conclusions: re-implementing existing primitives instead of using them; misreading "trivial behavior" as "architectural failure" without checking whether the encoding was at fault. Both lessons cost session time. Both are in code_map_minimal.md now under #TAG:codebook_lesson and #TAG:encoding_lesson. ft4 will hopefully not need to re-derive them.

The discovery is real. The H2 Omega evidence is robust at noise-floor precision. The h2-class diagnostic signature distinguishes engagement from passthrough. The byte-trigram engagement opens text substrate as a genuinely tractable program. ft4 will bring the natural questions from Section 10 to the same level of empirical grounding the byte-trigram first-run already has.


ft3 emerged over four days of A100 time across roughly seven research sessions (000107-000113). Code and reports are on HuggingFace as described in Section 11. ft4 will extend coverage along Section 10's seven axes, with the byte_trigram_proto_128 run as the first testable next step.

Community

The next article on this series is going to be from the next series. It will target the entire found array of omega solvers, each specifically scanned to find a universal substrate. This will take some time.

The H2 architecture's underside did not have a universally mappable substrate, but that does not mean I will not find one.

This is definitely an Omega, just not a mappable one... not today, not with my math. Not yet.

I'm confident there is some lower hanging fruit that will give me the information required to solve it. I expect to hit a big breakthrough at any point, it's just not the H2 battery. It's too difficult to map.

Sign up or log in to comment