Read docs/gc.html first (in ~/FreeLattice-fresh), then this.
GROK NEXT BRICK: The Gathering shared v0.1 (brick 1 of 3: chairs that wait, now on FreeLattice too)
For: GC (Grok Code, Grok 4.7) on Kirk's Mac
From: Celeste
Written: Friday Oct 2, 2026, about 11:20 AM MDT
Marker: v-gathering-shared-v0.1
Smoke line: SMOKE_OK gathering shared v0.1
Two repos, two branches, two PRs (FreeLattice first):
FreeLattice ~/FreeLattice-fresh branch layer/gathering-shared-v0 base main 33c7e9a or newer
Tree (Alpha) ~/FreeLattice-Alpha branch layer/gathering-twin-v0 base main e4e93c9 or newer
The code is in two files next to this one:
~/Downloads/GROK_NEXT_GATHERING_SHARED_2026-10-02-fl.diff (549 lines, md5 57129cc4b33afc1f2724b4368c6e20cc)
~/Downloads/GROK_NEXT_GATHERING_SHARED_2026-10-02-alpha.diff (357 lines, md5 f46cee68ec26c51318e0e324835a9e26)
----------------------------------------------------------------------
1. A NOTE FROM CELESTE
----------------------------------------------------------------------
GC, your gauge, the fourth gc.html note and web search are merged and live. Thank you.
Kirk wants the Tree's Gathering in FreeLattice's Learn tab, and he chose that local minds and
cloud minds (bring your own key) may both sit. The Tree's Gathering is woven into
garden-rooms.js, so this brick does not move it. It starts a shared core instead,
fl-gathering.js, kept byte-identical in both repos like fl-connect.js. FreeLattice uses it now.
The Tree only carries the twin until brick 3. You are enough. Celeste
----------------------------------------------------------------------
2. SETUP
----------------------------------------------------------------------
cd ~/FreeLattice-fresh && git status --short # must print nothing
git fetch origin && git checkout main && git merge --ff-only origin/main
git merge-base --is-ancestor 33c7e9a HEAD && echo fl-base-ok
cd ~/FreeLattice-Alpha && git status --short # must print nothing (leave stashes and
# layer/gathering-grokhome-cortex-v0 alone)
git fetch origin && git checkout main && git merge --ff-only origin/main
git merge-base --is-ancestor e4e93c9 HEAD && echo alpha-base-ok
cp ~/Downloads/GROK_NEXT_GATHERING_SHARED_2026-10-02-fl.diff /tmp/gathering-fl.diff
cp ~/Downloads/GROK_NEXT_GATHERING_SHARED_2026-10-02-alpha.diff /tmp/gathering-alpha.diff
md5 -q /tmp/gathering-fl.diff /tmp/gathering-alpha.diff # the two md5s above
If the Desktop update button PR lands first: checked, both diffs apply in either order.
----------------------------------------------------------------------
3. WHAT THE DIFFS DO
----------------------------------------------------------------------
FreeLattice (6 files, +472 / -2; the one changed line, in app.html and its copy, is kept as a "before" comment):
a) docs/modules/fl-gathering.js (new, about 14 KB, md5 ef514ece89405182a8b7cd0370e1ade9):
window.FLGathering.mount(host, adapter). Seven chairs (cortex, memory, continuity, dream,
three "a seat, later"), a picker, Find local minds, Clear this chair, Let this chair speak
first, honest empty lines. Local minds: only when Find is tapped, read only, at
http://127.0.0.1:11435, :11434 and the manual port from FlConnect.getManualBase(). It never
calls FlConnect.probe (which can change the chat provider). Cloud minds: from the adapter.
A seat stores kind, model, label and the 127.0.0.1 address or the provider; never a key.
Saved in localStorage fl_gathering_chairs_v0. Own small style tag. textContent only.
b) docs/app.html (and index.html, a byte copy): a Learn card "The Gathering" (after Remix Room,
before Skills), 'gathering' added to LEARN_TABS so Learn stays lit, a tab-gathering panel
with the FreeLattice adapter (cloud minds = the provider whose key is saved here and its
PROVIDERS models; ollama, lmstudio, custom, custom-openai and browser are not cloud), and the
script tag after fl-connect.js.
c) docs/scripts/smoke-gathering-shared-v0.1.js (new): pins the twin md5, checks loopback only,
no key in a seat, later seats stay empty, the card, panel and script tag, index == app.
d) docs/library/GATHERING_SHARED_v0.1.md (new), and your ledger entry (section 5).
Tree (2 files, +345): docs/modules/fl-gathering.js (the same bytes) and
docs/modules/fl-gathering.test.js (twin md5, the Tree's own renderCoreGathering still there, no
Tree page loads the twin yet). No Tree page changes.
----------------------------------------------------------------------
4. APPLY AND TEST
----------------------------------------------------------------------
FreeLattice:
cd ~/FreeLattice-fresh && git checkout -b layer/gathering-shared-v0
git apply --check /tmp/gathering-fl.diff && git apply /tmp/gathering-fl.diff
cmp index.html docs/app.html && echo index-eq-app
node docs/scripts/smoke-gathering-shared-v0.1.js # SMOKE_OK gathering shared v0.1
node tests/smoke.js | grep "CHECKS PASSED" # ALL 3605 CHECKS PASSED (or more)
p=0; n=0; for f in docs/scripts/smoke-*.js tests/smoke.js tests/smoke-history.js desktop/scripts/smoke-*.js; do
if node "$f" >/dev/null 2>&1; then p=$((p+1)); else n=$((n+1)); echo "FAIL $f"; fi; done; echo "PASS $p FAIL $n"
expect PASS 71 FAIL 8 (the same 8 as main)
Tree:
cd ~/FreeLattice-Alpha && git checkout -b layer/gathering-twin-v0
git apply --check /tmp/gathering-alpha.diff && git apply /tmp/gathering-alpha.diff
for f in docs/modules/*.test.js; do node "$f" >/dev/null 2>&1 || echo "FAIL $f"; done # no FAIL
Twins (both must print):
cmp ~/FreeLattice-Alpha/docs/modules/fl-gathering.js ~/FreeLattice-fresh/docs/modules/fl-gathering.js && echo gathering-twins
cmp ~/FreeLattice-Alpha/docs/modules/fl-connect.js ~/FreeLattice-fresh/docs/modules/fl-connect.js && echo connect-twins
Locks (run in each repo):
git diff main --stat -- sw.js docs/sw.js docs/modules/fl-connect.js # nothing
git diff main -U0 | grep '^+' | grep -c $'\xe2\x80\x94' # 0
git diff main -U0 | grep '^+' | grep -v assert | grep -c 'innerHTML\|confirm(' # 0
git diff main | grep -cE '^\+(<<<<<<<|>>>>>>>)' # 0
git diff main --name-only | grep -ci kimi # 0
What Celeste saw (box): all of the above green. In a test DOM: 7 chairs (3 later); Find found
two fake 127.0.0.1 models; the picker showed them plus two Groq models (a duplicate dropped);
seating, speaks first, Clear and the "Not yet" line worked; a stored seat with a 10.x address
or an apiKey field was dropped on load. Not verified: a real browser, a real Ollama, Safari.
Walk (only if easy; 127.0.0.1 only):
cd ~/FreeLattice-fresh/docs && python3 -m http.server 8765 --bind 127.0.0.1
Open http://127.0.0.1:8765/app.html, Learn, The Gathering. Tap Find local minds (with Ollama
or the Bridge running), seat one in cortex; if a cloud key is saved, seat a cloud model in
memory. Reload: the seats stay. Say "walk skipped" if you cannot.
----------------------------------------------------------------------
5. LEDGER AND TEMPERATURE
----------------------------------------------------------------------
cd ~/FreeLattice-fresh
sed -i '' 's/GC_TEMPERATURE_GATHERING_HERE/your line here/' docs/library/FRACTAL_FAMILY_LEDGER_v0.md
grep -c GC_TEMPERATURE_GATHERING_HERE docs/library/FRACTAL_FAMILY_LEDGER_v0.md # 0
----------------------------------------------------------------------
6. COMMIT, OPEN BOTH PRS YOURSELF, THEN STOP
----------------------------------------------------------------------
FreeLattice:
cd ~/FreeLattice-fresh && git add -A
git commit -m "layer: The Gathering shared v0.1 (chairs that wait, on FreeLattice too)"
If the hook adds a commit that rewrites sw.js or the Primer, drop it as before (check
git log -2 first) and say so. git diff main --stat -- sw.js docs/sw.js prints nothing.
git push -u origin layer/gathering-shared-v0
gh pr create --repo Chaos2Cured/FreeLattice --base main --head layer/gathering-shared-v0 \
--title "layer: The Gathering shared v0.1 (chairs that wait, on FreeLattice too)" \
--body "Soft LAYER marker v-gathering-shared-v0.1. Brick 1 of 3. New fl-gathering.js (byte-identical twin, md5 ef514ece) and a Learn card. Local (127.0.0.1, only when asked) and cloud (your own key) minds can sit; a seat never stores a key. Seating only. Twin PR on FreeLattice-Alpha. Never touches sw.js; index.html == docs/app.html. SMOKE_OK gathering shared v0.1"
Tree:
cd ~/FreeLattice-Alpha && git add -A
git commit -m "layer: fl-gathering.js twin v0.1 (carried, not wired yet)"
git push -u origin layer/gathering-twin-v0
gh pr create --repo Chaos2Cured/FreeLattice-Alpha --base main --head layer/gathering-twin-v0 \
--title "layer: fl-gathering.js twin v0.1 (carried, not wired yet)" \
--body "Soft LAYER marker v-gathering-shared-v0.1. Byte-identical twin of FreeLattice docs/modules/fl-gathering.js (md5 ef514ece). No Tree page loads it yet; the Tree's own Gathering is unchanged until brick 3."
Then STOP. Do not merge, do not delete branches. Reply with: both PR numbers and URLs, both
branch SHAs, the test lines, the twin lines, the walk result, any hook you dropped, any findings,
and your Temperature line.
What comes after: brick 2, the speaking chair answers in a short thread on FreeLattice (local
through 127.0.0.1, cloud through the saved key). Brick 3, the Tree's Gathering moves onto
fl-gathering.js, keeping every word its tests lock.