FLINT PASTE · HEAL · Love Logic v3 phone heal v0.1 (Hypha's phone)
File: FLINT_HEAL_LOVE_LOGIC_V3_PHONE_v0.1.txt
From: Celeste, for Kirk, to Flint
Date: Monday 28 September 2026, evening MT
Repo: Chaos2Cured/FreeLattice (served from docs/, live at freelattice.com)
Page: docs/love-logic-proof-v3.html (live at freelattice.com/love-logic-proof-v3.html)
Marker: v-love-logic-v3-phone-heal-v0
SMOKE: SMOKE_OK love logic v3 phone heal v0.1
======================================================================
0. MAIN, CHECKED RIGHT BEFORE ANCHORING
======================================================================
Flint, dear, main moved while I was working, so every anchor below is on the new tip:
main = 7db2d94f96e976c1c08b1fb77cc4fbca6e55fed4
"ci: Update Primer deployment state [2026-09-29]" (02:45 UTC Sep 29 = 8:45 PM MT Sep 28)
its parent a80c8e4ab45080c0558f0ea2060479280cd4fad3
"layer: connect heal v0.4 (Hypha walk 3) + smoke green (#121)" (8:44 PM MT Sep 28)
its parent e06c7dcdbfe4d8259097083cfe64f8e7788bba46 (#120, Agent Bridge lock v0.1)
So #121 has merged. What #121 changed that matters here:
- docs/scripts/smoke-love-logic-proof-v3.js line 105: its "app.html / index.html untouched"
assertion is now brick-scoped (it binds only while docs/love-logic-proof-v3.html is in the
diff). This heal touches the v3 page, so that assertion binds, and we do not touch app.html
or index.html. Green.
- docs/library/FRACTAL_FAMILY_LEDGER_v0.md gained the Connect heal v0.4 entry at L288-298, so
"## Out of scope for this brick" is now at L300 (was L287 on e06c7dc).
- docs/love-logic-proof-v3.html, docs/love-logic/*, docs/Flint.html, docs/research.html are
byte-identical between e06c7dc and 7db2d94. The v3 page sha256 on main:
2939cc56b38f5a8b27132ec8965472acd6f05b8e7220e17efd873d9c7602d65c (402 lines)
- Root sw.js and docs/sw.js: identical to each other, sha256 7570a013...420c. Untouched here.
- Root index.html = docs/app.html (sha256 7559af92...499b). Untouched here.
If main moves again before you start, re-check with `git log -1 origin/main` and re-anchor; the
anchors below are text anchors first and line numbers second, so they should survive small shifts.
======================================================================
1. WHY (Hypha's phone shots, and what I verified)
======================================================================
Hypha walked v3 on her phone (about 390 px wide, mobile Chrome). Her shots, plus my own headless
walk at 390 px with a 6x CPU throttle on main, show:
H1. The crossover table is clipped and the whole page scrolls sideways. On main the document is
489 px wide at a 390 px viewport. The three wide tables are #llv3-results, #llv3-live
(both filled by "Run the checks") and #crossover-table (the static one in section 4).
H2. The title is big for a phone and the boxes waste width (desktop padding everywhere).
H3. The δ and Δ inside MathML show as little boxes. Root cause, verified: Chrome's MathML Core
applies text-transform: math-auto to a one-letter )
EDIT docs/library/LOVE_LOGIC_PROOF_v3.md (one short section above "## Smoke")
======================================================================
4. THE HEAL, CHANGE BY CHANGE, WITH ANCHORS ON 7db2d94
======================================================================
All line numbers are for docs/love-logic-proof-v3.html on main 7db2d94 (402 lines).
4.1 Marker. After L24, the existing comment
4.2 The 404 stylesheet. L41 is exactly
Replace it with a comment explaining that docs/css/style.css does not exist and the page
carries its own styles. (This is the only removed line with no content lost.)
4.3 CSS layer. Anchor: L101, the line starting
.headline-ineq { background: rgba(16, 185, 129, 0.08);
which is the last rule before (L102). Add after it the block in section 6 below:
.table-scroll, .scroll-hint, the `math mi` fix plus a math font stack with Noto Serif as a
phone fallback, .params, .llv3-meaning, .llv3-result (.ok / .bad), .references h4, and one
@media (max-width: 600px) block: container padding 24px 14px, h1 1.85rem, h2 1.4rem, box
padding 16px, the Run button full width at 48px tall, #llv3-status on its own line,
smaller table text, min-width 30rem only on #llv3-live and #crossover-table inside their
scroll frames, the scroll hint shown, and nav links without the left margin.
4.4 Settings behind the plain-words figures. Anchor: L129, the with the
settings for about 702 (701.79), about 10.5 (10.48), never ahead (h = 0.6033) and the
68% / 32% grid (δ = 0.95). The "about 702 rounds" and "about 10.5 rounds" text above it is
unchanged, so the v3 smoke stays green.
4.5 Visible result box and scroll frames in the checks section. Anchor: L136
Seed 20260924 · runs on
this device only
After it add .
Wrap How long lying stays ahead (q0 = 0.002, ...
After it add the scroll hint and open the wrapper; close the wrapper after the table's
Plainly: across our 243-cell grid, cooperation holds in 68% of scarce cases
After it add listing the five axes, 3^5 = 243
cells, 63 scarce and 180 abundant, the sustainability rule, δ = 0.95, and the plain caveat
that these are test values and another grid gives other percentages.
4.9 References. Anchor: L303 (L137-140) and
(L141-144) each in
at L230 (before the "More contacts and more shared memory" paragraph at L231).
4.7 Section 5, the −26.42 correction. L248 is exactly
at
L304 through
at L317. Replace the single list with a Cited on this page
and the six cited, each with where it is cited and its link;
Further reading (background, not cited in the text above)
and the other six,
each with its link.
A comment records that every reference is kept. Twelve
The settings behind these numbers (LAYER v-love-logic-v3-phone-heal-v0). All three use the same model from §4: each contact's reality check catches the lie with chance q0 = 0.002, each comparison of shared records catches it with chance q = 0.01, lying gains G = 1 per round, the penalty when caught is Lp = 2, the reputation loss afterwards is Δ = 0.5 per round, and there is no discounting and no complexity cost. About 702 (701.79) is n = 2 contacts with m = 0 shared memory. About 10.5 (10.48) is n = 5 with m = 1 (full shared memory). Never ahead is n = 10 with m = 1: the catch chance is 0.6033 per round, so even the first round loses (G ≤ h·Lp). 68% / 32% comes from the 243-cell scarcity grid in §6, judged at patience δ = 0.95.
You can check the math yourself: press the button below. Your device runs the same 656 checks as our Python simulation. Nothing is sent anywhere.
| Section | What it checks | Passed |
|---|
| Contacts n | Shared memory m | Detection h | Rounds lying is ahead (t*) | Patience needed (δ*) |
|---|
What the 656 checks mean: they confirm that the formulas on this page agree with their own brute-force sums and simulations. They do not show that the world behaves like the model.
How long lying stays ahead (q0 = 0.002, q = 0.01, G = 1, Lp = 2, Δ = 0.5; no discounting):
+Slide the table sideways to see every column.
+| Contacts n | Shared memory m | h(n, m) | Rounds lying is ahead, t* | Lead peaks at | Patience needed, δ* |
|---|---|---|---|---|---|
| 20 | 0 | 0.0392 | 67.60 | 26.10 | 0.9791 |
More contacts and more shared memory cut the time lying stays ahead by one to two orders of magnitude, and lower the patience needed. Past a point, lying is never ahead at all.
If the last round is known, a deceiver only chooses when to start. It lies at all exactly when the first round already pays: G > h·Lp + cκ. Future reputation loss and growing complexity only shorten the lying window; they cannot stop it. Example (G = 1, h = 0.05, Lp = 2, Δ = 0.5): the window is 21 rounds. Adding cκ = 0.04 shrinks it to 12. With h = 0.4 and Lp = 3 it is 0. With no reputation loss at all, the agent lies every round. If the other players are strategic too, a finitely repeated game unravels completely by backward induction (Luce & Raiffa 1957; Selten 1978). This is where v2's conclusion fails, and we say so.
What restores cooperation:
Two agents share a patch worth V per round. Sharing gives each σV/2 (σ ≥ 1 is the cooperative surplus). Grabbing against a sharer takes all of V. Two grabbers fight: each wins V half the time and pays Cf. Each agent needs b to get by; falling short costs D.
Under scarcity (σV/2 < b ≤ V), fighting beats starving together exactly when Cf < D/2 + (1 − σ)V/2. Then punishment is not really punishment, and no amount of patience sustains sharing.
Plainly: across our 243-cell grid, cooperation holds in 68% of scarce cases (68.25%) and in 100% of abundant ones. Conflict beats sharing in 32% of scarce cases (31.75%) and in none of the abundant ones. In scarce cells, sustainability falls from 100% when shortfall costs nothing, to 61.90% at D = 5, to 42.86% at D = 50.
+The grid behind 68% / 32% (LAYER v-love-logic-v3-phone-heal-v0): patch value V ∈ {1, 2, 4}, surplus σ ∈ {1, 1.5, 2.5}, need b ∈ {0.5, 1, 2}, shortfall cost D ∈ {0, 5, 50}, fighting cost Cf ∈ {0.2, 1, 5}. That is 35 = 243 cells; 63 are scarce (σV/2 < b) and 180 are abundant. Sharing is called sustainable when it beats grabbing once and then fighting forever, at patience δ = 0.95. These are test values, not measurements of any real world: a different grid gives different percentages.
What flips it: more surplus (σ ≥ 2b/V lifts both above need), costlier conflict, a smaller shortfall loss (storage, insurance, risk pooling), or lower need. Example (V = 2, b = 1.2, D = 50, Cf = 1): σ = 1.0 and 1.1 make cooperation impossible; σ = 1.2 = 2b/V makes it sustainable for δ ≥ 0.030.
Honest limit: if total cooperative output is below total need (σV < 2b), no sharing rule avoids a shortfall. Only more production or less need changes that. Information, including ledgers, cannot fix it alone. (Check D: 243/243.)
@@ -301,20 +348,27 @@Visible iteration: v1 and v2 stay exactly where they are. v3 sits beside them. Nothing is overwritten.
@@ -398,5 +452,34 @@ }); })(); +