Skip to content

Commit 1a0800c

Browse files
policy: Guix primary + sealed-container escape; retire Nix-mirror-everywhere (#101)
## What Canonicalises the estate ruling of 2026-05-18 and supersedes the prior standing rule "Nix shard fallback on Guix channel primary everywhere". - **`spec/LANGUAGE-POLICY.adoc` §Package Management** — the canonical statement. Guix primary; **sealed container (not a Nix mirror)** is the single universal escape hatch for the not-in-Guix / non-free tail; one packager per repo; a second packager only as the sole source of a specific named dependency. - **`.machine_readable/agent_instructions/debt.a2ml`** — estate-wide `flake.nix`-mirror removal + consumer-doc reconciliation logged as a SHOULD debt item. ## Why A `flake.nix` that only mirrors the Guix manifest is two incomplete manifests hand-synced plus containers anyway = pure drift surface, never exercised as a real fallback. Guix's full-source bootstrap + `guix time-machine` is provenance-thesis-aligned; the non-free / not-in-Guix tail (which Guix's FSDG structurally excludes) goes to the already-mandated sealed container, not a Nix twin. ## Pilot already landed `hyperpolymath/echidna` PR #73 applied this: `flake.nix`/`flake.lock` removed, 9 Tier-3 prover Containerfiles consolidated into one sealed multi-target `Containerfile.wave3`, manifest/CLAUDE/Justfile/STATE reconciled. ## Scope Surgical: only the canonical §Package Management statement + the debt record. The broad consumer-repo sweep (other docs that still say "Fallback: Nix") is deliberately deferred to the tracked debt item, per centralised-standards (link-don't-copy) — not swept here. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent d9615d1 commit 1a0800c

2 files changed

Lines changed: 25 additions & 4 deletions

File tree

.machine_readable/agent_instructions/debt.a2ml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
[metadata]
1111
version = "1.0.0"
12-
last-updated = "2026-03-24"
12+
last-updated = "2026-05-18"
1313

1414
# ============================================================================
1515
# DEBT ITEMS
@@ -34,6 +34,15 @@ last-updated = "2026-03-24"
3434
# impact = "medium"
3535
# discovered = "2026-03-23"
3636

37+
[[debt.should]]
38+
component = "estate-wide / standards CLAUDE.md §Package Management"
39+
issue = "Guix-primary ruling 2026-05-18 (Guix primary + sealed-container escape; NO Nix mirror). Tech debt to clear: (1) update standards CLAUDE.md §Package Management ('Fallback: Nix (flake.nix)' -> 'Escape hatch: sealed container; no Nix mirror'); (2) estate-wide sweep removing every flake.nix that only mirrors a guix.scm/manifest (echidna flake.nix deprecated in its L3/L1 PR as the pilot). A second packager is permitted ONLY where it is the sole source of a specific named dependency, documented as such."
40+
effort = "hard"
41+
impact = "medium"
42+
priority = "should"
43+
discovered = "2026-05-18"
44+
ref = "memory: reference_packaging_guix_primary_container_escape"
45+
3746
# ============================================================================
3847
# COULD — would fix eventually
3948
# ============================================================================

rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,15 +196,27 @@ Both are FOSS with independent governance.
196196

197197
== Package Management
198198

199+
RULED 2026-05-18 (estate-wide): **Guix primary + sealed-container escape; NO
200+
Nix mirror.** One packager per repo. A `flake.nix` that only mirrors a Guix
201+
manifest is drift to remove, not a fallback. A second packager is permitted
202+
only where it is the *sole* source of a *specific named* dependency, and that
203+
dependency is documented as the reason. Supersedes the prior "Nix fallback
204+
everywhere" rule.
205+
199206
[cols="1,2"]
200207
|===
201208
| Priority | Tool
202209

203210
| *Primary*
204-
| Guix (guix.scm)
211+
| Guix (`guix.scm`, `manifest.scm`)
212+
213+
| *Escape hatch*
214+
| Sealed container (Podman / Containerfile, Svalinn-sealed) — the single
215+
universal path for the not-in-Guix / non-free tail. Not a Nix mirror.
205216

206-
| *Fallback*
207-
| Nix (flake.nix)
217+
| *Second packager*
218+
| Permitted only as the sole source of a specific named dependency,
219+
documented as such (never a blanket mirror).
208220

209221
| *JS deps*
210222
| Deno (deno.json imports)

0 commit comments

Comments
 (0)