You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 806f1be
Browse filesBrowse the repository at this point in the historyBrowse files
feat(1.0)!: remove the four deprecated generator exports; the copy an adopter owns was missing a branch
G2 of docs/1.0-readiness.md. `entityFile` / `queriesFile` / `routesFile` / `barrel` leave
`@metaobjectsdev/codegen-ts/generators`. Ratified as A3, promised in `0.x-to-1.0.md` §11.
BREAKING: those four imports no longer resolve. `meta init` scaffolds owned copies and
`meta eject <name>` copies one at any time.
The checklist's shorthand — "remove the deprecated codegen-ts/generators export" — would
have deleted the subpath, and that is wrong. It carries ~20 exports and only those four
were deprecated; the prompt/output tier (promptRender, outputParser, outputPrompt,
extractor, renderHelper, traceHelperFile) plus routesFileHono, namesFile and callableFile
have NO other public import path, and the CLI's own prompt-gate warning tells adopters to
import promptRender from exactly there. Of six adopter estates surveyed, five import only
non-deprecated names from that subpath and one imports the four: a path-wide removal breaks
all six and the owned-copy remedy applies to one. A3's intent and the published guide both
name the four.
Removing the export made this repo a consumer of its own reference templates, and that
immediately found a defect the removal turns from cosmetic into load-bearing:
src/reference/queries.ts — the file `meta eject queries` hands an adopter — omitted the
@autoset branch the built-in composer has. No insertPreserving<Entity>, no
<Entity>InsertPreservingSchema import, no error: the module simply lacked the function.
Two primitives it needs (renderInsertPreservingFn, hasAutoSetFields) were not public
either, so an owned copy could not restore it by hand. With the built-in export gone the
owned copy is the ONLY path, so the degraded output becomes the only output.
reference-byte-identical.test.ts exists for exactly this and was green: not one of its
seven fixtures carried @autoset, the sole trigger. That is not an oversight to patch — the
whole corpus was written to exercise SHAPE (packages, FKs, value objects, extends) and
@autoset is a per-field write RULE, so no shape-driven corpus grows one by accident. A
fixture that carries one is added; it was confirmed red before the fix and green after.
An audit of all six reference templates against their built-ins over both example models
found no other divergence.
Also fixed: metaobjects-audit told an auditing agent that ANY hit on
`grep -r '@metaobjectsdev/codegen-ts/generators'` means the project has not adopted
scaffold-and-own. Five of the six surveyed estates hit that grep while importing only
non-ownable generators — a false finding against a correct project, whose recommended
remedy would have changed nothing. It now matches the four NAMES.
In-repo consumers move to the copies rather than to an engine internal, so the suites
exercise what an adopter runs: a private @metaobjectsdev/test-generators package holds this
repo's owned copies (byte-gated against readReferenceTemplate by a DISCOVERING test, so a
new copy anywhere it scans is guarded the moment it lands), both examples get real
codegen/generators/ copies, and cli temp-project configs use the stable-name registry.
verify --codegen and the showcase pristine-regen root now carry codegen/ forward — without
it a regen reports a config error as drift.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3v6M6uqECZ2Sb5eUv6YY
-[ ] Count metadata source lines + all `@generated` / `DO NOT EDIT` files repo-wide.
25
25
-[ ]**Owned-generators check:** does the project own generators at `codegen/generators/*`
26
-
(scaffold-and-own via `meta init`), or still import the **deprecated** package export
27
-
(`@metaobjectsdev/codegen-ts/generators`)? Not owning is itself a finding.
26
+
(scaffold-and-own via `meta init`), or still import `entityFile` / `queriesFile` /
27
+
`routesFile` / `barrel` from `@metaobjectsdev/codegen-ts/generators`? Those four were
28
+
REMOVED at 1.0, so an import of them is an upgrade blocker, not just a style finding.
29
+
**Match the four NAMES, never the subpath alone** — that subpath is the supported home of
30
+
the non-ownable generators (`promptRender`, `outputParser`, `routesFileHono`, …), so
31
+
flagging a hit on the path convicts a correct project.
28
32
-[ ]**Cross-language version consistency (silent-drift check).** If the project uses MetaObjects in more than one language (e.g. a TS web client + a Java/Python/C# backend), enumerate EVERY MetaObjects package across ALL ecosystems (npm `@metaobjectsdev/*`, Maven `com.metaobjects:*`, PyPI `metaobjects`, NuGet `MetaObjects.*`) and record each version. **The version-number LINES differ by ecosystem (npm/PyPI/NuGet `0.x`/`1.x` vs Maven `7.x`/`8.x`), so you CANNOT eyeball drift** — a `0.12` next to a `7.7` looks fine but can be badly out of sync. Compare the **`metamodelVersion`** each port reports (the shared spec version on the registry manifest): a mismatch is real cross-language drift and a **finding** — the ports disagree on vocabulary/wire behavior. Also flag any port not on the latest release for its ecosystem. (This is a known real-world failure mode: newest backend, stale client, invisible because the numbers differ.)
0 commit comments