From 6f34a13257d2151181326c0b43ab2900e5ae715a Mon Sep 17 00:00:00 2001 From: operator-os-explainer Date: Sat, 5 Sep 2026 01:05:34 -0700 Subject: [PATCH 1/3] docs: record the two-lineage invariant in CLAUDE.md --- CLAUDE.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..de04312 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,3 @@ +# CLAUDE.md + +Two disjoint git lineages by design: `main` is the release lineage (what the public site serves) and the dev branches share no merge base with it. Publishing copies a tree. Never merge, rebase, or cherry-pick between the lineages, and do not read the missing merge base as a broken repo. Whether the dormant dev branches stay on the public remote is the operator's decision; do not resolve it. Details in RELEASE.md; design sources live in the sibling operator-os-explainer-design directory. From 4c5cf432449db1050afb00f33bf706bd4de63beb Mon Sep 17 00:00:00 2001 From: operator-os-explainer Date: Sat, 5 Sep 2026 01:50:01 -0700 Subject: [PATCH 2/3] docs: name the local and remote branches of each lineage explicitly --- CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index de04312..ae6915e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,3 +1,3 @@ # CLAUDE.md -Two disjoint git lineages by design: `main` is the release lineage (what the public site serves) and the dev branches share no merge base with it. Publishing copies a tree. Never merge, rebase, or cherry-pick between the lineages, and do not read the missing merge base as a broken repo. Whether the dormant dev branches stay on the public remote is the operator's decision; do not resolve it. Details in RELEASE.md; design sources live in the sibling operator-os-explainer-design directory. +Two disjoint git lineages by design, and the names differ by where you stand. In this checkout, local `main` is the dev lineage (published to the remote as `recovery/operator-os-explainer-main-20260719`) and local `release` is the release lineage, published to the remote as `main`, which the public site serves. The two share no merge base. Publishing copies a tree from dev onto `release`; never merge, rebase, or cherry-pick between them, and do not read the missing merge base as a broken repo. Whether the dormant dev branches stay on the public remote is the operator's decision; do not resolve it. Details in RELEASE.md; design sources live in the sibling operator-os-explainer-design directory. From 6e09243ae1b2f0b68b8dab94f59e7bef6fe6aa4c Mon Sep 17 00:00:00 2001 From: operator-os-explainer Date: Sat, 5 Sep 2026 01:55:51 -0700 Subject: [PATCH 3/3] docs: identify lineages by remote ref; local names vary by checkout --- CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index ae6915e..d6b9a91 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,3 +1,3 @@ # CLAUDE.md -Two disjoint git lineages by design, and the names differ by where you stand. In this checkout, local `main` is the dev lineage (published to the remote as `recovery/operator-os-explainer-main-20260719`) and local `release` is the release lineage, published to the remote as `main`, which the public site serves. The two share no merge base. Publishing copies a tree from dev onto `release`; never merge, rebase, or cherry-pick between them, and do not read the missing merge base as a broken repo. Whether the dormant dev branches stay on the public remote is the operator's decision; do not resolve it. Details in RELEASE.md; design sources live in the sibling operator-os-explainer-design directory. +Two disjoint git lineages by design, and local branch names differ between checkouts, so identify a lineage by its remote ref. Remote `main` is the release lineage: the tree the public site serves, with no `prep/` or `SPEC.md`. Remote `recovery/operator-os-explainer-main-20260719` is the dev lineage, where the build documents live. The two share no merge base. In the publishing checkout that RELEASE.md describes, local `main` is dev and local `release` is the release lineage; in other clones local `main` may track remote `main`. Run `git rev-parse --abbrev-ref @{u}` before acting on a branch name. Publishing copies a tree from dev onto the release lineage; never merge, rebase, or cherry-pick between them, and do not read the missing merge base as a broken repo. Whether the dormant dev branches stay on the public remote is the operator's decision; do not resolve it. Details in RELEASE.md; design sources live in the sibling operator-os-explainer-design directory.