T-WVSH-tauri-moon-task-aspect
Status: closed/done · Impact: medium · Complexity: small
apps/determined/apps/polish and apps/pumice are both Tauri 2 + Nuxt 4 desktop apps, yet each
moon.yml redefines a near-identical frontend and aggregate task surface.
Extract the shared set into one tag-scoped aspect so both inherit a single
definition, and a new Tauri app becomes first-class by adding one tag.
| Location | Role today |
|---|---|
apps/determined/apps/polish/moon.yml | defines frontend-lint/typecheck/test/format-check/format, storybook, check locally |
apps/pumice/moon.yml | defines the same frontend tasks (via root frontend:*), plus format-check and a check aggregate |
.moon/tasks/rust.yml | shared Rust aspect (inheritedBy: language: rust) — fmt/fmt-check/lint/test |
.moon/tasks/ | no aspect scopes the Tauri/Nuxt surface; each app repeats it |
Proposed
Section titled “Proposed”A .moon/tasks/tauri.yml aspect, inheritedBy: { tag: 'tauri' }, owns the
frontend task surface (frontend-*, storybook) and the check aggregate.
Both apps carry tags: ['tauri'] and drop the inherited bodies. Each app’s
moon.yml keeps only genuine extras: Tauri lifecycle (dev/build), pumice’s
codegen/codegen-drift, backend overrides, and the test aggregate. The
check aggregate uses ~:-scoped deps, so it picks up each app’s own
fmt-check/lint (polish → rust aspect; pumice → backend scripts).
Approach
Section titled “Approach”- Add
.moon/tasks/tauri.ymlwith the frontend tasks +checkaggregate, scoped by tag. - Tag
apps/determined/apps/polish; delete its now-inherited bodies. Verify by build + tests. - Tag
apps/pumice; delete its inherited frontend bodies and the orphanedformat-check. Verify by moon graph resolution; pumice-ci verifies at runtime.
Files to touch
Section titled “Files to touch”| Location | Kind | Change |
|---|---|---|
.moon/tasks/tauri.yml | new | shared Tauri/Nuxt task aspect |
apps/determined/apps/polish/moon.yml | modify | add tags, delete inherited bodies |
apps/pumice/moon.yml | modify | add tags, delete inherited bodies + orphaned format-check |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1:
moon task polish:checkandmoon task pumice:checkresolve to the aspect’s aggregate, each with its ownfmt-check/lint. - AC-2:
moon run polish:check,polish:frontend-test, andpolish:testpass unchanged. - AC-3: neither
apps/determined/apps/polish/moon.ymlnorapps/pumice/moon.ymlstill definesfrontend-*orcheckbodies. - AC-4: adding
tags: ['tauri']to a bare project grants the full frontend + check surface.
Out of scope
Section titled “Out of scope”dev/buildconvergence — needs a shared roottauriscript/wrapper decision (polish usescargo tauri, pumicebun run tauri).- Removing pumice’s Rust backend overrides in favor of the rust aspect.
- Collapsing the two per-app CI workflows into one tag-matrix job.
Dependencies
Section titled “Dependencies”- none
Discovery context
Section titled “Discovery context”- Surfaced during the polish-CI work (T-2CXH / PR #757) and the alignment discussion against the
template-tauri-nuxtpreferred structure.