Skip to content

Commit eddf54b

Browse files
committed
site(video): captions for the re-cuts, and the drift blurb gains the fourth surface
The drift-detection description and its aria-label still named three surfaces — code, prompts, schema — and said any mismatch fails the build. The video's own output shows the fourth: a requirement nothing implements warns at exit 0, and fails once the implementation it names is gone. Captions follow the re-cut drift-detection, adopt-existing and runtime-ui videos. getting-started's caption text is unchanged (only a slide was fixed). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JGmCLHbQKuLBPjjhWC43jk
1 parent 4eed75b commit eddf54b

4 files changed

Lines changed: 65 additions & 65 deletions

File tree

www/video/adopt-existing.vtt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,38 +121,38 @@ Customers matches the model.
121121
Orders isn't modeled yet — so that's your next table to adopt, whenever you're ready.
122122

123123
31
124-
00:02:18.476 --> 00:02:20.004
124+
00:02:18.476 --> 00:02:20.055
125125
This is low-risk by design.
126126

127127
32
128-
00:02:20.004 --> 00:02:29.223
129-
The generated entity module imports only Drizzle and Zod; the routes mount through one ordinary open-source package — so adopting it is reversible, table by table.
128+
00:02:20.055 --> 00:02:30.110
129+
At runtime the generated entity module needs only Drizzle and Zod; the routes mount through one ordinary open-source package — so adopting it is reversible, table by table.
130130

131131
33
132-
00:02:29.223 --> 00:02:35.106
132+
00:02:30.110 --> 00:02:36.191
133133
The rest of your app is untouched, and you keep your escape hatches for anything metadata can't express.
134134

135135
34
136-
00:02:36.506 --> 00:02:44.305
136+
00:02:37.591 --> 00:02:45.389
137137
That's adoption: assess the fit, describe one table, choose your generators, generate, adopt — no big rewrite, no magic.
138138

139139
35
140-
00:02:44.305 --> 00:02:50.999
140+
00:02:45.389 --> 00:02:52.084
141141
Then, table by table, the model becomes the spine, and meta verify keeps it honest as you grow into it.
142142

143143
36
144-
00:02:52.399 --> 00:02:55.003
144+
00:02:53.484 --> 00:02:56.087
145145
You don't have to start over to start.
146146

147147
37
148-
00:02:55.003 --> 00:03:00.347
148+
00:02:56.087 --> 00:03:01.432
149149
Have your agent assess the fit, run meta init, describe a table, and meta gen.
150150

151151
38
152-
00:03:00.347 --> 00:03:04.185
152+
00:03:01.432 --> 00:03:05.269
153153
That's the MetaObjects series — more at metaobjects.dev.
154154

155155
39
156-
00:03:04.185 --> 00:03:05.555
156+
00:03:05.269 --> 00:03:06.640
157157
Thanks for watching.
158158

www/video/drift-detection.vtt

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -25,150 +25,150 @@ The model gained a field, nobody re-ran the generator, and one command caught it
2525
Let me show you how this works across four surfaces — your code, your prompts, your schema, and your claims.
2626

2727
7
28-
00:00:29.560 --> 00:00:33.697
28+
00:00:29.560 --> 00:00:33.543
2929
Meta verify checks one thing: does everything still agree with the model?
3030

3131
8
32-
00:00:33.697 --> 00:00:43.332
32+
00:00:33.543 --> 00:00:42.820
3333
It does it across four surfaces — your generated code, your prompt templates, your database schema, and the requirements you declare: what the software is supposed to do.
3434

3535
9
36-
00:00:43.332 --> 00:00:45.429
37-
Drift on any of them fails the build.
36+
00:00:42.820 --> 00:00:50.842
37+
Drift in the code, the prompts or the schema fails the build; a requirement warns when nothing implements it, and fails when what it named is gone.
3838

3939
10
40-
00:00:46.829 --> 00:00:49.188
40+
00:00:52.242 --> 00:00:54.601
4141
Before we run it, here's that one model.
4242

4343
11
44-
00:00:49.188 --> 00:00:56.031
44+
00:00:54.601 --> 00:01:01.444
4545
The Task entity carries its validators right on the fields — that drives the code, and its source drives the schema.
4646

4747
12
48-
00:00:56.031 --> 00:01:00.396
48+
00:01:01.444 --> 00:01:05.809
4949
The prompt has a typed payload and a template — that's the second surface.
5050

5151
13
52-
00:01:00.396 --> 00:01:05.292
52+
00:01:05.809 --> 00:01:10.705
5353
And the requirements at the bottom claim what's built — each one names a real node.
5454

5555
14
56-
00:01:05.292 --> 00:01:12.253
56+
00:01:10.705 --> 00:01:17.666
5757
And look at the references between them: the payload extends a real Task field, the template points at a real payload.
5858

5959
15
60-
00:01:12.253 --> 00:01:17.739
60+
00:01:17.666 --> 00:01:23.152
6161
Those are resolved, not trusted — rename or delete the target, and the model won't even load.
6262

