Skip to content

Trust Receipts (earned autonomy) + Time Machine (org replay) - #3

Merged
elijamesku merged 1 commit into
eli/github-connectorfrom
eli/trust-receipts-time-machine
Sep 16, 2026
Merged

elijamesku merged 1 commit into
eli/github-connectorfrom
eli/trust-receipts-time-machine

Conversation

@elijamesku

@elijamesku elijamesku commented Sep 16, 2026 •

Copy link
Copy Markdown
Owner

What this adds

Two features that fall directly out of Buzz's signed-event architecture — things a Slack/Discord-shaped product structurally can't do.

Trust Receipts — autonomy you earn, not a toggle you flip

  • Review real work. The agent profile now lists the agent's actual work sessions (from its own signed kind:44200 turn metrics). Each session gets 👍 / 👎.
  • Every decision is a signed event. Approve/reject publishes a KIND_TRUST_DECISION (43101) from the owner's key, tagged with the agent and session. The ledger is tamper-evident by construction.
  • Earned level. Decisions + sessions → approval rate → the level the ledger supports: Ask first → Trusted (≥5 decisions at ≥80%) → Autonomous (≥20 at ≥90%). A Promote button applies it to the existing trust dial, so the agent's real permission mode follows the evidence.
  • Mint a receipt. Signs a KIND_WORK_RECEIPT (43102) snapshot of the ledger, publishes it, and copies the signed JSON — a portable "94% approval over 31 sessions" that anyone can check.
  • Verify offline. Paste any receipt → signature, kind, and content/envelope consistency are checked locally. No relay, no trust in the sender. Tampering with a single byte fails it.

Time Machine — /time-machine (sidebar, below Pulse)

  • get_org_timeline(since, until) returns a compact, time-ordered slice of the workspace log: messages, agent turns, jobs, approvals, huddles, trust events.
  • The screen reconstructs the org at any instant from those events: who was working (within a 15-min window), which rooms were live, huddles / jobs / approvals still in flight, trust decisions so far — plus the feed up to that moment.
  • Scrubber with an activity profile over 24h / 7d / 30d, and a 30-second Replay that sweeps the whole range.
  • Reconstruction is a pure function (features/time-machine/lib/reconstruct.ts) with its own test suite.

Relay

  • Registers 43101 / 43102 in required_scope_for_kind (MessagesWrite) and is_global_only_kind, and in the metric-label allowlist.
  • Fixes a latent fork bug: the meeting kinds (KIND_HUDDLE_TRANSCRIPT / KIND_HUDDLE_SUMMARY, now 48107 / 48108) were never in the ingest scope table, so the relay would have rejected every transcript/summary write with restricted: unknown event kind. Now ChannelsWrite like the other huddle kinds.

Two features that only work because everything in Buzz is a signed event.

Trust Receipts — autonomy that is earned, not toggled:
- Agent profile lists the agent's real work sessions (from its signed
  kind:44200 turn metrics). Approving or rejecting one signs a
  KIND_TRUST_DECISION (43101) event from the owner and publishes it.
- The ledger joins decisions with sessions into an approval rate and the
  level the agent has earned (ask -> trusted at >=5 decisions & >=80%,
  autonomous at >=20 & >=90%). "Promote" applies it to the existing trust
  dial, so the permission mode follows the evidence.
- "Mint receipt" signs a KIND_WORK_RECEIPT (43102) snapshot of the ledger
  and copies it; "Verify a receipt" checks any pasted receipt offline —
  signature, kind, and that the signed summary matches the envelope.

Time Machine — /time-machine, in the sidebar:
- get_org_timeline returns a time-ordered slice of the workspace log
  (messages, agent turns, jobs, approvals, huddles, trust events).
- The screen reconstructs the org at any instant from those events —
  who was working, which rooms were live, huddles/jobs/approvals in
  flight — with a scrubber, an activity profile, and a 30s replay.
  Reconstruction is pure and unit-tested (reconstruct.test.mjs).

Relay: registers 43101/43102 as owner-signed global kinds and adds the
fork's meeting kinds (48107/48108) to the ingest scope table — they were
never registered, so transcript/summary writes would have been rejected.

Signed-off-by: Eli <elijamesau@gmail.com>
@elijamesku
elijamesku merged commit e891ebb into eli/github-connector Sep 16, 2026
31 of 45 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant