Estate
How It Works
Eight numbered flows — from a single chat turn to a Hermes-built pull request — each showing the edge-local invariant in practice.
Situation
This document walks through Mallory's key operational flows as short numbered sequences, each cross-referencing the components in 02-architecture.md. It's the clearest place to see the edge-local invariant actually operating: every flow either runs entirely at the edge from stores it already holds, or hands work off asynchronously to the Hub/Tower without ever blocking a turn on their availability.
The flows span the everyday (a chat/voice turn, in-conversation recall) through the proactive (nudges, briefings) to the async and delegated (deep research digs, Hermes building a reviewed PR, Hermes's own activity digest) and the context layer that threads through all of them (mode resolution).
Key decisions
Turn never blocks on home infra
If signals are stale or the Hub is down, the context-assembly step still runs from whatever the edge last held, and an availability note makes the gaps explicit rather than hanging or erroring.
Recall stays edge-local
Vault notes are searchable at the edge only because the Hub mirrors them into vault_notes via periodic /vault/sync pushes — recall never calls out to the vault live.
Nudges: dedupe first, then gate
Duplicates are dropped by dedupeKey before the mode gate runs; high priority always interrupts, low never does, otherwise the active mode maps the nudge to interrupt/batch/defer, still subject to quiet hours and a soft/hard cap.
Updates, not chat, for proactive output
Briefings and nudges are recorded to the Updates surface, deliberately not the chat feed, keeping the conversation calm.
Digs are async by construction
A deep-research turn enqueues a D1 investigation record and returns immediately; the Hub's research worker claims and completes it, pushing a cited report back inbound.
Hermes digest sync is read-only today
Hermes's own activity (commits + vault-lane notes) is dedup-ledgered into hermes_events and surfaced as a read-through feed — the estate does not yet delegate to Hermes live.
Mode resolution precedence
Manual override (auto-expiring at 04:00) beats a Hub-pushed calendar hint, which beats a routine weekday/hours default; the resolver is designed to be extensible with new hint sources (e.g. device signals) without downstream changes.
Architecture
Eight flows, each a short sequence across the Worker, Hub, and (for two flows) Hermes.
/nudge; dedupe → mode gate → teaser composed in-persona → notify() fans out over web-push + FCM; every nudge recorded in the nudges ledger./hermes/digest; Worker dedup-ledgers events and voices a one-line summary per new event.docs/estate/03-how-it-works.md