feat(patches): declare the patch tier in tier.json and the manifest #10
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/patch-tier-metadata"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & why
The Runic Gateway installer's patch tier (docs/installer/PLAN.md §2.2, Phase 3) needs facts about these patches that a
.patchfile cannot carry:.csmay only be copied once that unit has landed;dotnet build ServUO.sln) or just ServUO's dynamic script build;None of that is derivable from the diffs. This PR declares it in
patches/tier.json, andrelease.ymlfolds it into the tarball'smanifest.jsonaspatch_tier.Why in the release rather than in the installer: the same rule PLAN.md §7.1 already applies to the bundle — a new or changed patch should regenerate release metadata, not require an installer release. The staged copy is removed from
patches/so the tarball carries exactly one statement of the table.The gate is the point
The release job now checks the table in both directions, and each check has a failure mode that is otherwise invisible until someone runs the tier on a live shard:
.patchdescribed by exactly one feature, and vice versatargetequals the file its diff actually editsrebuildiscoreorscriptsBackwards compatible: installers older than this key ignore it, and an installer newer than the overlay it is deploying falls back to a built-in copy of this table.
How it was tested
The gate and the
jqfold were both run against this repo's realpatches/in a Linux container (alpine+jq 1.7.1), matching the CI environment rather than the Windows dev shell — all four checks pass and the fold produces the expectedpatch_tierblock.The emitted block is also checked in as a fixture on the installer side (
tests/fixtures/patch_tier.json), where a test asserts it deserializes into the installer'sManifestand is identical to the installer's built-in fallback. So the two repos cannot drift apart quietly.Paired with:
Checklist
AI-assisted contributions (required)
Claude Code (Opus). I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with aCo-Authored-Bytrailer.License