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.
| Location | Role today |
|---|---|
docs/planning/standards/S-0009-moon-project-ids.md | Sibling 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. |
Proposed
Section titled “Proposed”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(checkplus the seven leaves) — and what each delegates to in Rust (cargoinvocations) versus TypeScript (bun runscripts). - A bare task name (
lint,fmt-check) is a read-only gate; a-fix/fmtsuffixed name is the only form allowed to mutate the tree. checkis the deps-only aggregate in both languages — no leaf logic lives incheckitself, in either Rust or TypeScript.- The which-verb-which-project rule:
format/format:check/lintapply to every tracked manifest (162);typecheckapplies only where a project owns a realtsconfig.json(79);testapplies where tests exist;buildapplies where the project emits.
Approach
Section titled “Approach”- Read
S-0009-moon-project-ids.mdfor 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). - Confirm
S-0013is the next free standard id by listingdocs/planning/standards/. - Write
S-0013-baseline-task-vocabulary.mdwith 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. - Run the
$project/$projectAlias/$projectSource/$languagetoken spike findings into this task’s Discovery context below (already measured — no further investigation needed) rather than re-running it. - Validate the new standard file with
bun solutions/ontological/cli/sdlc.ts entities validateandrumdl check.
Files to touch
Section titled “Files to touch”| Location | Kind | Change |
|---|---|---|
docs/planning/standards/S-0013-baseline-task-vocabulary.md | new | The 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. |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1:
docs/planning/standards/S-0013-baseline-task-vocabulary.mdexists andbun solutions/ontological/cli/sdlc.ts entities validate docs/planning/standards/S-0013-baseline-task-vocabulary.md --output textexits 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 -cfor 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.mdexits 0.
Out of scope
Section titled “Out of scope”- Implementing the vocabulary in any
moon.yml,package.json, orCargo.toml— that isT-076A,T-0DSAandT-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
$projecttoken spike; its result is recorded here as already-verified fact.
Dependencies
Section titled “Dependencies”- none
Discovery context
Section titled “Discovery context”- From the M-3MGB plan’s task 1: the
$projecttoken spike is already done.$project,$projectAlias,$projectSourceand$languageall substitute correctly in a mooncommand:string — verified by readingmoon task <target>’s resolved output, which prints the command after substitution. Across the 57 Rust moon projects: 47 haveid == alias == Cargo package namewith 0 mismatches; 1 has no alias (apps/pumice/crates/pumice, whose id ispumice-core); 9 have noCargo.tomlat their source (the Tauri apps, whose crate lives undersrc-tauri/). This result meansT-7VPKcan 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.