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
The Java port has LlmTraceHelperGenerator but no way to load the metadata that generator exists to consume. There is no libraries loader option and no library/ embed on that port, so extends: metaobjects::ai::LlmCallBase cannot resolve — the documented adopter path fails with ERR_UNRESOLVED_SUPER.
A generator shipped without its input.
Evidence (against main @ 0994d6e41)
$ git ls-tree -r main --name-only | grep LlmTraceHelperGenerator.java
server/java/codegen-spring/src/main/java/com/metaobjects/generator/spring/LlmTraceHelperGenerator.java
$ git grep -l "libraries" main -- 'server/java/**/*.java' | grep -v test
(no output)
The only references to LlmCallBase in the Java tree are in a test that declares its own inline under a different package:
That is the bypass ADR-0024 already called out — "the green tests pass only because they bypass the shipped base with bespoke entities" — which is why a port can ship a generator it cannot feed and stay green.
Why it matters
This is the same defect that was just closed on the Python port (libraries=[...] + library/ + the embed generator). Until Java has the equivalent, a JVM adopter following the documented extends metaobjects::ai::LlmCallBase path cannot get past load.
Suggested shape
Mirror the Python/TypeScript design rather than inventing a third: canonical library/**/*.yaml at the repo root stays the source, each port embeds it (Python embeds as a generated source module so no build config can drop it), and the loader gains a libraries opt-in that prepends those sources.
Worth adding with it, since none of these existed on Python either:
a byte-comparison gate so a stale embed cannot ship,
an assertion that extends FAILS without the opt-in and resolves with it — the negative half is what proves the opt-in is doing the work,
What
The Java port has
LlmTraceHelperGeneratorbut no way to load the metadata that generator exists to consume. There is nolibrariesloader option and nolibrary/embed on that port, soextends: metaobjects::ai::LlmCallBasecannot resolve — the documented adopter path fails withERR_UNRESOLVED_SUPER.A generator shipped without its input.
Evidence (against
main@0994d6e41)The only references to
LlmCallBasein the Java tree are in a test that declares its own inline under a different package:That is the bypass ADR-0024 already called out — "the green tests pass only because they bypass the shipped base with bespoke entities" — which is why a port can ship a generator it cannot feed and stay green.
Why it matters
This is the same defect that was just closed on the Python port (
libraries=[...]+library/+ the embed generator). Until Java has the equivalent, a JVM adopter following the documentedextends metaobjects::ai::LlmCallBasepath cannot get past load.Suggested shape
Mirror the Python/TypeScript design rather than inventing a third: canonical
library/**/*.yamlat the repo root stays the source, each port embeds it (Python embeds as a generated source module so no build config can drop it), and the loader gains alibrariesopt-in that prepends those sources.Worth adding with it, since none of these existed on Python either:
extendsFAILS without the opt-in and resolves with it — the negative half is what proves the opt-in is doing the work,LlmCallBase's effective fields, both directions),Related
libraries, CLI does not) — filed separately.