docs: UPDATING-BUNDLES — the adapter/bundle half of an update - #98
Merged
Conversation
UPDATING.md covers the rules of an update — bump the version, re-sign with the same key, no downgrades. It does not cover producing and publishing the artifacts, and that is where shipping io.pilot.bowmark v1.0.0 (#97) actually spent its time. This writes that half down. The ordering rule leads, because it is the one that strands an update: for a rich submission the catalogue entry is derived from whatever is already on the artifact registry, so the bundles have to be uploaded BEFORE the submission PR merges. Merge first and the PR is green, the catalogue still points at the old version, and the app looks shipped while every user is on the previous release. Also corrects UPDATING.md, which told publishers to run 'make package' to 'rebuild EVERY platform'. It builds one — the host platform — and omits install.json. A publisher following that line ships a single-platform bundle, which is the exact thing PUBLISHING-PLAYBOOK.md says is rejected. Gotchas documented from this update: a submission has nowhere to carry a changelog, so a rich submission publishes 'Released v<version>' unless the notes are supplied separately; a republish reuses the existing store page, which is right for a version bump and wrong for a pivot; managed apps get a <ns>.balance method injected automatically that 403s unless the app carries a credit block; and a retired upstream route fails quietly, since every signature and sha check still passes while only the calls break. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Not a publisher-facing concern, and it belongs in the generator rather than in an update playbook.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
docs/UPDATING-BUNDLES.md, written from shipping io.pilot.bowmark v1.0.0 (#97) end to end.Why
UPDATING.mddocuments the rules of an update — bump the version, re-sign with the same key, no downgrades — and stops there. It says nothing about producing and publishing the artifacts that update actually ships, and that is where the work was. There was no doc to follow for: building all four platforms from a rich submission, when to upload relative to the merge, verifying what the public URL serves rather than what the upload reported, running the new methods against the published artifact on both operating systems, or the broker step when an update changes HTTP routes.The ordering rule leads, because it is the one that strands an update
For a rich submission the catalogue entry is derived from whatever is already live on the artifact registry for that
id@version. Merge with nothing uploaded and the publish job fails loudly — but the submission PR is merged, the catalogue still points at the old version, and the app looks shipped while every user is on the previous release. So: build → verify → upload → verify the URLs → runtime e2e → then merge.It also fixes a line that actively misleads
UPDATING.mdtold publishers:make packagebuilds one platform — the host's — and its tarball omitsinstall.json.PUBLISHING-PLAYBOOK.mdsays so in Step 3 and separately says a single-platform bundle is rejected as "a build-host accident". A publisher following the update doc ships exactly that. Corrected, and pointed at the canonical builder.Gotchas documented, all hit during #97
changelogonSubListingandToConfigdoes not map one, so a rich submission publishes the generatedReleased v<version>placeholder. The Bowmark publisher spotted this themselves and supplied the notes out-of-band; worth writing down so the next one does not have to.POST /v1/oldforPOST /v1/new, a stale allow-list refuses the new method and forwards the retired one to an endpoint that no longer exists. Both directions broken, neither visible in a build or a review gate.Scope
Publisher-facing and deliberately ends at the merge: the catalogue entry and store page are referenced as the downstream steps and left to
PUBLISHING-PLAYBOOK.md. No hosts, credentials, bucket names, registry paths or ops commands — the presigned upload flow already documented inR2-ARTIFACT-REGISTRY.mdis the path publishers are pointed at.Linked from
UPDATING.md,PUBLISHING-PLAYBOOK.mdandCLAUDE.md. Docs only; no code paths touched.