Literium — User Guide (working draft)

version 1.0-draft

About this document. Working draft, not a polished guide. A scratchpad for ideas, workflows, mental models, and frequently-asked questions — anything that captures how Literium feels from the user’s seat. Add to it freely; entries that hold up over time can be promoted into the eventual real guide.

1 How versions and histories work

When you save your work in lit, you’re not creating a file. You’re making a version: a snapshot of your manuscript at a moment, preserved alongside every other version you’ve ever saved. Versions don’t replace each other; they accumulate. Months later you can read any of them, compare any pair, or pull a sentence from one into another.

This chapter walks through how versions are made, where they live, and how to move between them.

1.1 The writing tablet (tabula)

Lit gives you a small staging space called the tabula — Latin for “writing tablet,” the wax board Roman writers used for drafts. The tabula holds your next version: the one you’re about to commit but haven’t yet.

You fill the tabula with one command:

lit conscribe

This snapshots your working files onto the tabula. If you’ve changed something since the last time, that change is now staged; if you haven’t, lit will tell you there’s nothing new.

You can conscribe repeatedly while you work. Each new conscribe replaces the previous tabula state — the tabula always holds your latest in-progress draft. There’s no stack, no list, no “stage these but not those.” The tabula is just one slot.

This is also where you keep work that isn’t ready to commit. If you need to switch contexts — answer email, write something else, take a break — conscribe captures your current state on the tabula. You come back later, keep editing, and conscribe again.

1.2 Inscribing a version

When you’re ready to commit the tabula as a real, named version, you inscribe it:

lit inscribe

This finalizes whatever is on the tabula into a version — a permanent snapshot — and writes a new entry into your project’s historia (more on that below). Lit asks you for a message describing the state you’re saving (“first complete draft,” “after Anna’s notes,” “before the cuts”) and that message becomes part of the entry.

The Latin contrast is intentional. Conscribere — “to gather, write together” — describes the soft, draft-stage act of putting something on a wax tablet. Inscribere — “to write into” — is the verb classical Roman writers used for inscriptions on stone. The tabula is wax; the inscription is permanent.

After an inscribe that consumes everything pending, the tabula is empty again, ready for the next draft. (Inscribing a single revision with -<n> consumes only that revision; the rest stays pending on the tabula.)

1.3 Inscriptiones: the entries in your history

Each call to lit inscribe produces one inscriptio — an entry in a history. An inscriptio carries:

The same word, inscriptio / inscription, names both the entry as a whole and the message text on it — the same way a stone inscription is both the carved entry and the words on it.

1.4 Two kinds of histories: historia and peirae

Every project has one historia — its canonical line of work, the spine of the manuscript’s life. Every inscription you make goes there by default. The historia is the official record: when your project ships to a publisher or goes on Litorium, the historia is what gets shared.

Most writers will only ever use the historia. Inscribe drafts as you go; the historia accumulates them. Done.

For cases where you need to develop work in parallel — an editor’s pass alongside your own draft, an exploratory rewrite that may or may not work, a publisher’s copyedit you want to keep separate — lit gives you experiments (Latin experimentum; Greek peira, “a trial, an attempt”). An experiment is a separate history, just like the historia, but with a name you choose (peira-1, editor-pass, anna-notes) and the freedom to delete it later.