6363
16
64-
00:01:17.739 --> 00:01:20.099
64+
00:01:23.152 --> 00:01:25.512
6565
So the model can't drift against itself.
6666

6767
17
68-
00:01:21.499 --> 00:01:23.073
68+
00:01:26.912 --> 00:01:28.486
6969
Surface one: your code.
7070

7171
18
72-
00:01:23.073 --> 00:01:27.863
72+
00:01:28.486 --> 00:01:33.276
7373
Verify regenerates from the model and compares it to what's committed.
7474

7575
19
76-
00:01:27.863 --> 00:01:31.559
76+
00:01:33.276 --> 00:01:36.972
7777
The model moved and the code didn't — drift, exit one.
7878

7979
20
80-
00:01:32.959 --> 00:01:34.462
80+
00:01:38.372 --> 00:01:39.875
8181
Surface two: your prompts.
8282

8383
21
84-
00:01:34.462 --> 00:01:38.506
84+
00:01:39.875 --> 00:01:43.919
8585
Every variable in a prompt template has to exist on its typed payload.
8686

8787
22
88-
00:01:38.506 --> 00:01:44.747
88+
00:01:43.919 --> 00:01:50.160
8989
Rename a field and leave the template behind, and the build fails — instead of the prompt quietly degrading.
9090

9191
23
92-
00:01:46.147 --> 00:01:47.702
92+
00:01:51.560 --> 00:01:53.115
9393
Surface three: your schema.
9494

9595
24
96-
00:01:47.702 --> 00:01:50.581
96+
00:01:53.115 --> 00:01:55.994
9797
Verify diffs the model against your live database.
9898

9999
25
100-
00:01:50.581 --> 00:01:57.146
100+
00:01:55.994 --> 00:02:02.559
101101
A column that drifted out of band — dropped, renamed, or added by hand — gets caught before it reaches production.
102102

103103
26
104-
00:01:58.546 --> 00:02:01.847
104+
00:02:03.959 --> 00:02:07.260
105105
And surface four is the one no test can replace.
106106

107107
27
108-
00:02:01.847 --> 00:02:06.043
108+
00:02:07.260 --> 00:02:11.456
109109
A test exercises code that exists; an absence can't fail one.
110110

111111
28
112-
00:02:06.043 --> 00:02:10.308
112+
00:02:11.456 --> 00:02:15.721
113113
So you declare requirements in the model — and mark them live.
114114

115115
29
116-
00:02:10.308 --> 00:02:16.774
116+
00:02:15.721 --> 00:02:22.187
117117
Mark one live while nothing implements it, verify gives a warning — a capability nobody built.
118118

119119
30
120-
00:02:16.774 --> 00:02:19.885
120+
00:02:22.187 --> 00:02:25.298
121121
And it resolves the link rather than trusting it.
122122

123123
31
124-
00:02:19.885 --> 00:02:25.219
124+
00:02:25.298 --> 00:02:30.632
125125
Rename the node a live claim points at, and the warning becomes an error — exit one.
126126

127127
32
128-
00:02:25.219 --> 00:02:30.616
128+
00:02:30.632 --> 00:02:36.029
129129
It checks that the claim points at something real, not that the something is correct.
130130

131131
33
132-
00:02:32.016 --> 00:02:38.870
132+
00:02:37.429 --> 00:02:44.283
133133
When everything's in sync, one command says so: code, prompts, schema, and claims all agree with the model.
134134

135135
34
136-
00:02:40.270 --> 00:02:43.951
136+
00:02:45.683 --> 00:02:49.364
137137
Put that one line in your CI, and drift can't merge.
138138

139139
35
140-
00:02:43.951 --> 00:02:52.516
140+
00:02:49.364 --> 00:02:57.929
141141
A pull request that diverges from the model fails the check — so an agent has to change the model first, then regenerate.
142142

143143
36
144-
00:02:52.516 --> 00:02:55.064
144+
00:02:57.929 --> 00:03:00.477
145145
The model stays the source of truth.
146146

147147
37
148-
00:02:56.464 --> 00:02:57.754
148+
00:03:01.877 --> 00:03:03.118
149149
That's the whole idea.
150150

151151
38
152-
00:02:57.754 --> 00:03:03.206
152+
00:03:03.118 --> 00:03:08.363
153153
AI code is locally coherent and globally divergent — drift you can't see by reading one file.
154154

155155
39
156-
00:03:03.206 --> 00:03:08.307
157-
Meta verify checks four surfaces against one model, and any mismatch is a failed build.
156+
00:03:08.363 --> 00:03:16.427
157+
Meta verify checks four surfaces against one model: drift fails the build, and a requirement nothing has built yet is warned about, not buried.
158158

159159
40
160-
00:03:08.307 --> 00:03:11.239
160+
00:03:16.427 --> 00:03:19.247
161161
The AI writes the code; the model keeps it honest.
162162

