Skip to content

Commit 0116ffe

Browse files
dmealingclaude
andcommitted
docs: "no proprietary runtime", not "no MetaObjects dependency"
AGENTS.md, spec/README.md and the shipped codegen skill said generated code runs without any MetaObjects dependency at runtime. It does not, in any port: generated REST tiers import the route helpers (runtime-ts/drizzle-fastify, MetaObjects.Codegen.Runtime, generator.spring.runtime, metaobjects.codegen.runtime), and prompt tiers import render and extract. Checked against the adopter estate's generated trees in all five ports. What holds is the July oversell review's row 3 ruling: entity and model code imports nothing from MetaObjects at runtime, and the other tiers import ordinary Apache-2.0 packages. That review fixed the README and llms mirrors; these three sites were missed. The skill ships into every adopter stack, so the agent-context conformance goldens are regenerated in this commit. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M1mRRB1K2WdYy82kntMQdx
1 parent 75096c3 commit 0116ffe

8 files changed

Lines changed: 27 additions & 21 deletions

File tree

  • agent-context/skills/metaobjects-codegen
  • fixtures/agent-context-conformance
    • java-kotlin-react-tanstack/expected/.claude/skills/metaobjects-codegen
    • java-react/expected/.claude/skills/metaobjects-codegen
    • python/expected/.claude/skills/metaobjects-codegen
    • ts-react-tanstack/expected/.claude/skills/metaobjects-codegen
    • ts-requirements/expected/.claude/skills/metaobjects-codegen
  • spec

‎AGENTS.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
MetaObjects is a **cross-language metadata standard** for declaring typed entity models that drive code generation, runtime metadata access, and drift detection — across TypeScript, C#, Java, Python, and Kotlin (Kotlin runs on the JVM via `metadata-ktx` + `codegen-kotlin`).
66

7-
The metamodel is the **durable spine**; generated code is the **disposable artifact**. Substrate is local-first: typed metadata lives in your repo, generated code is idiomatic per-language output that runs without any MetaObjects dependency at runtime. If `@metaobjectsdev/*` disappears tomorrow, you keep working code.
7+
The metamodel is the **durable spine**; generated code is the **disposable artifact**. Substrate is local-first: typed metadata lives in your repo, generated code is idiomatic per-language output with **no proprietary runtime**: the generated entity and model code imports nothing from MetaObjects at runtime, and the REST, prompt, client and runtime tiers import ordinary Apache-2.0 packages you can vendor, fork or replace. If `@metaobjectsdev/*` disappears tomorrow, you keep working code.
88

99
**Core vs helpers (ADR-0034 Amendment 3, 2026-09-22).** Only the core is a product promise: the metamodel, loader, canonical format and registry; runtime metadata access (the `ObjectManager` and its drivers; the HTTP adapters that mount it on a web framework are helpers, 2026-09-24 ruling); schema migrations (`meta migrate`); the drift gates (`meta verify`); prompt render and the reply parser. Every generator that writes application code into an adopter's repo — routes, controllers, ORM wiring, DTOs, forms, grids, hooks, filter allowlists — is a **reference helper**: it must compile and pass its reference fixtures, and the adopter copies it with `meta eject` and owns the copy. Mechanical test: what the tool guarantees is core; what it writes into your repo is a helper. Every port can eject: `meta eject` (TypeScript), `metaobjects eject` (Python), `mvn metaobjects:eject` (Java/Kotlin), `dotnet meta eject` (C#). When you find a generator defect, fix the reference; do not describe it as a broken core guarantee.
1010

@@ -270,7 +270,7 @@ import { EntityFetcherProvider, EntityGrid } from "@metaobjectsdev/tanstack";
270270

271271
- A custom DSL. Plain typed metadata only — Wasp's seven-year DSL-tax is the cautionary tale.
272272
- A spec-driven workflow like Kiro / Spec Kit. Humans don't author rich specs; Claude proposes metadata, humans review.
273-
- A proprietary runtime. All generated code runs without MetaObjects installed; runtime libraries are normal language-native packages.
273+
- A proprietary runtime. Generated entity and model code runs without MetaObjects installed; the tiers that do import a MetaObjects package (REST helpers, prompt render and extract, the web client, the runtime pillar) import normal Apache-2.0, language-native packages.
274274
- A prompt-to-app builder (not Lovable, Bolt, or v0). MetaObjects generates entity-shaped boilerplate; users hand-write the interesting business logic.
275275
- Replacing CLAUDE.md, cursor rules, or other prompt-engineering surfaces — MetaObjects complements them.
276276
- An LLM provider. The MCP integration is model-agnostic.