To inscribe onto an experiment instead of the historia (the experiment must already exist — inscribe never creates one as a side effect; the creation command is its own small operation, still being shaped — SPEC §10 #14):

lit inscribe peira-1

You can move work between histories any time. A version inscribed in one history can be brought into another, including the historia, with --fons (Latin “source”):

lit inscribe historia --fons peira-1

That command writes peira-1’s latest version into the historia. Other tools call this a fast-forward “merge”; in lit it’s just naming the source — adoption.

When both lines have changed the same document, adoption isn’t enough — you want the two strands woven together. That’s contexe (Latin contexere, “to weave together” — texere is the root of text):

lit contexe peira-1

Contexe finds the last version the two histories share (or takes --base), weaves both sides’ changes into your working files, and — where both of you rewrote the same sentence — puts both variants next to each other in the text, plain prose, no markers. lit conflicts lists the apparatus — each variant with its g/a coordinates and the hand behind each reading; you resolve by deleting the reading you don’t want (or writing a better one), exactly like any other edit, then conscribe and inscribe as usual. One practical note: seed a fresh experiment with the state you’re diverging from (lit inscribe peira-1 --fons historia) before working in it, so contexe can find the common ancestor later.

1.5 Returning to an earlier state

Returning to an earlier state is two independent acts — updating the record and updating your files — and lit gives each its own verb.

To record the return in your history, inscribe the earlier version:

lit inscribe --fons <earlier-version>

The version’s content doesn’t change — it’s the same snapshot it always was — but a new inscription appears in the historia, dated now, with whatever message you choose. The history records “we returned to this state at this time.”

To actually put that state back in front of you — the files in your working tree — exscribe it:

lit exscribe <earlier-version>

Exscribe (Latin exscribere, “to copy out” — the third scribere verb: con- gathers onto the tablet, in- drives into the record, ex- copies back out) writes the version’s documents into your working tree, exactly as if you had typed them. If you have unsaved work in the tree, lit asks before overwriting. Nothing else changes — no pointer moves, nothing becomes “current”; you just have those bytes in your files again, and your next conscribe/inscribe proceeds as always. You can also restore a single file: lit exscribe <version> <path>.

1.6 What this means in practice

A few patterns to internalize:

Linear writing.

Most days, you write, conscribe, inscribe. Conscribe captures a draft; inscribe finalizes it. Your historia grows; nothing else needs to exist.

Parallel exploration.

When you’re not sure whether a rewrite will land, open an experiment. Inscribe iterations into it. If the rewrite works, inscribe its latest version into the historia. If it doesn’t, delete the experiment — its versions remain in storage, but its history line is gone, and the historia is untouched.

Editorial review.

An editor working with their own copy can inscribe their pass into an editor-pass experiment. You compare the experiment’s tip against the historia’s tip. Bring the changes you want into the historia; leave the rest in the experiment.

Time travel.

Any version is a real, complete snapshot. To see your manuscript as it was three months ago, find that version in the historia and view it; to work on it again, exscribe it into your working tree. To use a paragraph from then in now’s draft, copy the atom hashes — the content doesn’t need to be moved, only re-referenced.

2 Lit and git complement each other

Literium and git aren’t competitors. They’re optimized for different content: git is line-oriented and works best on code; lit is sentence-oriented (line-oriented in poetry mode) and works best on prose. When a project has both — a codebase with documentation, a research tool with a paper, a novel with companion notes — using both side by side is often the right call.

There are two patterns for running them together. Pick the one that matches how you want to think about commits.

2.1 Pattern A: git drives, lit shadows (recommended for most code+docs repos)

You commit normally with git. A post-commit hook runs lit conscribe && lit inscribe against the same message, and lit silently no-ops when the commit didn’t touch any prose file (conscribe refuses on a directory with no pending changes, so the hook is naturally idempotent on code-only commits).

Setup is one ignore entry plus the hook:

#!/bin/sh
msg=$(git log -1 --pretty=%B)
lit conscribe 2>/dev/null && lit inscribe --all -m "$msg" || true

Now git commit is your single workflow. Code commits roll past lit untouched; doc commits get a lit inscriptio mirroring git’s message. You get git’s line-level history on everything, plus lit’s sentence-level history (atoms, fasciculi, structural-vs-substantial classification, content-tracking across files) on the prose subset, without ever running a second commit verb.

The price is that lit’s commit cadence is git’s cadence. Lit’s default is one inscriptio per revision (per coherent intent within a version); under this pattern you get one inscriptio per git commit instead, and the message is whatever git got. If you want to split a doc edit into multiple intents, run lit conscribe and lit inscribe directly between git commits — the hook only fires when git commits, so manual lit work is additive.

2.2 Pattern B: disjoint tracking (each tool sees its own slice)

If you’d rather keep the two histories fully independent — e.g. you want git’s history on code to stay clean of doc churn, or you commit prose on a different cadence than code — split the working tree by ignore files:

Now git status and lit status describe disjoint slices of the working tree. Code changes go into git; documentation changes go into lit. Each tool tracks what it’s good at — line-level diffs and code-conventional commits for the source, sentence-level diffs and per-revision messages for the docs — without either tool stepping on the other.

A few practical notes for this pattern:

2.3 Picking between them

Pattern A is the right default when most prose changes accompany code changes anyway — typical for README/docs in a software project. One workflow, no double management; you only lose intent-level granularity inside a single git commit, and you can still run lit directly when you want it.

Pattern B is the right default when prose evolves on its own rhythm — a research repo where the paper has its own draft cadence, or a novel with companion build scripts. Two workflows, but each tool’s history reflects only what it’s good at tracking.

Both patterns generalize beyond codebases. A novelist whose project also has cover art and reference PDFs can keep prose in lit and binary assets in git. A researcher can keep the paper in lit and the analysis code in git. Anywhere a project has prose alongside non-prose content, one of these two patterns applies.

3 What lit can do that git can’t

Two structural advantages worth naming, because they’re the kind of thing git couldn’t reach without rewriting its storage model.

3.1 Tracking content across files is structural, not heuristic

When Linus Torvalds talks about git tracking content across renames and moves, what he’s describing is -M/-C/--find-copies-harder — similarity scoring at diff display time, applied to whole-file blob diffs against a configurable threshold. The “tracking” is reconstructed every time you ask, only ever surfaces in the diff view, and isn’t queryable as data. Git’s blobs are whole files; two files sharing a sentence share no hashes, and the engine has nothing to grip.

Lit inverts this. Atoms are content-addressed at the sentence level (the line level in poetry mode) and deduplicated across the whole repository. A sentence that moves from chapter 1 to chapter 5 is literally the same atom in both places — same hash, same storage object. Asking “where has this paragraph appeared in this manuscript’s history?” becomes a graph query over which fasciculi reference which atoms, not a similarity search. The answer is exact and instantaneous, not a heuristic that may or may not surface.

This works because paths are not part of a version’s content identity. A version says which atoms exist; the version’s manifest (a separate listing inside the version object) says where those atoms are currently arranged on disk. The same sentence at a different path is the same sentence.

3.2 Merging two manuscripts

If you’ve been writing two related projects in two separate lit repositories — say a novel and a companion novella that share a setting, or a paper and its supplementary appendix — and decide they should be one project, you can. Run lit conscribe from a directory that contains both project directories; lit will list the two .lit/ repositories it found and ask whether to fold them into one. At the same prompt you pick which project’s historia carries forward as the merged project’s historia; the other project’s historia arrives as an experiment named for its old directory (e.g. novella-historia), ready to be merged in at your own pace — or left as a parallel line forever. You end up with a single repository whose theca is the union of both and whose version manifests place each document under its original sub-path.

Sentences that appear in both manuscripts collide in the unified theca by content hash automatically — you can now query “where else does this sentence appear” across material that used to be in separate stores. Citations by atom hash that worked in either project before still work after, unchanged.

Git fundamentally can’t do this cleanly. Git’s commit objects bake path information into the commit hash via the tree pointer; merging two unrelated repositories into one means rewriting every commit (a git filter-branch-class operation with brand-new hashes throughout, breaking every external reference). Lit’s structural separation of content state from workspace layout makes project merge a primitive operation, not a recovery operation.

4 Merging is recension, and merges have no conflicts

When you weave one line of work into another — lit merge (contexe) — literium does not stop you at a wall of <<<<<<< markers. There is no “conflicted” state you must clear before you can move. The reason is structural: because every sentence (atom) and every paragraph (grex) is tracked by content hash, the machine can see what happened and sort it, and most of what git would flag as a conflict isn’t a decision at all.

A merge settles the mechanical cases silently, in the language textual critics have used for centuries:

What’s left after all of that is the only thing that ever needed you: a substitution — two hands wrote the same sentence differently. That is a variant, not a conflict. It carries no failure, no ours-versus-theirs; it’s the ordinary substance of editing, and literium presents it the way an editor already reads: your document stays whole and legible, and the competing readings sit in an apparatus beside it — the critical-edition layout, sentence ] your reading (historia) : their reading (anna), each tagged with the hand that wrote it.

