Skip to content

0.24.4 / 7.24.4 — the tool saying untrue things about work it had just done

Choose a tag to compare

@dmealing dmealing released this 29 Aug 00:14
· 679 commits to main since this release

A coordinated PATCH across all four registries (npm 0.24.4 · PyPI 0.24.4 · NuGet 0.24.4 ·
Maven 7.24.4), full lockstep across all 14 @metaobjectsdev/* publish candidates. The only
changed product file is in cli
— so the other 13 npm packages, PyPI, NuGet and Maven Central
are version-parity bumps. metamodelVersion stays 0.13: no registered vocabulary changed.

Every fix here was found by running the product's own documented path and looking at what it
printed
— not by a test. 0.24.3 made the cold quickstart part of the release procedure; this
is its first cut, and it is what the procedure is for. Four defects, and the shape they share is
that each one is the tool saying something untrue about work it had just done: a scaffold
instructing you to do what it already did, a hint naming a command that cannot run, a page whose
own order fails its own instruction, and a gate reporting a denominator it had not earned. None
of them break a build. All four are the first thing a newcomer sees.

Fixed — meta verify --templates reported a different denominator depending on whether it passed

The same project, the same run: "11 drift error(s) across 29 template(s)" while red, and
"22 template(s) clean" once fixed. Seven templates appear to vanish on the way to green.
Both numbers were real and neither line named its actual unit — the failure line divided by every
template.* node found, including every one the loop skips (a subtype it does not check —
a project-local template.* from an adopter's own provider), while the pass line divided by
bodies verified (an @kind: email template has up to three and is one template). So the red
line claimed a denominator of work it had not done, and the two lines could not be compared to
each other at all. Both now count templates at least one body of which was actually examined.

Found in the drift-gate demo receipt on the public reference app — the artifact whose whole
purpose is to be checked by a skeptical reader. The existing tests could not see it: every
assertion matched on a substring, and both phrasings contain the word template(s). The new
test asserts the pair — the same fixture reports the same number passing and failing —
because the failure half alone was already correct for a single-body template.

Fixed — three first-touch defects, found running the quickstart cold on the published 0.24.3

0.24.3 made the cold quickstart part of the release procedure. Run against the published
0.24.3 — fresh external project, install, meta init, author, gen, tsc, migrate --from-db --apply, boot the generated Fastify server, five verbs, verify — both of that release's
headline fixes are confirmed live (verify --codegen passes with 16 tsc artifacts in outDir;
a hand-edited generated file merges and then verifies clean). Three defects remained on the path
there, all of them the first thing a newcomer meets:

  • meta init reported an edit it had made as an instruction to make it. It sets "type": "module" for you, then printed meta: set \"type": "module"` in package.json— an imperative, on the last line the scaffold prints, telling you to do what it had just done. It reads as an unmet TODO on a run that succeeded. Now past tense. The existing test asserted only that the warning *contained*"type": "module"`, which is why the phrasing could never fail it; it now
    pins the tense.
  • npx tsc — the hint every meta gen prints — has no compiler to run. Nothing MetaObjects
    installs brings typescript, so the printed next step hits npm's guard package: "This is not
    the tsc command you are looking for."
    Named in docs/ports/typescript.md's install section and
    again where the hint is documented.
  • The documented order makes that typecheck fail. "Typecheck the generated code" precedes
    "Use", where src/db.ts is written — but the default routesFile() emits import { db } from "../db.js", the module dbImport names and meta init scaffolds a path to without creating.
    Following the page top to bottom ends in TS2307: Cannot find module '../db.js' on a project
    with nothing wrong. The section now states both prerequisites and shows the exact error.