shopify-upgrade-guard 0.2.2 → 0.2.3

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
@@ -14,6 +14,8 @@ Shopify Upgrade Guard is an offline, evidence-backed CLI and GitHub Action for S
14
14
 
15
15
  > Unofficial open-source developer tooling. Not affiliated with, endorsed by, or certified by Shopify.
16
16
 
17
+ Part of the **RexCode Shopify developer tools** suite. Requires Node.js 20 or later for the CLI. [Releases](https://github.com/efegokdemir/shopify-upgrade-guard/releases) · [npm](https://www.npmjs.com/package/shopify-upgrade-guard) · [Marketplace](https://github.com/marketplace/actions/shopify-upgrade-guard)
18
+
17
19
  ## Quick start
18
20
 
19
21
  Run it without installing anything globally:
@@ -58,16 +60,19 @@ jobs:
58
60
  upgrade-guard:
59
61
  runs-on: ubuntu-latest
60
62
  steps:
61
- - uses: actions/checkout@v4
63
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
64
+ with:
65
+ fetch-depth: 0
66
+ persist-credentials: false
62
67
 
63
- - uses: efegokdemir/shopify-upgrade-guard@05221e7582b701b5399b4f27d35ed92257f5ef0c # v0.2.1
68
+ - uses: efegokdemir/shopify-upgrade-guard@v0.2.3 # current patch release; resolve to a SHA below
64
69
  with:
65
70
  target: 2026-10
66
71
  fail-on: warning
67
72
  fail-on-new: 'true'
68
73
  ```
69
74
 
70
- For convenience, workflows may use the movable minor release alias `efegokdemir/shopify-upgrade-guard@v0.2`. For high-assurance production workflows, pin the full reviewed commit SHA shown above; minor aliases are not immutable.
75
+ For convenience, workflows may use the movable minor release alias `efegokdemir/shopify-upgrade-guard@v0.2`. For high-assurance production workflows, resolve the current patch release to a reviewed full commit SHA; minor aliases are not immutable.
71
76
 
72
77
  ### Action inputs
73
78
 
@@ -86,7 +91,7 @@ The Action is bundled and runs on the current GitHub `node24` JavaScript Action
86
91
 
87
92
  ## What it catches today
88
93
 
89
- The rule pack is intentionally small and high-precision.
94
+ The rule pack is intentionally focused. Existing lexical checks report review signals; the `automaticDiscounts` removal check parses literal GraphQL root selections.
90
95
 
91
96
  | Rule | Detects | Evidence |
92
97
  | --- | --- | --- |
@@ -98,7 +103,8 @@ The rule pack is intentionally small and high-precision.
98
103
  | `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) |
99
104
  | `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) |
100
105
  | `UG-ADMIN-001` | Legacy Admin GraphQL `priceRule` usage | [2026-10 release notes](https://shopify.dev/release-notes/2026-10) |
101
- | `UG-SCRIPT-001` | Script Tag create/update usage | [Script Tag deprecation](https://shopify.dev/changelog/online-store-script-tags-deprecation) |
106
+ | `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) |
107
+ | `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) |
102
108
 
103
109
  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.
104
110
 
@@ -125,7 +131,7 @@ npx shopify-upgrade-guard scan --target 2026-10 --format json
125
131
  npx shopify-upgrade-guard scan --target 2026-10 --format sarif
126
132
 
127
133
  # Fail only when the PR introduces new warning-or-higher findings
128
- npx shopify-upgrade-guard scan --target 2026-10 --fail-on warning --fail-on-new
134
+ npx shopify-upgrade-guard scan --target 2026-10 --fail-on warning --fail-on-new --base-ref origin/main
129
135
  ```
130
136
 
131
137
  Exit codes: `0` means the scan completed and policy passed; `1` means active findings exceeded the configured policy; `2` means the scanner could not complete.
@@ -141,6 +147,10 @@ npx shopify-upgrade-guard baseline check
141
147
 
142
148
  Baselined findings remain reviewable while new fingerprints stay actionable.
143
149
 
