No description
- Shell 100%
nested pass: reconciled 0 of 5 relatedly CLAUDE.md files, by design now.
AGENTS.md, .claude/rules/ and .gitignore were written in all
five; CLAUDE.md is refused pending a structure decision.
excluded: ralph2 (nested .git sharing its parent's remote, parent tracks
its contents) — docs/inventory.md
untouched: relatedly-poc, at the user's direction — 15 MB of Go source with
no version control, recorded in docs/known-tasks.md
All five nested repos track CLAUDE.md as mode 120000 -> ../CLAUDE.md, a
symlink whose target sits OUTSIDE the repo, in the unversioned relatedly/
container. reconcile.sh followed those links, so five writes all landed in one
container file and the block reached none of the five repos. discover.sh
compounded it by reporting them "current": reading resolved through the link
to a target that did carry a block.
Reverted: relatedly/CLAUDE.md is restored byte-exact — 247 lines,
sha256 a6fd29f0ecdc5e72, zero sentinels — by inverting the injector's own
layout (line 1, then everything after the blank following the END sentinel).
Two earlier reconstruction attempts produced the right line count with the
wrong bytes; nothing was written until the hash matched.
Fixes:
- reconcile.sh exits 6 on a symlinked target, naming the link and its target.
--check reports drift rather than erroring.
- reconcile-all.sh reports `symlink` status, records a failure with a note,
and never writes.
- discover.sh reports `symlink` instead of resolving through, so a block that
lives outside the repo can no longer read as current.
Also corrects a claim in docs/known-tasks.md that the document was "duplicated
six times and will drift". It is one file with five symlinks and cannot drift.
The error came from `stat` not dereferencing by default, so an inode comparison
compared the links' inodes rather than their target's.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .claude/rules | ||
| canonical | ||
| docs | ||
| plans | ||
| rules/stacks | ||
| tools | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| README.md | ||
devEnvChecker
Single source of truth for agent-configuration conventions across ~/Development/.
Run Claude Code inside this repo and say "check my projects." Claude follows
CLAUDE.md -> docs/procedure.md, runs tools/discover.sh to report drift, and
(on your confirmation) runs tools/reconcile.sh per file to repair it. Stack rules
in rules/stacks/ propagate into each project's .claude/rules/ only where the
stack matches — a Go repo never gets TypeScript rules.
Layout
canonical/base.md+canonical/VERSION— the shared block, hash-stamped.rules/stacks/*.md— path-scoped, per-stack rules.tools/— deterministic helpers (find-based, nofd). Documented indocs/tools.md.docs/— procedure, inventory (lineage pairs + exclusions), tool catalog, changelog.
Quick start
./tools/discover.sh ~/Development # read-only drift report
./tools/reconcile.sh ~/Development/c2sync/CLAUDE.md # repair one file
Adding a rule/tool
Tell Claude in this repo. It edits the right file, bumps canonical/VERSION,
logs docs/changelog.md, and re-runs reconciliation to propagate.