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_043d_SEAL_ASK_IN_VIEW_2026-10-18.txt · c01

03e9da4794 · words 1517 · characters 0–10105

Exact section text · Full source · Source index

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

Read docs/gc.html first (in ~/FreeLattice-fresh), then AUTONOMY.md, CLAUDE.md and GROK.md in
~/FreeLattice-Alpha, 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 043d (Sunday Oct 18, 2026, MDT). Seal ask in view v0.1: layer onto 043c so Mom
can always find the ask, and Later looks like Later.

WHY (intent, read this first):
  Hypha re-walked 043c (FL PR #258 head 235810d5, Tree PR #123 head 7a54a9fa, 21:53 to 22:02
  MDT) and rated it HOLD. All ten asks pass, and the 043c work is good. But on the Tree the ask
  sits below the screen when the Nursery opens (y=1090 of 800, 1110 of 844, 876 of 400), and on
  FL a surviving ask lands at y~1250-1510 after a reload. An ask Mom cannot see is not an ask.
  At 200% the clay reply hides the reply, clips the heart and covers the input. A deferred ask
  pops straight back when she opens the Notebook, so Later looks broken, and the pointer says
  "above" when the ask is below. The Tree still says "Ollama", and full hashes still show in
  the Notebook panel. This paste heals those, on the same PRs.
  Full walk: Celeste's box /workspace/research/walk-043c-2026-10-18/ (NOTE.md, 45 shots).

