0.24.1 — the whole-object rollup, an undeclarable expression index, and C# foreign keys
Coordinated PATCH across all four registries — npm 0.24.1 · PyPI 0.24.1 · NuGet 0.24.1 · Maven 7.24.1.
Ships metamodelVersion 0.12. The package and metadata axes are separate contracts (ADR-0035 Amendment 2), so a metamodel move does not force a package minor.
Highlights
- An expression index was undeclarable, and the one spelling that loaded was half-ignored (#342) — the index key is now
@fieldsXOR@expr, in all five ports. ClaimsmetamodelVersion0.11. @ofbecomes optional on@agg: collect— the whole-object rollup (#335) — a projection can finally roll related rows up into an array of objects, not just an array of one column. ClaimsmetamodelVersion0.12.- The C# EF Core target had no foreign keys at all, so
@onDeletewas inert (#294) — and an unconfigured FK is nowNoAction, not EF's implicit cascade. meta upgraderewrote nothing on a YAML estate, then called it clean (#339).- A sub-project's generated tree absorbed unrelated metadata (#340) — a sub-project now generates from its own sources, not the ancestor's union.
- Generated enum types were value imports (TS1484) (#341); generated SQLite did not compile on two minors the drizzle peer range admitted (floored at
0.38.0). - A blank optional form field submitted
""instead of clearing (#223). meta docs metaobjectssent you down a dead end, twice (#344) — a directory argument is the project root, and the error now says so.- Every shipped metadata example is now gated against the strict registry (#337) — three times a doc or agent-context skill taught vocabulary the loader had already retired, and an adopter found it every time.
- The AI-facing docs taught vocabulary this release removed (#343).
- A measured case study on declaring requirements before the code.
Two notes worth reading before upgrading
A previously-loading declaration can now fail to load, in two places. Both are corrections of previously-wrong acceptance rather than contract changes — the same call, for the same reason, as the @min clamp in 0.19.1 and the like case-sensitivity fix in 0.21.6 — which is why this is a PATCH:
@fieldstogether with@expron an index (#342).@filterable/@sortable: trueon anisArrayfield (#335) — it emitted alike/eqrule against atext[]column, i.e. SQL that cannot execute. A structural scan of 1321 JSON and 124 YAML files in this repo found zero instances, and the form was never documented, exemplified, or emitted by any generator.
Exposure is bounded but not zero: pre-1.0 ^0.24.x resolves a patch, so an adopter who wrote either form independently auto-adopts a load error on npm update. In both cases the fix is deleting an attribute that was doing nothing.
Full detail, including the reasoning behind each ruling, is in the CHANGELOG.