T-TB73-the-app-local-justfiles-and-makefiles-go
State: closed/done · Impact: medium · Complexity: small
Seven app-local justfile/Makefile files hold 898 lines that reimplement
moon’s task vocabulary by hand, with zero references to moon. apps/pumice
declares dev, build, frontend-lint, frontend-typecheck and
frontend-format-check three times over — once in .moon/tasks/tauri.yml,
once in its justfile, once in its Makefile. Deleting the seven files leaves
moon as the only task runner for these projects and the root justfile as
the only parameterized human/skill entry point, per M-3MGB’s Layer C
decision.
| Location | Role today |
|---|---|
apps/pumice/justfile | 213 lines; re-implements dev, build, frontend-lint, frontend-typecheck, frontend-format-check and more, already declared in .moon/tasks/tauri.yml and apps/pumice/moon.yml |
apps/pumice/Makefile | 208 lines; the same targets a third time, over the justfile’s second |
apps/ontological-legacy/Makefile | 127 lines of hand-written targets with no moon reference |
solutions/ontological/desktop/justfile | 180 lines re-implementing dev, build, lint, format, format-check, typecheck, test, ci already declared in solutions/ontological/desktop/moon.yml (project id sdf) |
apps/agentpants/Makefile | 107 lines of hand-written targets with no moon reference |
apps/ontological-legacy/crates/mcp-proxy/justfile | 57 lines: build, run, test, full-check, full-write, semver-check, release-dry-run level="patch", release level="patch" for a Rust crate with no moon.yml of its own |
apps/ontological-legacy/justfile | 6 lines, a thin wrapper |
apps/pumice/README.md | documents the Makefile/justfile pair as the two ways to run pumice commands, and cites just codegen-drift, just ports, make dev |
solutions/ontological/desktop/README.md | tells contributors to run just dev, just ci, just ports, just frontend-dev |
Proposed
Section titled “Proposed”All seven files are gone. git ls-files no longer lists any of them. moon is
the only task runner for pumice, sdf, agentpants and
ontological-legacy; the root justfile — which delegates to moon 16 times
and is Layer C, not duplication — is unchanged. The two READMEs point at
moon run <project>:<task> instead of make/just, and at
scripts/dev-port.sh --all for the port block (each project already ships
that script; no justfile/Makefile ever did more than call it). mcp-proxy’s
release/release-dry-run recipes, the one app-local recipe with a named
default (level="patch"), move into a small shell script since the crate has
no moon.yml to carry them.
Approach
Section titled “Approach”- Move mcp-proxy’s release logic into
apps/ontological-legacy/crates/mcp-proxy/scripts/release.sh, taking the level as$1and defaulting topatch(level="${1:-patch}"), with a--dry-runflag selectingcargo release "$level" --no-confirmover--execute. This is the only named-default recipe among the seven files; everything else translates to a moon target directly. - Delete the seven files:
apps/pumice/justfile,apps/pumice/Makefile,apps/ontological-legacy/Makefile,solutions/ontological/desktop/justfile,apps/agentpants/Makefile,apps/ontological-legacy/crates/mcp-proxy/justfile,apps/ontological-legacy/justfile. - Update
apps/pumice/README.md: drop the “Makefile / justfile” section and its target table, and replacemake dev/just codegen-drift/just portswithmoon run pumice:dev/moon run pumice:codegen-drift/scripts/dev-port.sh --all. - Update
solutions/ontological/desktop/README.md: replacejust dev,just ci,just ports,just frontend-devwithmoon run sdf:dev(rootjustfile’s owndevrecipe already delegates here),moon run sdf:webfor the browser-only case, andscripts/dev-port.sh --allfor ports; point atsolutions/ontological/desktop/moon.ymlfor the full task list rather than restating one. - Run
moon task <target>(a sample from each surviving project — see AC-2) to confirm every target the deleted files used to front still resolves through moon alone;moon taskprints the resolved command without executing it.
Files to touch
Section titled “Files to touch”| Location | Kind | Change |
|---|---|---|
apps/pumice/justfile | delete | remove the app-local duplicate of .moon/tasks/tauri.yml |
apps/pumice/Makefile | delete | remove the third copy of the same targets |
apps/ontological-legacy/Makefile | delete | remove the app-local duplicate of moon’s task graph |
solutions/ontological/desktop/justfile | delete | remove the app-local duplicate of solutions/ontological/desktop/moon.yml |
apps/agentpants/Makefile | delete | remove the app-local duplicate of moon’s task graph |
apps/ontological-legacy/crates/mcp-proxy/justfile | delete | remove the crate-local runner |
apps/ontological-legacy/justfile | delete | remove the thin wrapper |
apps/ontological-legacy/crates/mcp-proxy/scripts/release.sh | new | carries the release/release-dry-run logic, including the level="patch" default, that the deleted justfile can no longer hold |
apps/pumice/README.md | modify | replace Makefile/justfile instructions with moon run pumice:<task> and scripts/dev-port.sh --all |
solutions/ontological/desktop/README.md | modify | replace just dev/just ci/just ports/just frontend-dev with moon run sdf:<task> and scripts/dev-port.sh --all |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1:
git ls-files '**/justfile' '**/Makefile'lists only the rootjustfile— all seven app-local runner files are gone from the tree. - AC-2: Every target the deleted files used to front still resolves
through moon alone. Loop
moon task <t>overpumice:{dev,build,lint, frontend-typecheck},sdf:{dev,build,lint},agentpants:buildandontological-legacy:build; none reports an unknown target. - AC-3: No README still instructs a reader to run a deleted recipe —
grepping
apps/pumice/README.mdandsolutions/ontological/desktop/README.mdformakeandjustinvocations of the removed targets returns nothing. - AC-4:
apps/ontological-legacy/crates/mcp-proxy/scripts/release.shexists, is executable, and running it with no arguments invokescargo release patch(the preserved default). - AC-5:
git diff --stat -- justfile(root) is empty — the root justfile, which already delegates to moon and stays as Layer C, is untouched by this task.
Out of scope
Section titled “Out of scope”- Reconciling T-V6JD-repoint-template-sync-and-scripts’s existing
reference to
apps/pumice/justfile; that task is stillplanning/draftand will need its own row updated when it is picked up. - Layer B changes to any project’s
moon.yml(tasks 6–8 in M-3MGB). This task deletes runners; it does not add or reshape moon tasks. - The root
justfileitself. It stays — it is Layer C, not duplication.
Dependencies
Section titled “Dependencies”- Soft ordering only:
apps/pumice/moon.ymlandsolutions/ontological/desktop/moon.ymlalready carry thedev/build/lint/fmt-check/typechecktargets this task points the READMEs at, so no other task in M-3MGB must land first. If Layer B tasks (6–8) land later and rename or add targets, only the README prose needs a follow-up edit, not this task’s deletions. - none beyond that
Depends on
Section titled “Depends on”T-0DSA-the-typescript-aspect-delegates-and-spans-both-stacks