T-N9AJ-polish-checks-into-quality-gate
Status: closed/done · Impact: medium · Complexity: medium
The repo-wide quality gate (sdlc quality run, driven by sdlc.yaml)
checks only the TypeScript substrate + docs — it never runs the moon project
graph. The only repo-wide moon hook is moon run :fmt-check (rust
formatting, in lefthook). So polish’s clippy, cargo tests, and frontend
lint/typecheck/test run only when invoked by hand — polish is a standalone
moon workflow. Wire its checks into the automated gate so regressions are
caught without manual runs.
| Location | Role today |
|---|---|
sdlc.yaml quality_checks | tsc --noEmit, bun test, docs/entities gates; no moon / cargo / nuxt |
lefthook.yml rust-fmt-check | moon run :fmt-check — the ONLY repo-wide moon gate; polish participates |
apps/determined/apps/polish/moon.yml | lint (clippy), test, frontend-* exist but run only on explicit moon run polish:* |
| repo | no .moon/tasks.yml and no moon ci aggregate — no repo-wide moon build/check at all |
Proposed
Section titled “Proposed”Polish’s clippy + cargo tests + frontend lint/typecheck/test run automatically in the repo’s gate (and/or per-PR CI), not just by hand. A broken check fails the gate.
Approach
Section titled “Approach”- Choose the seam:
- add polish moon targets to
sdlc.yamlquality_checks, and/or - introduce a per-PR CI workflow (see
T-LH85neighbourhood / the.github/workflows/polish.ymlsketch inapps/determined/apps/polish/MIGRATION.md), and/or - introduce a repo-wide
moon ci/.moon/tasks.ymlaggregate and gate on it.
- add polish moon targets to
- Ensure the gate environment has the rust toolchain + frontend deps (depends on the frontend-deps bootstrap).
- Wire it; confirm a deliberately-broken clippy or vitest fails the gate.
Open decision: solve for polish only, or close the broader “no repo-wide moon build aggregation” gap at the same time.
Files to touch
Section titled “Files to touch”| Location | Kind | Change |
|---|---|---|
sdlc.yaml | modify | add polish check targets to quality_checks |
.github/workflows/polish.yml | new | per-PR moon-driven checks scoped to apps/determined/apps/polish/** (if CI is chosen) |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: a deliberately-broken polish clippy lint fails the automated gate/CI.
- AC-2: a deliberately-broken polish frontend (vitest / eslint) check fails the automated gate/CI.
Out of scope
Section titled “Out of scope”- The full-bundle
cargo tauri buildin CI (heavy; track separately with release/signing).
Dependencies
Section titled “Dependencies”T-Y8YP— frontend deps must be bootstrapped for the gate to run frontend checks.
Discovery context
Section titled “Discovery context”- Analysis this session:
sdlc.yamlhas zero moon/polish references; polish’s non-fmt checks are unreachable from the automated gate.