---
title: "Release Train"
slug: release-train
section: Delivery
status: active
description: "This is a standalone live board, not a doc article."
last-updated: 2026-10-07
---

# Release Train

## Release Train (Static Summary)

This is a standalone live board, not a doc article. It renders **live GitHub data** from `/api/release-train`; the markdown variant cannot include the live values. View it in the browser for current contents.

### What it shows

- One panel per release name (for example `release/teach`), discovered dynamically from every `release/*` branch across the sandbox-model repos: BackOfficePrototype (Globus BackOffice), PPPToo (Applicant Portal), HostPortalPrototype (Host Portal) and WildPacksApplicationForm.
- Inside each panel, one card per repo that has something to ship: commits ahead/behind `main`, head SHA, the merged pull requests whose commits are on the release but not in `main` (title, PR number, Asana ticket GID parsed from the `[GID]` prefix, author, merge time, +/- lines), the open PRs waiting to board, and the promotion PR if any. Repos with nothing to ship are listed in a one-line strip; a repo without the branch shows "No release open".
- Car states: loaded, empty (same as prod), promotion open, shipped to prod, no release open, could not read GitHub.

### Data source

GitHub GraphQL (`main` ref `compare(headRef: release/...)` plus `pullRequests(baseRefName)` / `pullRequests(headRefName, baseRefName: main)`), read with the `alliance-platform-bot` token the nexus-hub service holds. 502/503/504 retried; a failing repo keeps its last good data (marked stale). Cached 60 s server-side; the page refetches every 2 minutes and on Refresh.

Nexus

Release Train

Loading from GitHub / GitHub unreachable / Refreshing / Live from GitHub

How to read

Refresh
