shopify-upgrade-guard 0.2.6 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,7 +16,7 @@ Shopify Upgrade Guard is an offline, evidence-backed CLI and GitHub Action for S
16
16
 
17
17
  Maintained by RexCode Digital Ltd.
18
18
 
19
- Part of the **RexCode Shopify developer tools** suite. Requires Node.js 20 or later for the CLI. [Releases](https://github.com/RexCode-Digital/shopify-upgrade-guard/releases) · [npm](https://www.npmjs.com/package/shopify-upgrade-guard) · [Marketplace](https://github.com/marketplace/actions/shopify-upgrade-guard)
19
+ Part of the **RexCode Shopify developer tools** suite. Requires Node.js 20 or later for the CLI. The parser remains on GraphQL 16 because GraphQL 17.0.2 requires Node.js 22 or later, which would drop the supported Node.js 20 runtime. [Releases](https://github.com/RexCode-Digital/shopify-upgrade-guard/releases) · [npm](https://www.npmjs.com/package/shopify-upgrade-guard) · [Marketplace](https://github.com/marketplace/actions/shopify-upgrade-guard)
20
20
 
21
21
  ## Quick start
22
22
 
@@ -39,7 +39,7 @@ Upgrade Guard separates **current debt** from **target-version blockers**, so te
39
39
 
40
40
  - **Target-aware** — evaluate findings against the Shopify version you actually plan to adopt.
41
41
  - **Evidence-backed** — Shopify-specific rules link to official Shopify documentation or changelog evidence.
42
- - **PR-aware** — distinguish newly introduced findings from pre-existing debt.
42
+ - **PR-aware** — compare independent base and head tree scans, including renamed files, to distinguish new, existing, and resolved findings.
43
43
  - **Baseline-friendly** — adopt the tool without forcing a big-bang cleanup of historical findings.
44
44
  - **CI-ready** — human, JSON, and SARIF output plus a GitHub Action.
45
45
  - **Offline by default** — ordinary scans require no network access, Shopify token, or store access.
@@ -67,7 +67,7 @@ jobs:
67
67
  fetch-depth: 0
68
68
  persist-credentials: false
69
69
 
70
- - uses: RexCode-Digital/shopify-upgrade-guard@223ec33e119f920ecc9f9a5df722a2f6fda0df40 # v0.2.5
70
+ - uses: RexCode-Digital/shopify-upgrade-guard@b0a6816f95d783f703bf031c9920004fbb865bc1 # v0.2.6
71
71
  with:
72
72
  target: 2026-10
73
73
  fail-on: warning
@@ -88,10 +88,12 @@ Use the immutable patch release tag or a reviewed full commit SHA. Existing mino
88
88
 
89
89
  ### Action outputs
90
90
 
91
- `outcome`, `finding-count`, `new-finding-count`, `error-count`, `current-versions`, and `result-json`.
91
+ `outcome`, `finding-count`, `new-finding-count`, `resolved-finding-count`, `error-count`, `current-versions`, and `result-json`.
92
92
 
93
93
  The Action is bundled and runs on the current GitHub `node24` JavaScript Action runtime.
94
94
 
95
+ The example above pins v0.2.6, which does not expose `resolved-finding-count`. The independent base/head comparison and resolved-finding behaviour described below are part of the unreleased changes here; they are not available from the current npm package or Action.
96
+
95
97
  ## What it catches today
96
98
 
97
99
  The rule pack is intentionally focused. Literal GraphQL checks parse supported documents and ignore malformed or dynamic queries; rule-specific context limits findings to Shopify API constructs that can be identified deterministically.
@@ -109,6 +111,8 @@ The rule pack is intentionally focused. Literal GraphQL checks parse supported d
109
111
  | `UG-ADMIN-002` | Literal GraphQL root `automaticDiscounts` removed in 2027-01 | [Official removal](https://shopify.dev/changelog/posts/automaticdiscounts-query-is-removed-in-api-version-2027-01) |
110
112
  | `UG-ADMIN-003` | GraphQL `metafieldInteger` collection conditions and types removed in 2027-01 | [Official removal](https://shopify.dev/changelog/posts/metafieldinteger-collection-condition-removed-in-api-version-2027-01) |
111
113
  | `UG-ADMIN-004` | `ProductVariant.barcode` read deprecated in 2026-10; it still works and no removal date is announced | [Official deprecation](https://shopify.dev/changelog/posts/product-variant-barcode-is-being-replaced-by-barcodes) |
114
+ | `UG-ADMIN-006` | Literal `marketCurrencySettingsUpdate` Admin mutation removed in 2027-01 | [Official removal](https://shopify.dev/changelog/posts/removing-marketcurrencysettingsupdate-mutation) |
115
+ | `UG-ADMIN-007` | `PRIVATE` / `PUBLIC_READ` literals passed as metaobject definition admin access removed in 2027-01 | [Official deprecation](https://shopify.dev/changelog/posts/removing-deprecated-private-and-public-read-enums-on-metaobject-definitions) |
112
116
  | `UG-SEGMENT-001` | Legacy function/date syntax inside literal segment GraphQL query arguments | [Official syntax update](https://shopify.dev/changelog/posts/updated-function-syntax-on-the-segment-query-language) |
113
117
  | `UG-ADMIN-005` | Source handling for removed inventory error `ITEM_NOT_STOCKED_AT_LOCATION` | [Official removal](https://shopify.dev/changelog/posts/removal-of-itemnotstockedatlocation-error) |
114
118
  | `UG-SCRIPT-001` | Cross-version Script Tag write restrictions; REST resource references require method review | [Script Tag deprecation](https://shopify.dev/changelog/online-store-script-tags-deprecation) |
@@ -154,9 +158,11 @@ npx shopify-upgrade-guard baseline check
154
158
 
155
159
  Baselined findings remain reviewable while new fingerprints stay actionable.
156
160
 
157
- `--fail-on-new` requires a valid Git base comparison. Fetch full history and provide `--base-ref`, or use the pull-request Action. Missing refs/history exit 2 instead of passing an incomplete comparison.
161
+ `--fail-on-new` requires a valid Git base comparison. Upgrade Guard scans the base commit and head tree independently, then matches findings by rule, file identity, and evidence; recognized file renames keep existing debt stable. JSON includes `resolvedFindings`, and human output reports their count. Fetch full history and provide `--base-ref`, or use the pull-request Action. Missing refs/history exit 2 instead of passing an incomplete comparison.
162
+
163
+ The bundled snapshot, verified 14 October 2026, lists `2026-10` as the latest stable API and `2027-01` as a release candidate for development testing. Version status uses Shopify's exact `accessibleUntil` timestamp: `2025-10` remains accessible until 16 October 2026 at 15:00 UTC, then becomes unsupported. Future version names do not imply verified rule coverage.
158
164
 
159
- The bundled snapshot, verified 4 October 2026, lists `2026-10` as latest stable and `2027-01` as release candidate. The RC is for testing. Shopify lists `2025-10` as unsupported while its accessibility table runs until 16 October 2026; support status and accessibility are distinct. Future version names do not imply verified rule coverage.
165
+ The 2027-01 tax payload change converts IDs in tax calculation requests and tax summary webhook payloads to Global IDs. Upgrade Guard cannot reliably tell whether arbitrary runtime parsing assumes numeric IDs, so tax app handlers need review against Shopify's [official migration note](https://shopify.dev/changelog/posts/tax-webhook-summary-and-calculation-requests-now-use-global-ids).
160
166
 
161
167
  ## Configuration
162
168
 
@@ -197,6 +203,8 @@ Building or maintaining Shopify apps?
197
203
  - **[Shopify Scope Guard](https://github.com/RexCode-Digital/shopify-scope-guard)** — Audit whether declared Shopify permissions are supported by offline code evidence.
198
204
  - **[Shopify App Review Guard](https://github.com/RexCode-Digital/shopify-app-review-guard)** — Run deterministic preflight checks for Shopify App Store and production readiness.
199
205
 
206
+ See the [coordinated workflow example](https://github.com/RexCode-Digital/shopify-app-changeguard/blob/main/docs/ecosystem-workflow.md) to run all four published Actions in one pull-request workflow.
207
+
200
208
  GitHub Marketplace: [Shopify Upgrade Guard](https://github.com/marketplace/actions/shopify-upgrade-guard)
201
209
 
202
210
  All four tools run offline and require no Shopify credentials.
@@ -217,7 +225,7 @@ Start with [the contribution guide](CONTRIBUTING.md) or browse the [open issues]
217
225
 
218
226
  ## Roadmap
219
227
 
220
- Current priorities include additional verified Shopify breaking-change coverage, better PR base-tree classification, high-confidence Functions/Customer Account/POS/GraphQL rules, and maintainable GraphQL deprecation evidence.
228
+ Current priorities include additional verified Shopify breaking-change coverage, high-confidence Functions/Customer Account/POS/GraphQL rules, and maintainable GraphQL deprecation evidence when Shopify provides a versioned source with clear redistribution rights. See the [metadata decision](docs/graphql-deprecation-metadata.md).
221
229
 
222
230
  See [ROADMAP.md](ROADMAP.md).
223
231
 
@@ -227,10 +235,10 @@ MIT — see [LICENSE](LICENSE).
227
235
 
228
236
  ## Immutable SHA usage
229
237
 
230
- The Action example pins the reviewed v0.2.3 release commit. Verify the release reference with:
238
+ The Action example pins the reviewed v0.2.6 release commit. Verify the release reference with:
231
239
 
232
240
  ```bash
233
- gh api repos/RexCode-Digital/shopify-upgrade-guard/git/ref/tags/v0.2.5 --jq .object.sha
241
+ git fetch --tags origin && git rev-parse 'v0.2.6^{commit}'
234
242
  ```
235
243
 
236
244
  Published patch tags and existing minor aliases are retained. Future releases do not move minor aliases; use an immutable patch tag or a reviewed full commit SHA.
package/action.yml CHANGED
@@ -29,6 +29,8 @@ runs:
29
29
  outputs:
30
30
  new-finding-count:
31
31
  description: Number of findings classified as NEW
32
+ resolved-finding-count:
33
+ description: Number of findings resolved against the Git base tree
32
34
  outcome:
33
35
  description: Whether the configured failure policy passed
34
36
  finding-count:
@@ -1,5 +1,5 @@
1
1
  {
2
- "verifiedAt": "2026-10-04",
2
+ "verifiedAt": "2026-10-14",
3
3
  "source": "https://shopify.dev/docs/api/usage/versioning",
4
4
  "versions": [
5
5
  {
@@ -24,7 +24,7 @@
24
24
  "version": "2025-10",
25
25
  "releaseDate": "2025-10-01",
26
26
  "accessibleUntil": "2026-10-16T15:00:00Z",
27
- "status": "unsupported"
27
+ "status": "stable"
28
28
  },
29
29
  {
30
30
  "version": "2026-01",