The switcher was a native select of nineteen rows, four of them labelled by
eight hex characters — every name was in a cadence's agent.json all along.
Observe opens for five minutes on a written reason plus the lockscreen
credential. polkit and sudo both answered "authorized" here with no prompt at
all, so neither holds the gate; writes commit as "amend (human)" in her own
history. Notes move between folders, and a rename takes its links with it.
The shell could drive the garden and nothing else. It gains roots and
flip, so a sidebar tab can throw the window to one agent's memory by
key; an unknown key changes nothing and emits a refusal with a code
rather than landing in the garden by accident.
The subconscious inbox — intrusive, pending, sent — rendered as three
ordinary notes. saf/core/02-duality.md says what they are; the rail now
lifts them out and says it too.
The lens read one tree because it was only ever handed one. Vault is
{root: PathBuf} and every method is root-relative, so it was already
multi-root; it just got constructed once.
Roots are keyed and carry a Mode. Tend is the garden: read, write,
plant, sync. Observe is an agent's memory: read, history, diff, and
save/create/sync refuse by name in the process. Hiding a button in the
page gates nothing.
Discovery walks ~/.souveraine/agents for git-backed memory trees —
memory/ and each cadences/*/memory/ — reading persona.name for a label.
Filesystem only; the page's closure to the network survives.
The switcher is a grouped dropdown, garden first, one optgroup per agent
carrying her cadences. A band names whose memory you are standing in and
does not go away. The drawer grows a history strip with per-commit diffs.
The shell limb still means the garden for state and create: an agent's
memory does not belong in a sidebar card.
pointer events replace the mouse trio on the canvas: one finger pans,
two pinch-zoom, a tap still opens the note — with a thumb-sized tap
tolerance so a shake doesn't fire it. on narrow glass the drawer and
rail give way to the viewport, targets grow to 44px, and the first
layout fits the whole garden to the screen.
the anchor after a note's name was stripped at the door; now it rides
into the graph and a click on [[note#heading]] opens the note scrolled
to that heading. tags were already in the graph but went unused — the
drawer shows them as chips, and the palette filters by #tag.
the phone runs the substrate and its pacman already reads the house
archive; only the lens never shipped there. a second archdev job
cross-compiles against the runner sysroot (usb-signaller's shape)
and makepkg bakes an aarch64 package into souveraine-aarch64.
the drawer's 440px and the rail's 250px float over the canvas, and a
fresh node's circle slot lands behind them often enough to notice —
the pop-in happened under the glass. when exactly one node is new and
an overlay covers its slot, it starts in the visible band instead.
the runner host clones on its own credentials, so the missing secret
went unnoticed until the publish step died on an empty EDGE_TOKEN.
the clone step now checks it first.
was publishing to its own repo's edge release while the laptop's pacman
reads Fimeg/souveraine, so nothing ever landed where it was looked for.
the publish step now runs the canonical publish-edge.sh at the pinned
sha, same PAT and key as the viewtop. the secret half of the archive key
lives only on the runner, so a signed package cannot exist outside the
archive. README and DESIGN install by name now.
CI run 1632 built, signed and reached the publish step, then died with exit 126 — the publisher had never been marked executable. This is the whole fix.
The garden was flat — every note at the root. A note now lives in any folder (real directories, the vault's own shape), the rail grows a folder tree, and a capture line plants a thought straight into inbox/. The folder path is guarded so nothing can climb out of the vault.
the archdev runner builds, makepkg assembles, the house archive key
signs, and the package lands as this repo's own additive edge asset —
/usr/bin/souveraine-lens, a desktop entry, an icon, a LICENSE.
DESIGN.md argues the garden: human-first, the agent a guest, the
vault the one thing with no other readers.
the human garden — two skins, the rail and drawer, the [[
picker with plant-and-link, backlinks with orphan nudges, the
palette, the first-run guide. Fixes the guide that never opened, a
picker that measured itself hidden, clicks that fought the physics,
and links that fell into the dead-leaf dialog.
The sidebar asks, the lens answers on the same line protocol: state
returns the freshest notes and the git truth (ahead/behind now read from
git status -sb); open drives the page by name; create plants a note and
refreshes the page. Page gains thin __lens.open/refresh/sync/create
wrappers so the shell never speaks page internals.
serve_ipc from the rig's discipline (stale-socket unlink, parent dir
created); shell evals run in the page; page events leave as stdout lines
the sidebar can hear. The vault stays the one thing with no other readers.
vault walker (frontmatter, wikilinks, graph), embedded page with a
hand-rolled force layout, ipc bridge with no server connection, autocommit
on save, house ci gates.