‎agent-context/skills/metaobjects-codegen/SKILL.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ description: Use when configuring or running MetaObjects code generation — gen
88
Codegen is the first pillar: MetaObjects reads your typed metadata and emits
99
**idiomatic per-language code** — entity types, DB tables/schemas, query helpers,
1010
REST routes, validators, payload value-objects, output parsers. The metadata is the
11-
durable spine; the generated code is a disposable artifact. It runs at runtime
12-
**without any MetaObjects dependency** — if the libraries disappeared tomorrow, you
13-
keep working code.
11+
durable spine; the generated code is a disposable artifact. It has **no
12+
proprietary runtime**: entity and model code imports nothing from MetaObjects, and the
13+
REST, prompt and client tiers import ordinary Apache-2.0 packages you can vendor or
14+
replace — if the libraries disappeared tomorrow, you keep working code.
1415

1516
**Generators are reference helpers, not guarantees** (ADR-0034 Amendment 3). The core —
1617
metamodel, loader, `migrate`, `verify`, prompt render — is what MetaObjects guarantees.

‎fixtures/agent-context-conformance/java-kotlin-react-tanstack/expected/.claude/skills/metaobjects-codegen/SKILL.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ description: Use when configuring or running MetaObjects code generation — gen
88
Codegen is the first pillar: MetaObjects reads your typed metadata and emits
99
**idiomatic per-language code** — entity types, DB tables/schemas, query helpers,
1010
REST routes, validators, payload value-objects, output parsers. The metadata is the
11-
durable spine; the generated code is a disposable artifact. It runs at runtime
12-
**without any MetaObjects dependency** — if the libraries disappeared tomorrow, you
13-
keep working code.
11+
durable spine; the generated code is a disposable artifact. It has **no
12+
proprietary runtime**: entity and model code imports nothing from MetaObjects, and the
13+
REST, prompt and client tiers import ordinary Apache-2.0 packages you can vendor or
14+
replace — if the libraries disappeared tomorrow, you keep working code.
1415

1516
**Generators are reference helpers, not guarantees** (ADR-0034 Amendment 3). The core —
1617
metamodel, loader, `migrate`, `verify`, prompt render — is what MetaObjects guarantees.

‎fixtures/agent-context-conformance/java-react/expected/.claude/skills/metaobjects-codegen/SKILL.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ description: Use when configuring or running MetaObjects code generation — gen
88
Codegen is the first pillar: MetaObjects reads your typed metadata and emits
99
**idiomatic per-language code** — entity types, DB tables/schemas, query helpers,
1010
REST routes, validators, payload value-objects, output parsers. The metadata is the
11-
durable spine; the generated code is a disposable artifact. It runs at runtime
12-
**without any MetaObjects dependency** — if the libraries disappeared tomorrow, you
13-
keep working code.
11+
durable spine; the generated code is a disposable artifact. It has **no
12+
proprietary runtime**: entity and model code imports nothing from MetaObjects, and the
13+
REST, prompt and client tiers import ordinary Apache-2.0 packages you can vendor or
14+
replace — if the libraries disappeared tomorrow, you keep working code.
1415

1516
**Generators are reference helpers, not guarantees** (ADR-0034 Amendment 3). The core —
1617
metamodel, loader, `migrate`, `verify`, prompt render — is what MetaObjects guarantees.

‎fixtures/agent-context-conformance/python/expected/.claude/skills/metaobjects-codegen/SKILL.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ description: Use when configuring or running MetaObjects code generation — gen
88
Codegen is the first pillar: MetaObjects reads your typed metadata and emits
99
**idiomatic per-language code** — entity types, DB tables/schemas, query helpers,
1010
REST routes, validators, payload value-objects, output parsers. The metadata is the
11-
durable spine; the generated code is a disposable artifact. It runs at runtime
12-
**without any MetaObjects dependency** — if the libraries disappeared tomorrow, you
13-
keep working code.
11+
durable spine; the generated code is a disposable artifact. It has **no
12+
proprietary runtime**: entity and model code imports nothing from MetaObjects, and the
13+
REST, prompt and client tiers import ordinary Apache-2.0 packages you can vendor or
14+
replace — if the libraries disappeared tomorrow, you keep working code.
1415

