documentation/MEMO.md · main · 2026-09-26

Memo Extension

Memos are notes stored as commits on the gitmsg/memo branch, with the core protocol only (GITMSG.md); each memo is at one of five tiers and has labels.

Tiers · Initialize · Write and promote · Sessions · Inherit · Labels · Workflows · Reference

Tiers

OrderTierRepositoryRemoteIn memo list by default
1session~/.cache/gitsocial/memo/session/<id>/its own remote, when one is setthe current session only
2personal~/.config/gitsocial/personal/, shared with settingsthe personal remoteyes
3projectthe workspace, refs/gitmsg/memothe project remoteyes
4inheritedfollowed repositories declared with memo inherit addnoneyes
5externalother followed repositories with a memo branchnoneno; --include-external or --tier external

memo list reads the tiers in this order, the most local tier first. When two memos contradict, the priority/ labels decide which memo has priority, not the tier.

Initialize

gitsocial memo project init
gitsocial memo personal init
gitsocial personal init --remote <url>     # once per machine, so personal memos and settings sync
gitsocial personal sync [--push-only | --fetch-only]

GitSocial creates a session at its first memo. When two machines write memos between two syncs, the push or the fetch merges them automatically, and the merge commit is not a memo.

Write and promote

gitsocial memo create "Cache writes use ExecLocked" --labels kind/policy,priority/high,topic/cache [--body ...] [--scope session|personal|project]
gitsocial memo edit <ref> [--subject ...] [--body ...] [--labels ...]
gitsocial memo retract <ref>
gitsocial memo promote <ref> --to project|personal|session
gitsocial memo list | show <ref>

Sessions

gitsocial memo session init [<id>]            # create or resume; prints the id
gitsocial memo session list
gitsocial memo session sync <id> [--push-only | --fetch-only]
gitsocial memo session gc <id> | --older-than 30d
gitsocial memo list --include-sessions all|<id>

Inherit

gitsocial memo inherit add <url>
gitsocial memo inherit list
gitsocial memo inherit remove <url>
gitsocial memo list --tier inherited | --tier external | --include-external

inherit add records the repository at refs/gitmsg/memo/inherits/<urlHash> and adds it, with all branches, to the social list memo-inherits, which GitSocial manages. Each fetch then gets its memo branch. inherit remove reverses both steps.

Labels

Labels are the core <scope>/<value> field (GITMSG.md §1.7).

ScopeValues
kind/policy, guideline, fact, reference, context, decision
priority/low, normal, high, critical
expires/YYYY-MM-DD, or full ISO 8601
topic/, area/, workflow/, compliance/, audience/free
vocab/<name>declares a taxonomy whose terms follow as <name>/<term>

Workflows

Reference

ExcludedShow them with
retracted memos
expired memos--include-expired, or --expired for only these
memos of other sessions--include-sessions
memos on the external tier--include-external
stale commits (ARCHITECTURE.md)