163163
41
164-
00:03:12.639 --> 00:03:16.402
164+
00:03:20.647 --> 00:03:24.410
165165
Add meta verify to your build, and make drift fail the build.
166166

167167
42
168-
00:03:16.402 --> 00:03:20.411
168+
00:03:24.410 --> 00:03:28.420
169169
This is part of the MetaObjects series — more at metaobjects.dev.
170170

171171
43
172-
00:03:20.411 --> 00:03:21.645
172+
00:03:28.420 --> 00:03:29.653
173173
Thanks for watching.
174174

www/video/runtime-ui.vtt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -109,54 +109,54 @@ Load the model, and it drives a whole lot: dynamic CRUD, validation, relationshi
109109
That tier ships today in TypeScript, Java, Kotlin, and Python; C# is on the roadmap.
110110

111111
28
112-
00:01:53.379 --> 00:01:56.805
112+
00:01:53.379 --> 00:01:56.876
113113
So when do you generate, and when do you drive it live?
114114

115115
29
116-
00:01:56.805 --> 00:02:03.719
117-
Generate for build-time artifactstyped, committed — and the entity tier imports only your ORM and validator.
116+
00:01:56.876 --> 00:02:04.568
117+
Generate when you want build-time artifacts: typed, committed code whose entity tier runs on just your ORM and validator.
118118

119119
30
120-
00:02:03.719 --> 00:02:12.439
120+
00:02:04.568 --> 00:02:13.468
121121
Drive it live when codegen can't reach: a shipped app you can't redeploy, an agent that connects tomorrow, behavior that changes on the fly.
122122

123123
31
124-
00:02:12.439 --> 00:02:15.304
124+
00:02:13.468 --> 00:02:16.392
125125
A snapshot can't reach them; a live model can.
126126

127127
32
128-
00:02:16.704 --> 00:02:17.718
128+
00:02:17.792 --> 00:02:18.806
129129
That's the idea.
130130

131131
33
132-
00:02:17.718 --> 00:02:22.216
132+
00:02:18.806 --> 00:02:23.304
133133
Codegen is a snapshot of your model; runtime metadata is the live feed.
134134

135135
34
136-
00:02:22.216 --> 00:02:26.082
136+
00:02:23.304 --> 00:02:27.170
137137
Same model — generate the code, or drive it live, often both.
138138

139139
35
140-
00:02:26.082 --> 00:02:28.553
140+
00:02:27.170 --> 00:02:29.641
141141
Change the model, and behavior follows.
142142

143143
36
144-
00:02:28.553 --> 00:02:31.341
144+
00:02:29.641 --> 00:02:32.429
145145
Nothing to regenerate, nothing to recompile.
146146

147147
37
148-
00:02:32.741 --> 00:02:34.897
148+
00:02:33.829 --> 00:02:35.985
149149
Drive your app from the model.
150150

151151
38
152-
00:02:34.897 --> 00:02:37.629
152+
00:02:35.985 --> 00:02:38.717
153153
Build grid ships in runtime-web today.
154154

155155
39
156-
00:02:37.629 --> 00:02:42.302
156+
00:02:38.717 --> 00:02:43.390
157157
This is part of the MetaObjects series — more at metaobjects.dev.
158158

159159
40
160-
00:02:42.302 --> 00:02:43.739
160+
00:02:43.390 --> 00:02:44.827
161161
Thanks for watching.
162162

www/videos.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,13 @@ <h2 class="section-label">Adopt an existing app — one table at a time</h2>
130130
<section class="video-section" id="drift-detection" style="max-width:900px;margin:0 auto;padding:2.5rem 1.5rem 0;">
131131
<h2 class="section-label">Drift detection — make drift fail the build</h2>
132132
<p style="color:#8b9ab5;max-width:720px;">
133-
<code>meta verify</code> checks that your code, your prompts, and your database schema still agree with the modelany mismatch fails the build.
133+
<code>meta verify</code> checks your code, your prompts, and your database schema against the model, and drift in any of them fails the build. It also checks your declared requirements: a claim nothing implements warns, and one whose implementation is gone fails.
134134
</p>
135135
<figure style="margin:0;">
136136
<video controls preload="metadata" playsinline
137137
poster="/video/drift-detection-poster.png"
138138
width="1280" height="720"
139-
aria-label="Drift detection: meta verify checks code, prompts, and schema against one model and fails the build on any mismatch."
139+
aria-label="Drift detection: meta verify checks code, prompts, schema, and declared requirements against one model. Drift fails the build; an unimplemented claim warns."
140140
style="width:100%;max-width:860px;height:auto;border-radius:14px;border:1px solid rgba(255,255,255,0.08);margin:1rem auto 0;display:block;">
141141
<source src="https://metaobjects.com/video/drift-detection.mp4" type="video/mp4">
142142
<track kind="captions" src="/video/drift-detection.vtt" srclang="en" label="English">

0 commit comments

Comments
 (0)