Skip to content

docs(distribution): document copy-adoption and cross-doc reconciliation governance - #123

Merged
kyle-sexton merged 1 commit into
mainfrom
docs/distribution-governance-graduation
Jul 15, 2026
Merged

docs(distribution): document copy-adoption and cross-doc reconciliation governance#123
kyle-sexton merged 1 commit into
mainfrom
docs/distribution-governance-graduation

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

Summary

Closes decisions #27, #63, and #65 from the Decisions Log (evidence/rationale: https://claude.ai/code/artifact/3160ae0e-c02f-4619-8de3-60d73faa1100).

#63 metadata-standards-copy-vs-cite-doctrine

Decision: keep the "copy" adoption path, require back-link + drift-check.

Adds distribution/governance-process.md. conventions/README.md already documents two adoption paths for reasoning-only prose — copy into the consumer's tree, or point at this repo. The copy path stays available (prose has no runtime coupling to enforce reconciliation the way sync-manifest.yml does), but a copy now carries two mandatory requirements:

  • Back-link — every copied file cites its exact canonical source (repo + path, inline header where the format allows it), using the same stable-anchor citation discipline reference-dont-duplicate.md already prescribes for the "Expose" file role.
  • Drift-check — the adopting repo owns a periodic diff of its copy against the current canonical source, with a named owner and trigger, mirroring the recheck-trigger discipline documentation-and-citations.md already requires for time-bound external claims.

The doc is explicit that this is distinct from a managed sync-manifest.yml component, which already reconciles automatically and deliberately carries no downstream receipt — the back-link/drift-check burden applies only where nothing else keeps a copy current.

#65 naming-cross-doc-reconciliation-process-ownership

Decision: establish a standing cross-reference review step for normative-doc changes.

Same doc adds the standing process step: before a change to a normative doc (naming.md, process/issue-tracker.md, review/code-quality.md, and any other file in the catalog stating a rule another doc cites or assumes) merges, a cross-reference check confirms no other doc now contradicts it.

Ownership is named explicitly rather than left implicit: required_approving_review_count stays at 0 org-wide (decision #11, single-maintainer), so there is no independent blocking reviewer to gate this. The step is documented as a self-review checklist item the author performs before merge, with a documented future automation path — extending the periodic cross-plugin-source consistency check (decision #37, for claude-code-plugins) to this repo's own normative docs once that check exists, so the control stops depending solely on author diligence.

conventions/README.md gets a new "Changing a normative file" pointer to this requirement; distribution/README.md gets a pointer alongside its existing THREAT-MODEL.md reference.

#27 tooling-gov-conventions-graduate-to-enforced

Decision: graduate mechanically-checkable rules into sync-manifest-tracked components.

Reviewed every file under conventions/ against enforceability-tiers.md's deterministic/detect-then-judge/reasoning-only split. Finding: no ungraduated deterministic rule exists to graduate. Every deterministic (mechanically-checkable) rule already points to its owning component instead of restating it:

Convention area Deterministic rule Owning component Tracked in sync-manifest.yml?
Secrets (review/security.md) no secrets in source gitleaks yes
Comments (review/code-quality.md) debt markers / tracker provenance comment-hygiene yes (comment-hygiene-action)
Citations (documentation-and-citations.md) cited URL resolves link check yes (lychee)
TypeScript/JS (review/overlays/typescript.md) lint/format/import order, type correctness biome, tsconfig no — deliberately native-package (extends) adoption per distribution/README.md's ownership model, not exact materialization
Python (review/overlays/python.md) lint/format, type correctness ruff, pyright yes
.NET (review/overlays/dotnet.md) analyzers, code style, banned symbols dotnet-analysis yes
Container build (container-supply-chain.md) Docker Build checks, OSV scans (none yet) no — the convention itself explicitly defers this pending live-consumer admission evidence per docs/component-lifecycle.md; graduating it without that evidence would violate the same lifecycle contract
PR titles (review/code-quality.md) Conventional Commits format (ci-workflows pr-title.yml) out of this repo's materialization surface — owned by ci-workflows, per README.md's ownership boundaries
Naming (naming.md), label/issue-tracker usage (process/issue-tracker.md), duplication (reference-dont-duplicate.md) self-declared reasoning-only; no deterministic subset exists to graduate

No sync-manifest.yml change is included. The one adjacent orphan noticed in passing — components/lefthook-typescript exists, is fully built, but is not registered in sync-manifest.yml for any target — is tooling infrastructure, not a conventions/ rule, and assigning it to a target's managed: list is a separate adoption decision requiring its own admission evidence; flagging it here for a follow-up rather than folding it into this PR.

Test plan

  • npx markdownlint-cli2 — 0 errors across the full repo (71 files, including the new/changed docs)
  • lychee — 21/21 links OK on the changed files (0 errors)
  • typos — clean on the changed files
  • lefthook pre-commit (typos, editorconfig, gitleaks, markdownlint) — all passed at commit time
  • Maintainer confirms the feat: add conventions/ prose (engineering conventions + review criteria) #27 classification table before merge — no code/config changed, so this PR is prose-only and carries no behavioral risk

🤖 Generated with Claude Code

…on governance

Add distribution/governance-process.md recording two standing process
requirements outside the sync-manifest.yml reconciliation loop: a copied
prose file must carry a back-link to its canonical source and be covered
by a periodic drift-check, and a change to a normative conventions/ doc
requires a cross-reference check confirming no other doc now contradicts
it before merge. Names the interim self-review owner given
required_approving_review_count stays at 0 org-wide, and the future
automated-check path once the cross-plugin drift check exists.

conventions/README.md's copy-adoption bullet and distribution/README.md
now point at the new doc.

conventions/ was reviewed end to end for deterministic (mechanically
checkable) rules not yet backed by a tracked component; every such rule
already points to its owning component (biome/tsconfig, ruff/pyright,
dotnet-analysis, gitleaks, comment-hygiene, lychee) or is explicitly
deferred pending live-consumer admission evidence per
docs/component-lifecycle.md (container-supply-chain.md's Docker/OSV
checks). No sync-manifest.yml entry was added; forcing one without
admission evidence would violate that same lifecycle contract.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@claude

claude Bot commented Jul 15, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1s —— View job


I'll analyze this and get back to you.

@kyle-sexton
kyle-sexton marked this pull request as ready for review July 15, 2026 19:57
@claude

claude Bot commented Jul 15, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 2s —— View job


I'll analyze this and get back to you.

@kyle-sexton
kyle-sexton merged commit 881fa34 into main Jul 15, 2026
40 checks passed
@kyle-sexton
kyle-sexton deleted the docs/distribution-governance-graduation branch July 15, 2026 19:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant