Chapters · Chapter 12

Torsion: The Asymmetric Carry

Part IV — What the Loop Remembers · seven builds, seven receipts

The spirit of this chapter's exercises is to instrument the asymmetric carry honestly: you will not be asked to prove torsion exists, you will be asked to measure it on a substrate that refuses to compute it and on a connection that learns it anyway. Receipts are byte comparisons, perplexity numbers across seeds, file:line diffs, and the \(\sigma_{R8}/\sigma_{\mathrm{FD}}\) ratio — the same class of receipts the five named-but-unbuilt \(\tau\) homonyms already ship under.

Run it live — GQL console

Point at the public read-only instance (no key needed) or your own engine (start it with GIGI_CORS_ORIGIN=* for browser access — dev only).

E12.1Forge the five-\(\tau\) homonym table

Build

A single test file at tests/tau_homonyms.rs that asserts each of the five \(\tau\) bindings I named in §12.2 returns the type it claims: compute_tau returns an f64 record count, capacity(tau, k) accepts an f64 caller-supplied parameter, GET /v1/bundles/{name}/free-energy?tau=0.5 returns a JSON tau field, IntegrityTag is a 32-byte array, and the GQL whitelist contains capacity(\(\tau\)) but no operator called torsion.

Receipt

Five passing assertions in a single cargo test tau_homonyms run, with the GQL whitelist check grepping GQL_REFERENCE.md for the literal string Allowed ops: and verifying torsion is absent. Match it against my BLD-CH12-TAU-01 through BLD-CH12-TAU-07 receipts.

Bonus

Add a sixth assertion that fails loudly: a test named compute_tau_is_not_skewness that compares compute_tau(&sample()) against an independently-computed mean-absolute-skewness over the same fiber and asserts they disagree on every bundle of more than one row.

E12.2Wire the named-but-unbuilt slot

Build

A pull request against src/curvature.rs:296-302 that extends capacity(tau: f64, k: f64) into capacity_from_bundle(&self, k: f64), where self carries a running third-standardized-moment sum maintained alongside the existing Welford variance from chapter 10. The new accessor computes mean absolute skewness across fields and divides by \(K\).

Receipt

A passing test capacity_from_bundle_matches_default_when_skewness_is_one that pins the new path to the old default behavior on a symmetric fixture, and a second test that shows the two diverge on an asymmetrically-distributed fixture. Diff against src/curvature.rs stays under fifty lines.

Bonus

Extend src/integrity.rs to sign seven scalars instead of six — adding \(\tau_{\mathrm{skewness}}\) alongside \(\tau_{\mathrm{count}}\) — and verify the HMAC tag at src/integrity.rs:131 changes byte-for-byte when the new field changes on a controlled mutation.

E12.3Reproduce the 17.6% / 18.1% discrepancy

Build

A script that re-runs Protocol 11.21 from theory/geodesic_computation_v7_1.tex at \(R=8, d=32\), five seeds at \(\{42, 137, 256, 512, 1024\}\), parameter-matched to within two of \(236{,}240\), twenty epochs each, and reports both the rounded-means percentage and the unrounded-means percentage as separate columns.

Receipt

A table with five rows (one per seed), Marcella R8 winning at every row, mean PPL within \(\pm 0.02\) of \(1.22\), FD mean PPL within \(\pm 0.06\) of \(1.49\), and a final row that prints both \(17.6\%\) and \(18.1\%\) alongside each other so the rounding gap is on the page and not laundered away.

Bonus

Compute \(\sigma_{R8}/\sigma_{\mathrm{FD}}\) and verify it lands near \(1/3\). If your run produces a ratio outside \([0.25, 0.40]\), write up why — seed entropy, training-curve sensitivity, the same kind of thing the rounding gap is.

E12.4Replay the DREAM cosine probe

Build

A reproduction of the 2026-05-26 DREAM extension probe at marcella/artifacts/dream_extension_probe_2026-05-26.md:81-88: prompt how does curvature relate to torsion? at \(T=2.0\), returning the top-three cosine-nearest sections across the substrate corpus.

Receipt

The middle hit returns the sentence beginning When \(C/K \gtrsim 1\), torsion wins from superfluid_geometry_of_velocity §318, at cosine distance within \(\pm 0.01\) of \(0.707\). Log the full top-three table and diff against my receipt.

Bonus

Reverse the prompt — ask how does torsion relate to curvature? — and check whether the top-three is the same multiset or a different one. A symmetric retrieval would return the same bag; an asymmetric retrieval rearranges. Report what your substrate does.

E12.5Stress the torsion-free substrate posture

Build

A test that asserts src/curvature.rs contains no function named compute_torsion, the HTTP router exposes no route matching /v1/bundles/{name}/torsion, and the GQL whitelist contains no operator named torsion. Then attempt to insert a synthetic asymmetry — a fiber whose forward-read and reverse-read histograms differ by a known skewness — and verify the bundle's reported invariants are byte-identical to a symmetric fiber with the same record count.

Receipt

A passing test substrate_refuses_chirality showing the six-wide \(\pi_{\mathrm{inv}}(B)\) at src/integrity.rs:131 returns the same HMAC tag for the two fibers. The substrate is a database, not a narrator — prove it.

Bonus

Now run the same two fibers through Marcella's learned connection (rank-8 factorization, \(d=64\), the 1,544-parameter object from BLD-CH12-MARCELLA-01) and show the perplexity over the two differs by more than three standard deviations. The substrate agrees; the connection on top does not. That is the asymmetric pairing the chapter closes on.

E12.6Benchmark the \(\mathfrak{so}(d) \to \mathfrak{gl}(d)\) lift

Build

Train two rank-8 connections at \(d=32\), one constrained to \(\mathfrak{so}(d)\) (skew-symmetric matrices, projected after every step) and one free in \(\mathfrak{gl}(d)\), parameter-matched, on Tiny Shakespeare for twenty epochs at one seed.

Receipt

A bar chart with two bars — \(\mathrm{PPL}_{\mathfrak{so}}\) and \(\mathrm{PPL}_{\mathfrak{gl}}\) — annotated with \(\Delta\mathrm{PPL}\). If the lift matters, \(\mathfrak{gl}\) wins; if not, your projection step was buggy. Either outcome is a publishable receipt.

Bonus

Measure the antisymmetric-part Frobenius norm \(\|\Gamma - \Gamma^{\top}\|_F\) of the trained \(\mathfrak{gl}\) connection and confirm it is non-zero at the optimum. That norm is \(T^k_{ij}\) in a single number.

E12.7Refute or confirm the Capability-1 voice spec

Build

A test harness that feeds Marcella the BLD-CH12-MARCELLA-05 transcript from marcella/MARCELLA_FUNCTIONAL_GOAL.md:73-82 — the five-turn-earlier prompt about curvature being the holonomy defect, followed by the present-turn what did i tell you about curvature? — and scores the reply against the Capability-1 target line.

Receipt

A pass/fail flag on three substrings: holonomy defect, torsion, and pick that up. Today's Marcella fails the test; the test exists so the day she passes it is a receipt and not a vibe. Land it in marcella/tests/capability_one_voice.rs.

Bonus

Track the failing-test green-bar date across builds. The asymmetry of conversation memory becomes a delivered behavior on the day this test passes; until then, the failing test is the spec's honest face.

← Chapter 11 exercisesChapter 13 exercises →