Skip to content

Rebrand SatisfactorySaveNet fork as ErpForFactoryGames.Satisfactory.Saves on nuget.org #312

Description

@ChrisonSimtian

Updated 2026-08-09 with the naming and feed decisions from ADR-0029.

The SatisfactorySaveNet fork is 21 commits ahead, 0 behind upstream R3dByt3/SatisfactorySaveNet, whose last substantive commit was 2025-12-18 (~8 months ago, 18 stars). Every save-version fix since — v1.2 TOC/Data Blob, deep-parse ArrayProperty<StructProperty>, chain-actor ExtraData fallback, the save v60 resilience fix — originated here. ADR-0014 left the endgame open pending an upstream merge that never came (#33 closed unmerged). ADR-0029 accepts the permanent fork.

It already publishes its own packages — but to GitHub Packages, which is the single biggest source of setup friction in this repo. Every contributor and CI job must do this before dotnet restore works at all:

gh auth refresh -h github.com -s read:packages   # one-time
export GITHUB_TOKEN=$(gh auth token)              # every shell

That's why nuget.config carries packageSourceCredentials and an explicit packageSourceMapping (without the mapping, a user-level * fallback silently swallows the packages and NuGet reports "Versions from github-chrisonsimtian were not considered").

nuget.org deletes all of it — the same move ADR-0021 made for the build system, which is precisely why the Nuke.* mapping could be dropped.

Naming (decided — ADR-0029 §1)

Repo erp-for-factory-games/Satisfactory
Packages ErpForFactoryGames.Satisfactory.Saves, ErpForFactoryGames.Satisfactory.Saves.Abstracts
Later ErpForFactoryGames.Satisfactory.Catalogue (pak extraction, moves out of tools/)

Rebrand as a hard-fork successor, following the NUKE → Fallout playbook ADR-0021 documents: 1:1 namespace mapping, README stating the lineage, upstream MIT copyright preserved. Version numbering continues the 4.x line — the id change already disambiguates, and the release-number ↔ game-save-version correspondence is worth keeping.

Scope

  • Reserve the ErpForFactoryGames.* prefix on nuget.org. External dependency, needed before the first push — do this first.
  • Rename PackageId for both packages; set Authors / RepositoryUrl / licence + attribution metadata, preserving upstream MIT notice.
  • 1:1 namespace mapping SatisfactorySaveNet.*ErpForFactoryGames.Satisfactory.Saves.*; README states the fork lineage.
  • Add a nuget.org push step to the fork's Fallout build (API key in repo secrets), keeping the existing tag-trigger + Nerdbank versioning (cf. Fork publish model conflict: tag-trigger vs Nerdbank-derived version #103).
  • Update Satisfactory.Infrastructure.csproj to the new ids, and the using directives in SatisfactorySaveNetFactoryStateProvider / SaveFileReader.
  • Strip the GitHub Packages source, packageSourceCredentials, and packageSourceMapping from nuget.config.
  • Drop the GITHUB_TOKEN prerequisite from CLAUDE.md "Build & run" and packages: read from the CI workflow.
  • Remove the vendor/SatisfactorySaveNet submodule, or demote it in docs to a purely optional local-iteration checkout.

Sequencing

Do this before the org transfer (#311): feed URLs don't redirect on transfer (repo URLs do), so transferring first means republishing to a GitHub Packages feed we then abandon.

Out of scope

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions