shopify-upgrade-guard 0.2.6 → 0.4.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. This source version requires Node.js 22 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)
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.
@@ -100,21 +102,26 @@ The rule pack is intentionally focused. Literal GraphQL checks parse supported d
100
102
  | --- | --- | --- |
101
103
  | `UG-CHECKOUT-001` | `useBuyerJourneyIntercept` / `buyerJourney.intercept` | [Shopify changelog](https://shopify.dev/changelog/deprecating-the-usebuyerjourneyintercept-api-on-checkout-ui-extensions) |
102
104
  | `UG-CHECKOUT-002` | Checkout `block_progress` capability | [Shopify changelog](https://shopify.dev/changelog/deprecating-the-usebuyerjourneyintercept-api-on-checkout-ui-extensions) |
105
+ | `UG-EXT-001` | Missing `owner_type` in eligible Checkout or Customer Account UI extension metafield declarations | [Shopify changelog](https://shopify.dev/changelog/posts/metafield-owner-types-required-for-checkout-and-customer-account-ui-extensions) |
103
106
  | `UG-REST-001` | Legacy Admin REST usage | [REST Admin API](https://shopify.dev/docs/api/admin-rest) |
104
107
  | `UG-VERSION-001` | Unsupported or target-retiring API versions | [API versioning](https://shopify.dev/docs/api/usage/versioning) |
105
108
  | `UG-VERSION-002` | Supported versions older than the latest stable version | [API versioning](https://shopify.dev/docs/api/usage/versioning) |
106
109
  | `UG-CUSTOMER-001` | Customer Account checkout removals relevant to 2026-10 | [Shopify changelog](https://shopify.dev/changelog/customer-account-api-last-incomplete-checkout-and-checkout-types-removed) |
107
110
  | `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
111
  | `UG-ADMIN-001` | Legacy Admin GraphQL `priceRule` usage | [2026-10 release notes](https://shopify.dev/release-notes/2026-10) |
109
- | `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-002` | Literal GraphQL `automaticDiscounts` root field and removed `DiscountAutomaticConnection` / `DiscountAutomaticEdge` types | [Official removal](https://shopify.dev/changelog/posts/automaticdiscounts-query-is-removed-in-api-version-2027-01) |
110
113
  | `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
114
  | `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) |
115
+ | `UG-ADMIN-006` | Literal `marketCurrencySettingsUpdate` Admin mutation removed in 2027-01 | [Official removal](https://shopify.dev/changelog/posts/removing-marketcurrencysettingsupdate-mutation) |
116
+ | `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
117
  | `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
118
  | `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
119
  | `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) |
115
120
 
116
121
  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.
117
122
 
123
+ See the [2027-01 migration guide](docs/2027-01-migration.md) for the extension `owner_type` requirement, target-version behavior, evidence, and limits. The rule is in the Unreleased change set; existing npm packages and Action tags do not gain it until a release containing this branch is published.
124
+
118
125
  ## CLI
119
126
 
120
127
  ```text
@@ -154,9 +161,11 @@ npx shopify-upgrade-guard baseline check
154
161
 
155
162
  Baselined findings remain reviewable while new fingerprints stay actionable.
156
163
 
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.
164
+ `--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.
158
165
 
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.
166
+ The bundled snapshot, verified 21 October 2026, lists `2026-10` as the latest stable API and `2027-01` as a release candidate for development testing. Shopify lists `2027-01` as a release candidate until 1 January 2027, when it becomes stable. Version status uses Shopify's exact `accessibleUntil` timestamp; `2025-10` became unsupported on 16 October 2026 at 15:00 UTC. Future version names do not imply verified rule coverage.
167
+
168
+ 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
169
 
161
170
  ## Configuration
162
171
 
@@ -197,6 +206,8 @@ Building or maintaining Shopify apps?
197
206
  - **[Shopify Scope Guard](https://github.com/RexCode-Digital/shopify-scope-guard)** — Audit whether declared Shopify permissions are supported by offline code evidence.
198
207
  - **[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
208
 
209
+ 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.
210
+
200
211
  GitHub Marketplace: [Shopify Upgrade Guard](https://github.com/marketplace/actions/shopify-upgrade-guard)
201
212
 
202
213
  All four tools run offline and require no Shopify credentials.
@@ -217,7 +228,7 @@ Start with [the contribution guide](CONTRIBUTING.md) or browse the [open issues]
217
228
 
218
229
  ## Roadmap
219
230
 
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.
231
+ 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
232
 
222
233
  See [ROADMAP.md](ROADMAP.md).
223
234
 
@@ -227,10 +238,10 @@ MIT — see [LICENSE](LICENSE).
227
238
 
228
239
  ## Immutable SHA usage
229
240
 
230
- The Action example pins the reviewed v0.2.3 release commit. Verify the release reference with:
241
+ The Action example pins the reviewed v0.2.6 release commit. Verify the release reference with:
231
242
 
232
243
  ```bash
233
- gh api repos/RexCode-Digital/shopify-upgrade-guard/git/ref/tags/v0.2.5 --jq .object.sha
244
+ git fetch --tags origin && git rev-parse 'v0.2.6^{commit}'
234
245
  ```
235
246
 
236
247
  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.
@@ -1,6 +1,6 @@
1
1
  # Third-party notices
2
2
 
3
- The generated GitHub Action bundle `dist/index.js` contains third-party code. Its companion `dist/licenses.txt` is generated by ncc from the bundled dependency graph and carries the full licence texts for bundled modules. The direct GraphQL.js dependency is resolved in `package-lock.json` and is listed below.
3
+ The generated GitHub Action bundle `dist/index.js` contains third-party code. Its companion `dist/licenses.txt` is generated by ncc from the bundled dependency graph and carries the full licence texts for bundled modules. The direct GraphQL.js and TOML parser dependencies are resolved in `package-lock.json` and listed below.
4
4
 
5
5
  ## GraphQL.js
6
6
 
@@ -31,3 +31,25 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
31
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32
32
  SOFTWARE.
33
33
  ```
34
+
35
+ ## @iarna/toml
36
+
37
+ - Upstream: [iarna/iarna-toml](https://github.com/iarna/iarna-toml)
38
+ - Version resolved by this repository: 2.2.5
39
+ - Licence: ISC
40
+
41
+ ```text
42
+ Copyright (c) 2016, Rebecca Turner <me@re-becca.org>
43
+
44
+ Permission to use, copy, modify, and/or distribute this software for any
45
+ purpose with or without fee is hereby granted, provided that the above
46
+ copyright notice and this permission notice appear in all copies.
47
+
48
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
49
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
50
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
51
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
52
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
53
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
54
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
55
+ ```
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-21",
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",