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. ====================================================================== 6. FL DIFF (git apply; base FreeLattice main 833ed398; ledger hunk inserts above "## Out of scope") ====================================================================== diff --git a/docs/app.html b/docs/app.html index 50035267..460b6333 100644 --- a/docs/app.html +++ b/docs/app.html @@ -16911,7 +16911,7 @@ textarea.ag-input { min-height: 60px; resize: vertical; font-family: inherit; }
One wizard. You allow the door; we list minds. Browser permission ≠ setting Ollama origins.
FreeLattice can look for minds already living on this computer. It only knocks on well-known local doors, and only when you ask.
+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.
One wizard. You allow the door; we list minds. Browser permission ≠ setting Ollama origins.
FreeLattice can look for minds already living on this computer. It only knocks on well-known local doors, and only when you ask.
+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.
The chosen star is lit (role="radio", aria-checked="true", grandmother-sized tap). One line names it, e.g. This mind speaks with qwen2.5:14b, on this machine. If more than one door is remembered, a door can be marked primary on the existing minds array. A later look that still lists the chosen name keeps it. If that name is gone, the face says so and falls back — the line changes; the missing name is not left lit.
May I look? stays the door. Nothing looks, chooses, or persists until that tap has remembered a mind. Chat stays fail-closed until then. Do not un-sleep the thread from this layer.
+Newer (2026-09-30): the words above are kept. Since Connect moved into Settings, opening Settings starts Connect's own short look at this computer's doors (127.0.0.1 only, every 8 to 30 seconds, five minutes at most, and it rests once a mind is remembered). The grandmother card still looks only after its tap. Nothing is chosen or remembered until a person taps a mind. The card's words now say this plainly.