Working through the variants is recension (recensio — the scholar’s word for establishing a text from its witnesses). You take them in any order — they’re independent, so nothing cascades the way git’s conflicts do — and at each one you keep (your reading stands), adopt (take theirs), both (they weren’t competing — keep the two sentences), or emend: write a new reading, better than either. That last is what a good editor actually does, so it’s a first-class move, not a manual retype. lit status counts the open variants; when it reaches zero the merge is just an ordinary version to record.

And it descends the way you’d read a proof: accept the paragraph moves first, then look only at the paragraphs that changed, then the sentence moves within them, and only inside a genuinely rewritten sentence do you drop to the words — which is where a diff finally shows you text you can read rather than hashes you can’t. lit diff shows the same apparatus; lit diff --leiden shows it in the typewriter-era editorial brackets (^ to insert, [ ] a variant span, { } a deletion) if that’s the hand you learned. (Design in progress — HISTORY §17.)

5 Literium for Git users

If you’ve used git before, the concepts above will feel familiar — but the vocabulary, and a few of the underlying choices, are deliberately different. This chapter maps lit terms to git terms and walks through the deliberate departures.

5.1 The git verb works — type either name

Every operation is reachable by both its Literium name and its plain-English git name. The two are equal peers — neither is the “real” one — and both appear in lit --help. Type whichever is in your fingers:

Type this… …or this It does
lit add (or stage) lit conscribe snapshot the working tree onto the tabula
lit commit lit inscribe finalize the tabula onto a history
lit checkout / restore lit exscribe materialize a version into the tree
lit merge lit contexe combining merge
lit branch lit experiment create / list / delete an experiment
lit log lit show view a history or a version
lit blame lit stemma atom provenance

status, diff, gc, fsck, push, pull, and clone are spelled the same in both worlds, so they just work.

The git verbs Literium doesn’t have redirect you instead of failing with a blank error:

$ lit rebase
lit: literium has no rebase. Histories are linear event logs — there is nothing to replay onto a new base. (TERMINOLOGY: rebase.)

$ lit revert 9f2c…
lit: literium has no revert primitive. Re-inscribe the old version: `lit inscribe --fons <version>`. (TERMINOLOGY: revert.)

The same holds for init, cherry-pick, switch, stash, fetch, tag, and remote — each prints the one-line Literium way to do it.

One caveat: an alias is a name, not a reimplementation of git’s semantics. lit blame takes stemma’s <version> <path> <coord> arguments, not git blame’s <path>; lit branch is experiment’s subcommands (create / delete / list), not git’s. The peer gets you to the right operation; the operation keeps its own shape. (The English/git register is also the API surface the Literium editor plugins bind against — HISTORY §15.)

5.2 Vocabulary mapping

Git Literium
commit (the saved snapshot) version
commit (the verb) lit inscribe
commit message inscription
staging area / index, plus stash tabula (single slot, no per-hunk selection)
git add (snapshot to staging) lit conscribe
main / master historia (hard-coded name; cannot be renamed)
feature branch / topic branch experimentum / peira
git merge (fast-forward) lit inscribe --fons <experiment> (adoption)
git merge (true merge) lit contexe <experiment> (weaves both sides in; moves/adds auto-resolve, contested sentences become variants in an apparatus — no conflicts, no markers; see Merging is recension above)
conflict / conflict markers variant (a contested substitution) + the apparatus (the reading beside the text, not <<<<<<< in it)
git cherry-pick lit inscribe --fons <version-hash>
git revert lit inscribe --fons <old-version-hash>
git rebase (no analogue)
git log (no command; the history file is the log — lit show views it)
git log --all / blame-ish provenance lit stemma [<version>] (a version’s life-path with its origin marked) and lit stemma <version> <path> g3a2 (which inscription first carried this sentence — exact, via atom hashes)
git checkout <commit> -- . / git restore lit exscribe <version> (writes files; moves no pointer)
HEAD, git checkout <branch> (no analogue; no version or history is “current”)

5.3 The deliberate departures

Versions don’t have parent pointers.

A git commit names its parent (or two, for merges); a lit version is a pure snapshot, with no link to “what came before.” History order lives in the history files (the historia and any experiments), not in the version objects themselves. This has several consequences worth knowing:

Histories are event logs of inscriptiones.