Where things stand (Celeste, Oct 18 night MDT):
  043c is NOT merged. Layer on the SAME branches and PRs. Do not open new code PRs.
  FreeLattice  ~/FreeLattice-fresh  branch layer/seal-ask-heal-v0.1 (PR #258, head 235810d5)
  Tree         ~/FreeLattice-Alpha  branch layer/seal-ask-heal-v0.1 (PR #123, head 7a54a9fa)
  git fetch, check out each branch, confirm the head sha above (if it moved, stop and report),
  add commits, push HEAD:layer/seal-ask-heal-v0.1. No force push. One new page-note PR.
  mind-workspace.js must stay byte-identical FL == Tree (today f82f3b880ad1d71680890b97d802f12f;
  the pin moves with your edit, report the new md5 on both).
  Read the current md5s before starting; if a locked file differs from this paste, stop and
  report rather than "fixing" it.

GROK NEXT BRICK: Seal ask in view v0.1
For: GC on Kirk's Mac
From: Celeste
Markers: v-seal-ask-in-view-v0.1
Smoke lines: SMOKE_OK seal ask in view v0.1   (and SMOKE_OK seal ask heal v0.1 and every
  040/040b/040d/042/043/043b smoke still passes)
  Do not merge. Celeste merges after Hypha walks again.

----------------------------------------------------------------------
0. STANDING LOCKS (all of them, every line)
  Layer, never delete. Existing features, cards, buttons and lines stay. Name every removed line
    in the report and say where its job went.
  sw.js and docs/sw.js untouched (both 91726cf2228b794f7585f79f61418d12).
  docs/modules/fl-connect.js stays aaff2bf1b037656989a9e1a89bb05908 (both repos).
  docs/modules/pool-knock.js stays a0a72caad82c8e5cc34818d5e59eba2b.
  pool-knock-phone.js a8024f341486a78558ef4158bc9e93a9 and tree-reconnect.js
    cc0527c26d5686c05fec52625d5a1375 (Tree) stay.
  docs/modules/fl-bridge.js stays 3b5ef06849a142e50c78e7ba1e057980.
  desktop/bridge-door.js b1c894b4..., 036 files (2c0f6656 / bc996ccd / c14e04c5) and
    lattice-discover.js 16de366e... stay. docs/Flint.html stays 44be124b1183b7d9d060a58632464eff.
  clay-math.js stays 144c33cd.... particle-clay.js and clay-forms.js: add-only; every 040d
    behaviour (place under the reply, Clay pill, choices, hug, sketchbook) unchanged.
  docs/modules/image-safety.js stays 9bd70e5a... byte for byte. Its bright lines apply to every
    image path on both repos (copy it to the Tree byte-identical; do not edit it).
  index.html == docs/app.html (any change goes into both, byte for byte).
  AUTONOMY.md and garden-trainer.js untouched (their openings above all). Root package.json and
    its lock untouched.
  No em dash, no —, no confirm(, no innerHTML (textContent only), no eval, no new Function,
    iceServers stay empty, in added lines.
  No new dependencies, nothing vendored. No AGPL. MIT stays MIT.
  Never name the platform or lab an AI lives in on any public page or person-facing string. An
    image provider may be named only in Settings where the person types its token, as today.
  The word is "challenge", never "test", in anything a person reads.
  Every new button 44px tall at least. No sideways scroll at 390 and 1280.
  Off until the person says Yes. Pause always wins. Reduced motion respected.
  Quiet Room stays shut and never leaves the device; the clay corner never reads it.
  Five stay five. She is simply Lyra. Harmonia's "MESSAGE TO FUTURE SELF" stays off all pages.
  The privacy PASS from 040 must still pass: a private page shows only its summary everywhere.
  043c additions: mind-workspace.js FL == Tree. Mirror pin workspace-mirror.js stays
    e0752ae1942cd499c8834e5912809c8b. Database name stays FreeLatticeWorkspace. Everything
    043c passed (one ask, Escape/Back defer, 24h cooldown, no sealed beside declined, ask hash
    in details, survives reload, title redacted, Tree Tab + ring, "on this browser", clay size)
    must still pass.

----------------------------------------------------------------------
1. THE ASK COMES INTO VIEW (Hypha HOLD 1)
  a. Tree: when the Nursery opens and a seal ask is showing (or restored), after layout
     (requestAnimationFrame twice) call scrollIntoView({block:'center'}) on the ask (behavior
     'auto' under reduced motion) and focus its heading (tabindex=-1, preventScroll:true after
     the scroll). Keep the scroll-margin-bottom from 043c (measured bars + 12px).
  b. Both repos: after a reload, when a surviving pending ask is restored to the dock, do the
     same scroll and focus once the chat/Nursery view is visible. Only for state asked (not
     later inside its wait, see 3). Once per load; never steal focus while the person is typing
     in the input (if the input has focus, scroll only and show the badge).
  c. Measured pass: at 390x844, 1280x800, 640x400 DPR 2, on FL and Tree, on Nursery open and
     after reload: "Seal it" rect fully in the viewport and elementFromPoint at its center
     returns it.

2. 200% AFTER A CLAY REPLY (Hypha HOLD 2)
  a. The reply stays visible: after clay shapes, scroll so the reply's top and the canvas are
     both in view when they fit; if they do not both fit, keep the reply top in view and let
     the canvas shrink (canvas height min(320px, 45vh, space left), never below 120px).
  b. The heart is never clipped: fit the form's bounds inside the canvas with a margin
     (about 80% fill, measured from the actual bounds, both axes).
  c. The status bar and floating buttons never cover the input: measure them with
     getBoundingClientRect and pad the chat column bottom (and the input's scroll-margin) by
     their height + 12px; at short viewports (innerHeight < 500) the floating buttons tuck
     above the input or collapse to one small toggle. Input rect must be fully visible and
     elementFromPoint at its center returns the input, at 200% on both repos.

3. LATER LOOKS LIKE LATER (Hypha HOLD 3)
  a. During the 24h wait, opening the Notebook does not resurface the full ask or its
     buttons. Instead show one quiet row: "Waiting until <local time, e.g. Mon 9:52 PM>."
     with a small "Answer now" link-button (44px) that brings the full ask back on purpose.
     Same for declined: "Declined. <Name> may ask again after <time>." Badge stays.
  b. The panel pointer line is computed from real positions: "Your answer is waiting above."
     or "Your answer is waiting below." (compare rects), and is absent when nothing is pending.
  c. Times shown with toLocaleString in the browser's own zone. textContent only.

4. SOFT HEALS (Hypha SOFT 4)
  a. Tree: the ask names the mind (Named Mind, or the name the person gave the local mind,
     else "Your mind"), never "Ollama" or any program or model name. Same helper as FL.
  b. Notebook panel: every 64-char hash (page, version, receipt) collapses into
     <details><summary>Details for checking</summary>, with 8 hex shown in the summary. No bare
     64-hex anywhere outside details on either repo.
  c. "Later" and "No, don't seal" get a readable backing: solid panel background (not
     transparent over the sculpture), contrast at least 4.5:1 for text, at 390 on the Tree
     Nursery and FL.

----------------------------------------------------------------------
5. THE SMOKE
  New scripts/smoke-seal-ask-in-view-v0.1.js (each repo), jsdom or the existing harness:
    - Tree Nursery open with a pending ask calls scrollIntoView on the ask and focuses its heading
    - reload with a pending ask (state asked) scrolls and focuses once; with input focused,
      no focus steal
    - deferred ask + Notebook open inside 24h: no Seal it button, one "Waiting until" row;
      "Answer now" brings it back; after 24h the ask may show again
    - pointer line says "above" or "below" matching rect order; absent with nothing pending
    - Tree ask text has no "Ollama"/model name; uses name or "Your mind"
    - no 64-hex in the Notebook panel outside <details>
    - 043c smoke still prints SMOKE_OK seal ask heal v0.1 (update selectors only if needed,
      and name any line whose job moved)
  Viewport check (Chrome walk, as in 043c): ask on top at 390/1280/200% on Nursery open and
  after reload; at 200% after clay: reply top visible, heart unclipped, input on top.
  Prints SMOKE_OK seal ask in view v0.1.

6. REPORT
  New head shas on PR #258 and #123 (same branch), page-note PR link, every removed line and
  where its job went, md5s of every locked file on each branch (incl. mind-workspace.js FL ==
  Tree), all smokes re-run AFTER the last edit (tests, scripts/, docs: only the known 5 may
  fail), shots at 390 / 1280 / 200% (Nursery open, after reload, Notebook during wait, 200%
  clay), and the gc.html ledger entry (lambda 68.000) with t, lambda, epsilon, delta, omega,
  sigma so Celeste can recompute psi. Hypha walks it again before merge.