1516
**Generators are reference helpers, not guarantees** (ADR-0034 Amendment 3). The core —
1617
metamodel, loader, `migrate`, `verify`, prompt render — is what MetaObjects guarantees.

‎fixtures/agent-context-conformance/ts-react-tanstack/expected/.claude/skills/metaobjects-codegen/SKILL.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ description: Use when configuring or running MetaObjects code generation — gen
88
Codegen is the first pillar: MetaObjects reads your typed metadata and emits
99
**idiomatic per-language code** — entity types, DB tables/schemas, query helpers,
1010
REST routes, validators, payload value-objects, output parsers. The metadata is the
11-
durable spine; the generated code is a disposable artifact. It runs at runtime
12-
**without any MetaObjects dependency** — if the libraries disappeared tomorrow, you
13-
keep working code.
11+
durable spine; the generated code is a disposable artifact. It has **no
12+
proprietary runtime**: entity and model code imports nothing from MetaObjects, and the
13+
REST, prompt and client tiers import ordinary Apache-2.0 packages you can vendor or
14+
replace — if the libraries disappeared tomorrow, you keep working code.
1415

1516
**Generators are reference helpers, not guarantees** (ADR-0034 Amendment 3). The core —
1617
metamodel, loader, `migrate`, `verify`, prompt render — is what MetaObjects guarantees.

‎fixtures/agent-context-conformance/ts-requirements/expected/.claude/skills/metaobjects-codegen/SKILL.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ description: Use when configuring or running MetaObjects code generation — gen
88
Codegen is the first pillar: MetaObjects reads your typed metadata and emits
99
**idiomatic per-language code** — entity types, DB tables/schemas, query helpers,
1010
REST routes, validators, payload value-objects, output parsers. The metadata is the
11-
durable spine; the generated code is a disposable artifact. It runs at runtime
12-
**without any MetaObjects dependency** — if the libraries disappeared tomorrow, you
13-
keep working code.
11+
durable spine; the generated code is a disposable artifact. It has **no
12+
proprietary runtime**: entity and model code imports nothing from MetaObjects, and the
13+
REST, prompt and client tiers import ordinary Apache-2.0 packages you can vendor or
14+
replace — if the libraries disappeared tomorrow, you keep working code.
1415

1516
**Generators are reference helpers, not guarantees** (ADR-0034 Amendment 3). The core —
1617
metamodel, loader, `migrate`, `verify`, prompt render — is what MetaObjects guarantees.

‎spec/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ A typed metadata standard for declaring entity models, identities, relationships
1111
- **Drift checks** (`meta verify`) that flag divergence between code and metadata across entity codegen, prompt templates, output parsers and live database schema — plus the compile-time breakage the generated types cause on their own.
1212
- **Prompt construction** *(the fourth pillar)* that makes an LLM prompt a declared, deterministic, testable artifact instead of a scattered string: a typed payload declared as a projection (so payload bloat is visible), external provider-resolved prompt text, a deterministic render that is snapshot-testable and cache-stable, and build-time prompt↔payload drift detection — conformance-gated so the guarantee holds in every language port. Render, payload value-object codegen, `verify`, parser-on-receipt and the tolerant `extract` parser ship in all five ports today; MCP exposure of declared prompts and tools is the remaining library-side piece (see [`roadmap.md`](roadmap.md)). See the FR-004 design doc under [`../docs/superpowers/specs/`](../docs/superpowers/specs/).
1313

14-
The substrate is local-first: typed metadata lives in your repo at `metaobjects/`, generated code is idiomatic per-language output that runs **without any MetaObjects dependency at runtime**. If `@metaobjectsdev/*` packages disappeared tomorrow, your generated code keeps working.
14+
The substrate is local-first: typed metadata lives in your repo at `metaobjects/`, generated code is idiomatic per-language output with **no proprietary runtime**: entity and model code imports nothing from MetaObjects, and the REST, prompt, client and runtime tiers import ordinary Apache-2.0 packages. If `@metaobjectsdev/*` packages disappeared tomorrow, your generated code keeps working.
1515

1616
## The metamodel in one paragraph
1717

0 commit comments

Comments
 (0)