Skip to content

Commit aaaec87

Browse files
committed
site: the "verified" page was not, and the story page still read pre-release
getting-started.html leads with "every command and output below is real — verified". Checked against the CLI it names, three things on it were not: - `meta init` scaffolds FIVE generators, not four. `SCAFFOLDED_GENERATOR_NAMES` is entity, queries, routes, barrel AND names, and the scaffolded config imports and wires `namesFile()`. The tree, the prose, the config excerpt and the run output all omitted it, so a reader following the page gets a file the page never mentions — and `names.ts` is exactly the kind of owned generator the page exists to sell. - The run therefore emits five files, not four: `<Entity>.names.ts` is real output (`NAMES_FILE_SUFFIX = ".names.ts"`), so "4 written" and "three things per entity" were both short by one. - The scaffold ships SEVEN agent skills, not six — `metaobjects-fit-assessment` was missing from the list. A page whose whole credibility device is "this is a real transcript" cannot be off by one in three places; a reader who runs it and counts concludes the rest is unverified too. story.html still said "So I'm bringing MetaObjects back" — present-progressive, three weeks after 1.0 shipped to all four registries. It now says it is back, and names the date. Not changed, and worth recording because it was raised and rejected: the capability matrix reads "Zod / Pydantic / Jakarta / DataAnnotations / Jakarta", which looks like a duplicated cell. It is correct. Both JVM ports use it — `codegen-kotlin` emits `jakarta.validation.constraints` — so Java and Kotlin genuinely share a validation stack. Changing it would have replaced a true statement with an invented library name.
1 parent b82c1eb commit aaaec87

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

www/getting-started.html

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,19 +86,20 @@ <h3>Set up the project and the agent context</h3>
8686
│ ├── entity.ts <span class="c"># Drizzle table + Zod schemas</span>
8787
│ ├── queries.ts <span class="c"># typed data-access</span>
8888
│ ├── routes.ts <span class="c"># REST endpoints (Fastify)</span>
89+
│ ├── names.ts <span class="c"># physical table/column name constants</span>
8990
│ └── barrel.ts <span class="c"># the index.ts re-exports</span>
9091
├── metaobjects.config.ts <span class="c"># ← targets: dialect + what to generate</span>
9192
├── src/db.ts <span class="c"># throwing stub — swap in your DB connection</span>
9293
├── CLAUDE.md <span class="c"># wired to auto-load the context below</span>
9394
├── .metaobjects/ <span class="c"># tool state + agent docs (AGENTS.md, CLAUDE.md)</span>
94-
└── .claude/skills/ <span class="c"># six skills your agent now has:</span>
95+
└── .claude/skills/ <span class="c"># seven skills your agent now has:</span>
9596
├── metaobjects-authoring/ <span class="c"># write &amp; edit models</span>
9697
├── metaobjects-codegen/ <span class="c"># run codegen</span>
9798
├── metaobjects-runtime-ui/ <span class="c"># wire up runtime + UI</span>
9899
├── metaobjects-prompts/ <span class="c"># typed LLM prompts</span>
99100
├── metaobjects-verify/ <span class="c"># drift checks</span>
100101
└── metaobjects-audit/ <span class="c"># check adoption depth</span></pre>
101-
<p>Those four generators under <code>codegen/generators/</code> are the point: they're plain
102+
<p>Those five generators under <code>codegen/generators/</code> are the point: they're plain
102103
TypeScript, copied into your project, and <strong>yours to edit</strong>. <code>meta gen</code>
103104
runs those local copies — not the ones inside the package — so changing the shape of the
104105
generated code is an ordinary edit to a file you own.</p>
@@ -172,6 +173,7 @@ <h2 class="section-label">3 · Pick your language</h2>
172173
entityFile(), <span class="c">// Drizzle table + Zod schemas + typed constants</span>
173174
queriesFile(), <span class="c">// typed data-access (findById, list, create…)</span>
174175
routesFile(), <span class="c">// REST endpoints (Fastify)</span>
176+
namesFile(), <span class="c">// &lt;Entity&gt;Names — physical table/column constants</span>
175177
barrel(), <span class="c">// src/generated/index.ts re-exports</span>
176178
],
177179
docs: { outDir: <span class="s">"./docs"</span>, surfaces: [<span class="s">"model"</span>, <span class="s">"api"</span>] },
@@ -209,10 +211,11 @@ <h2 class="section-label">5 · Generate</h2>
209211
<span class="n">NEW</span> src/generated/Task.ts
210212
<span class="n">NEW</span> src/generated/Task.queries.ts
211213
<span class="n">NEW</span> src/generated/Task.routes.ts
214+
<span class="n">NEW</span> src/generated/Task.names.ts
212215
<span class="n">NEW</span> src/generated/index.ts
213216

214-
4 written</pre>
215-
<p class="gs-note">That's a real run. You get three things per entity (plus a barrel):</p>
217+
5 written</pre>
218+
<p class="gs-note">That's a real run. You get four things per entity (plus a barrel):</p>
216219
<ul class="gs-note">
217220
<li><code>Task.ts</code> — the <strong>entity</strong>: a Drizzle table, Zod insert/update schemas, a typed
218221
<code>Task</code> constants object (fields, labels, validation rules), and filter/sort allowlists.</li>

www/story.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ <h1>25 years private. Now open.</h1>
7777

7878
<p>Then AI arrived, and I watched it generate beautiful code that <strong>drifted</strong>: locally perfect inside each prompt, globally inconsistent across the system. Different field names for the same concept. Types that diverged at every boundary. Plausible APIs that didn't quite exist. The vendors didn't fix it. That's when I realized I'd been looking at the wrong problem in 2022. The job was never <em>generating</em> code — it was keeping it <strong>coherent as a system grows</strong>. Metadata is that missing spine, and AI turns out to be a far better consumer of metadata than humans ever were.</p>
7979

80-
<p>So I'm bringing MetaObjects back — AI-first, open source — for the first time in 25 years. And here's the honest version of how I build now: I ship software fast, with heavy AI assistance, across a whole family of products. That's exactly the situation that wrecks consistency. <strong>MetaObjects is the spine that stops it</strong> — define the model once, generate every layer from it, and let drift break the build. My other products run on it. It isn't a thesis I'm pitching you; it's what I ship on.</p>
80+
<p>So MetaObjects is back — AI-first, open source — for the first time in 25 years. 1.0 shipped on 2026-09-09, on npm, PyPI, NuGet and Maven Central. And here's the honest version of how I build now: I ship software fast, with heavy AI assistance, across a whole family of products. That's exactly the situation that wrecks consistency. <strong>MetaObjects is the spine that stops it</strong> — define the model once, generate every layer from it, and let drift break the build. My other products run on it. It isn't a thesis I'm pitching you; it's what I ship on.</p>
8181

8282
<div class="article-cta">
8383
<p>The full origin story — 25 years, the production systems, the AI-drift turning point — lives on my site.</p>

0 commit comments

Comments
 (0)