Skip to content

ADR: Release-branch model & multi-channel CD #277

Description

@ChrisonSimtian

Sibling of milestone #13. RFC #267.

What

Write the Architecture Decision Record capturing the release-branch + multi-channel CD decision, the alternatives considered, and the reasoning. Lives under docs/adr/ (create the directory if it doesn't exist; this may be the first ADR).

Acceptance criteria

  • docs/adr/0001-release-branch-model.md (or numbered per existing convention if there is one) exists.
  • Sections: Status, Context, Decision, Consequences, Alternatives considered, References.
  • Context explains the trigger: auto-release on every main merge was generating ≈20 patch versions in recent days and Dependabot fatigue across the userbase.
  • Decision matches what landed:
    • main = integration trunk, doesn't auto-publish.
    • release/vN = release channel, tag-triggered.
    • Hotfixes via cherry-pick from main.
    • Three GitHub Environments keyed by channel (nuget-org/github-packages/github-releases), with nuget-org gated by approval.
  • Alternatives considered captures: keep main-triggered + reduce noise via path filters; release-per-merge to release/vN; manual-only via workflow_dispatch as the permanent shape.
  • Consequences notes: more deliberate cadence; cherry-pick mental overhead; old majors stay supportable; the consumer-pain-first principle this validates (see memory note).
  • References link RFC RFC: Release-branch model & multi-channel CD (tag-triggered, GitHub Environments) #267, milestone chore(ci): roll-up of #10, #11, #12 into develop #13, and the sibling implementation issues.
  • Status: Accepted once the implementation ships; Proposed until then.

Depends on

  • Implementation shipped (so the ADR describes reality, not aspiration).

Notes

If docs/adr/ doesn't exist, this is the seed for it. Worth setting the pattern now — future architectural decisions get ADRs filed under the same directory using the MADR format (or whatever Chris prefers).

Metadata

Metadata

Assignees

No one assigned

    Labels

    ADRArchitecture Decision RecorddocumentationImprovements or additions to documentation

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions