Skip to content

ingest: push runs straight to main, carry s3 provenance - #32

Merged
marwen-abid merged 2 commits into
mainfrom
s3-ingest-push-main
Aug 12, 2026
Merged

marwen-abid merged 2 commits into
mainfrom
s3-ingest-push-main

Conversation

@marwen-abid

Copy link
Copy Markdown
Collaborator

Why

stellar-rpc's bench-campaign workflow (stellar/stellar-rpc#921) now ingests a passing campaign's bundle itself, and the pipeline is S3 end-to-end. Runs should land on the live site directly instead of arriving as reviewable run/<id> PRs.

What changed

  • converter: --source-uri records campaign.source_uri (s3:// or gs://; additive, schema stays v1). --source-gcs remains for old runs.
  • viewer: the Source data / Raw results links render an S3 or GCS console URL by scheme, preferring source_uri.
  • ingest.sh: new --push-main mode — requires HEAD at origin/main, converts, gates on make test + make smoke, commits on main, pushes (the push is the Pages deploy), prints viewer: <url>. --local is now the default mode; the push+PR mode is removed.
  • s3 bundles now carry provenance (previously dropped on purpose, which would have failed the smoke test on the first s3-ingested run).
  • Deleted the never-provisioned GCS/WIF ingest.yml; README/SCHEMA/Makefile updated (URI= var).

Testing

78 converter tests + 330 viewer smoke checks green; shellcheck clean; dry-runs exercised for a remote s3 URI and a fixture bundle.

Notes

  • Must merge before the stellar-rpc notify job can ingest (it clones this repo's main).
  • The push from CI authenticates with a write deploy key (BENCHMARKS_DEPLOY_KEY secret on stellar/stellar-rpc, to be provisioned).
  • Full GCS retirement (runner gs publish path, packs-gs, test defaults, docs) is a separate follow-up.

🤖 Generated with Claude Code

The campaign pipeline is S3-end-to-end now, and runs no longer arrive as
reviewable PRs: stellar-rpc's bench-campaign.yml ingests a passing
campaign's bundle itself and needs a direct path to the live site.

- converter: --source-uri records campaign.source_uri (s3:// or gs://);
  --source-gcs stays for old runs.
- viewer: the Source data / Raw results links render an S3 or GCS console
  URL by scheme, preferring source_uri.
- ingest.sh: --push-main converts, gates on make test + make smoke,
  commits on HEAD (must be at origin/main), pushes to main, and prints
  the viewer URL. --local becomes the default mode; the push+PR mode and
  the never-provisioned GCS WIF workflow (ingest.yml) are gone.
- s3:// bundles now carry provenance; the smoke test accepts both schemes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 12, 2026 02:22
@github-actions

github-actions Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-12 02:43 UTC

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request updates the benchmark ingest pipeline to support S3 end-to-end provenance and enables CI to publish successful campaign runs directly to main (deploying Pages immediately), while keeping local ingestion as the default safe workflow.

Changes:

  • Add campaign.source_uri (S3 or GCS) as preferred provenance, with viewer links rendering to the appropriate cloud console URL by scheme.
  • Introduce scripts/ingest.sh --push-main to gate on make test + make smoke, commit on main, and push/deploy directly; remove the old push+PR mode and delete the unused ingest workflow.
  • Update docs/tests/Makefile to reflect the new URI/provenance and ingest flow.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/smoke/smoke.mjs Updates smoke expectations to accept s3:// and gs:// provenance in raw-results text.
scripts/ingest.sh Defaults to --local; adds --push-main mode with origin/main safety rails, test gating, and direct push to main.
SCHEMA.md Documents new optional campaign.source_uri while keeping legacy source_gcs.
README.md Updates ingest documentation for S3 provenance and the automated --push-main flow.
Makefile Adds URI= support for --source-uri and updates ingest help text to match new modes.
docs/summary.js Renders Source/Raw links for either scheme via a new bucketLink helper.
docs/app.js Renders provenance link in the viewer masthead via scheme-aware bucketLink.
converter/tests/test_phase.py Extends test harness args to include source_uri.
converter/tests/test_golden.py Extends test harness args to include source_uri.
converter/tests/test_campaign.py Adds coverage ensuring source_uri is recorded and doesn’t implicitly set source_gcs.
converter/convert.py Adds --source-uri CLI flag and writes campaign.source_uri in output JSON.
.github/workflows/ingest.yml Removes the never-provisioned GCS/WIF ingest workflow.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread docs/summary.js
Comment thread docs/app.js
The S3 console URL interpolated the bucket and key prefix straight into
the query string, so a key holding #, ?, & or a space would have changed
what the link points at (esc() escapes HTML, not URLs). Encode both, and
the gs:// path too, keeping the "/" separators literal so every real
bundle URI still produces the same link it did before.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@marwen-abid
marwen-abid merged commit 0fc39fb into main Aug 12, 2026
9 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