shopify-upgrade-guard 0.2.5 → 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@7a261bfb68bb931250e553f22d7c96142490a35a # v0.2.4
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,13 +88,15 @@ 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
- The rule pack is intentionally focused. Existing lexical checks report review signals; the `automaticDiscounts` removal check parses literal GraphQL root selections.
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.
98
100
 
99
101
  | Rule | Detects | Evidence |
100
102
  | --- | --- | --- |
@@ -107,6 +109,12 @@ The rule pack is intentionally focused. Existing lexical checks report review si
107
109
  | `UG-POS-001` | Removed POS `session.currentSession.staffMemberId` usage | [Shopify changelog](https://shopify.dev/changelog/removed-session-currentsession-staffmemberid-from-pos-ui-extensions-2026-10) |
108
110
  | `UG-ADMIN-001` | Legacy Admin GraphQL `priceRule` usage | [2026-10 release notes](https://shopify.dev/release-notes/2026-10) |
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) |
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) |
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) |
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) |
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) |
110
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) |
111
119
 
112
120
  Supported inventory surfaces include Admin REST, Admin GraphQL, Checkout UI extensions, Customer Account UI extensions, POS UI extensions, Functions, Shopify app TOML, and recognized Shopify client configuration.
@@ -150,9 +158,11 @@ npx shopify-upgrade-guard baseline check
150
158
 
151
159
  Baselined findings remain reviewable while new fingerprints stay actionable.
152
160
 
153
- `--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.
154
164
 
155
- 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).
156
166
 
157
167
  ## Configuration
158
168
 
@@ -193,6 +203,8 @@ Building or maintaining Shopify apps?
193
203
  - **[Shopify Scope Guard](https://github.com/RexCode-Digital/shopify-scope-guard)** — Audit whether declared Shopify permissions are supported by offline code evidence.
194
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.
195
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
+
196
208
  GitHub Marketplace: [Shopify Upgrade Guard](https://github.com/marketplace/actions/shopify-upgrade-guard)
197
209
 
198
210
  All four tools run offline and require no Shopify credentials.
@@ -213,7 +225,7 @@ Start with [the contribution guide](CONTRIBUTING.md) or browse the [open issues]
213
225
 
214
226
  ## Roadmap
215
227
 
216
- 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).
217
229
 
218
230
  See [ROADMAP.md](ROADMAP.md).
219
231
 
@@ -223,10 +235,10 @@ MIT — see [LICENSE](LICENSE).
223
235
 
224
236
  ## Immutable SHA usage
225
237
 
226
- 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:
227
239
 
228
240
  ```bash
229
- gh api repos/RexCode-Digital/shopify-upgrade-guard/git/ref/tags/v0.2.3 --jq .object.sha
241
+ git fetch --tags origin && git rev-parse 'v0.2.6^{commit}'
230
242
  ```
231
243
 
232
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",