Repository navigation
Conversation
First cherry-pick promotion from Yggdrasil into the Well of Mimir. Brings ONLY the two self-contained lock files, so main stays green and gains the enforced "no full-branch merge" rule immediately: - tools/check-promotion.py — refuses a PR into main whose head is a rail (Yggdrasil/main/doombox/*) or whose head already contains the Yggdrasil tip (a whole-branch merge in disguise). Passes only a promote/* branch cut from main. Stdlib only. - .github/workflows/promotion-guard.yml — runs it as the promotion-guard check on every PR to main. The doctrine prose (CLAUDE.md §3, branch-policy block) is deliberately NOT in this promotion; it follows once main's briefing is caught up. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xp3DVVK5nBHC8nQhhmBC8g
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
cloudflarelocaldns | a182667 | Aug 09 2026, 09:33 PM |
This was referenced Aug 11, 2026
a777ance
pushed a commit
that referenced
this pull request
Aug 11, 2026
The ten Yggdrasil -> main PRs opened under the previous doctrine cannot land: check-promotion.py refuses a rail as head, verified directly (exit 1). The founder had already closed localDNS #29 and opened #31 as a proper promote/* cherry-pick, setting the precedent; the other nine were still open and making the queue lie. Closed all nine WITH A STATED REASON, because a PR closed silently records "closed" — indistinguishable from "rejected" six months later, which is exactly the failure the retirement manifest §3b was written to prevent. Each comment says superseded SHAPE, not rejected work; that nothing is lost because every commit stays on Yggdrasil; and gives the replacement route (cut promote/* from main, cherry-pick, PR that), pointing at #31 as the worked example. Snapshot refreshed from a single org-wide query rather than ten per-repo calls: 3 open PRs portfolio-wide, all in localDNS. The board immediately reflected it — decision 2 fell from 14 PRs to 1, and the "refresh the snapshot" decision the seat had raised against ITSELF (71h stale) cleared. An instrument that flags its own staleness and then watches that flag disappear is the whole design working. Also confirmed, checking before acting: the claude/* PRs closed on 2026-08-08 were closed deliberately, BEFORE the retirement ran — so branch deletion did not silently eat them. That was the predicted harm; it did not happen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DQFfkkSUPXDTgKizj6RfpF
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The first proper cherry-pick promotion into the Well of Mimir — replacing the closed #29 (which was a forbidden full-branch merge). Yggdrasil drinks from the well; the well is fed one deliberate selection at a time.
What this promotes (and only this)
Two self-contained files, cut onto a
promote/*branch frommain:tools/check-promotion.py— refuses any PR intomainthat is a full-branch merge: fails if the head is a rail (Yggdrasil/main/doombox/*/ …) or if the Yggdrasil tip is an ancestor of the head (a whole-branch merge in disguise). Only apromote/*branch cut frommainand carrying a genuine cherry-pick selection passes. Stdlib only; locally dry-runnable..github/workflows/promotion-guard.yml— runs it as thepromotion-guardcheck on every PR tomain.Nothing else changes, so
mainstays green. The doctrine prose (CLAUDE.md§3, the branch-policy block, the cap tool, norns) is deliberately not in this promotion —main's briefing is a whole doctrine-era behind, and catching it up is a separate, larger promotion for later.Two things to know
pull_requestworkflows run from the base branch, sopromotion-guarddoes not run on this PR (main doesn't have it yet) — it activates on the next PR intomain, after this merges.promotion-guardcheck Required inmain's branch protection (Settings → Branches). Until then it reports but does not block. That admin toggle is the one piece outside what a session can do.Guard self-check
check-promotion.py --head promote/promotion-lock --base main→ ok (a genuine selection; head does not contain the Yggdrasil tip). Rail heads and disguised whole-branch heads both FAIL as intended.🤖 Generated with Claude Code
Generated by Claude Code