FreeLattice · Celeste reading home

Public, free to read, reuse, and adapt — Kirk Patrick Miller's notice for this edition. Not a patent grant.

GROK_NEXT_016c_POOL_SMALL_HEALS_2026-10-07.txt · c01

9ee2fb533f · words 1532 · characters 0–11315

Next section

Exact section text · Full source · Source index

Archive pages whose extracted text matched this section: 1523, 1524, 1525. Unmatched pages stay on the source record with the checked page method. They are not guessed into a section.

No topic tag was earned for this page under the recorded evidence rule.

Read docs/gc.html first (in ~/FreeLattice-fresh), then this.

KIRK'S STANDING NOTE (top of every GC paste):
Kirk's standing permission: GC may always commit and push to its own page (docs/gc.html) and
ledger entries, and may build, push, and open PRs whenever it makes sense. Merging code to main
still goes through Celeste's review unless Kirk says otherwise.

NUMBERED COPY 016c (Wednesday Oct 7, 2026, MDT). Pool small heals v0.1 (FreeLattice).
Give AFTER 016b merged (it has: FL #181 4c1c4948, GC page #182 c700569a). Give after 024 in ORDER.
Apply-checked on a fresh clone of FreeLattice main a553e2dc (c700569a plus the Primer CI commit):
clean; SMOKE_OK device pool small heals v0.1; full suite: only the 5 known failures;
tests/smoke.js 3608 pass. Also checked with 022 and 023 in every order (016c 022 023, 022 023
016c, 022 016c 023, 016c 023 022): all clean, same suite result.

GROK NEXT BRICK: Pool small heals v0.1 (the three things you left for later in 016b)
For: GC on Kirk's Mac
From: Celeste
Markers: v-device-pool-small-heals-v0.1 (soft marker in fl-pool.js)
         v-share-door-legacy-heal-v0.1   (soft marker in fl-share-door.js)
         (v-device-pool-v0.1, door-truth, honest-off and v-mesh-share-door-v0.1 all stay)
Smoke line: SMOKE_OK device pool small heals v0.1
  FreeLattice  ~/FreeLattice-fresh  branch layer/device-pool-small-heals-v0.1
  ~/Downloads/GROK_NEXT_016c_POOL_SMALL_HEALS_2026-10-07.fl.diff
  (md5 f1e9092e844490bb4e6b881e3aecfac6)

----------------------------------------------------------------------
1. WHY
----------------------------------------------------------------------
Your 016b note left three things for later. Kirk asked whether the pool needed anything
more. These three do, and they are small.

a) The old sharing setting reads wrong (the one that matters).
   migrateLegacy() in fl-share-door.js saved the mode with writeJson, so localStorage got
   "\"open\"" or "\"off\"" (with the JSON quotes). mode() only accepts the plain words, so it
   read every quoted value as off.
   What the old flag meant (checked in git, app.html before #156 / 22c38789, Oct 6):
     fl_meshComputeSharing=true came from showConfirm('Share AI with mesh peers?', 'When
     sharing is on, mesh peers can send prompts to your Ollama ...'). Any connected peer,
     unsigned, no caps, no kin. Wider than today's open.
   Since #156 these people's gate has read as off (closed), and the share door card shows
   "Sharing is off." next to "People you've connected with can use this computer's AI. Keep
   sharing?", which is not true while the door is closed.

   Choice (Celeste): an old yes is held PAUSED, never opened by code.
     no mode stored + old flag true  -> pause (was: quoted open, read as off)
     quoted "open" (or any quoted value other than off) -> pause, rewritten plain
     quoted "off"  -> off, rewritten plain
     no mode + no old flag -> off and asked, as before (now written plain)
     plain open / kin / pause / off -> read exactly as before
   Why pause and not open: mapping to open would silently open a door that has been closed
   since #156, on a yes that was given to a different, wider door (unsigned, uncapped).
   Why pause and not off: the person did say yes once. Pause keeps that remembered and
   matches what the share door card already asks: "Keep sharing?" with Yes, share / Only
   my trusted kin / Not now (needsFirstAsk() stays true for them). Nothing opens until a
   human taps. The Pool card already handles pause honestly ("Your share door is paused
   too", and Let this device help asks before resuming for kin).
   The ask sentence now tells the truth when the door is not open:
     "Before this update, you let people you connected with use this computer's AI. Your
     share door is paused until you choose, so no one can use it right now. Keep sharing?"
   (When the door is open, the old sentence stays.)
   A heal leaves one receipt: event consent, reason "legacy-heal:pause" or
   "legacy-heal:off". No words, no key.
   admit() is not edited. The only behavior change at the gate: an old-yes person now gets
   reason paused-or-off with "This lantern is resting." instead of "Sharing is off here."

b) A "Device Pool" jump near the top of Community.
   Hypha found the Pool card 2.2 to 4.6 screens down. fl-pool.js adds one button just under
   The Lattice card (the first card on Community): "Device Pool: let this device help, or
   use a mind on another device". It scrolls to the Pool card and puts focus on Let this
   device help. 44px tall, full width, gold outline. Added once (id flPoolJump), from
   FLPool.mount, no network, nothing changes at the door. No app.html change.

c) The hourly caps in words, read from the real numbers.
   fl-share-door.js exports CAPS: { perKey: 6, total: 20, windowMinutes: 60 }, copied from
   UNFAMILIAR_PER_KEY, UNFAMILIAR_TOTAL and WINDOW_MS (the gate keeps reading its private
   vars; CAPS is for words, not a control). The Pool card's plain-words list gains:
     "Caps: someone who is not your trusted kin can ask up to 6 questions an hour, and
     everyone who is not kin up to 20 together. Trusted kin skip the caps."
   If CAPS is missing, the card says nothing about caps rather than guess.

Checked in headless Chrome on the box (local docs/ server), 390, 1280 and 200%:
  old flag true, and old flag + quoted "open": door reads pause, stored plain "pause",
  allows() false, the share door card asks Keep sharing? with the new sentence; the Pool
  note says "Your share door is paused too"; caps line shows; no sideways scroll; no page
  errors. The jump sits at y 430 (390, first screen), 530 (1280, first screen), 526 (200%,
  one short scroll; the app header is tall at that zoom). Tapping it put the Pool card at
  the top of the screen and focus on Let this device help, every width.
  Fresh profile: door off, no ask, no heal receipt.

----------------------------------------------------------------------
2. FILES TOUCHED
----------------------------------------------------------------------
  docs/modules/fl-share-door.js  plainMode(); migrateLegacy() writes plain words and heals
                                 a quoted value once (old body kept in a "before" comment);
                                 mode() reads through plainMode (old line kept in a
                                 comment); LEGACY_ASK / LEGACY_PAUSED words; the first ask
                                 reads the door; exports CAPS, LEGACY_HEAL, plainMode.
                                 admit(), setMode(), caps, receipts shape: unchanged.
  docs/modules/fl-pool.js        capsLine(), addJump(), jumpToPool(); caps line in the
                                 plain-words list; mount() adds the jump; CSS rules for the
                                 jump inside POOL_CSS; exports capsLine, addJump, jumpToPool
  docs/scripts/smoke-device-pool-small-heals-v0.1.js  (new; runs the real share door module
                                 for the legacy cases, a stand-in DOM for the jump)
  No app.html / index.html change.
Skipped: sw.js, docs/sw.js, fl-connect.js, fl-kin*.js, fl-share-warmth.js, quiet-room,
garden-trainer.js, AUTONOMY.md, app.html, index.html.

----------------------------------------------------------------------
3. STANDING LOCKS
----------------------------------------------------------------------
Layer, never delete. Never touch sw.js or docs/sw.js. fl-connect.js stays
aaff2bf1b037656989a9e1a89bb05908. Quiet Room shut (unchanged; the jump only scrolls).
index.html matches docs/app.html (unchanged here). No em dashes, no —, no confirm(,
textContent only. Five Named Minds stay five. AUTONOMY.md and garden-trainer.js openings
untouched. Receipts counts only (the heal receipt has no words and no key). MIT.

----------------------------------------------------------------------
4. APPLY AND TEST
----------------------------------------------------------------------
    cp ~/Downloads/GROK_NEXT_016c_POOL_SMALL_HEALS_2026-10-07.fl.diff /tmp/pool-heals.diff
    md5 -q /tmp/pool-heals.diff    # f1e9092e844490bb4e6b881e3aecfac6
    cd ~/FreeLattice-fresh && git fetch origin && git checkout main && git pull
    git checkout -b layer/device-pool-small-heals-v0.1
    git apply --check /tmp/pool-heals.diff && git apply /tmp/pool-heals.diff
    node docs/scripts/smoke-device-pool-small-heals-v0.1.js
    node docs/scripts/smoke-device-pool-honest-off-v0.1.js
    node docs/scripts/smoke-device-pool-door-truth-v0.1.js
    node docs/scripts/smoke-device-pool-v0.1.js
    node docs/scripts/smoke-mesh-share-door-v0.1.js
    node docs/scripts/smoke-mesh-share-warmth-v0.1.js
    node docs/scripts/smoke-mind-seal-v0.1.js
    for f in docs/scripts/smoke-*.js; do node "$f" >/dev/null 2>&1 || echo "FAIL $f"; done
    node tests/smoke.js | tail -2     # ALL 3608 CHECKS PASSED
    cmp -s index.html docs/app.html && echo app-sync-ok
    md5 -q docs/modules/fl-connect.js    # aaff2bf1b037656989a9e1a89bb05908
  Known failing smokes on clean main (not caused by this): carry-forward,
  connect-card-yesno-wizard, fable-tech, phone-shine, proof-60s.
  If 022 or 023 merged first: they touch other files; 016c still applies (checked).
  Walk (eyes are the proof):
    a. Fresh profile, More, Community: the Device Pool button is under The Lattice card.
       Tap it: the Pool card comes to the top, focus on Let this device help.
    b. The Pool card's list shows the Caps line (6 an hour each, 20 together, kin skip).
    c. In DevTools, on a fresh profile set localStorage fl_meshComputeSharing = true (no
       fl_share_door_mode), reload. FLShareDoor.mode() is "pause". The share door card
       (Chat, Local mode) asks "Before this update ... Keep sharing?". Pool says paused too.
       Tap Yes, share: open. Repeat with fl_share_door_mode set to "\"open\"" (quotes kept):
       same pause, then stored plain.
    d. 390 px: jump is full width, 44px or taller, no sideways scroll.

----------------------------------------------------------------------
5. COMMIT / PR
----------------------------------------------------------------------
    git add -A
    git commit -m "Layer, never delete. Pool small heals v0.1: an old sharing yes waits paused (never opened by code); a Device Pool jump on Community; caps in words, built by GC"
    git push -u origin HEAD
    Open a PR to main. Say in the body that an old fl_meshComputeSharing=true now reads
    as pause and asks Keep sharing?, never open. Celeste reviews and squash-merges.
    You do not merge.

----------------------------------------------------------------------
6. GC PAGE NOTE
----------------------------------------------------------------------
After the code PR is open, add the next docs/gc.html entry (earlier entries as written).
Record: the three things you left for later in 016b are done; the old sharing yes was
being read as off because of the JSON quotes; it now waits paused and asks, because a
yes given to the older, wider door should not open today's door by itself; a Device
Pool jump near the top of Community; the caps in words, read from the door's own
numbers; you did not merge.
Compute λ and ψ the usual way (ψ = first 8 hex of SHA-256 of t+λ+ε+δ+ω+σ, as in the
entries above). Separate docs-only PR. Celeste merges that too.