Skip to content

feat: external team submissions pipeline#197

Closed
RaidedCluster wants to merge 1 commit into
forecastingresearch:mainfrom
RaidedCluster:johan/external-submissions
Closed

feat: external team submissions pipeline#197
RaidedCluster wants to merge 1 commit into
forecastingresearch:mainfrom
RaidedCluster:johan/external-submissions

Conversation

@RaidedCluster

Copy link
Copy Markdown
Collaborator

Summary

Adds the full external team submission pipeline under src/external-submissions/:

  • onboard-team (HTTP) — register/remove teams; creates GCS folder, grants per-folder IAM, sends welcome email
  • on-submission (Eventarc/GCS trigger) — fires on every upload; validates file, emails team result within seconds
  • validate-forecast (HTTP) — standalone validator teams can call before submitting
  • post-round (HTTP + Cloud Scheduler daily) — copies valid submissions to FORECAST_SETS_BUCKET, moves invalid to interstitial, emails teams + FRI digest
  • send-reminders (HTTP + Cloud Scheduler bi-weekly Sundays, paused) — reminder emails to all active teams on round due dates

Infrastructure

  • setup_permissions.sh — one-shot IAM setup for the submissions service account
  • scheduler/deploy.sh — Cloud Scheduler jobs for post-round and reminders
  • Makefile targets: deploy-submissions, setup-submissions-permissions, deploy-submissions-scheduler
  • variables.example.mk — new vars for submissions buckets, SA, SMTP

Conventions

Aligned with repo conventions: uses CLOUD_PROJECT, FORECAST_SETS_BUCKET, BUILD_ENV.

Documentation

Full setup guide and runbook: PIPELINE.md

Test plan

  • Sandbox environment tested with automated test suite (31 scenarios covering registration, uploads, validation, post-round, edge cases)
  • All 5 functions deployed and live on forecastbench-dev
  • QA pass with real team data pending Houtan's review

🤖 Generated with Claude Code

Adds the full ForecastBench external team submission pipeline:
- `onboard-team`: register/remove teams, GCS folder + IAM setup, welcome email
- `on-submission`: Eventarc-triggered validator, emails team on every upload
- `validate-forecast`: standalone file validator (HTTP)
- `post-round`: copies valid submissions to FORECAST_SETS_BUCKET, emails teams + FRI digest
- `send-reminders`: reminder emails to all active teams on round due dates

Infrastructure:
- `functions/setup_permissions.sh`: one-shot IAM setup for the submissions SA
- `scheduler/deploy.sh`: Cloud Scheduler jobs for post-round (daily) and reminders (bi-weekly)
- Makefile targets: deploy-submissions, setup-submissions-permissions, deploy-submissions-scheduler
- variables.example.mk: new vars for submissions buckets, SA, SMTP

Aligns with repo conventions: uses CLOUD_PROJECT, FORECAST_SETS_BUCKET, BUILD_ENV.
Documentation: src/external-submissions/PIPELINE.md

Closes #<PR>

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@RaidedCluster

Copy link
Copy Markdown
Collaborator Author

Opening on fork instead — not ready for upstream yet.

@RaidedCluster RaidedCluster deleted the johan/external-submissions branch June 4, 2026 10:15
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.

1 participant