Skip to content

T-2CXH-scope-release-roster-off-moon-app-vitest

Status: closed/done · Impact: medium · Complexity: small

The SDLC release roster runs a bare, whole-repo bun test. When a moon-managed app carrying a vitest suite lands in the monorepo, bun test collects those vitest files and fails — they need the vitest/Nuxt runtime, and their deps are not installed for the bun run. Polish (added via the moon-v2 migration) broke the roster this way and blocked the v0.3.1 release. Scope bun test off moon-managed suites and gate those suites through their own runner so coverage is not lost.

LocationRole today
sdlc.yamlquality_checks runs a bare bun test over the whole repo; it collects apps/legacy-polish/src-nuxt/tests/*.test.ts and dies with Cannot find package 'pinia'.
apps/legacy-polish/src-nuxt/tests/Four vitest+Nuxt tests (import from vitest, use ~/stores/* aliases). Meant to run under vitest via moon (polish:test), not bun.
package.jsonRoot workspaces excludes apps/legacy-polish, so bun install never installs Polish’s deps (pinia and the rest).
.github/workflows/release.ymlRuns the roster on a v* tag push; the roster failure aborts the release before the Publish step.

The roster’s bun test no longer collects moon-managed app suites and passes on the bun-native corpus. Polish’s vitest suite runs in the gate through its own runner (moon/vitest) with its deps resolvable, so it is genuinely exercised. A new moon-managed app with a vitest suite does not reintroduce the break.

  1. Unblock (shipped separately): exclude Polish from the roster’s bun test with --path-ignore-patterns='**/apps/determined/apps/polish/**'. A release dry-run goes green. This is the immediate fix that gets v0.3.1 out.
  2. Make Polish’s deps resolvable — add apps/legacy-polish/* to root workspaces (or wire moon to install them) so pinia and peers install.
  3. Add a moon run polish:test (vitest) verb to the roster so Polish is gated by the correct runner, not merely skipped.
  4. Generalize: pick one rule for moon-managed apps versus the bun-test sweep — a shared ignore pattern (root bunfig.toml) or a documented convention — so the next app added does not re-break the roster.
LocationKindChange
sdlc.yamlmodifyScope bun test off moon apps; add the vitest/moon test verb.
package.jsonmodifyAdd apps/legacy-polish/* to workspaces (or equivalent install wiring).
bunfig.tomlnewOptional root-level test ignore so every bun test skips moon apps, not just the roster.
apps/legacy-polish/modifyWire the polish:test moon task / vitest config if not already runnable in CI.

Status — partially met (roster-scope done; hardening residual open)

Section titled “Status — partially met (roster-scope done; hardening residual open)”

The release-blocking roster-scope is resolved: #745 landed the interim --path-ignore-patterns='**/apps/determined/apps/polish/**' exclusion, then #751 scoped the roster’s bun test to apps/sdlc (the current sdlc.yaml line), so the release roster no longer collects Polish’s vitest suite and the release is unblocked (AC-1). The remaining ACs are follow-up hardening, still open:

  • AC-2 — no root-level bunfig.toml; a bare bun test at the repo root would still collect apps/legacy-polish/**.
  • AC-3 — Polish’s vitest suite is excluded, not gated through its own runner.
  • AC-4 — no shared ignore pattern / documented rule for the next moon app.
  • AC-1: A release dry-run on main passes the quality roster with Polish present — no Cannot find package 'pinia'. (#745 → #751)
  • AC-2: A bare bun test at the repo root does not collect apps/legacy-polish/** test files.
  • AC-3: Polish’s vitest suite runs and passes via its own runner (e.g. moon run polish:test) as part of the gate.
  • AC-4: Adding a new moon-managed app with a vitest suite does not break the release roster (a shared ignore pattern or a documented rule prevents it).
  • The markdown-contract bundling fix (shipped in #738) — unrelated to this.
  • Migrating Polish off vitest — it stays a vitest/Nuxt app.
  • none. The step-1 exclusion unblocks the release on its own; steps 2–4 harden it.

Surfaced while cutting v0.3.1 (the markdown-contract packaging fix). The moon-v2 migration (#739, #742, #743) brought Polish into the monorepo as a vitest app. Release dry-runs 29299776278 and 29301707348 both failed at the quality roster on the Polish vitest sweep.


← Back to Tasks