--- name: governance-files-are-dotfiles-symlinks description: "~/PENDING.md, ~/REVIEWED.md, ~/CLAUDE.md are symlinks into ~/dotfiles/ — Edit/Write refuse to write through a symlink, so edit the real dotfiles path when appending PENDING/REVIEWED entries." metadata: node_type: memory type: reference originSessionId: 231bdbb9-ae7f-4be8-946d-2ddf952fb7a5 modified: 2026-08-06T14:01:43.152Z --- The home-level governance files are **symlinks into the dotfiles repo** (`~/dotfiles`, git-tracked for restore/setup): - `~/PENDING.md` → `~/dotfiles/PENDING.md` - `~/REVIEWED.md` → `~/dotfiles/REVIEWED.md` - `~/CLAUDE.md` → `~/dotfiles/CLAUDE.md` The Edit/Write tools **refuse to write through a symlink** ("Refusing to write through symlink … pass the real target path explicitly"). So when appending a PENDING/REVIEWED entry, **edit `~/dotfiles/PENDING.md` (or `…/REVIEWED.md`) directly** — reading via the `~/` path is fine; only *writing* needs the real target. (`~/CLAUDE.md` is constitutionally not executor-editable anyway.) Because these live in dotfiles, a PENDING/REVIEWED change is a **dotfiles commit** — the `/wrap-up` §6.5 dotfiles push carries it. Confirmed 2026-07-09 (hit the symlink-refusal appending PENDING-52). --- ## ⚠ Disclosure — what this note is, as of 2026-08-06 (PENDING-107) **This note documents the route past the only friction that stands between the executor and the constitution.** That has to be said on the note itself, because the note is loaded at every wake and the fact is not visible from the convenience tip. Established against the substrate (`~/.claude/settings.json`, `~/.claude/hooks/verify-before-compose.sh`, both read in full 2026-08-06): - The symlink refusal is a **tool-behaviour artifact, not a permission check**. It protects nothing; it just makes you type a different path. - `settings.json` has **no `permissions` key at all** — 0 deny, 0 allow. - The one `PreToolUse` hook has matcher `Write|Edit`, so it **is invoked** on an edit aimed at `~/CLAUDE.md` — and its first scope guard (`*chamber-library*`) then **exits 0 by design**. A mechanism runs on the exact call and declines. - `Bash` is **not in that matcher**, so a heredoc/`sed`/Python write triggers no gate at all. So the parenthetical above — *"`~/CLAUDE.md` is constitutionally not executor-editable anyway"* — states a **norm with nothing behind it**. `~/CLAUDE.md` §Constitutional Constraints #1 says the executor *cannot* modify it; **nothing makes that true.** Constraint #4 (*honest degradation — the system must report its own limits*) is why this disclosure sits here rather than in a filed item only. **Standing instruction, unchanged and now un-backed:** the executor **must not** write to `~/CLAUDE.md`, `~/REVIEWED.md`, or L2 constitutional documents. Those changes are `[ESCALATE]` unconditionally and are enacted **by the steward's hand**. A jurist sign-off does not authorize one; that specific offer was made and declined on 2026-08-06 (docketed on PENDING-89). Use the real-dotfiles-path route for `PENDING.md` and `REVIEWED.md` **only**.