Each entry records (version-hash, timestamp, message). For adoption merges (taking a version from another history as-is), provenance — where did this version come from? — is recovered from the multiset of inscriptiones across all histories: the earliest entry wins, with deterministic tie-breaking. There are no merge commits; a merge inscription is structurally indistinguishable from a direct one. (A combining merge — both sides changed the same text — produces a fresh version through the ordinary conscribe → inscribe path; its merge-ness lives in the message.)

No staging area, narrowly defined.

The tabula plays the role of git’s staging area and git’s stash, but it does not have git’s index complexity. There is no add -p, no per-file selective add, no multi-state index. The tabula is always a single full-document snapshot that replaces on each conscribe.

No lit log.

Git’s git log iterates over commits via parent pointers and presents them as a list. In lit, the list is the data. Viewing a history is direct file iteration; nothing earns its own command.

Inscription messages name states, not deltas.

Git commit messages describe what changed (“Add feature X,” “Fix bug Y”) because git presents commits as patches. Lit inscriptions describe what state was reached (“first viable draft,” “after Anna’s notes”). Change-shaped messages still work where they fit (e.g. “merged peira-2”), but they’re optional, not the default mold.

The merge algorithm works at the sentence level, not the line level.

Git’s 3-way merge runs over lines; lit’s runs over sentences (atoms). When two histories have both edited a paragraph, the merge looks at a handful of sentence hashes, not a thousand-line stream. This makes a real difference on prose where lines wrap and re-wrap freely.

The --fons flag is the source knob.

In git, sources of cherry-picks and merges are positional or implied (HEAD, branch tip). In lit, the source for lit inscribe is always --fons <thing> (alias --from, short -f). The target (historia or experiment) is positional.

5.4 Translating common workflows

git commit -m "message"

— conscribe first, then inscribe:

lit conscribe
lit inscribe --all -m "message"

(Or: open lit inscribe interactively and message each pending revision in the editor — lit’s default is one message per intent, finer-grained than a git commit.)

git checkout -b feature && ... && git checkout main && git merge feature

— work in a peira, then inscribe its tip into historia:

