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