Pumice desktop app integration
Status: open/draft
Implement D-0016-pumice-app-integration: bring the standalone pumice
Tauri v2 + Nuxt 4 desktop application into this monorepo as apps/pumice,
proving D-0012-monorepo-tooling’s polyglot workspace against a real,
load-bearing application rather than a thin wrapper. Land it in two phases —
co-tenant first (shared tooling, no code coupling), then converge
(shared crates, adapter seam) — so each step is independently reviewable.
Success criteria
Section titled “Success criteria”-
apps/pumiceexists and builds under moon (moon run pumice:build), with a thinmoon.ymlshelling to pumice’s existing commands under thesystemtoolchain. - Pumice’s frontend runs on Bun; the three pnpm lockfiles are retired
and no stray
pnpm-lock.yamlremains (per D-0012-monorepo-tooling). - Pumice’s Rust crates compile under moon’s
rusttoolchain as an isolated cargo unit; the1.93.0-vs-stabledivergence is resolved. - The
ontogencodegen pipeline is a moon task with correctinputs/outputs, and the codegen-drift gate runs in CI. - Pumice’s checks (frontend, Rust, codegen-drift) run under
moon cion a pumice-affected path that installs Tauri’s Linux system dependencies. - Pumice’s template-sync and helper scripts work from the
apps/pumicelocation (or the sync is retired deliberately). - Phase 2: at least one genuinely shared Rust crate is promoted to
packages/rust/, and the convergence question withT-CKC1is resolved.
Deliverables
Section titled “Deliverables”Member tasks, sequenced by wave (dependency order). Each links its full implementation-ready spec.
Wave 1 — co-tenant landing
Section titled “Wave 1 — co-tenant landing”- T-K3PN-vendor-pumice-into-apps-pumice — vendor the tree and wire a thin moon project.
- T-P4LZ-reconcile-rust-toolchain-and-isolate-crates — build the crates
under moon’s
rusttoolchain; resolve the version pin.
Wave 2 — align to house standards
Section titled “Wave 2 — align to house standards”- T-M7QX-migrate-pumice-frontend-to-bun — migrate
src-nuxt+ frontend packages pnpm → Bun; retire the pnpm lockfiles. - T-R9WT-model-ontogen-codegen-as-moon-task — model codegen with
inputs/outputsand a drift gate. - T-V6JD-repoint-template-sync-and-scripts — repoint the template-sync and port/helper scripts for the new CWD.
Wave 3 — CI
Section titled “Wave 3 — CI”- T-T2HB-fold-pumice-ci-into-moon-ci — fold pumice’s checks into
moon ciwith Tauri Linux system deps.
Wave 4 — convergence + extraction (Phase 2)
Section titled “Wave 4 — convergence + extraction (Phase 2)”- T-X8CF-promote-shared-crates-to-packages-rust — promote shared crates
(primary:
pumice-desktop→packages/rust/tauri-desktop-kit) and introduce a cargo workspace. - T-W3KP-promote-ontogen-admin-layer-to-packages-ts — promote the
@ontogenadmin-layer packages topackages/ts/(gated on the Bun migration). - T-N7RT-extract-generic-vue-ui-composables — extract generic Vue
composables/utils to
packages/ts/(lower priority). - T-Z5MK-converge-with-apps-desktop-and-adapter-seam — resolve the
relationship with
T-CKC1and wire the S-0008-apps-consume-substrate-through-published-surfaces seam.
The shared-codegen convergence question (ontogen vs the zod dashboard-client
pipeline) is framed in D-0017-ontogen-shared-codegen-convergence; its
outcome lands in T-Z5MK once a concrete shared-model trigger appears.
- Phase 1 (Waves 1–3) leaves pumice a self-contained co-tenant: it shares the
moon graph, CI,
justfile, andlefthook, but no application code. - Phase 2 (Wave 4) is a strong candidate for its own follow-up milestone — it
is gated on the co-tenant landing being stable and on a concrete shared-code
need, mirroring how
T-CKC1is framed as a later, separately-scheduled capstone.