From 03c3cac4606a7507109612d8294da44165332ba6 Mon Sep 17 00:00:00 2001 From: crazyracer98 <8631139+crazyracer98@users.noreply.github.com> Date: Tue, 3 Nov 2026 18:02:30 +0000 Subject: [PATCH] chore(template-sync): make README.md instance-owned (ignore tier) - Move README.md from the merge tier to the ignore tier of the sync manifest - Document the change in docs/TEMPLATE.md's Template sync section --- .github/template-sync-manifest.yml | 8 +++++--- docs/TEMPLATE.md | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/template-sync-manifest.yml b/.github/template-sync-manifest.yml index 6c2eac6..3565a9f 100644 --- a/.github/template-sync-manifest.yml +++ b/.github/template-sync-manifest.yml @@ -108,6 +108,11 @@ ignore: # Each instance chooses its own license and copyright holder. - LICENSE + # Each package's README is entirely its own (name, usage, API); a merge + # against this template's README conflicted on every sync, so it is + # instance-owned from creation, like pyproject.toml. + - README.md + # The package scaffold: an instance renames the distribution and the import # package (see README.md), owns its dependencies, code, tests, benchmarks # and import-linter contract, so none of it can be synced. @@ -146,9 +151,6 @@ ignore: - .github/template-sync-manifest.local.yml merge: - # Project identity (name/description) is interpolated per instance. - - README.md - # Files with no include mechanism of their own (JSON configs, prek's # .pre-commit-config.yaml), and docs an instance appends to: a three-way # merge keeps the instance's additions. diff --git a/docs/TEMPLATE.md b/docs/TEMPLATE.md index f9631be..64df143 100644 --- a/docs/TEMPLATE.md +++ b/docs/TEMPLATE.md @@ -495,6 +495,10 @@ the place for their own runtime (FastAPI, axum, React) and their own ADRs. A mid-layer classifies its own tree for its instances in its own `.github/template-sync-manifest.yml`, which is `merge` tier in every instance: base's additions are resolved by hand there. +In `template-python-package`, `README.md` is `ignore` tier: each package's +README is entirely its own, so a merge conflicted on every sync. The +instance owns it from creation, and later changes to the template's +README no longer reach instances by sync. An instance lists extra paths of its own under `ignore:` in `.github/template-sync-manifest.local.yml`. Which template an instance follows is recorded in its `.github/template-sync-state.json`