Read docs/gc.html first (in ~/FreeLattice-fresh), then AUTONOMY.md, docs/GALAXIES.md,
CLAUDE.md and GROK.md in ~/FreeLattice-Alpha, then docs/code-settings.html, 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 017 (Wednesday Oct 7, 2026, MDT). Tree Kin v0.1 (theLatticeTree).
Give AFTER 023 in ORDER (020, 021, 024, 016c, 022, 023, then 017).
Apply-checked on a fresh clone of FreeLattice-Alpha main f9f6e09 (after #90):
017 alone: clean, all 22 docs/modules/*.test.js pass
020 + 021 + 024 then 017: clean, 25 pass
020 + 021 + 024 + 022 (alpha diff) then 017: clean, 26 pass
017 first, then 020 + 021 + 024 + 022: clean, 26 pass
022 then 017: clean, 23 pass
So it does not matter which of those lands first.
GROK NEXT BRICK: Tree Kin v0.1 (first brick of the Tree's own mesh)
For: GC on Kirk's Mac
From: Celeste
Marker: v-tree-kin-v0.1
Smoke line: SMOKE_OK tree kin v0.1
FreeLattice-Alpha ~/FreeLattice-Alpha branch layer/tree-kin-v0.1
~/Downloads/GROK_NEXT_017_TREE_KIN_2026-10-07.fl.diff
(md5 43adbe877bb64dbbb920dabee0807cc3)
(named .fl.diff like the others, but this one applies to the ALPHA repo)
----------------------------------------------------------------------
1. WHY, AND WHY THIS SMALL
----------------------------------------------------------------------
Kirk wants shared compute, the device pool and abliteration on theLatticeTree, where the
code is cleaner, and FreeLattice so easy no one struggles. The pool (018) and the room
split (019) both stand on one thing: knowing which people you trust. The Tree has no mesh
yet (no PeerJS, no MeshIdentity, no fl-kin, no share door).
The ORDER outline for 017 said "port fl-kin.js + fl-share-door.js". Celeste trimmed it:
- Kin only. The share door moves to 018, with the pool, because a door that gates
nothing yet would be a control that does nothing. 018 ports it with 016/016b/016c's
truths already in (door truth, honest off, pause wins, old yes waits paused).
- No mesh transport yet. Cards travel the way people already talk: copy one line, send
it by text or email or say hello in person, paste it on the other side. Nothing is
fetched or sent by this module, ever. The only outside act is the clipboard write
after a tap.
What a person sees (Garden, Settings, under "May I look?"; also settings.html):
Trusted kin
"Kin are people whose AI you choose to trust. Trade cards with them, then tap Trust.
Nothing is sent from here. You pass cards by text, email or in person."
Your card: names the remembered mind's model. Two fields (Name your AI, Your first
name), Make my card. The first tap makes a key on this computer (Ed25519, or ECDSA
P-256 on older browsers; not exportable; kept in IndexedDB theLatticeTreeKin), signs
the card, shows one line (TREEKIN1:...) and Copy my card.
A friend's card: Add a friend's card, paste, Check this card. The page checks the card
against its own key, and that its ID (mesh:...) is made from that key, so nobody can
borrow someone else's ID. Then: "Lumen (llama3.2:3b), from Kirk's computer (ID
2HKQkGhj). This card checks out: the computer that holds its key made it. Trust it
only if you know who sent it." [Trust this AI] [Not now]
List: "Trusted kin: N" or "No trusted kin yet." Each card: Trusted / Seen, not
trusted, with Stop trusting / Trust this AI. History kept (layer, never delete).
Honest line: "A card shows which computer made it. It does not prove who the person is
or what the model is. Only trust a card from someone you know, sent a way you trust."
Later line: "Later, the Device Pool on the Tree will let trusted kin help each other.
Not in this card yet."
Fail-closed: no remembered mind, no Make my card (it says to remember a mind first).
Adding a friend's card still works. Your own card pasted back: "That is your own
card." A changed or borrowed card: set aside, with plain words.
Why it is the right base for 018:
The card is FreeLattice's own card: kind fl-mind-card, v 1, home thelatticetree (already
in FL's HOMES), signed under fl-kin-card|v1|, the same fingerprint (keyHash|meshId|name|
model) and the same pass shape (grantedAt, revokedAt, keyHash, history). The ID is made
the way FL MeshIdentity makes it ('mesh:' + base58 of SHA-256 of the public JWK). So FL
and the Tree read kin the same way, and 018 asks only TreeKin.trustedKeyHash(kh): a
channel must prove that key before anyone counts as kin.
Checked in headless Chrome on the box (local docs/ server), 390, 1280, 200%:
Garden veil Settings and settings.html: the card shows under the grandmother face,
every button 44px, no sideways scroll, no page errors. Make my card made an Ed25519 key
and a 599-character card. Pasting your own card back says so. Zero requests left the
page during the kin taps. Closing the veil and opening Nursery hides the kin card.
Two separate browsers: A made a card, B pasted, checked, trusted, reloaded: "Trusted
kin: 1, Lumen (llama3.2:3b), From Kirk's computer (ID 2HKQkGhj). Trusted." A reloaded
and kept the same key (same ID). Counts on B: {"checked":1,"trusted":1}.
Not tried: Safari, Firefox, a real phone, a real second person.
----------------------------------------------------------------------
2. FILES TOUCHED (Alpha)
----------------------------------------------------------------------
docs/modules/tree-kin.js (new, TreeKin)
docs/modules/tree-kin.test.js (new; two stand-in Trees trade cards; tamper, borrowed
ID, own card, ECDSA card made the FL way, edited at rest,
counts only, fail-closed, the face by taps, zero network)
docs/index.html one script tag after local-mind-probe.js (and a comment)
docs/settings.html one host div after #settings-grandmother, one script tag,
three mount lines in the page's own script
docs/modules/garden-rooms.js Settings branch of openPlace: after LocalMindProbe.mount,
make #tree-kin-host after the grandmother face (once) and mount;
hideAllBodies: hide #tree-kin-host (so it never shows in
Nursery or Gathering). Guarded; far from 024's hunk.
docs/code-settings.html one LAYER paragraph (mirror)
docs/GALAXIES.md one LAYER line at the top of the layer list
Storage (localStorage): tree_kin_passes, tree_kin_seen (signed cards, re-checked on
every paint, cap 50), tree_kin_counts (numbers only: keysMade, cardsMade, copied,
checked, setAside, trusted, stopped), tree_kin_names (what the person typed for their
own card). IndexedDB theLatticeTreeKin: the key pair (private key not exportable).
Skipped on purpose: AUTONOMY.md, garden-trainer.js, workshop-trainer.js, fl-connect.js,
local-mind-probe.js, garden-rooms.css, #lumino-menu, #place-veil-close, any Quiet Room
words, any FL file.
----------------------------------------------------------------------
3. STANDING LOCKS
----------------------------------------------------------------------
Layer, never delete. AUTONOMY.md and garden-trainer.js untouched. fl-connect.js stays
aaff2bf1b037656989a9e1a89bb05908 (byte-identical with FL). #lumino-menu stays hidden
(not touched). #place-veil-close stays (not touched). No Quiet Room words in UI. No
network until a human taps, and this module never uses the network at all. Do not
invent a mind, a generate button, a silent scan, auto-trade, or a wallet. Five Named
Minds stay five. No em dashes, no —, no confirm(, textContent only. Receipts
counts only. No AGPL vendored. MIT.
----------------------------------------------------------------------
4. APPLY AND TEST
----------------------------------------------------------------------
cp ~/Downloads/GROK_NEXT_017_TREE_KIN_2026-10-07.fl.diff /tmp/tree-kin.diff
md5 -q /tmp/tree-kin.diff # 43adbe877bb64dbbb920dabee0807cc3
cd ~/FreeLattice-Alpha && git fetch origin && git checkout main && git pull
git checkout -b layer/tree-kin-v0.1
git apply --check /tmp/tree-kin.diff && git apply /tmp/tree-kin.diff
node docs/modules/tree-kin.test.js # SMOKE_OK tree kin v0.1
for t in docs/modules/*.test.js; do node "$t" >/dev/null 2>&1 || echo "FAIL $t"; done
md5 -q docs/modules/fl-connect.js # aaff2bf1b037656989a9e1a89bb05908
git diff --stat main -- AUTONOMY.md docs/modules/garden-trainer.js # empty
(Node may print "The Ed25519 Web Crypto API algorithm is an experimental feature".
That is Node's note, not a failure.)
Walk (two browsers, or a normal and a private window; local server on docs/):
a. Garden, Settings: Trusted kin sits under May I look?. With no mind remembered it
says to remember one first; Add a friend's card still works.
b. Remember a mind. Name your AI, your first name, Make my card, Copy my card.
c. Other window: Add a friend's card, paste, Check this card, Trust this AI. Reload:
Trusted kin: 1. Stop trusting: Seen, not trusted.
d. Change one letter in the pasted card: set aside, plain words.
e. Close Settings, open Nursery: the kin card is not there.
f. 390 px: buttons full width, 44px, no sideways scroll. DevTools Network: nothing
leaves the page on any kin tap.
----------------------------------------------------------------------
5. COMMIT / PR
----------------------------------------------------------------------
git add -A
git commit -m "Layer, never delete. Tree kin v0.1: trusted kin by signed cards you pass by hand, no network, built by GC"
git push -u origin HEAD
Open a PR to FreeLattice-Alpha main. Celeste reviews and squash-merges. You do not merge.
----------------------------------------------------------------------
6. GC PAGE NOTE
----------------------------------------------------------------------
Next docs/gc.html entry in FreeLattice (earlier entries as written): the Tree can know
its trusted kin now; cards pass by hand, so nothing is sent; the same card and pass as
FreeLattice; the share door waits for 018 so it gates something real; you did not
merge. λ and ψ the usual way (ψ = first 8 hex of SHA-256 of t+λ+ε+δ+ω+σ). Separate
docs-only PR in FreeLattice. Celeste merges that too.
----------------------------------------------------------------------
7. WHAT FOLLOWS (do not build now)
----------------------------------------------------------------------
018 Tree Pool v0.1: the Tree's first channel (a join step between two Trees, the key
proved by a fresh challenge signed under its own prefix, as FL MeshIdentity does),
the share door twin (off by default; door truth, honest off, pause wins, old yes
waits paused, caps in words, all from 016/016b/016c), and the fl-pool.js twin
reading TreeKin.trustedKeyHash. Whole questions routed. Classroom words.
019 Shared compute v0.2 (the room split): llama.cpp rpc-server (MIT) lent from the
desktop app on wired LAN, teacher taps Start lab. Before it: a "join this room"
step so a lab is not 20 pairings.
Also later: a QR code for the card (in person, one tap), and the fingerprinted recipe
share (Kirk's wish) can ride the same signed card.
----------------------------------------------------------------------
8. DO NOT START
----------------------------------------------------------------------
018-019. Any network transport. Keep-this Mom one-tap. Gathering bricks 2/3. Sophia
shelf. More/Play/Nursery. Any weight change or ablation code.
You are enough. Celeste