Commit 40f40df
committed
ci: derive the fresh-install version instead of hand-editing it, and document releasing
`ci-fresh-install.yml` carried MCPP_PIN as a hardcoded literal that a maintainer
had to bump on every release. It was never the same thing as the `.xlings.json`
pin it was kept equal to: MCPP_PIN is the version UNDER TEST — always the newest
published release — while `.xlings.json` is the version BOOTSTRAPPED FROM, which
only has to be a released mcpp that can build the current tree.
The workflow already computed the right answer. Its `wait-index` guard queries
the releases API for the newest tag, waits for xim-pkgindex to track it — and
then discards it, while the install jobs used the literal. That gap is exactly
the #265 failure: the guard reported "index tracks 0.0.102" and the jobs
installed 0.0.100 ten seconds later, meeting an index whose floor was 0.0.101.
wait-index now exports the derived version and all four install jobs consume it.
Both properties the literal was protecting hold, and one of them structurally:
explicit version a derived string is as explicit as a literal, so a lagging
runner index still fails loudly with `version not found`
rather than silently testing an older binary
one source the guard and the jobs cannot disagree about which version
is under test, because there is only one value
Deriving happens on every trigger, not just post-release — "the newest published
release" is the version under test on cron and manual runs too. Only the WAIT
stays conditional, since only a post-release run can legitimately race the index.
A non-numeric or empty API result is refused, because `mcpp@` with an empty
version degrades into bare `mcpp` — straight back to "newest in the runner's
index copy".
check_version_pins.sh loses the now-meaningless "both pin sites agree" invariant
and gains a guard against a literal MCPP_PIN reappearing (probe-tested: it fails
when the literal is restored, passes when it is not).
Also adds docs/09-release.md (+ zh), which did not exist. The release process
lived in commit messages and workflow comments only. It documents the two version
groups, what the pipeline automates and what it does not, how to verify a release
without trusting a sha256 sidecar, and the index's CDN propagation lag.
It also corrects 3b1cb6b, which claimed "the index no longer serves .1" and made
the bootstrap bump look mandatory. That diagnosis is wrong — 2026.7.29.1 installs
fine from the current index, which retains all 105 published versions; the real
cause was a stale local index copy. The bump is a useful check (a green round
proves the new release can self-host), not a prerequisite. The one hard rule is
direction: never pin a version that is not yet installable.1 parent 761eeb5 commit 40f40df
6 files changed
Lines changed: 361 additions & 24 deletions
File tree
- .github
- tools
- workflows
- docs
- zh
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
| 107 | + | |
111 | 108 | | |
112 | 109 | | |
113 | | - | |
| 110 | + | |
114 | 111 | | |
115 | 112 | | |
116 | 113 | | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
117 | 130 | | |
118 | 131 | | |
119 | 132 | | |
120 | 133 | | |
121 | 134 | | |
122 | 135 | | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
129 | 141 | | |
130 | 142 | | |
131 | | - | |
132 | | - | |
133 | 143 | | |
134 | 144 | | |
135 | 145 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
44 | 59 | | |
45 | 60 | | |
46 | 61 | | |
| |||
56 | 71 | | |
57 | 72 | | |
58 | 73 | | |
| 74 | + | |
| 75 | + | |
59 | 76 | | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
60 | 94 | | |
61 | 95 | | |
| 96 | + | |
| 97 | + | |
62 | 98 | | |
63 | | - | |
64 | 99 | | |
65 | 100 | | |
66 | 101 | | |
| |||
81 | 116 | | |
82 | 117 | | |
83 | 118 | | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
84 | 122 | | |
85 | 123 | | |
86 | 124 | | |
| |||
217 | 255 | | |
218 | 256 | | |
219 | 257 | | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
220 | 261 | | |
221 | 262 | | |
222 | 263 | | |
| |||
277 | 318 | | |
278 | 319 | | |
279 | 320 | | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
280 | 325 | | |
281 | 326 | | |
282 | 327 | | |
| |||
337 | 382 | | |
338 | 383 | | |
339 | 384 | | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
340 | 389 | | |
341 | 390 | | |
342 | 391 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 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 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
| |||
0 commit comments