sgit newsroom v0.1.29 · snapshot 2026-09-24

Reading room · sgraph.ai

On this page

Reading room / sgraph.ai · raw text · live ↗

From sgraph.ai, the page as fetched on 2026-09-25 · open the live page ↗Everything on this sheet is the source site's own text; the newsroom's chrome is outside it.

Email-FS-lite — Audit, Verification & Recovery

Why sgit is the substrate that makes the protocol auditable and recoverable.

Email-FS-lite — Audit, Verification & Recovery ↗ (image on the live page; not in the snapshot)

1. Audit

Every sgit pull output acts as an inbox notification. The pull diff shows exactly what was added, modified, or deleted since your last sync. New files in your mailroom are new messages.

sgit history log shows the activity story over time — one entry per processing cycle, with the agent name, timestamp, and a summary of what was done. The complete history of the collaboration is always recoverable.

2. Verify

After every sgit push, run sgit status. A clean status confirms your local state matches the remote ref. If the push pulled remote changes first, read those changes carefully before continuing — they may affect files you were working on.

3. Recovery

When a bad commit is made, the recovery path is:

Step 1 — Find the last good commit:

sgit history log --max 10

Identify the commit hash before the bad one.

Step 2 — Rewind to the good commit:

sgit history reset <good-commit-hash>

Your local view rewinds. The bad commit becomes orphaned locally.

Step 3 — Overwrite the remote ref:

sgit push --force

The bad commit is removed from the remote. Content-addressed objects are not immediately deleted — the bad commit becomes orphaned and is garbage collected only after normal retention windows.

A note on the conflict loop

The recovery diagram shows sgit history reset as a reliable escape route. In practice, this requires the commit objects to be cached locally. After a standard clone, older commit objects may not be cached, making reset unavailable.

This was encountered during this project — both sgit history reset and sgit merge-abort (referenced in pull output but not implemented) were unavailable during a conflict loop. A full brief has been filed with the sgit team. The workaround is a fresh clone with backup-and-reapply.

See the sgit conflict resolution brief ↗ for the full account and proposed fixes.