Watch
1
0
Fork
You've already forked SouveraineOS
0

task-77: the lens, a human-first garden over a git vault

Folder/subcategory support and inbox capture landed in souveraine-lens (61cf534, c71c7e4); this files the owner doc the build was missing and indexes it.
This commit is contained in:
Fimeg 2026-08-15 18:42:28 -04:00
commit 91128b8638
2 changed files with 86 additions and 0 deletions

View file

@ -0,0 +1,85 @@
# 77 — The lens: a human-first garden over a git vault
Status: **built and packaged 2026-08-15; CI + hardware verification outstanding.**
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
- [x] Lens UI overhauled (two themes, `[[` linking, backlinks, palette, guide).
- [x] Packaged: PKGBUILD + `.desktop` + icon + CI package job + edge publisher.
- [x] Folder/subcategory support + inbox capture (commit `61cf534`).
- [x] Edge publisher executable (commit `c71c7e4`) — fixes run 1632's exit 126.
- [ ] Lens CI green on `primary`; package job publishes the `edge` asset + sig.
- [ ] `pacman -U` on the laptop; launch `souveraine-lens`; verify folder tree,
capture → inbox, linking.
- [ ] Edge repo DB wiring so the package installs by name (documented follow-up).
## 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.
## Remaining work
1. Watch lens CI on `primary`; confirm the package job publishes the edge asset.
2. Install on the laptop (`pacman -U`), launch, verify folders + capture.
3. Edge repo DB wiring (install-by-name) as the follow-up.
4. 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).
5. 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.

View file

@ -39,6 +39,7 @@ Four that are cheap relative to what they unblock:
| # | Task | What's left |
|---|------|-------------|
| 77 | [The lens: a human-first garden over a git vault](77-lens-garden.md) | Built + packaged 2026-08-15 — folder/subcategory support and inbox capture landed (`61cf534`), publisher chmod fix (`c71c7e4`). Left: lens CI green + `edge` asset published, `pacman -U` on the laptop, then edge-repo DB wiring. |
| 65 | [A stalled subconscious wedges the surface](65-subconscious-stall-wedges-the-surface.md) | Reproduced and measured, not diagnosed. The reply commits and `PrimaryComplete` fires, then the N+1 pass stalls at round 3 of 10 with a fully idle runtime — and because it runs inside `run_turn`, the SSE stream never closes and Surfaces spins forever. Lead is the `todo` tool. Needs a backtrace; the stream-lifetime coupling is a fix in its own right. |
| 63 | [The second body: SouveraineOS on the iPhone 7](63-d10-second-body.md) | **The shell is on the glass 2026-08-09** — viewtop, sessiond and `qs -c souveraine` all run on a T8010 with no GPU, drawn by llvmpipe, over one USB cable. Hoolock is the bootloader and nothing else. The build half of this is TASK-64. |
| 62 | [Full USB KVM](62-full-usb-kvm.md) | GUD + HID + NCM + smoo and the signed package path are green. Still open: install and cable/glass acceptance; real Session Authority gates (peer identity, probe lease, step-up, D-Bus enforcement); cold-boot SSH-over-NCM proof. Type-C/TCPM host negotiation remains TASK-58. |