You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Document Flex tagging, tag push order, and track-builds behavior.
Align the workspace rule, README, and release guide generator with current go.py and track_builds.py behavior.
Co-authored-by: Cursor <cursoragent@cursor.com>
`robot-stack-infra` is always cloned and pulled for both paths as a reference repo, but is not included in release tables or tagging.
@@ -68,6 +68,58 @@ External alpha/beta use semver prerelease numbering on a fixed base: `v26.6.0-al
68
68
69
69
External tags use a `v` prefix; internal tags use `internal@`.
70
70
71
+
### Flex semver tagging
72
+
73
+
Flex uses **different tag prefixes per repo**. In `just go`, Flex prompts for **Stability: stable/unstable** (not OT-2's alpha/beta/stable). `unstable` means alpha builds.
- **App (`opentrons`):** base `X.Y.Z` comes from the prompted release version. Stable: `ot3@X.Y.Z` if missing, else patch bump. Alpha: increment `ot3@X.Y.Z-alpha.N` from branch tags.
84
+
- **Robot OS (`oe-core`, internal):** base `X.Y.Z` comes from the same prompted version (not from the newest oe-core tag alone). Alpha `N` is **coordinated with the app**: `go` reads the next `ot3@X.Y.Z-alpha.N` from `opentrons` and reuses that `N` for `internal@X.Y.Z-alpha.N`. Stable: `internal@X.Y.Z` if missing, else patch bump.
85
+
- **Firmware (`ot3-firmware`):** next integer above the highest merged channel tag (`internal@vN` or `vN`).
86
+
87
+
### Tag push order
88
+
89
+
Push annotated tags in this order. Dependent stack repos first, app monorepo last.
`go` prints this order at the end of a release run.
97
+
98
+
### Track release builds (`just track-builds`)
99
+
100
+
After pushing the **app** tag, run `just track-builds --path flex|ot2 --tag <app-tag> --wait` (or without `--wait` for a one-shot lookup). `go` prints this command with `--wait` by default.
3. **Robot OS** build in `buildroot` (OT-2) or `oe-core` (Flex)
107
+
108
+
The Rich table also lists matching **key jobs** (deploy, desktop builds, dispatch spawn, robot image build). The **Slack copy block** includes only two links:
**`--wait` behavior:** poll every 15 seconds (default) until App, Kickoff, and Robot OS workflow runs all appear, up to 900 seconds (default). The poll loop only checks for workflow runs (not jobs). After all three runs exist, the script fetches key jobs with retries for transient GitHub 404s on the jobs API. Exit code `2` if any top-level run is still missing.
120
+
121
+
Tag prefix inference when `--path` is omitted: `internal@` → OT-2, `ot3@` → Flex, otherwise Flex.
For internal alpha builds, `go` coordinates oe-core alpha numbers with the next `ot3@X.Y.Z-alpha.N` on `opentrons`. Internal oe-core and app stable tags use the prompted base version; if that exact tag already exists on the branch, `go` suggests a patch bump.
55
+
56
+
### Track release builds
57
+
58
+
After pushing the app tag, locate CI with `just track-builds`:
59
+
60
+
```bash
61
+
just track-builds --path ot2 --tag internal@26.5.2801 --wait
62
+
```
63
+
64
+
The script finds app, kickoff, and robot OS workflow runs and prints a Rich table plus a Slack copy block with two links (`app` and `ot2` or `flex`). With `--wait`, it polls every 15 seconds until all three workflow runs appear (default timeout 15 minutes).
65
+
33
66
## OT-2 calendar semver
34
67
35
68
OT-2 uses semver-shaped versions so electron-updater and robot update checks work. **Internal and external channels use different patch schemes.** Within a channel, the app and robot OS share the same version string.
0 commit comments