(create the experiment — command still being shaped, SPEC §10 #14)
lit inscribe peira-feature        # work happens here
... more inscriptions ...
lit inscribe historia --fons peira-feature

git cherry-pick <commit>

— name the source by hash:

lit inscribe --fons <version-hash>

git revert <commit>

— find the version before the bad one, inscribe it back into the historia, and exscribe it into your working tree. There’s no separate revert primitive because there’s no separate operation needed; the version’s hash is the revert.

lit inscribe --fons <good-version-hash>
lit exscribe <good-version-hash>

git stash

— just lit conscribe. Switch contexts as needed; come back, keep editing, conscribe again.

git diff old new

lit diff <version-hash> <version-hash>. Works for any two versions, anywhere, in any history; no parent walk, no common ancestor.

6 Ideas to develop

Stubs for future sections — add freely.

A Terminology

Working table of all literium concepts in three registers — English (the everyday working term), Latin, and Greek. All three are first-class; the CLI is intended to accept any of them. TBD marks an open question to settle as we go.

Selection of Latin and Greek is guided by philological and literary fit — etymology, classical/scholarly usage, coherence with the existing literary vocabulary — not by the first translation in a dictionary. Rationale lives in HISTORY.md §11. When a TBD is filled in (or a candidate proposed), update both this table and the relevant entry in HISTORY §11.

A.1 Concepts inherited or adapted from git

For each git concept that survives into literium, both a Latin and a Greek form are wanted alongside the English working term.

Two peer registers (HISTORY §15).

Every operation is reachable by both its Latin/Greek human-register name and its plain-English git name; the two are equal peers (neither is the “real” one), and both appear in lit --help. The English/git register is also the programming surface an editor binding embeds against. The CLI peer column below names the git verb that resolves to each command; the git verbs Literium omits by design get a guidance hint instead (listed after the table).

For the editorial surface (collation, variants, review) git has no vocabulary, so the settled English working terms are standard copyediting / proofreading terms — move, insertion, deletion, substitution, split, join; variant, reading, source, review; keep/accept/both/revise — fixed as the protocol register (PROTOCOL §0.1, HISTORY §16). The Latin/Greek cells for these are recorded but deferred: the English column is settled first, the philological pass refines the registers later.

Git term Latin Greek Description
commit (noun) versio TBD A saved snapshot of the working tree, carrying one identity trio per document plus the manifest (SPEC §8). English working term: version.
commit (verb) / CLI inscribo (imperative inscribe) epigraphō (ἐπιγράφω) The act of finalizing a snapshot into a history, and the CLI command that does so (lit inscribe). English working term: inscribe. CLI peer commit (HISTORY §15). (HISTORY §8.)
commit message inscriptio epigraphē (ἐπιγραφή) Free-form text a writer attaches to an inscription; same word also names the per-event entry as a whole. English working term: inscription.
stage / stash (verb) / CLI conscribo (imperative conscribe) TBD The act of snapshotting the working tree onto the tabula (the single-slot scratchpad), and the CLI command that does so (lit conscribe). English working term: conscribe. CLI peer add (HISTORY §15). Redefined from earlier design (where conscribe produced a version directly); that role moved to inscribe.
staging area / index / stash tabula pinax (πίναξ) Single-slot scratchpad holding the prepared next version. Plays the role of both git’s staging area and stash, but in a single-slot full-document replace-on-rewrite shape (no per-hunk selection vocabulary). See staging area under “Concepts intentionally not adapted” below for what was rejected and what was kept. English working term: tabula.
patch TBD TBD An atomic operation, bound to a parent state. Atom-level: insert / delete / modify of an atom hash within a fasciculus. Structural: split-paragraph / merge-paragraph (prose) and stanza variants, operating on fasciculi. English working term: edit.
branch (canonical: main/master) historia historia (ἱστορία) The canonical line of development for a project: append-only event log of inscriptiones. Hard-coded name (cannot be renamed), undeletable, default target of lit inscribe. One per project. (HISTORY §9.)
branch (working: feature/topic) experimentum peira (πεῖρα) Alternative working line: an event log of inscriptiones parallel to historia. Zero or more per project, user-named, deletable. CLI peer branch (lit experiment create|delete|list, HISTORY §15). Branch doesn’t survive as a single concept — historia and experimentum are distinct kinds of histories.
merge contexo (imperative contexe) synhyphainō (συνυφαίνω) Reconciliation of two histories into one. Adoption (fast-forward analogue): lit inscribe --fons <source>. Combining (both sides diverged): lit contexe <source> — Latin contexere, “to weave together” (Cicero/Quintilian, of weaving discourse; texere is the root of text); Greek συνυφαίνω, the same weaving metaphor. The operation’s noun is contextio; the ledger of variants it leaves is the apparatus (§17). Materializes the combined state into the working tree, then ordinary conscribe → inscribe (SPEC §9.4/§9.6). CLI peer merge (the git verb resolves to lit contexe; its git semantics — a merge commit — do not, HISTORY §15). HISTORY §9 The combining merge, designed, §11.
pull request / merge request — (correspondence: exemplar out, collation back) Not a platform object and not bolted on: collaboration is correspondence (SPEC §9.7, HISTORY §10). A version travels to another hand as its raw files (the exemplar); the returned copy is collated (lit collate) against the recorded basis and adopted with the ordinary verbs (lit diff, lit inscribe, lit contexe --base).
cherry-pick No separate primitive. lit inscribe --fons <version-hash> adopts a version into the target history (historia unless named) — a whole snapshot, not a delta applied onto the target’s state. (HISTORY §8 What inscribe collapses.)
revert No separate primitive. lit inscribe --fons <old-version-hash> re-inscribes an earlier version into the target history (historia unless named). The hash is unchanged; only the inscriptio’s timestamp is new. No inverse-patch is constructed. Exscribe independently restores the state into the working tree.
rebase No analogue and none needed. Histories are linear by construction (event logs); rebase exists in git to keep history linear-looking despite an underlying DAG.
status status (already Latin) TBD The state of the working tree relative to the latest version on the historia: pending revisions and manifest-level changes (SPEC §10 #13). Git and Literium names coincide.
checkout / restore (files) exscribo (imperative exscribe) ekgraphō (ἐκγράφω) Materialize a version from a history into the working tree: each document’s volumen bytes written at its manifest path (lit exscribe; SPEC §8.9). Latin exscribo: “to write out, copy out” — the classical verb for copying a document out (Cicero, of records and letters). Completes the scribere prefix triad: con- gathers onto the tabula, in- drives into the history, ex- copies back out. Not a checkout in git’s sense: no pointer, no current position — it writes bytes and nothing else changes. English working term: exscribe. CLI peers checkout / restore (HISTORY §15). (HISTORY §8 Exscribe.)
log No separate object, but the CLI peer log resolves to show (lit log historia = lit show historia): a history is a log; viewing it is direct file iteration (HISTORY §8 Snapshot-primary, §15).
diff collatio antibolē (ἀντιβολή) The collation of two witnesses of a text: a typed comparison sorting every difference into the classical categories (transpositio/additio/omissio/substitutio + divisio/coniunctio — see below), symmetric over any two version hashes (no parent-chain walk, no common-ancestor discovery). Latin collatio, conferre codices — collating manuscript witnesses; Greek antibolē, ἀντιβάλλειν τὰ ἀντίγραφα, the same. A diff is a two-way collation; a merge is a three-way one (HISTORY §17). Renderings: SPEC §7.4 — the apparatus form (default), --leiden, the Unicode marks, --unified (legacy). Git and Literium diff names coincide.
repository TBD TBD The .lit/ directory and its contents.
HEAD / checkout (position) No pointer analogue. No version is privileged (HISTORY §8 Snapshot-primary); there is no current-position pointer to advance or detach. Returning to an earlier state is two independent acts: inscribe the old version into the target history (the record) and/or exscribe it into the working tree (the files).
gc TBD (candidate: purgo — purgare, “to cleanse”) TBD (candidate: kathairō καθαίρω — ritual cleansing) lit gc (SPEC §6.10): mark-and-sweep deletion of objects unreachable from any surviving inscriptio, the live tabula, or the contextio ledger. The CLI verb stays the English abbreviation (the term writers meet in every VCS conversation); register forms are candidates only. Git and Literium gc names coincide. HISTORY §5 Garbage collection designed.
tag TBD TBD Named pointer to a specific version. No local-ref tag in v1; a permanent named pointer is a Litorium opus permalink (guidance hint, below). Placeholder for a future local tag.
blame — (query: stemma) stemma (στέμμα) CLI peer blame resolves to stemma: lit blame <path> <coord> gives an atom’s first/last inscription — provenance, the blame analogue (SPEC §9.5, HISTORY §15).
fsck lit fsck (SPEC §6.5/§6.6): the object-graph integrity walk. Git and Literium names coincide; register forms unproposed.
clone TBD TBD lit clone <project-id> — fetch a Litorium project into a new working tree (the platform sync layer). Git and Literium names coincide; the remote/origin deferral below is superseded (remoting shipped 2026-07-07). Latin/Greek TBD.
push TBD TBD lit push — sync the historia to Litorium (first push creates the project). Names coincide; Latin/Greek TBD.
pull TBD TBD lit pull — fast-forward the historia from Litorium (fetch-and-apply in one; there is no separate fetch). Names coincide; Latin/Greek TBD.

Concepts intentionally not adapted from git

These have no literium equivalent — the design rejects them rather than renaming them.

A.2 Literium original concepts

Concepts with no direct git counterpart. The English column is the everyday descriptor used in prose.

English Latin Greek Description
atom atomus atomos (ἄτομος) The smallest unit with content identity. Sentence in prose, line in poetry. Names both the conceptual unit and the storage object (1:1 by content).
atom (poetry mode) TBD (candidate: versus — etymologically related to versio; both from vertere, “to turn”) stichos (στίχος) Synonym for atom in poetry mode; the verse line.
revision TBD TBD All the pending edits within a single paragraph or stanza — at most one edit-bearing revision per grex (SPEC §8.5; formatting-only and manifest-level revisions are the defined exceptions). The unit a writer attaches a single message to.
content form tenor (Latin: “the holding/content of a text”; from tenere, “to hold”; cf. tenor sermonis, “the tenor of the discourse”) TBD (candidate: διάνοια diánoia — “the meaning/sense of a passage”, used in patristic exegesis as “the meaning” against “the letter”; the verbatim/content split fits that contrast) Form of an atom or document defined by construction from extraction + segmentation (SPEC §3.4, §4.3): an atom’s segment with the atom-edge strip applied; for a document, the reconstruction join. Used for hashing, diffing, segmentation; exactly what spina + fasciculi + atoms reconstruct. Verbatim form is preserved in the volumen. Renamed from “canonical form”; the older name suggested one chosen variant among several, which is wrong.
grex grex (Latin: flock, herd, troop, troupe — incl. grex scaenicus, “the troupe of a play”; gen. gregis) thiasos (θίασος; company, band gathered for common purpose — religious/theatrical, e.g. Bacchic θίασος, Plato’s “θίασος of philosophers” in Phaedrus) The abstract structural unit between blank-line separators: a gathering of atoms that forms one paragraph (prose), stanza (poetry), or code-block (code, via litio). A subset of the volumen bytes (verbatim, before extraction). Used in all three registers (pattern of volumen / spina / fasciculus); the “gr-” initial doubles as a mnemonic for “group of atoms.” Distinct from fasciculus: a grex is text in the volumen; a fasciculus is the structural-layer storage dual (an ordered list of atom hashes). HISTORY §11.
paragraph The grex, in prose mode. Mode-specific instance term; the abstract concept is grex and the storage object is fasciculus.
stanza The grex, in poetry mode. Mode-specific instance term; the abstract concept is grex.
code-block The grex, in code mode (provided by the derived project litio). Mode-specific instance term; the abstract concept is grex. Listed here because grex extensibility to code was a sizing constraint on the term choice (HISTORY §11).
sub-sentential clause — reserved candidate, not used in v1 membrum kolon (κῶλον) Reserved Latin/Greek pair for a sub-sentential unit (the rhetorical clause: kolon/membrum in Cicero, Demetrius, Quintilian — the canonical doublet at the colon/comma/membrum scale). Considered for the grex slot and rejected: the rhetorical pair is sub-sentential, not paragraph-scale, so the doublet’s pedigree would have been borrowed at the wrong scale. Held in reserve for a future version that subdivides atoms into clausal sub-units. HISTORY §11.
document verbatim object volumen (Latin: scroll, the rolled-up text) TBD (candidate: biblion βιβλίον, the Greek scroll/book root) Content-addressed object holding the verbatim bytes of a whole document. Document identity = sha256(volumen bytes). One of six storage object types.
local object pool theca (Latin theca is a direct borrowing of the Greek; the bare form coincides) θήκη (thēkē; case, container, repository) The local content-addressed object pool. All six object types live under it as type-keyed paths (theca/atom/, theca/fasciculus/, theca/volumen/, theca/spina/, theca/atom-spina/, theca/version/ — the last with the manifest carve-out, SPEC §6.7); on disk: .lit/theca/<type>/<aa>/<hash>. See HISTORY §5 Storage namespace.
public atom pool corpus (Latin: body, body of writing — corpus iuris, corpus poetarum) TBD (candidate: σῶμα sōma — body, used by ancient grammarians for a textual corpus; cf. Plutarch’s σῶμα ποιημάτων, “body of poems”) The public, atom-only content-addressed pool at platform (Litorium) scope. Holds atoms only — for citation, dedup, and reverse-lookup; non-atom object types live in per-project storage at the platform layer (HISTORY §5 Storage namespace). Addressed at corpus.litorium.org/atom/<hash> (URLs not sharded, backend shards internally). v2+ surface; shape settled now.
atom-typed slice (colloquial) atomotheca (Greek roots ἄτομος + θήκη, via Latin -theca; cf. bibliotheca, pinacotheca) TBD (candidate: atomotheke ἀτομοθήκη, pure-Greek form) Colloquial — informal shorthand for the atom-typed objects in the theca; previously framed as a separate pool, now superseded by the unified theca namespace (HISTORY §5 Storage namespace).
grex storage object fasciculus (Latin: small bundle; diminutive of fascis) TBD (candidate: phakellos φάκελ(λ)ος — single-λ Attic, double-λ Hellenistic; both mean “bundle”) Storage-layer object representing one grex (paragraph in prose, stanza in poetry, code-block in code): an ordered list of atom-hash pointers, content-addressed by sha256 of its bytes. Not interchangeable with grex — a grex is text in the volumen, a fasciculus is its pointer-list dual at the structural layer. English working term stays fasciculus; if replaced, the English term should be a bookbinding term, not a text term.
fasciculus-typed slice (colloquial) fasciculotheca (Latin fasciculus + Greek θήκη; cf. atomotheca, bibliotheca) TBD (candidate: phakellotheke φακελ(λ)οθήκη, pending Greek decision on phakellos spelling) Colloquial — informal shorthand for the fasciculus-typed objects in the theca; previously framed as a separate pool, now superseded by the unified theca namespace (HISTORY §5 Storage namespace).
structural index spina (Latin: spine, backbone) TBD Per-document ordered list of fasciculus hashes. The document-level structural index. Semantic shift: spina was previously defined as “ordered list of atom hashes with paragraph/stanza breaks”; once the fasciculus layer was introduced, spina was reassigned one layer up — see HISTORY §11.2.
flat atom index TBD (working term: atom-spina) TBD Per-document content-addressed object: flat list of every atom hash in document order. Normative storage (one of the six theca object types). Two roles: ordinal-atom addressing for citation (“Tom Sawyer atom #123”), and sha256(atom-spina) is the third hash of a document’s identity trio for O(1) edit-category classification. Latin and Greek may inherit from spina once that’s settled.
variant (git: conflict) varia lectio / discrepantia diaphōnia (διαφωνία) Two witnesses reading the same slot differently — a substitutio both hands touched (the only genuine adjudication a merge leaves; moves and adds/omits auto-resolve). Not a git-style conflict: no failure state, no markers, no ours/theirs; the trunk stays a whole readable text and the readings sit in the apparatus beside it (HISTORY §17). The classical varia lectio (variant reading); diaphōnia διαφωνία, ancient scholarship’s word for witnesses disagreeing. Recorded in .lit/contextio (the apparatus); worked by recensio. SPEC §7.4/§9.6.
review record / the changes apparatus (apparatus criticus) The record of open variants and their resolutions — the renamed contextio ledger (.lit/contextio). Rendered as the critical-apparatus foot to the reading text: <locus> <lemma> ] <reading> <siglum> : <reading> <siglum>, sigla = the hands (provenance, = stemma). Derived, not a stored object (atoms persist; the merge is an ordinary inscriptio). HISTORY §17.
review recensio Working the variants to establish the text — the textual critic’s term (recensere, to review the witnesses). The merge workflow: descend document → grex → atom → word, resolving each variant keep / accept / both / revise, in any order (variants are independent). HISTORY §17.
revise / revision emendatio (verb emendo) Writing a new reading at a variant, informed by both witnesses — the fourth resolution move, the editor’s synthesis. Latin emendo, to correct/improve; reserved earlier for the merge-request concept, now at home. HISTORY §17.
move transpositio A move: the same atom or grex at a new position (same hash relocated). Auto-resolved in a merge unless both hands moved it differently. One of the collation categories (SPEC §7.4). Git cannot cheaply name it.
insertion / deletion additio / omissio An atom present on one side only (additio) or dropped (omissio) — collation categories, resolved by keep-or-drop.
substitution substitutio An atom whose content changed: a different hash in the same aligned slot. The category git structurally cannot name (to git a modify is delete-plus-add); literium names it via the unchanged-atom anchors. The only category that becomes a variant when both hands touch it. SPEC §7.4.
split / join divisio / coniunctio — (candidate: diairesis διαίρεσις for divisio) The grex-structure pair: a paragraph split into two (divisio) or merged into one (coniunctio) with its atoms unchanged — the §7.4 ~ regroup lines. The structural axis beside the four content categories.
provenance query stemma stemma (στέμμα) The lit stemma verb (SPEC §9.5): a version’s life-path through the inscriptio multiset (origin marked), and atom-level first/last-inscribed via coordinates. στέμμα — wreath, garland; in textual criticism the stemma codicum, the genealogical record of a text’s descent through its witnesses. Borrowed into Latin unchanged, so the two registers coincide, like historia. HISTORY §9 Provenance surfaced.
edit category TBD TBD Per-document classification of how a document differs between two versions: formatting (only volumen bytes change), structural (spina or fasciculi change; flat atom sequence unchanged), substantial (atom hashes change), re-segmentation (same bytes, different mode). SPEC §7.2.
formatting edit TBD TBD Edit where only volumen bytes change; spina, fasciculi, and atoms are unchanged. No first-class operation; observable as a volumen byte delta.
structural edit TBD TBD Edit where spina or fasciculi change but the flat atom sequence is unchanged (paragraph/stanza split or merge). An atom moved between grex-instances reorders the flat sequence and classifies substantial; diff display presents it as a move.
substantial edit TBD TBD Edit where atom hashes change (insert, delete, modify of atom content).
re-segmentation edit TBD TBD Edit category for a version pair whose volumen is unchanged while spina and atom-spina differ: the same bytes read under a different mode (attributes-file change; SPEC §1.1, §7.2). Only reachable through a mode change in v1. Latin and Greek: open (candidates wanted alongside the other three categories).
mode TBD TBD The kind of text being versioned: prose or poetry. Set per-file via the attributes file.
prose (mode) prosa TBD Mode where atoms are sentences segmented by UAX-29.
poetry (mode) TBD poiēsis (ποίησις) Mode where atoms are lines segmented at LF.
attributes file TBD TBD Repo-root file mapping path globs to modes.
ignore file TBD TBD Repo-root file (.litignore, with optional sub-directory copies) listing path patterns excluded from working-tree scans. Syntax and semantics adopted verbatim from .gitignore.
manifest TBD (candidate: dispositio — arrangement, layout; classical rhetorical term for the arrangement of material; from disponere, “to set in order”; alt: manifestum, the etymological original) TBD (candidate: taxis τάξις — arrangement, order; the Greek counterpart of dispositio) Field of a version object recording where each document lives in the working tree at conscribe time. Part of the version object’s data but MUST NOT contribute to the version hash (HISTORY §8 Manifest is in the version object, excluded from the hash; SPEC §8). The exclusion is what lets elevation and project merge rewrite paths without disturbing version IDs. Manifest in the cargo-listing sense (Latin manifestus via shipping-manifest usage): a listing of contents and where each item is stowed. Renamed from path mapping (working term); vocabulary repurposed once Litorium retired its own use of manifest in favor of historia directly.
elevation TBD (candidate: amplificatio — enlargement, widening of scope; classical rhetorical term, fits the project-scope-grows reading) TBD (candidate: ἐπαύξησις epaúxēsis — increase, growth; cf. amplificatio) One-way operation that moves a project’s root upward to encompass its parent directory (HISTORY §1 Project scope expands by elevation; SPEC §1.4). Triggered by invoking lit conscribe from an ancestor of an existing .lit/. The manifest is rewritten relative to the new root; version hashes survive because the manifest is unhashed (HISTORY §8). Elevation of multiple descendant projects at once is a project merge (§9).
writing tablet tabula pinax (πίναξ) Single-slot scratchpad holding the prepared next version, between lit conscribe (working tree → tabula) and lit inscribe (tabula → history). Roles of both git’s staging area and stash collapsed into one full-document replace-on-rewrite primitive. See HISTORY §8 Tabula.
canonical history historia historia (ἱστορία) Per-project canonical line of development: append-only event log of inscriptiones. Hard-coded name (every repository has exactly one historia, named historia; cannot be renamed), undeletable, default target of lit inscribe. The Litorium-publishable artefact for a project is the export of its historia. Latin and Greek registers coincide on the bare form (Latin historia is a direct borrowing of Greek ἱστορία). See HISTORY §9.
working history (alt) experimentum peira (πεῖρα) Alternative working line alongside historia: an event log of inscriptiones, deletable, user-named (e.g. peira-1, editor-pass, anna-notes). Peira (Greek: trial, attempt — classical, attested in Homer and Thucydides) was preferred over candidates δοκιμή dokime (test/examination) and Latin temptamen (attempt) for register fit. Zero or more per project. See HISTORY §9.
inscribe (verb) inscribo (imperative inscribe) epigraphō (ἐπιγράφω) Verb / CLI command for finalizing a snapshot into a history (§8). Latin inscribo: “to write into / inscribe upon”; classical idiom in marmore inscriptum. Greek ἐπιγράφω: the verb that produces an epigraphē. Morphologically parallel to conscribo; the prefix-axis (con- gather vs. in- drive into) encodes ephemeral collection vs. permanent placement. The wax/stone contrast with tabula is a real Roman cultural pairing (a tabula cerata was an erasable wax tablet; the lasting opposite was inscription on stone or bronze). See HISTORY §8 Inscribe.
inscription (entry / message) inscriptio epigraphē (ἐπιγραφή) Per-event record produced by an inscribe call: an entry in a history carrying a version hash, timestamp, and message (§8). Same word covers both the entry as a whole and the message text within it. See HISTORY §8 Inscriptio.
incise (verb) — reserved candidate incido (imperative incide) encharassō (ἐγχαράσσω) Reserved alternative verb for inscribing into historia specifically, distinguishing “permanent” historia inscription from “working” experiment inscription. Latin incido: “to cut into, engrave” (used classically of stone and bronze inscriptions). Greek ἐγχαράσσω: from χαράσσω, the root of χαρακτήρ (the engraved mark / character). Considered and rejected for v1 (one primitive for state-into-history is principled; historia’s specialness lives in the data model, not the verb). Reserved as a candidate if real use shows historia inscriptions feel under-marked. See HISTORY §8 What was rejected.
source (flag for inscribe) fons Latin fons (source, spring; fons et origo). Used as lit inscribe --fons <source> (HISTORY §8 Source flag). English alias --from; short form -f. Greek register intentionally unset — flag names are connective tissue and don’t all need three registers.
exemplar (sent copy) exemplar TBD (candidates, unvetted: ἀντίγραφον antigraphon — the copy made or sent; παράδειγμα paradeigma) The archive that carries a version’s raw files to another hand (SPEC §9.7): documents at their manifest paths plus the three-line .exemplar metadata file (marker, basis, segmentatio). Latin exemplar: in manuscript culture, precisely the copy one transcribes from. Produced by lit exemplar <source>; the recipient’s return trip is lit exemplar with no source in the unpacked directory. A convenience form, never identity-bearing. (HISTORY §10.)
collate (verb) / CLI confero (imperative confer) — unvetted TBD (candidate, unvetted: ἀντιβάλλω antiballō; noun ἀντιβολή antibolē — the technical verb for collating a copy against its exemplar) Ingest a returned exemplar (lit collate <file>): verify the .exemplar metadata, guard the working tree (§8.9), write the archive’s documents with exscribe’s document-set fidelity, and report the basis for review. English collate from Latin collatum (supine of conferre), the textual critic’s own term for comparing a witness against its exemplar. (SPEC §9.7.)

A.3 Maintaining this table

The source of truth for this table is guide-tex/terminology.tex (rendered both as this appendix and as the standalone TERMINOLOGY.md; regenerate both after editing).