Quick take
Your publish job is green. That proves you sent the file. It does not prove anyone can install it.
Every publish step I have ever written ended at the upload. The API accepted the request, the exit code was 0, the workflow went green, and I went to lunch.
A marketplace can accept an upload and then reject it in review, hold it in a queue, or list it under a version nobody sees. All of that happens after your job has already reported success.
Ours did exactly that for three weeks. We found out because a user asked why the version was so old.
The fix is one request at the end of the same job — ask the public API what the world can actually see, and fail if it disagrees with you:
PUBLISHED=$(curl -sf "$REGISTRY_API/my-package" | jq -r .version)
[ "$PUBLISHED" = "$VERSION" ] || {
echo "uploaded $VERSION, world still sees $PUBLISHED"
exit 1
}
Enter fullscreen mode Exit fullscreen mode
Note the direction. You are not asking your own pipeline whether it succeeded — it already told you, and it was wrong. You are asking a stranger.
The long version — three weeks, two marketplaces, and the wording that made the job lie — is here: Your GitHub Actions run is green. Nobody can install your VS Code extension.
I build cachly — persistent memory for AI coding assistants, over MCP. Your assistant re-reads your codebase every morning. It does not have to.
Free tier, hosted in the EU: cachly.dev