Skip to content

T-VAF5-a-standard-for-the-baseline-task-vocabulary

State: closed/done · Impact: high · Complexity: small

M-3MGB depends on one uniform task vocabulary — six moon task names with a fixed meaning in both Rust and TypeScript, and a rule for which projects get which verbs. Nothing states that vocabulary today; each of the eleven downstream tasks would otherwise invent its own. This task writes the standard that pins it down, so T-076A, T-0DSA and T-7VPK have one document to implement against instead of re-deriving the shape from the plan each time.

No standard documents the moon task vocabulary. docs/planning/standards/ holds eleven standards, none of them about task names or verb-to-project rules. S-0009-moon-project-ids is the closest sibling — it standardizes project id: resolution, not task names, and lives in the same directory under the same applies_to.paths pattern.

LocationRole today
docs/planning/standards/S-0009-moon-project-ids.mdSibling standard: same directory, same frontmatter shape, applies_to.paths scoped to **/moon.yml and .moon/workspace.yml. Model for this task’s new file.
docs/planning/standards/Holds S-0001 through S-0012; no standard for task vocabulary or verb-to-project rules exists yet.

A new standard, S-0013-baseline-task-vocabulary.md, in docs/planning/standards/, applies_to.paths scoped to **/moon.yml, **/package.json and **/Cargo.toml. It states, as the normative rule for every downstream task in M-3MGB:

  • The six moon task names — check, typecheck, lint, lint-fix, fmt, fmt-check, test, build (check plus the seven leaves) — and what each delegates to in Rust (cargo invocations) versus TypeScript (bun run scripts).
  • A bare task name (lint, fmt-check) is a read-only gate; a -fix/fmt suffixed name is the only form allowed to mutate the tree.
  • check is the deps-only aggregate in both languages — no leaf logic lives in check itself, in either Rust or TypeScript.
  • The which-verb-which-project rule: format/format:check/lint apply to every tracked manifest (162); typecheck applies only where a project owns a real tsconfig.json (79); test applies where tests exist; build applies where the project emits.
  1. Read S-0009-moon-project-ids.md for the standard’s shape: frontmatter fields (type, schema_version, id, status, title, created, applies_to.paths, related, need_human_review), and body sections (Summary, Rule, Why, How to apply, Examples, Anti-examples, Notes).
  2. Confirm S-0013 is the next free standard id by listing docs/planning/standards/.
  3. Write S-0013-baseline-task-vocabulary.md with the target vocabulary table (six task names, mutates-or-not, Rust command, TypeScript command) and the which-verb-which-project table, both drawn from the M-3MGB plan.
  4. Run the $project/$projectAlias/$projectSource/$language token spike findings into this task’s Discovery context below (already measured — no further investigation needed) rather than re-running it.
  5. Validate the new standard file with bun solutions/ontological/cli/sdlc.ts entities validate and rumdl check.
LocationKindChange
docs/planning/standards/S-0013-baseline-task-vocabulary.mdnewThe standard: six moon task names, Rust/TypeScript delegation, bare-vs--fix mutation rule, check as deps-only aggregate, and the which-verb-which-project rule with its manifest counts.
  • AC-1: docs/planning/standards/S-0013-baseline-task-vocabulary.md exists and bun solutions/ontological/cli/sdlc.ts entities validate docs/planning/standards/S-0013-baseline-task-vocabulary.md --output text exits 0.
  • AC-2: The standard’s body has a table listing all eight moon task names (check, typecheck, lint, lint-fix, fmt, fmt-check, test, build) with a Rust and a TypeScript column — grep -c for each name against the file returns nonzero for all eight.
  • AC-3: The standard states the which-verb-which-project counts (162 for format/format:check/lint, 79 for typecheck) — grep -E '162|79' against the file returns matches.
  • AC-4: rumdl check docs/planning/standards/S-0013-baseline-task-vocabulary.md exits 0.
  • Implementing the vocabulary in any moon.yml, package.json, or Cargo.toml — that is T-076A, T-0DSA and T-7VPK.
  • The conformance guard that enforces the which-verb-which-project rule mechanically — that is task 11 in the M-3MGB plan.
  • Re-running the $project token spike; its result is recorded here as already-verified fact.
  • none
  • From the M-3MGB plan’s task 1: the $project token spike is already done. $project, $projectAlias, $projectSource and $language all substitute correctly in a moon command: string — verified by reading moon task <target>’s resolved output, which prints the command after substitution. Across the 57 Rust moon projects: 47 have id == alias == Cargo package name with 0 mismatches; 1 has no alias (apps/pumice/crates/pumice, whose id is pumice-core); 9 have no Cargo.toml at their source (the Tauri apps, whose crate lives under src-tauri/). This result means T-7VPK can collapse its 46 per-crate command overrides into the shared aspect using $project, and belongs in this task’s standard as the basis for the Rust column of the vocabulary table.

← Back to Tasks