150
+ `--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.
151
+
152
+ 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.
153
+
144
154
  ## Configuration
145
155
 
146
156
  Commit `.upgradeguard.json` to set repository defaults:
@@ -178,8 +188,11 @@ Building or maintaining Shopify apps?
178
188
 
179
189
  - **[ChangeGuard](https://github.com/efegokdemir/shopify-app-changeguard)** — Review meaningful `shopify.app*.toml` configuration changes before they reach production.
180
190
  - **[Shopify Scope Guard](https://github.com/efegokdemir/shopify-scope-guard)** — Audit whether declared Shopify permissions are supported by offline code evidence.
191
+ - **[Shopify App Review Guard](https://github.com/efegokdemir/shopify-app-review-guard)** — Run deterministic preflight checks for Shopify App Store and production readiness.
192
+
193
+ GitHub Marketplace: [Shopify Upgrade Guard](https://github.com/marketplace/actions/shopify-upgrade-guard)
181
194
 
182
- Both tools are offline, open-source, and require no Shopify credentials.
195
+ All four tools run offline and require no Shopify credentials.
183
196
 
184
197
  ## Contributing
185
198
 
@@ -204,3 +217,15 @@ See [ROADMAP.md](ROADMAP.md).
204
217
  ## License
205
218
 
206
219
  MIT — see [LICENSE](LICENSE).
220
+
221
+ ## Immutable SHA usage
222
+
223
+ Resolve the release commit, review it, and replace `@v0.2.3` in the Action example with that full SHA:
224
+
225
+ ```bash
226
+ gh api repos/efegokdemir/shopify-upgrade-guard/git/ref/tags/v0.2.3 --jq .object.sha
227
+ ```
228
+
229
+ Published patch tags are retained; existing minor aliases are movable. A reviewed full commit SHA is the immutable execution reference.
230
+
231
+ The Action `base-ref` input selects an explicit Git comparison base. With `fail-on-new: true`, pull-request events default to `origin/<base branch>`; other events must supply `base-ref`. Ordinary scans do not infer a comparison from GitHub environment variables.
package/action.yml CHANGED
@@ -16,6 +16,9 @@ inputs:
16
16
  description: Apply fail-on only to findings introduced by the pull request
17
17
  required: false
18
18
  default: 'false'
19
+ base-ref:
20
+ description: Git base reference for new-only comparison; defaults to origin/PR-base on pull requests
21
+ required: false
19
22
  path:
20
23
  description: Repository path to scan
21
24
  required: false
@@ -1,14 +1,60 @@
1
1
  {
2
- "verifiedAt": "2026-10-01",
2
+ "verifiedAt": "2026-10-04",
3
3
  "source": "https://shopify.dev/docs/api/usage/versioning",
4
4
  "versions": [
5
- { "version": "2025-01", "releaseDate": "2025-01-01", "accessibleUntil": "2026-01-16T15:00:00Z", "status": "unsupported" },
6
- { "version": "2025-04", "releaseDate": "2025-04-01", "accessibleUntil": "2026-04-16T15:00:00Z", "status": "unsupported" },
7
- { "version": "2025-07", "releaseDate": "2025-07-01", "accessibleUntil": "2026-07-16T15:00:00Z", "status": "unsupported" },
8
- { "version": "2025-10", "releaseDate": "2025-10-01", "accessibleUntil": "2026-10-16T15:00:00Z", "status": "stable" },
9
- { "version": "2026-01", "releaseDate": "2026-01-01", "accessibleUntil": "2027-01-16T15:00:00Z", "status": "stable" },
10
- { "version": "2026-04", "releaseDate": "2026-04-01", "accessibleUntil": "2027-04-16T15:00:00Z", "status": "stable" },
11
- { "version": "2026-07", "releaseDate": "2026-07-01", "accessibleUntil": "2027-07-16T15:00:00Z", "status": "stable" },
12
- { "version": "2026-10", "releaseDate": "2026-10-01", "accessibleUntil": "2027-10-16T15:00:00Z", "status": "latest-stable" }
5
+ {
6
+ "version": "2025-01",
7
+ "releaseDate": "2025-01-01",
8
+ "accessibleUntil": "2026-01-16T15:00:00Z",
9
+ "status": "unsupported"
10
+ },
11
+ {
12
+ "version": "2025-04",
13
+ "releaseDate": "2025-04-01",
14
+ "accessibleUntil": "2026-04-16T15:00:00Z",
15
+ "status": "unsupported"
16
+ },
17
+ {
18
+ "version": "2025-07",
19
+ "releaseDate": "2025-07-01",
20
+ "accessibleUntil": "2026-07-16T15:00:00Z",
21
+ "status": "unsupported"
22
+ },
23
+ {
24
+ "version": "2025-10",
25
+ "releaseDate": "2025-10-01",
26
+ "accessibleUntil": "2026-10-16T15:00:00Z",
27
+ "status": "unsupported"
28
+ },
29
+ {
30
+ "version": "2026-01",
31
+ "releaseDate": "2026-01-01",
32
+ "accessibleUntil": "2027-01-16T15:00:00Z",
33
+ "status": "stable"
34
+ },
35
+ {
36
+ "version": "2026-04",
37
+ "releaseDate": "2026-04-01",
38
+ "accessibleUntil": "2027-04-16T15:00:00Z",
39
+ "status": "stable"
40
+ },
41
+ {
42
+ "version": "2026-07",
43
+ "releaseDate": "2026-07-01",
44
+ "accessibleUntil": "2027-07-16T15:00:00Z",
45
+ "status": "stable"
46
+ },
47
+ {
48
+ "version": "2026-10",
49
+ "releaseDate": "2026-10-01",
50
+ "accessibleUntil": "2027-10-16T15:00:00Z",
51
+ "status": "latest-stable"
52
+ },
53
+ {
54
+ "version": "2027-01",
55
+ "releaseDate": "2027-01-01",
56
+ "accessibleUntil": "2028-01-16T15:00:00Z",
57
+ "status": "release-candidate"
58
+ }
13
59
  ]
14
60
  }