Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/user_story.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ body:
value: |
_Keep it terse and scannable — Problem, Outcome, and how we'll know it's done._

_Before you continue, please check the [contribution guidelines](https://github.com/ChrisonSimtian/Fallout/blob/main/CONTRIBUTING.md)._
_Before you continue, please check the [contribution guidelines](https://github.com/Fallout-build/Fallout/blob/main/CONTRIBUTING.md)._

- type: textarea
id: problem
Expand Down Expand Up @@ -53,7 +53,7 @@ body:
id: pull-request
attributes:
label: Could you help with a pull-request?
description: See the [contribution guidelines](https://github.com/ChrisonSimtian/Fallout/blob/main/CONTRIBUTING.md).
description: See the [contribution guidelines](https://github.com/Fallout-build/Fallout/blob/main/CONTRIBUTING.md).
options:
- "No"
- "Yes"
Expand Down
28 changes: 14 additions & 14 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
> **Deprecated** — this file is no longer actively maintained.
> Going forward, release notes are published automatically via GitHub's release notes feature,
> driven by PR labels and the configuration in [`.github/release.yml`](.github/release.yml).
> See the [GitHub Releases page](https://github.com/ChrisonSimtian/Fallout/releases) for up-to-date release notes.
> See the [GitHub Releases page](https://github.com/Fallout-build/Fallout/releases) for up-to-date release notes.

All notable changes to this project will be documented in this file.

Expand Down Expand Up @@ -91,22 +91,22 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

### Process

- **Added "Default to backwards compatibility" rule to the AGENTS.md AI brief** (#262). Critical rules now state the principle explicitly — prefer additive over breaking changes; `[Obsolete]`, transition shims, and overload-based extension before a hard break. The existing breaking-change PR-creation flow (label + `⚠️` callout + `version.json` bump + CHANGELOG entry with migration path) remains the mechanics for when a break is unavoidable. Issue [#262](https://github.com/ChrisonSimtian/Fallout/issues/262) stays open for the broader policy discussion (LTS stance for the `Nuke.*` shims, what qualifies as "backwards compatible" for on-disk formats and CI workflow generators, when transition-shim generators are the right answer, etc.).
- **Added "Default to backwards compatibility" rule to the AGENTS.md AI brief** (#262). Critical rules now state the principle explicitly — prefer additive over breaking changes; `[Obsolete]`, transition shims, and overload-based extension before a hard break. The existing breaking-change PR-creation flow (label + `⚠️` callout + `version.json` bump + CHANGELOG entry with migration path) remains the mechanics for when a break is unavoidable. Issue [#262](https://github.com/Fallout-build/Fallout/issues/262) stays open for the broader policy discussion (LTS stance for the `Nuke.*` shims, what qualifies as "backwards compatible" for on-disk formats and CI workflow generators, when transition-shim generators are the right answer, etc.).

- **Disabled auto-release on every push to `main`** (stopgap for milestone [#13](https://github.com/ChrisonSimtian/Fallout/milestone/13) / RFC [#267](https://github.com/ChrisonSimtian/Fallout/issues/267)). The `release` workflow now triggers on `workflow_dispatch` only — releases are explicit, run manually from Actions UI. Auto-publishing was firing a Fallout.* release on every merge (≈20 patch versions accumulated in recent days for what was mostly internal cleanup), generating Dependabot upgrade PRs across every downstream consumer. The proper restructure — tag-triggered publishes on `release/vN` branches with three GitHub Environments (`nuget-org` / `github-packages` / `github-releases`) — is being implemented under milestone #13. This stopgap stops the consumer-facing noise immediately while that lands.
- **Disabled auto-release on every push to `main`** (stopgap for milestone [#13](https://github.com/Fallout-build/Fallout/milestone/13) / RFC [#267](https://github.com/Fallout-build/Fallout/issues/267)). The `release` workflow now triggers on `workflow_dispatch` only — releases are explicit, run manually from Actions UI. Auto-publishing was firing a Fallout.* release on every merge (≈20 patch versions accumulated in recent days for what was mostly internal cleanup), generating Dependabot upgrade PRs across every downstream consumer. The proper restructure — tag-triggered publishes on `release/vN` branches with three GitHub Environments (`nuget-org` / `github-packages` / `github-releases`) — is being implemented under milestone #13. This stopgap stops the consumer-facing noise immediately while that lands.

- **Release-branch model + multi-channel CD (umbrella entry for milestone [#13](https://github.com/ChrisonSimtian/Fallout/milestone/13)).** Fallout now ships from `release/vN` branches via tag-triggered, multi-channel publish — not from `main`. Captures the full scope of the milestone in one entry to keep CHANGELOG history readable. Documented in [`docs/branching-and-release.md`](docs/branching-and-release.md) (maintainer runbook) and [`docs/adr/0001-release-branch-model.md`](docs/adr/0001-release-branch-model.md) (decision record).
- **Branching model.** `main` is the integration trunk — merges land here but no longer auto-publish. `release/vN` (e.g. `release/v11`, cut in [#269](https://github.com/ChrisonSimtian/Fallout/issues/269)) is the long-lived release channel per major version. Hotfixes flow `main → cherry-pick → release/vN → tag`. `develop`, `master`, `hotfix/*` not used.
- **Tag-triggered releases.** Pushing a `v*` tag to a `release/vN` branch fires `release.yml`. A `validate-ref` job confirms the tag is reachable from a `release/v*` branch. `workflow_dispatch` is preserved as a fallback for re-runs after transient publish failures ([#274](https://github.com/ChrisonSimtian/Fallout/issues/274)).
- **Release-branch model + multi-channel CD (umbrella entry for milestone [#13](https://github.com/Fallout-build/Fallout/milestone/13)).** Fallout now ships from `release/vN` branches via tag-triggered, multi-channel publish — not from `main`. Captures the full scope of the milestone in one entry to keep CHANGELOG history readable. Documented in [`docs/branching-and-release.md`](docs/branching-and-release.md) (maintainer runbook) and [`docs/adr/0001-release-branch-model.md`](docs/adr/0001-release-branch-model.md) (decision record).
- **Branching model.** `main` is the integration trunk — merges land here but no longer auto-publish. `release/vN` (e.g. `release/v11`, cut in [#269](https://github.com/Fallout-build/Fallout/issues/269)) is the long-lived release channel per major version. Hotfixes flow `main → cherry-pick → release/vN → tag`. `develop`, `master`, `hotfix/*` not used.
- **Tag-triggered releases.** Pushing a `v*` tag to a `release/vN` branch fires `release.yml`. A `validate-ref` job confirms the tag is reachable from a `release/v*` branch. `workflow_dispatch` is preserved as a fallback for re-runs after transient publish failures ([#274](https://github.com/Fallout-build/Fallout/issues/274)).
- **Multi-channel publish.** Three parallel jobs fan out from a shared Test+Pack: `publish-nuget-org` (Tier 1, approval-gated via the `nuget-org` GitHub Environment, Fallout.* only) → `publish-github-packages` (Tier 2, Nuke.* transition shims) → `publish-github-releases` (bundled nupkg artifacts on the tag's GitHub Release). Each produces a per-environment deployment record. `--skip-duplicate` on every push keeps re-runs idempotent.
- **GitHub Environments** ([#272](https://github.com/ChrisonSimtian/Fallout/issues/272)). Three env shells keyed by channel — `nuget-org` (required-reviewer: `@ChrisonSimtian`), `github-packages` (auto), `github-releases` (auto). Branch deployment policies restrict deploys to `release/v*` (`main` permitted transitionally during the cut).
- **`NUGET_API_KEY` env-scoped** ([#273](https://github.com/ChrisonSimtian/Fallout/issues/273)). Migrated from repo secret to environment secret on `nuget-org`. The release job declares `environment: nuget-org`, so the secret resolves only inside the gated job.
- **Branch protection on `release/v11`** ([#270](https://github.com/ChrisonSimtian/Fallout/issues/270)). Mirrors `main`'s profile — required `ubuntu-latest` check, linear history, CODEOWNER review, no force-push/delete, conversation resolution required.
- **GitHub Environments** ([#272](https://github.com/Fallout-build/Fallout/issues/272)). Three env shells keyed by channel — `nuget-org` (required-reviewer: `@ChrisonSimtian`), `github-packages` (auto), `github-releases` (auto). Branch deployment policies restrict deploys to `release/v*` (`main` permitted transitionally during the cut).
- **`NUGET_API_KEY` env-scoped** ([#273](https://github.com/Fallout-build/Fallout/issues/273)). Migrated from repo secret to environment secret on `nuget-org`. The release job declares `environment: nuget-org`, so the secret resolves only inside the gated job.
- **Branch protection on `release/v11`** ([#270](https://github.com/Fallout-build/Fallout/issues/270)). Mirrors `main`'s profile — required `ubuntu-latest` check, linear history, CODEOWNER review, no force-push/delete, conversation resolution required.
- **Tag protection ruleset.** Repository ruleset blocks creation/deletion/update of `v*` tags except for repo admins. Two-layer gating with the `nuget-org` env approval: who-can-tag + who-can-approve-publish.
- **PR-validation triggers extended to `release/v*`** ([#291](https://github.com/ChrisonSimtian/Fallout/pull/291), [#292](https://github.com/ChrisonSimtian/Fallout/pull/292)). `ubuntu-latest.yml` and `ubuntu-latest-docs.yml` now fire on PRs targeting `release/v*` so branch protection's required check actually gets a result. Cross-platform post-merge triggers (`windows-latest`, `macos-latest`) tracked separately in [#293](https://github.com/ChrisonSimtian/Fallout/issues/293).
- **NB.GV `publicReleaseRefSpec`** ([#275](https://github.com/ChrisonSimtian/Fallout/issues/275)). Extended on `release/v11` to include the branch itself, so versions are clean `11.0.X` instead of `11.0.X-g<sha>`.
- **`main`'s `version.json` major** stays at 11 for now ([#271](https://github.com/ChrisonSimtian/Fallout/issues/271) deferred until v12 work begins).
- **Tier 3 Docker local NuGet server** ([#279](https://github.com/ChrisonSimtian/Fallout/issues/279)) — pre-merge testing channel — landed as a separate work item; initial setup in PR [#287](https://github.com/ChrisonSimtian/Fallout/pull/287).
- **PR-validation triggers extended to `release/v*`** ([#291](https://github.com/Fallout-build/Fallout/pull/291), [#292](https://github.com/Fallout-build/Fallout/pull/292)). `ubuntu-latest.yml` and `ubuntu-latest-docs.yml` now fire on PRs targeting `release/v*` so branch protection's required check actually gets a result. Cross-platform post-merge triggers (`windows-latest`, `macos-latest`) tracked separately in [#293](https://github.com/Fallout-build/Fallout/issues/293).
- **NB.GV `publicReleaseRefSpec`** ([#275](https://github.com/Fallout-build/Fallout/issues/275)). Extended on `release/v11` to include the branch itself, so versions are clean `11.0.X` instead of `11.0.X-g<sha>`.
- **`main`'s `version.json` major** stays at 11 for now ([#271](https://github.com/Fallout-build/Fallout/issues/271) deferred until v12 work begins).
- **Tier 3 Docker local NuGet server** ([#279](https://github.com/Fallout-build/Fallout/issues/279)) — pre-merge testing channel — landed as a separate work item; initial setup in PR [#287](https://github.com/Fallout-build/Fallout/pull/287).

- **nuget.org publish is now opt-in for v11; GitHub Packages is the default release channel.** Tag pushes on `release/v11` publish to GitHub Packages + GitHub Releases only; the `publish-nuget-org` job is skipped unless `workflow_dispatch` is invoked with `publish-to-nugetorg=true` (and the existing `nuget-org` env approval gate still fires). `publish-github-packages` now pushes **all** `*.nupkg` (Fallout.* + Nuke.*), not just Nuke.* shims — GitHub Packages is the de-facto v11 release channel during stabilisation. nuget.org is reserved for v10.x maintenance lines and a future stabilised v11. Decision recorded in [`docs/adr/0002-v11-off-nuget-by-default.md`](docs/adr/0002-v11-off-nuget-by-default.md); maintainer runbook updated in [`docs/branching-and-release.md`](docs/branching-and-release.md). This *modifies* the routing originally documented in the milestone #13 umbrella entry above — the branching model and CD shape are unchanged, only the routing policy.

Expand Down Expand Up @@ -155,7 +155,7 @@ The NUKE → Fallout hard fork. Originally NUKE by [@matkoch](https://github.com
- **Rich release notes** from milestone + auto PR list (#21): release body links to the matching `vX.Y.Z` milestone and inlines the PR list.

### String-reference audit
- **Canonical URLs centralized** (#30) in `Constants.FalloutWebsite` / `FalloutRepository` / `FalloutRawRepository` / `FalloutDocsUrl` / `FalloutTelemetryDocsUrl` / `FalloutNotificationsUrl`. Tool wrapper JSON `$schema` URLs (63 files) and `*.Generated.cs` "Generated from" comments updated from `nuke-build/nuke/master/source/` to `ChrisonSimtian/Fallout/main/src/`. IDE-plugin URLs removed from `build/Build.cs` and `templates/Build.cs` (re-add when Fallout plugins ship). NUKE attribution in README/CONTRIBUTING/CLAUDE.md/CHANGELOG history and pedagogical test fixtures intentionally kept.
- **Canonical URLs centralized** (#30) in `Constants.FalloutWebsite` / `FalloutRepository` / `FalloutRawRepository` / `FalloutDocsUrl` / `FalloutTelemetryDocsUrl` / `FalloutNotificationsUrl`. Tool wrapper JSON `$schema` URLs (63 files) and `*.Generated.cs` "Generated from" comments updated from `nuke-build/nuke/master/source/` to `Fallout-build/Fallout/main/src/`. IDE-plugin URLs removed from `build/Build.cs` and `templates/Build.cs` (re-add when Fallout plugins ship). NUKE attribution in README/CONTRIBUTING/CLAUDE.md/CHANGELOG history and pedagogical test fixtures intentionally kept.

### Misc
- **Stripped per-file license headers; `LICENSE` is now the single source of truth.** The 4-line `// Copyright … Maintainers of Fallout. // Originally based on NUKE …` block has been removed from all 614 first-party `.cs` files under `src/`, `tests/`, `build/`, and the repo root. MIT compliance is satisfied by `LICENSE` at the repo root (which preserves matkoch's "Maintainers of NUKE 2017-2025" copyright), README acknowledgement of the NUKE origin, and `PackageLicenseExpression="MIT"` on every NuGet package. Vendored third-party code (`src/Persistence/Fallout.Persistence.Solution/`, Microsoft MIT) retains its own copyright headers untouched. Convention docs (`AGENTS.md`, `docs/agents/conventions.md`, `docs/architecture.md`, `CONTRIBUTING.md`) updated to match.
Expand Down
Loading