publish: land rich submissions on the catalogue from their live R2 bundles#84
Merged
Conversation
…ndles Rich submissions (backend/methods spec, no pre-built .bundle pointer) were merged into submissions/ but never reached catalogue.json: publish-submission.sh either failed (missing-bundle) or, after the recent fix, exited 0 silently — so five apps merged since ~Jul 7 (mysql, orthogonal 0.1.1, didit, insforge, tldr) have bundles live on R2 but no catalogue entry. Close the last mile. For a rich submission whose per-platform bundles are already on R2, scripts/publish-rich-from-r2.sh derives the full catalogue entry (per-platform bundle_url + sha256 + size, publisher pin from the primary bundle's signed manifest, a v2 metadata.json store page synthesised from submission.json or reused if already authored), re-signs catalogue.json with CATALOG_SIGN_KEY (the CI secret / VM key — signing stays where the key lives), and opens the catalogue PR on pilotprotocol. publish-submission.sh now delegates the rich branch to it instead of no-op'ing. If NO bundle is on R2 yet (e.g. an app that was merged but never built), it now FAILS LOUDLY (red check + ::error:: annotation + job summary) naming the app and the exact re-run command, instead of silently exiting 0. Run the backlog via: gh workflow run publish-on-merge.yml -f submission=submissions/<id> Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
af1d016 to
2ede486
Compare
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.
Problem
Rich submissions (backend/methods spec, no pre-built
.bundlepointer) get merged intosubmissions/but never reachcatalogue/catalogue.json.publish-on-merge.yml→publish-submission.sheither failed (old code tried to treat them as pointers:missing bundle .../null) or, after the recent fix, exited 0 silently. Result: five apps merged since ~Jul 7 have bundles live on R2 but no catalogue entry:io.pilot.mysql9.7.1,io.pilot.orthogonal0.1.1 (bump; catalogue pins 0.1.0),io.pilot.didit1.0.0,io.pilot.insforge1.0.0,io.pilot.tldr1.13.1.Fix
scripts/publish-rich-from-r2.sh: for a rich submission whose per-platform bundles are already on R2, derive the full catalogue entry — per-platformbundle_url/bundle_sha256/size (by fetching each artifact), thepublisherpin from the primary bundle's signed manifest, and a v2metadata.jsonstore page (synthesised fromsubmission.json, or reused if one is already authored, e.g. orthogonal). It then re-signscatalogue.jsonwithCATALOG_SIGN_KEY(the existing CI secret / VM key — signing stays where the key lives) and opens the catalogue PR onpilotprotocol.publish-submission.shnow delegates its rich branch here instead of no-op'ing.If no bundle is on R2 yet, it now fails loudly (red check +
::error::annotation + job-summary line) naming the app and the exact re-run command — no more silent no-op.Backlog
After merge, publish the five stranded apps with:
Validated locally in
DRY_RUN=1against the live prod R2 bucket for all five (correct per-platform shas, per-app publisher pins) and the loud-fail path.🤖 Generated with Claude Code