The fix — CONTRIBUTING.md synthesizes existing artifacts, no new abstractions Each section links to its canonical source. No duplication. Two on-site surfaces: ./CONTRIBUTING.md browseable at /GIT/tdd.md/blob/main/CONTRIBUTING.md + /contributing canonical. One file. CONTRIBUTING.md SECTION CANONICAL SOURCE (linked) SYNTHESIS Before you start /sama/v2 · /blog/sama-v2-goal-chain-gap 3 links The /goal workflow /goals/migrate-historical-goals 7-line summary SAMA layer convention /sama/v2 §1.1 + /sama/sorted aXX/bXX/cXX/dXX table How to add a blog post content/blog/<slug>.md + ALL_POSTS recipe How to add a /goal workflow memory + /goals registry recipe How to add an image public/images/ + watermark convention recipe How to add a Layer-1 helper b32_<name>.ts + b32_<name>.test.ts recipe How to add a top-level directory Containerfile COPY line (gotcha PR #46) recipe + warning Anti-fudge defaults /sama/v2/verify (must stay 7/7 ✓) 5-bullet checklist Branch / deploy flow scripts/p620/deploy-tdd-md.sh + gh CLI 5-step sequence Three load-bearing properties: 1. SINGLE SOURCE OF TRUTH — every rule is owned by exactly one canonical artifact; CONTRIBUTING.md links, doesn't restate. 2. TWO ON-SITE SURFACES — /GIT/tdd.md/blob/main/CONTRIBUTING.md (auto via /GIT/) + /contributing (canonical). No GitHub dependency. 3. DOGFOODED — its own creation is a /goal-driven artifact at /goals/contributing-md, with merge_sha in frontmatter. Drift detection follow-up: a test grep-checks that CONTRIBUTING.md only contains references to canonical sources (no rule restatements). https://tdd.md