Skip to content

refactor(adr): ADR-0004 → per-template Renovate baselines (Model B)#8

Merged
NWarila merged 1 commit into
mainfrom
feat/adr-0004-per-template-renovate
May 9, 2026
Merged

refactor(adr): ADR-0004 → per-template Renovate baselines (Model B)#8
NWarila merged 1 commit into
mainfrom
feat/adr-0004-per-template-renovate

Conversation

@NWarila

@NWarila NWarila commented May 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Pre-propagation in-place amendment to ADR-0004. The decision (Renovate over Dependabot) is unchanged. The deployment model is rewritten from "single shared org baseline" to "per-template self-contained baselines."

What changed in the model

Was (Option 3) Now (Option 4)
One `renovate.json5` at `nwarila-platform/.github/.github/renovate.json5` No org-level Renovate config. Org repo holds ADRs and policies only.
Every consumer `extends: ["github>nwarila-platform/.github"]` Every consumer `extends: ["github>NWarila/"]` (the one type-template they derive from).
Stack-specific settings live at the template tier, layered on top of org Each type-template owns a complete, self-contained `renovate.json5` (universal + stack-specific in one file per stack).

Why

The centralised model conflicts with the three-tier ADR architecture from ADR-0001. Stack-specific concerns belong at the template tier — `terraform.rangeStrategy: "pin"` should not be visible to a Packer consumer's Renovate evaluation. Per-template baselines mean each stack evolves independently and the configuration model mirrors the ADR architecture. The duplication of truly-universal settings (cadence, dashboard, PR concurrency) across each template baseline is small and worth the stack independence.

What this PR does NOT do

  • Does not touch any actual `renovate.json5` file. The wiring lives in:
    • `NWarila/terraform-runner-template/.github/renovate.json5` — already exists, will be cleaned up and re-pointed in a follow-up.
    • `nwarila-platform/github-terraform-framework/.github/renovate.json5` — currently a byte-clone of the template's; will be slimmed to a thin `extends:` in a follow-up.
    • Other type-templates' `renovate.json5` — to be authored as those templates come online.

Editorial rule analysis

ADR-0001 §7 allows post-acceptance edits that correct typos/links/formatting/Status/supersession but forbids silent changes to "the decision, its scope, or its rationale." This edit changes the deployment model (centralised → per-template), which arguably moves "scope" — but ADR-0004 has not yet propagated to any consumer (no consumer extends `nwarila-platform/.github`'s renovate.json5, because it doesn't exist). Per the established practice in this repo (ADR-0001 was edited in place to add the three-tier model under the same pre-propagation reasoning), this is clean. Subsequent edits to a propagated version will use Supersedes/Superseded by.

Test plan

  • `self-ci / validate manifest` passes (manifest unchanged at 11 entries; the 0004 source still exists, just rewritten).
  • After merge, capture new canonical SHA so terraform-runner-template + github-terraform-framework can bump pins and refactor their `renovate.json5` files in their own follow-up PRs.

🤖 Generated with Claude Code

Pre-propagation in-place amendment. The decision (Renovate over
Dependabot) is unchanged; the deployment model (where the baseline
lives) is rewritten.

Why
---
The previous draft prescribed a single shared org baseline at
nwarila-platform/.github/.github/renovate.json5 with every consumer
extending it. That centralised model conflicts with the three-tier
ADR architecture from ADR-0001: stack-specific concerns
(terraform.rangeStrategy, pip constraints, dockerfile rebases) live
at the template tier, and Renovate config carries the same character.
A Terraform-specific Renovate tweak should not have to touch a
config that Packer and Python consumers also evaluate.

What
----
The new model is Option 4 (formerly the Option 4 placeholder, now
chosen): each type-template owns a complete, self-contained
.github/renovate.json5. Consumers extend only their type-template:

  extends: ["github>NWarila/terraform-runner-template"]

There is no org-level renovate.json5. The org repo holds ADRs and
policies, not Renovate config. Stacks evolve independently. Truly
universal settings (cadence, dependency-dashboard, prConcurrentLimit)
are duplicated across each type-template's baseline; the duplication
is small and the stack independence is worth more.

Edits in this commit:
  - Title: "Shared Org Baseline" → "Per-Template Baselines".
  - TL;DR rewritten for the new model.
  - Context: framing of the inheritance argument moved from
    "single shared config at the org level" to "single source of
    truth at the type-template tier".
  - Decision Drivers §5 + §6 reframed (DRY-within-a-stack,
    stack-independence).
  - Considered Options grew from 5 to 7: split the centralised
    Option 3 from the per-template Option 4; added Option 5 (org→
    template→consumer extends chain) for completeness; renumbered.
  - Decision Outcome rewritten: Option 4 chosen; spells out what
    each template's baseline configures and the consumer's thin
    extends; explicitly forbids an org-level renovate.json5.
  - Pros and Cons of Options 2-7 rewritten to match the new
    framing.
  - Confirmation §1-§7: inheritance now points at NWarila/<type-
    template> rather than nwarila-platform/.github; new §6
    explicitly forbids org-level Renovate config; §5 acknowledges
    the duplication trade-off.
  - Consequences (Positive/Negative/Neutral) rewritten for the new
    model.
  - Related ADRs: cross-link to template-tier ADR-0001 explains
    that each stack's analogous decisions live in its own ADRs.
  - decision-records/README.md Index entry refreshed.

Editorial-rule analysis
-----------------------
ADR-0001 §7 allows post-acceptance edits that correct
typos/links/formatting/Status/supersession but forbids silent
changes to "the decision, its scope, or its rationale". This edit
changes the *deployment model* (centralised → per-template) which
arguably moves "scope" — but ADR-0004 has not propagated to any
consumer yet (no consumer's renovate.json5 currently extends an
nwarila-platform/.github baseline that doesn't exist). Per the
established practice in this repo (see ADR-0001 itself, edited in
place to add the three-tier model when no consumer was yet
mirroring the previous two-tier text), pre-propagation in-place
edits are clean. The commit message is the audit trail; subsequent
edits to a *propagated* version will use Supersedes/Superseded by.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@NWarila NWarila merged commit f2ff593 into main May 9, 2026
1 check passed
@NWarila NWarila deleted the feat/adr-0004-per-template-renovate branch May 9, 2026 15:39
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