Commit b024403
Fix manual-run tag propagation, and make the human gate real
FOUR FINDINGS FROM REVIEW OF d0fa235, ALL CONFIRMED AGAINST THE FILE.
1. BLOCKING. `github-release` used `github.ref_name` for the release tag and
title. On a workflow_dispatch run that is the BRANCH the workflow was launched
from, not the tag typed into the form - so a manual release of v0.6.0 packaged
0.6.0 correctly and then created the release against `main`. The build job
already resolves and validates the tag; everything downstream now uses that
answer instead of re-deriving a different one from the context. The manual input
is also validated against ^v[0-9]+\.[0-9]+\.[0-9]+(-.+)?$ before anything acts
on it, because a typo used to travel silently into a checkout and a filename.
2. Packaging discarded the determinism it had just established. `npm ci`
installs the lockfile's vsce - 3.6.0 - and the next line ran
`npm install -g @vscode/vsce`, fetching whatever `latest` was that morning, in
the step that builds the artifact users install. Meanwhile the publish step was
being scrupulously pinned. Now `npm exec -- vsce package`, so the lockfile
governs the artifact and the exact pin covers only authentication and upload.
3. Open VSX was passed `--pre-release` for no effect. ovsx warns "Ignoring
option '--pre-release' for prepackaged extension" and continues: the channel is
in the VSIX manifest from package time. The flag implied the upload decided
something it does not. Removed, documented, and ovsx pinned to 1.1.1.
4. The `environment: marketplace` comment still explained Entra federated
credential subjects, from the discarded design. Removed before it sent somebody
back into the Klein bottle in six months.
THE HUMAN GATE IS NOW THE ENVIRONMENT, NOT THE DRAFT.
The guide said nothing reaches users until you edit the draft and press publish.
That stops being true the moment MARKETPLACE_PUBLISH is enabled - publishing the
GitHub draft and publishing to the Marketplace are independent acts, and only
the first was ever gated by a human.
So `marketplace` becomes a protected environment requiring a reviewer. A
protected environment does not pause a running job, it stops the job STARTING,
which means the OIDC token is never minted: the capability to publish does not
exist until a person approves it. That is a better property than a job that can
always publish and is trusted not to.
The variable and the approval do different jobs and both stay. MARKETPLACE_PUBLISH
decides whether the job is reachable at all - unset, it is skipped, so testing
with real tags raises no approval prompts to dismiss. The approval decides
whether a reachable job runs.
Documented too: do not enable "prevent self-review" on that environment. With
one maintainer it deadlocks the pipeline permanently.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent d0fa235 commit b024403
3 files changed
Lines changed: 84 additions & 17 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
| 67 | + | |
67 | 68 | | |
68 | 69 | | |
69 | 70 | | |
| |||
110 | 111 | | |
111 | 112 | | |
112 | 113 | | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
113 | 122 | | |
114 | 123 | | |
115 | 124 | | |
| |||
183 | 192 | | |
184 | 193 | | |
185 | 194 | | |
186 | | - | |
187 | | - | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
188 | 201 | | |
189 | 202 | | |
190 | 203 | | |
| |||
220 | 233 | | |
221 | 234 | | |
222 | 235 | | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
223 | 242 | | |
224 | 243 | | |
225 | 244 | | |
226 | | - | |
227 | | - | |
| 245 | + | |
| 246 | + | |
228 | 247 | | |
229 | 248 | | |
230 | 249 | | |
| |||
254 | 273 | | |
255 | 274 | | |
256 | 275 | | |
257 | | - | |
| 276 | + | |
258 | 277 | | |
259 | | - | |
260 | | - | |
261 | | - | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
262 | 290 | | |
263 | 291 | | |
264 | 292 | | |
| |||
315 | 343 | | |
316 | 344 | | |
317 | 345 | | |
| 346 | + | |
318 | 347 | | |
319 | 348 | | |
320 | 349 | | |
321 | 350 | | |
322 | 351 | | |
323 | | - | |
324 | | - | |
325 | 352 | | |
326 | | - | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
327 | 357 | | |
328 | 358 | | |
329 | 359 | | |
| |||
335 | 365 | | |
336 | 366 | | |
337 | 367 | | |
338 | | - | |
| 368 | + | |
339 | 369 | | |
340 | 370 | | |
341 | 371 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
14 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
15 | 17 | | |
16 | 18 | | |
17 | 19 | | |
| |||
88 | 90 | | |
89 | 91 | | |
90 | 92 | | |
91 | | - | |
| 93 | + | |
92 | 94 | | |
93 | 95 | | |
94 | 96 | | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
95 | 127 | | |
96 | 128 | | |
97 | 129 | | |
| |||
141 | 173 | | |
142 | 174 | | |
143 | 175 | | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
144 | 181 | | |
145 | 182 | | |
146 | 183 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
132 | | - | |
| 132 | + | |
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
| |||
0 commit comments