The release branch on origin was correct the whole time. CI's fresh-build step then
ran stamp-counts, which wrote .plugins[0].version = $v into the
checkout — and position 0 is the pinned stable channel. The channel test failed the
pin/version agreement it exists to guard, on content the build itself had just broken.
origin ork 9.8.0 / v9.8.0 ork-alpha 10.0.0-alpha correct CI build stamp .plugins[0] = 10.0.0-alpha corrupts pin CI test 'ork' 10.0.0-alpha does not match pin v9.8.0 honest gate, broken input
Same defect as the validate-counts reader fixed in #3341, one layer up: a WRITER addressing entries by position. Readers misreport; writers corrupt.
The marketplace below starts as the release branch actually looked. Stamp
10.0.0-alpha with each writer and watch what the channel test would say.
| entry | ref | version | pin check |
|---|
jq '.version = $v
| (if any(.plugins[]; .source.ref? == "main")
then (.plugins[] | select(.source.ref? == "main") | .version) |= $v
else .plugins[0].version = $v
end)'
| file | was | now |
|---|---|---|
| stamp-counts.sh | writes plugins[0] | writes ref==main entry |
| test-sync-versions.sh | reads plugins[0]; bare X.Y.Z CLAUDE capture | reads tracking entry; prerelease-aware |
| test-marketplace-ordering.sh | asserts ALL entries equal | asserts tracking == top-level |
The all-equal assertion only ever passed CI because the corrupting stamp made the entries equal. Two bugs standing on each other, reading as green.
Bonus find while verifying: the sandbox build used
tar -cf - | tar -x; the extractor exits on a complete archive, the producer's
last write takes EPIPE, and pipefail fails a test whose sandbox held all 6503/6503 files.
Now a temp tar file. Same EPIPE family as this morning's grep -q and here-string fixes.
RED old stamp on that tree ork -> 10.0.0-alpha (pin v9.8.0)
GREEN new stamp ork 9.8.0 kept · ork-alpha stamped
alpha-channel 8/8 · ordering 0 · validate-counts PASSED
sync-versions round-trip: all green, live tree untouched