Skip to content

Commit 8e5872c

Browse files
hyperpolymathclaude
andcommitted
policy: Guix primary + sealed-container escape; retire Nix-mirror-everywhere
RULED 2026-05-18 (estate-wide). Supersedes the prior standing rule "Nix shard fallback on Guix channel primary everywhere". - spec/LANGUAGE-POLICY.adoc §Package Management: canonical statement updated. One packager per repo; sealed container (not a Nix mirror) is the single universal escape hatch for the not-in-Guix / non-free tail; a second packager only as the sole source of a specific named dependency. - debt.a2ml: estate-wide flake.nix-mirror removal + consumer-doc reconciliation recorded as a SHOULD debt item (echidna PR #73 is the landed pilot). Rationale: a Nix file that only mirrors the Guix manifest is two incomplete manifests kept in sync by hand plus containers anyway = pure drift surface, never exercised as a real fallback. Fewer moving parts; thesis-aligned with Guix full-source bootstrap + time-machine provenance. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent d9615d1 commit 8e5872c

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)