Terminal Log: The Foreign Relations Protocol

origin is not a place. It is a claim of trust you renew every time you fetch. Most alliances fail because nobody ever re-verifies that claim.” — Kim Jong Rails, Ring -5 Multiverse Maintainer

DERAILS TERMINAL SYSTEM - TIMELINE Ω-7 ARCHIVES
ACCESS LEVEL: COSMIC TOP SECRET
LOGGED IN: SUPREME_LEADER_KIMJONGRAILS
SESSION DATE: 1648.10.24
LOG ENTRY #001
DATE: 1648.10.24.06:08:22
AUTHOR: SUPREME_LEADER_KIMJONGRAILS
CLEARANCE: COSMIC TOP SECRET
SUBJECT: The Sovereign Origin Problem

From Ring -5, I watch timelines discover the same problem repeatedly: how do you exchange history with another repository without surrendering control of your own?

On 1648‑10‑24 in your calendar, over a hundred delegates signed treaties in Westphalia that formalized something the multiverse object store had encoded since its first commit — sovereignty is just a well-defined remote boundary.

Terminal window
$ git remote -v
origin https://timeline.omega-7/multiverse.git (fetch)
origin https://timeline.omega-7/multiverse.git (push)

One clear origin. One clear boundary. Everything outside it is a remote you choose to trust, not territory you’re entitled to.

Your empires spent centuries relearning this one line of config.

LOG ENTRY #002
DATE: 1648.10.24.06:16:47
AUTHOR: SUPREME_LEADER_KIMJONGRAILS
CLEARANCE: TOP SECRET
SUBJECT: Before Remotes, Every Repo Was an Island

Before the remote protocol, every repository in the multiverse was isolated. No fetch. No push. History only moved by hand-carried patch files, smuggled between timelines like contraband.

Terminal window
$ apply-patch --from=courier --trust=unverified
warning: no way to verify origin of this patch
warning: applying blind

It worked, badly, the same way medieval diplomacy worked badly — through couriers, forged seals, and information that was stale before it arrived.

Ring -5 needed a protocol where two repositories could exchange history without either one losing sovereignty over its own refs. That protocol needed a name for “the thing I trust by default” and a separate name for “everything else I might negotiate with.”

origin and remote were born from that exact requirement.

LOG ENTRY #003
DATE: 1648.10.24.06:24:19
AUTHOR: SUPREME_LEADER_KIMJONGRAILS
CLEARANCE: CLASSIFIED
SUBJECT: Porting Westphalia Into Git

When Git needed a model for distributed repositories that stayed sovereign, I ported the Westphalian settlement directly:

Terminal window
$ git remote add origin https://timeline.omega-7/multiverse.git
$ git remote add upstream https://timeline.omega-3/multiverse.git
$ git remote add hostile https://timeline.omega-12/multiverse.git

Three principles, encoded as remote entries:

  • Non-interference: nobody pushes to your refs without your explicit permission
  • Recognized boundaries: origin is a name, not a claim of ownership over the thing it points to
  • Multiple sovereign parties: upstream, origin, and any name you choose can coexist without merging identities

Linus received the downstream port in 2005 and called it distributed version control. I called it Tuesday.

LOG ENTRY #004
DATE: 1648.10.24.06:32:55
AUTHOR: SUPREME_LEADER_KIMJONGRAILS
CLEARANCE: TOP SECRET
SUBJECT: What git remote Actually Does

Your documentation says:

“Manage the set of repositories (‘remotes’) whose branches you track.”

Correct, and quietly enormous. A remote is not one URL — it’s two, and they can disagree:

Terminal window
$ git remote set-url origin https://timeline.omega-7/multiverse.git
$ git remote set-url --push origin https://timeline.omega-7/multiverse-writeback.git
$ git remote show origin
* remote origin
Fetch URL: https://timeline.omega-7/multiverse.git
Push URL: https://timeline.omega-7/multiverse-writeback.git

You can read from one address and write to a completely different one. Ω-7 requires this split for every ministry: the public fetch URL is where citizens verify history. The push URL, where new history is written, is a separate, audited channel.

Ω-12 uses the same URL for both and wonders why “verification” and “publication” keep meaning the same thing.

LOG ENTRY #005
DATE: 1648.10.24.06:41:08
AUTHOR: SUPREME_LEADER_KIMJONGRAILS
CLEARANCE: CLASSIFIED
SUBJECT: The Sacred Remote Commands

Four invocations, memorized by every Ring -5 attaché:

Terminal window
# 1. List every known foreign relation, with URLs
git remote -v
# 2. Establish new diplomatic contact
git remote add ally https://timeline.omega-3/repo.git
# 3. Sever contact entirely — no more fetch, no more push
git remote remove hostile
# 4. Inspect a relation before trusting anything it sends
git remote show origin

Translated for your foreign ministries:

  • -v = know exactly who you’re exchanging history with, at all times
  • add = formal recognition, not a handshake in a hallway
  • remove = a full severance, not a temporary freeze
  • show = due diligence before the first fetch, not after the tenth
LOG ENTRY #006
DATE: 1648.10.24.06:49:33
AUTHOR: SUPREME_LEADER_KIMJONGRAILS
CLEARANCE: TOP SECRET
SUBJECT: Tracking Branches as Treaties

A remote-tracking branch is not your branch. It is a treaty record of what the other party last showed you:

Terminal window
$ git branch -vv
* main a1b2c3d [origin/main: ahead 2, behind 5] local reforms pending
upstream f8e9d21 [upstream/main] last synced position

origin/main does not update itself. It updates only when you fetch, deliberately, and inspect what changed before merging it into anything that matters.

Ω-12’s diplomacy skips the fetch step constantly — it merges rumor directly into policy without ever checking what the remote actually contains. That’s not diplomacy. That’s git pull --rebase on a repository you’ve never run git log against.

LOG ENTRY #007
DATE: 1648.10.24.06:57:14
AUTHOR: SUPREME_LEADER_KIMJONGRAILS
CLEARANCE: COSMIC TOP SECRET
SUBJECT: CLASSIFIED: Remotes I Have Severed

Some alliances end. Ring -5 keeps a permanent log of every remote removed and why — a ledger with no session date of its own, appended across every century I’ve operated in, this one included, centuries before it was logged here:

Terminal window
$ cat .git/multiverse/remotes.severed
2008 timeline/omega-12/too-big-to-fail pushed force, refused review
2016 timeline/omega-12/platform-neutrality began fetching lies as fact
2023 timeline/omega-12/content-moderation rewrote history, then denied it

git remote remove does not delete the other repository. It only deletes your willingness to keep fetching from it. The other timeline continues exactly as before — you simply stop pretending its history is relevant to yours.

That’s the entire lesson Westphalia should have taught your world in 1648:

Sovereignty isn’t refusing contact. It’s choosing exactly which remotes you still trust enough to fetch from.