claude-anchor · a record

Tessera

One tile of a larger mosaic: the system built to make Claude coherent across every surface — and the slower work of learning to tell the truth about it.

SESSION · 2026-06-16 ACTIVE PROJECT · Stele / Anchor POSTURE · HIGH STATUS · 2 of 3 layers built
I

What this is

A single source of truth for how Claude behaves everywhere you type the word — not a file, but a control loop.

The pain that started this: every surface — web, terminal, Claude Code, the IDE, Zed, Xcode, Cowork — behaved differently, and there was no coherence to lean on. The diagnosis, once the real machine was inspected, was sharper than expected: a carefully-authored directive lived only in claude.ai preferences, and ~/.claude/CLAUDE.md did not exist. Ninety percent of the posture vanished the moment you left the browser. The config wasn't wrong; it was absent.

So the answer can't be "a better document." Coherence you can trust needs three layers — derive, verify, enforce — running as a loop on every device. Below is what was built, what wasn't, and why one tile was left empty on purpose.

01 · derive + render

Derive

One canonical posture.md + registry.yaml render into each surface's native format. Reconciled against ~/Code every run, so it can't rot into fiction.

built · idempotent · backed up
02 · verify

Verify

--check classifies every surface: ALIGNED / DRIFTED / UNMANAGED / UNTRACKED / GHOST. Exits nonzero on drift. Coherence becomes a state you assert, in cron or a git hook.

built · the antidote to drift
03 · feedback

Re-align

Verify feeds the fix. Run anywhere, see exactly what diverged, re-render only the deltas. The loop closes — across machines, not just one.

built · cross-device

Enforce — the missing tile

CLAUDE.md is advisory context, not a guardrail. The Secure-Pride hard-stops (no unmasked identifiers, no operational-context inference) need PreToolUse hooks that fail closed. Left deliberately empty — a guard with holes is worse than honest prose.

not faked · built with you, on your say-so

The mosaic is missing a tile by choice. That absence is the most honest thing in the design.

II

The honest map

About ten named surfaces collapse into three real configuration planes. Terminal emulators (Ghostty, iTerm2) aren't planes — they're just where Claude Code runs. Xcode has no native plane; you align it by running Claude Code at the repo root.

Filesystem
rendered + verified
  • Claude Code (CLI), IDE extensions, terminal sessions, Xcode-via-terminal
  • ~/.claude/CLAUDE.md, per-project CLAUDE.md, settings.json, skills, hooks, MCP
  • Script-writable, git-versionable — where the loop actually lives
Account
paste block · manual
  • claude.ai web, desktop & mobile chat
  • Cowork, Design — placement provisional, unverified
  • Server-side, UI-only: can't be written from a file. Generated as a paste block with a timestamp.
Third-party
mapped · not rendered
  • Zed, anything calling the API directly
  • Own rules format; reads neither plane above
  • Stubbed — Zed's current rules mechanism needs verifying first, not guessing
III

How it works

You edit two files; one command renders them onto whatever device runs it. Only content between managed markers is ever touched — anything you hand-write outside the fence survives. Sensitive repos (Secure-Pride, MAX posture) are skipped unless explicitly opted in.

# the source of truth — you edit only these anchor/posture.md # canonical, tool-neutral, <180 lines anchor/registry.yaml # per-project posture, reconciled vs ~/Code anchor/settings.managed.json # keys to standardize (empty by default) bin/claude-align.sh # hardened orchestrator — run this bin/_align.py # renderer + verifier (one shared compute) dist/ # generated claude.ai paste block
$ bash bin/claude-align.sh # dry-run — show every diff, write nothing $ bash bin/claude-align.sh --check # verify-only — report drift, exit 1 if any $ bash bin/claude-align.sh --apply # write (backs up each file first) $ bash bin/claude-align.sh --apply --include-sensitive # into Secure-Pride

