Public, free to read, reuse, and adapt — Kirk Patrick Miller's notice for this edition. Not a patent grant.
FLINT_HEAL_SCAN_ONLY_WHEN_ASKED_v0.1.txt · c01
46cacc7cc5 · words 1443 · characters 0–10764
Exact section text · Full source · Source index
- Decentralization — explicit wording in the guide row
FLINT_HEAL_SCAN_ONLY_WHEN_ASKED_v0.1 (tiny)
Written 2026-09-30, 6:40 PM MDT, by Grok Bot for Flint. From Hypha's Tree Glow 1 walk (A4 note).
Marker: v-heal-scan-only-when-asked-v0.1
Smoke (FL): SMOKE_OK scan words honest v0.1 (docs/scripts/smoke-scan-words-honest.js)
Smoke (Alpha): SMOKE_OK scan words honest alpha v0.1 (docs/modules/scan-words-honest.test.js)
Temperature: porch light on, and a sign that finally says so.
======================================================================
0. ORDER AND LOCKS
======================================================================
Order (do not reorder):
1) FLINT_NEXT_TREE_ANY_MODEL_v0.1.txt
2) FLINT_HEAL_MODEL_CHOICE_SURVIVES_RELOAD_v0.1.1_tiny.txt (reload heal)
3) FLINT_NEXT_CONNECT_BOOT_PROBE_F1_F2_F3_F4_v0.1.txt (boot probe)
4) THIS paste
Locks:
- docs/modules/fl-connect.js is NOT touched. It stays byte-identical across both repos.
- FreeLattice: root sw.js == main, docs/sw.js untouched, index.html == docs/app.html (copy
after the edit). No conflict markers. Inline scripts parse. No confirm(). No bare *.
- Words only, plus one Newer note, two tiny smokes and one ledger entry. Old words are kept
as RETIRED comments. No em dashes in new words.
======================================================================
1. WHAT HYPHA SAW, AND THE EXACT CAUSE
======================================================================
Seen (thelatticetree.com/settings.html, 2026-09-30): on load the page checks 12 local ports and
shows "Looking… next look in 8s". The grandmother card on the same page says "May I look? —
only when you ask" and "We only look at well-known local doors, and only when you ask."
Cause (Alpha main 25e6ded, fl-connect.js blob 2e02eae3, same bytes as FreeLattice):
a) docs/settings.html, final inline script, runs on load:
if (connect && window.FlConnect && typeof FlConnect.mount === 'function') FlConnect.mount(connect);
The garden veil does the same when Settings opens (garden-rooms.js ~1716, FlConnect.mount(connectHost)).
b) fl-connect.js mount(el) ends with lookAgain(), which resets the loop and calls
refreshUI({ force: true }) -> probe({ gesture: true }).
c) probe(): no saved port, so the first tick does the full Bridge scan:
bridgeCandidates({ fullScan: true }) = 11435, 11436 ... 11445 (11 ports, /bridge/health)
then tagsAt('http://127.0.0.1:11434') (1 port, /api/tags)
= the 12 ports. (A saved fl_bridgePort outside that range would make it 13.)
d) After that, scheduleLoop() looks again at 8 s, then 16 s, then every 30 s for up to five
minutes (LOOP_MAX_MS). It does a full rescan on every third tick after a miss, and stops
once a local mind is remembered. On settings.html, panelVisible() never stops it, because
there is no #tab-connect element on that page.
e) The "only when you ask" words belong to local-mind-probe.js (the grandmother card). That
card really does look only after its tap. The look on load comes from the Connect door
above it. So the code is fine. The page just claims something that one of its two parts
doesn't do.
f) FreeLattice has the same mismatch: the app.html look card (#fl-look-card, data-look="0")
says "It only knocks on well-known local doors, and only when you ask." But FreeLattice
looks at boot today (flBridgeDetectBoot, owAutoDetect, autoDiscoverAI, Zero-Click), and
after the boot probe it still does exactly ONE look on open (FlColdStart.start() ->
FlConnect.bootProbe({ fullScan: true })), plus Connect's own loop while Connect is open.
======================================================================
2. THE CHOICE: THE WORDS MATCH THE BEHAVIOR
======================================================================
Why this way:
- The model-choice and boot fixes need a look at open. The boot probe's whole point is one
shared look at open, so the person sees "Ollama is ready, pick a mind" (FreeLattice F1
voice; on the Tree, mount() becomes lookAgain({ reuse: true }) and joins that look). Making
Connect wait for a tap would undo F1/F2 and add a second "May I look?" button on Tree
Settings (cc-note-2026-09-06: "the door is one door").
- Simpler for Mom: she opens Settings and sees what's there. She still chooses with one tap.
The real line is "nothing is chosen until you tap", and both repos keep it.
- It's the smallest honest change: words only. fl-connect.js isn't touched, so there's no
byte-identical risk and no clash with the boot probe's fl-connect hunks.
- The looks are local only: 127.0.0.1, Bridge health plus Ollama tags (and LM Studio after
the boot probe). Nothing goes over the network, no files are read, and nothing is uploaded.
So saying it plainly costs no trust.
Not chosen (written down so review is quick): an askFirst option on FlConnect.mount(el, opts)
that renders Connect quiet until Look again is tapped, used only by the Tree's two callers. It
would touch the exact line the boot probe rewrites (mount's lookAgain({ reuse: true })) and both
repos' shared file. If Kirk ever wants the Tree to be tap-only, that's the path, as a separate
v0.2.
New words:
Tree card (PRIMARY_SOFT): "May I look? Tap to look again, any time. Same door."
Tree card (honesty line): "We only look at well-known doors on this computer. Opening Settings
starts a short look (a few minutes at most), and Find local minds
looks again when you tap. Nothing is chosen until you tap a mind.
We never look through this computer's files. We never upload.
Quality of the sky is later."
FreeLattice look card: "FreeLattice can look for minds already living on this computer. It
only knocks on this computer's own well-known doors. It looks once
when FreeLattice opens, while Connect is open, and whenever you ask.
Nothing is chosen until you tap a mind."
Tree code-settings.html: a Newer note under "Nothing looks, chooses, or persists until that
tap", keeping the old words above it.
Not changed: the Gathering's "Find local minds" aria-label ("May I look — only when you ask")
stays. That button really does look only on tap, and the Gathering never mounts Connect.
======================================================================
3. ANCHORS AND OVERLAP (checked)
======================================================================
FreeLattice docs/app.html (and index.html): one line inside #fl-look-card, data-look="0" (main
~16914). Nearest boot probe hunk: @@ -16507 (CSS block, about 400 lines above). The reload heal
doesn't touch it (its nearest hunk is 27741). I checked it: this diff applies with plain
git apply on FL main 833ed398 + reload heal v0.1.1 diff + boot probe fl-app.html.diff.
Alpha docs/modules/local-mind-probe.js: three spots.
- Header comment under "// Probe ONLY after the human taps." (line 6).
- PRIMARY_SOFT (line 26). The Tree any-model paste adds lines after "var ROSTER_CAP = 4;"
(line 31). Those lines sit outside this hunk's 3-line context, so it applies with an offset.
If a hunk is rejected anyway, edit by text: the PRIMARY_SOFT line is unique.
- The settings-honesty line (~825). The boot probe's local-mind-probe hunks are at 235 and
275/299 (askDoor, look()), and the Tree paste's tryAddress block is at 877-883. Neither
shares context with this hunk.
I checked it: this diff applies on Alpha main 25e6ded, and again after the boot probe's
alpha-local-mind-probe.diff.
fl-connect.js: no overlap. Nothing here changes it. The reload heal's one Look again and the boot
probe's mount() / refreshUI / bootProbe hunks land untouched.
The new Alpha test asserts that the behavior the words describe is still true (settings.html
mounts Connect, and mount() calls lookAgain). Its regex /function mount\(el\)[\s\S]{0,400}lookAgain\(/
matches both today's mount and the boot probe's lookAgain({ reuse: true }). I tested it
against connect-boot-probe-v0.1-reference/fl-connect.js.after-tree-and-boot-probe. If a later
change makes Connect wait for a tap, this test fails on purpose, so the words get revisited.
======================================================================
4. STEPS
======================================================================
FreeLattice (~/FreeLattice), branch layer/heal-scan-words-honest-v0.1 from main after the boot probe:
git apply FL diff (section 6) # or edit the one line by text, then: cp docs/app.html index.html
cmp index.html docs/app.html
node docs/scripts/smoke-scan-words-honest.js # SMOKE_OK scan words honest v0.1
full smoke suite: same failures as main only
theLatticeTree (~/FreeLattice-Alpha), branch layer/heal-scan-words-honest-v0.1:
git apply Alpha diff (section 7)
node docs/modules/scan-words-honest.test.js # SMOKE_OK scan words honest alpha v0.1
for t in docs/modules/*.test.js; do node $t; done # all green (17 of 17 in my run)
cmp docs/modules/fl-connect.js ../FreeLattice/docs/modules/fl-connect.js && echo SHARED_OK
Walk: open thelatticetree.com/settings.html at 390 and 1280. The look still happens (that's
fine). The card now says it plainly. Tap Find local minds: it looks again. On freelattice.com,
Settings > Connect a mind at home shows the new look-card line.
PR body (both repos):
Words now match what the code does. Settings opens Connect, and Connect looks at this
computer's own doors when it opens (12 local ports, then every 8 to 30 seconds for up to five
minutes, resting once a mind is remembered). The cards said "only when you ask". Now they say
when the look happens, and that nothing is chosen until you tap a mind. fl-connect.js is
unchanged in both repos. The old words are kept as RETIRED comments. Marker
v-heal-scan-only-when-asked-v0.1.
======================================================================
5. PROTOTYPE RESULTS (box, 2026-09-30)
======================================================================
FreeLattice on 833ed398 + this diff: new smoke OK. Full suite: 67 pass. The failures are exactly
main's known set: carry-forward, connect-card-yesno-wizard, fable-tech, phone-shine,
proof-60s, tests/smoke-history, desktop reseed and swarm. Inline scripts in app.html parse.
index == app.
Alpha on 25e6ded + this diff: 17 of 17 module tests pass (16 existing + the new one).
gathering-calm and local-mind-probe tests still see "May I look?" in PRIMARY_SOFT.