Automate UX Forum post-session schedule update and issue creation
### Summary After each UX Forum session, the host must manually ([handbook reference](https://handbook.gitlab.com/handbook/product/ux/ux-forum/#updating-the-schedule-and-preparing-for-next-sessions)): 1. Remove the completed session row from the [UX Forum schedule](https://gitlab.com/-/ide/project/gitlab-com/content-sites/handbook/edit/main/-/assets/includes/product/ux-forum-schedule.md) in `gitlab-com/content-sites/handbook` 1. Create a tracking [issue from the UX Forum template](https://gitlab.com/gitlab-org/gitlab-design/-/issues/new?issuable_template=UX%20Forum) in `gitlab-org/gitlab-design` for the next scheduled session, populated with the host and speakers This is predictable, repetitive work that is easy to forget. We should automate it. ### Proposal Build a scheduled CI pipeline in `gitlab-com/designops` that: 1. **Runs daily** at 9am PDT and parses the schedule table in `assets/includes/product/ux-forum-schedule.md` 1. **Compares today's date** against the schedule rows. If today matches a completed forum date (or is the first business day after), it proceeds. Otherwise it exits as a no-op. 1. **Opens an MR** in `gitlab-com/content-sites/handbook` removing the completed session row from the schedule 1. **Creates a tracking issue** in `gitlab-org/gitlab-design` using the UX Forum template, pre-filled with: - Title: `UX Forum - {formatted date}` - Date, host handle, and speaker handles from the *next* row in the schedule A **manual trigger** should also be available as a fallback for re-runs or edge cases. Additionally, the automation depends on parsing a hand-edited markdown table. If formatting changes, the parser breaks. We should add a CI lint check on the schedule file to catch malformed rows early ### Why the schedule file is the source of truth for timing The UX Forum does not follow a fixed cron cadence — dates are explicitly set and alternate timezone slots. Rather than hardcoding a biweekly cron that drifts, the pipeline runs daily and reads the schedule file to determine whether a forum just occurred. This means: - If a forum is rescheduled and the markdown is updated, the automation follows automatically - No cron maintenance or multiple scheduled pipelines needed - The cost is a daily no-op pipeline, which is cheap ### Scope **In scope:** - Schedule row removal (via MR) - Next-session issue creation (pre-filled from schedule) - Manual trigger fallback **Out of scope:** - Video upload or Slack notifications - Schedule *generation* (the rotation is still managed by Design Managers) ### DRI DesignOps owns creating and maintaining this automation. The UX Forum itself and its schedule remain owned by the Product Design Managers. ### References - [UX Forum handbook — Updating the schedule](https://handbook.gitlab.com/handbook/product/ux/ux-forum/#updating-the-schedule-and-preparing-for-next-sessions) - [Schedule source file](https://gitlab.com/gitlab-com/content-sites/handbook/-/blob/main/assets/includes/product/ux-forum-schedule.md) - [UX Forum issue template](https://gitlab.com/gitlab-org/gitlab-design/-/blob/main/.gitlab/issue_templates/UX%20Forum.md)
issue