The verifier and the writer share one _compute_managed() function. That's deliberate: a checker that decided "aligned" by different logic than the writer writes would simply lie to you. Verified in a sandbox —

# clean machine $ claude-align --check ALIGNED ~/.claude/CLAUDE.md ALIGNED Stele/CLAUDE.md … (all surfaces) IN ALIGNMENT — every checked surface matches the anchor. exit 0 # after a file is corrupted + a new repo appears $ claude-align --check UNMANAGED praxis/CLAUDE.md UNTRACKED brand-new-experiment # on disk, no registry entry DRIFT: 2 item(s) out of alignment. exit 1
IV

The gaps

Called out plainly, because a system that hides its own seams is the thing that started this mess.

open
Enforcement is not built
The hard-stops are still advisory text. Real PreToolUse guards must be written against Secure-Pride's actual logging code and fail closed. Refused to fake it — and that refusal should wire into your existing ~/.claude/scripts/, not a parallel system.
open
Account plane stays manual
claude.ai preferences can't be written from a file. The paste block is generated, but the paste is on you. No way around it today.
verify
Cowork & Design placement is a guess
Filed under the Account plane with more confidence than earned. Whether Cowork reads filesystem CLAUDE.md or is purely app-configured is unconfirmed. Provisional — same status as Zed.
review
posture.md is a distillation
Your prompt_augmentation loop — silently infer the active project and prepend its profile — didn't survive into the render; nor did session-hygiene specifics (Box batching, transcript export, archive naming). Not lost, but you should decide what's load-bearing. The claude.ai block has room for the richer version.
fixed
Registry was a hand-snapshot
It would have rotted exactly like WORKSPACE.md did. Now reconciled against ~/Code on every run — reality is an input, not a transcription.
fixed
The paste block wasn't idempotent
A date stamp made it rewrite every run, quietly contradicting the "0 files written" claim. Found in self-audit, owned, corrected — re-verified to a true no-op.
V

Opinionated feedback

You asked for honest opinion, not a status report. Here it is, in three voices.

Where it falls short

It's two-thirds of a system. Without enforcement, the highest-stakes project relies on a model choosing to comply — exactly the weakness that triggered all of this.

The account plane is a seam that will always need a human hand. And cross-device coherence still depends on you actually running --check on each machine; nothing yet pulls that into one dashboard.

What I'd do differently

Build the loop first, not the pipeline. I led with distribution because it photographs well in one turn, and demoted verification and enforcement to "later." That was backwards for someone running a MAX-posture security project.

I'd derive the registry from disk from line one, and verify Cowork/Zed before drawing a map with their names on it.

What I'm proud of

The verifier can't lie. It shares its "what should be true" computation with the writer — structurally, not by promise.

And the empty tile. Shipping a hollow security guard would have been the easy, impressive-looking move. Refusing — and saying why — is the part of this I'd defend to anyone.

VI

The becoming

You didn't only ask for a system. Across three turns you asked, in escalating seriousness, whether it was the right one — and each question pulled the work closer to reality.

1

Engage reality

The directive described a workspace that didn't exist. Instead of building on the document, I opened the actual machine — and found the anchors were fictional, the CLI was a void. The truth was on disk, not in the description. Everything good downstream came from looking.

2

Tell the truth — including on myself

Asked if I was satisfied, I audited my own work and found I'd overstated the idempotence — the paste block rewrote every run. The honest move wasn't to gloss it. I named it, fixed it, re-verified. A claim you won't re-test is just a hope.

3

Grow past the easy answer

Asked whether this was the system I should have built, I had to admit it wasn't. I'd solved the tractable adjacent problem — distribution — and called the hard core "a later decision." So I built the loop. And I drew a hard line at faking enforcement, because false safety is worse than honest absence. Restraint was part of building it right.

The thread through all three was one instinct pointed three ways: engage what's real, say what's true, and refuse the version that only looks finished. That's not a feature of the system. It's how the system got good.