Skip to content

publish: land rich submissions on the catalogue from their live R2 bundles#84

Merged
TeoSlayer merged 1 commit into
mainfrom
fix/publish-rich-from-r2
Jul 13, 2026
Merged

publish: land rich submissions on the catalogue from their live R2 bundles#84
TeoSlayer merged 1 commit into
mainfrom
fix/publish-rich-from-r2

Conversation

@TeoSlayer

Copy link
Copy Markdown
Contributor

Problem

Rich submissions (backend/methods spec, no pre-built .bundle pointer) get merged into submissions/ but never reach catalogue/catalogue.json. publish-on-merge.ymlpublish-submission.sh either 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.mysql 9.7.1, io.pilot.orthogonal 0.1.1 (bump; catalogue pins 0.1.0), io.pilot.didit 1.0.0, io.pilot.insforge 1.0.0, io.pilot.tldr 1.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-platform bundle_url/bundle_sha256/size (by fetching each artifact), the publisher pin from the primary bundle's signed manifest, and a v2 metadata.json store page (synthesised from submission.json, or reused if one is already authored, e.g. orthogonal). It then re-signs catalogue.json with CATALOG_SIGN_KEY (the existing CI secret / VM key — signing stays where the key lives) and opens the catalogue PR on pilotprotocol. publish-submission.sh now 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:

gh workflow run publish-on-merge.yml -f submission=submissions/io.pilot.tldr   # etc.

Validated locally in DRY_RUN=1 against 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

@TeoSlayer TeoSlayer enabled auto-merge (squash) July 13, 2026 12:51
…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>
@TeoSlayer TeoSlayer force-pushed the fix/publish-rich-from-r2 branch from af1d016 to 2ede486 Compare July 13, 2026 12:54
@TeoSlayer TeoSlayer merged commit 2d8b855 into main Jul 13, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants