Watch
1
0
Fork
You've already forked SouveraineOS
0
SouveraineOS/docs/tasks/77-lens-garden.md
2026-08-24 23:00:47 -04:00

5.8 KiB

77 — The lens: a human-first garden over a git vault

Status: r18 packaged and installed on x86_64; source HEAD is r19; AArch64 is declared but not yet proven. Last checked 2026-08-24. Owner: Rook, under Casey's direction. Repo: ~/Projects/souveraine-lens (gitea Fimeg/souveraine-lens, branch primary).

Origin: the 2026-08-15 session (ses_ffb2ae46…). Casey asked why the lens was not installed on the laptop, then: "make it into a proper package… overhaul everything please… Lens is built for the human first… the agent is coming alongside to help the human… not use it for its own space." Then, on the garden itself: folder/subcategory support — "Project SouveraineOS → Souveraine the Agent / Souveraine the Substrate → their components, as I understand them, not just how the Agent understands them" — and "dump ideas down and have them analyzed by my agent for connections."

The shape — decided

  • Human-first. The lens is for a person (several, eventually). The agent never lives here; it comes alongside as a guest over the limb — open a note, plant one on a human's behalf, read events over the socket. The vault is never synced into the SouveraineOS docs tree.
  • The vault is files, git is the archive. ~/vault, markdown + frontmatter (description, tags, anything else round-tripped), [[wikilinks]] as the linking grammar, every save/plant a git commit.
  • Zero dependency, no network. One embedded page (src/ui.rs); the only conversation is the IPC bridge. The force layout is hand-rolled.
  • The seam. Page → process: graph note save create sync status. Process → page: window.__lens.reply/open/refresh/sync/create.
  • The limb. --ipc <sock>: the shell drives the process (eval state open create quit), the process emits one-line events (note_opened, note_saved, note_created, synced) so a sidebar hears without reaching into the vault.
  • Folders (this session): a note may live in any folder under the vault — real directories, not a tag layer, so the files stay legible to git and to Casey directly. The rail grows a folder tree; the plant dialog takes a folder; a capture line plants a thought straight into inbox/. Folder paths are guarded so nothing can climb out of the vault.
  • Idea capture → connections. The dump surface is the inbox. The analysis for connections is the substrate agent's job over the limb, not a lens feature — the lens shows links and backlinks; the agent is the one who walks the vault and proposes joins. Prior art: the Cloister folder tree (docs/substrate/tasks/tui-memory-browser.md), the Archivist synthesis pass (souveraine/src/core/archivist/mod.rs), and the OpenCode Memory System's association accelerator (~/Downloads/Memory stuff/docs/PRD.md §5.7).

Acceptance

  • Lens UI overhauled (two themes, [[ linking, backlinks, palette, guide).
  • Packaging source exists: PKGBUILD + .desktop + icon + two CI package paths + edge publisher.
  • Folder/subcategory support + inbox capture (commit 61cf534).
  • Edge publisher executable (commit c71c7e4) — fixes run 1632's exit 126.
  • r18 (0.1.r18.g1eb2840df769-1) is signed in the internal souveraine-x86_64 archive and installed as a pacman-owned x86_64 binary on the laptop.
  • Internal edge repo DB wiring exposes souveraine-lens by name.
  • Package r19 (216faea) from current primary; the installed and indexed package remains r18.
  • Prove the AArch64 job builds and publishes an AArch64 package. A workflow and sysroot path are source state, not an install or runtime result.
  • Exercise r19 from its package on the laptop; verify folder tree, capture → inbox, linking, named agents, amend step-up, and link-preserving moves.

Evidence

  • souveraine-lens/DESIGN.md is the in-repo system argument (garden, seam, face, limb, delivery).
  • Prior-art docs read: 73-self-dashboard.md (lens skeleton precedent), 68-shared-household-state.md, FIRST-CLASS-APPS.md, SHARED-STATE-ARCHITECTURE.md; kiyoshi (~/Projects/references/kiyoshi/) is the visual reference — sampled, not copied.
  • CI run 1632 failed only at the publish step (exit 126, non-executable publisher); build, makepkg and sign all passed before it.
  • On 2026-08-24, pacman -Q and pacman -Qo /usr/bin/souveraine-lens both reported souveraine-lens 0.1.r18.g1eb2840df769-1; file identified the owned binary as x86-64. pacman -Si found the same signed package in souveraine-x86_64.
  • The component repo's primary branch is at its nineteenth commit, 216faea; that newer source is not the installed package above.

Remaining work

  1. Land the Lens producer/package declarations and pre-publish manifest gates, then run CI on primary for r19.
  2. Confirm x86_64 and AArch64 artifacts and signatures independently. Do not infer AArch64 install or runtime behavior from the cross-build path.
  3. Upgrade the laptop by package and exercise the r19 UI and limb.
  4. Project souveraine-lens to the public Forge before changing Cargo or PKGBUILD source URLs to a public repository.
  5. The shared-task lane when TASK-68's authority shape lands (the agent assigns human tasks through the vault; the lens surfaces them as notes).
  6. The "agent analyzes dumped ideas for connections" lane — substrate-side, over the limb; not built.

Connections

  • 73-self-dashboard — the lens skeleton is the Gatehouse precedent.
  • 68-shared-household-state — the authority shape the lens's task lane will implement.
  • 69-agent-usage-session-daemon — "shell services are projections of one socket" is the limb's shape.
  • substrate tui-memory-browser.md + archivist/mod.rs — the Cloister and the synthesis pass this garden samples.