// remi│ton · family OS · invite · 72-hour TTL ┌────────────────────────────────────────────────────────────────────────────┐ │ ┬─┐ ┌─┐ ┌┬┐ ┬ ┌┬┐ ┌─┐ ┌┐┌ one email. one link. one seat at the ledger│ │ ├┬┘ ├┤ │││ │ │ │ │ │││ │ │ ┴└─ └─┘ ┴ ┴ ┴ ┴ └─┘ ┘└┘ audit row written before send · 5/5 floor c│ └────────────────────────────────────────────────────────────────────────────┘
// INVITE · the one that asks gently

add a seat. name it.

The ledger is yours. The invite is theirs. A single-use accept link lands in their inbox, bound to a 72-hour window. If they ignore it, nothing happens. If they accept, they take a seat · treasurer, sender, receiver, or watcher. The audit row is written before the email leaves the rail.

// 01 · audit
family_invite row written first · invitee email redacted to b***@domain
// 02 · render
remi│ton template · the same typographic floor as every other email we send
// 03 · deliver
a paper-warm email lands · fire-and-forget · audit row already preserves intent
// 04 · expire
72-hour TTL · single-use accept link · burns on consume · no reminders
┌─ INVITE · the family seat ────────────────┐
the invite is one tap. the email body never carries the raw token · only a signed accept link with a 72-hour TTL. your invitee can decline by ignoring it; no nags, no reminders.
└────────────────────────────────────────────┘
the invitee can decline by ignoring · we never nudge · we never re-send.
// SHORTCUT
press I to focus the first field · ENTER to send.
// QUIET · what we will never do with an invite

Four lines we will never cross.

  1. We will never email the invitee's full address back into the audit log. Redacted to b***@domain, always.
  2. We will never let an invite request issue without your wallet handle. X-User-Id signs the audit row, period.
  3. We will never re-send the invite uninvited. One tap, one email, no nudges.
  4. We will never expand the 72-hour TTL on a stale invite. It expires, you re-mint, the audit chain stays clean.

Back to the ledger.