Skip to content

Commit b7c8793

Browse files
dmealingclaude
andcommitted
merge: main into worktree-documentation-provider
Resolved 1 conflict in server/java/metadata/src/main/resources/META-INF/services/com.metaobjects.registry.MetaDataTypeProvider — both branches added a new SPI entry; kept both (SourceTypesMetaDataProvider from main, DocumentationMetaDataProvider from this branch). While merging, main's Python source-v2 work (113a9f4, 0e94f59, 43b186f) landed source.rdb + @kind/@table/@role/@Schema registration on the Python loader. The last doc-common-attrs fixture (-on-all-types) was held in this branch's Python expected-failures ledger because it used source.rdb. Verified the fixture now passes on Python and removed the ledger entry — Python now passes all 4 doc fixtures cleanly. The C# ledger keeps its entry (no C# source-v2 port yet). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2 parents 94e241a + 7e2d4ec commit b7c8793

89 files changed

Lines changed: 7308 additions & 628 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/superpowers/plans/2026-05-24-meta-migrate-d1-dialect.md

Lines changed: 2421 additions & 0 deletions
Large diffs are not rendered by default.

docs/superpowers/specs/2026-05-24-meta-migrate-d1-dialect-design.md

Lines changed: 283 additions & 0 deletions
Large diffs are not rendered by default.

server/java/.claude/docs/ARCHITECTURAL_REFACTORING_PLAN.md

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -438,17 +438,16 @@ metaobjects/
438438
"package": "com_example_model",
439439
"children": [
440440
{
441-
"object": {
441+
"object.entity": {
442442
"name": "User",
443-
"type": "pojo",
444-
"@dbTable": "users",
445443
"children": [
444+
{ "source.rdb": { "@table": "users" } },
446445
{
447446
"field": {
448447
"name": "id",
449448
"type": "long",
450449
"@required": true,
451-
"@dbColumn": "user_id"
450+
"@column": "user_id"
452451
}
453452
},
454453
{
@@ -457,7 +456,7 @@ metaobjects/
457456
"type": "string",
458457
"@required": true,
459458
"@maxLength": 50,
460-
"@dbColumn": "username"
459+
"@column": "username"
461460
}
462461
},
463462
{
@@ -466,31 +465,30 @@ metaobjects/
466465
"type": "string",
467466
"@required": true,
468467
"@maxLength": 255,
469-
"@dbColumn": "email"
468+
"@column": "email"
470469
}
471470
},
472471
{
473472
"field": {
474473
"name": "createdDate",
475474
"type": "timestamp",
476-
"@dbColumn": "created_date"
475+
"@column": "created_date"
477476
}
478477
}
479478
]
480479
}
481480
},
482481
{
483-
"object": {
482+
"object.entity": {
484483
"name": "Product",
485-
"type": "pojo",
486-
"@dbTable": "products",
487484
"children": [
485+
{ "source.rdb": { "@table": "products" } },
488486
{
489487
"field": {
490488
"name": "id",
491489
"type": "long",
492490
"@required": true,
493-
"@dbColumn": "product_id"
491+
"@column": "product_id"
494492
}
495493
},
496494
{
@@ -499,15 +497,15 @@ metaobjects/
499497
"type": "string",
500498
"@required": true,
501499
"@maxLength": 100,
502-
"@dbColumn": "product_name"
500+
"@column": "product_name"
503501
}
504502
},
505503
{
506504
"field": {
507505
"name": "price",
508506
"type": "double",
509507
"@required": true,
510-
"@dbColumn": "price"
508+
"@column": "price"
511509
}
512510
}
513511
]

server/java/.claude/docs/METAKEY_TO_METARELATIONSHIP_MIGRATION.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# MetaKey to MetaRelationship Migration - Complete Implementation Plan
22

3+
> **Historical note (2026-05-24, source-v2 Stage 2):** The relationship target attr,
4+
> documented throughout this file as `@targetObject` (with constant `ATTR_TARGET_OBJECT`
5+
> and accessor `getTargetObject()`), was subsequently renamed to `@objectRef`
6+
> (constant `ATTR_OBJECT_REF`, accessor `getObjectRef()`) as a Tier-1
7+
> cross-language vocabulary alignment with the TS reference and the shared
8+
> conformance corpus. This document is preserved as a historical record of the
9+
> prior migration; for current authoring guidance use `@objectRef`.
10+
311
## 🎯 **Project Overview**
412

513
**Objective**: Migrate from database-centric MetaKey system to model-driven MetaRelationship system that better supports AI code generation and cross-platform persistence.

server/java/.claude/docs/persistence.md

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,15 @@ Without it, ObjectManagerDB fails with "Attempt to modify an identity column" er
4646

4747
```json
4848
{
49-
"object": {
49+
"object.entity": {
5050
"name": "User",
51-
"subType": "managed",
52-
"@dbTable": "users",
5351
"children": [
52+
{ "source.rdb": { "@table": "users" } },
5453
{
5554
"field": {
5655
"name": "id",
5756
"subType": "long",
58-
"@dbColumn": "user_id"
57+
"@column": "user_id"
5958
}
6059
},
6160
{
@@ -178,22 +177,24 @@ Without it, ObjectManagerDB fails with "Attempt to modify an identity column" er
178177

179178
```json
180179
{
181-
"object": {
180+
"object.entity": {
182181
"name": "User",
183-
"@dbTable": "USERS", // Table name
184-
"@dbSchema": "public", // Schema name (optional)
185-
"@dbCatalog": "mydb" // Catalog name (optional)
182+
"children": [
183+
{ "source.rdb": { "@table": "USERS", "@schema": "public" } }
184+
]
186185
}
187186
}
188187
```
189188

189+
The table name and optional schema are declared via the `source.rdb` child node. The `@dbCatalog` attribute (catalog-level override) remains on the `source.rdb` node as `@catalog` if needed.
190+
190191
### Field Level
191192

192193
```json
193194
{
194195
"field": {
195196
"name": "email",
196-
"@dbColumn": "EMAIL_ADDRESS", // Column name
197+
"@column": "EMAIL_ADDRESS", // Column name
197198
"@dbType": "VARCHAR(255)", // SQL type override
198199
"@dbNullable": false, // NOT NULL constraint
199200
"@dbUnique": true // UNIQUE constraint
@@ -354,11 +355,11 @@ long count = objectManager.count(connection, User.class);
354355
### db-overlay.json
355356
```json
356357
{
357-
"object": {
358+
"object.entity": {
358359
"name": "Store",
359-
"@dbTable": "STORE",
360360
"children": [
361-
{"field": {"name": "id", "@dbColumn": "ID"}},
361+
{ "source.rdb": { "@table": "STORE" } },
362+
{"field": {"name": "id", "@column": "ID"}},
362363
{"identity": {"name": "store_pk", "@generation": "increment", "@dbIndexName": "pk_store"}}
363364
]
364365
}

server/java/archetype/src/main/resources/archetype-resources/.claude/CLAUDE.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -183,36 +183,40 @@ This file maps your entities to H2 database tables:
183183
{
184184
"object": {
185185
"name": "Product",
186-
"@dbTable": "products",
187186
"children": [
187+
{
188+
"source.rdb": {
189+
"@table": "products"
190+
}
191+
},
188192
{
189193
"field": {
190194
"name": "id",
191-
"@dbColumn": "product_id"
195+
"@column": "product_id"
192196
}
193197
},
194198
{
195199
"field": {
196200
"name": "name",
197-
"@dbColumn": "product_name"
201+
"@column": "product_name"
198202
}
199203
},
200204
{
201205
"field": {
202206
"name": "description",
203-
"@dbColumn": "description"
207+
"@column": "description"
204208
}
205209
},
206210
{
207211
"field": {
208212
"name": "price",
209-
"@dbColumn": "price"
213+
"@column": "price"
210214
}
211215
},
212216
{
213217
"field": {
214218
"name": "isActive",
215-
"@dbColumn": "is_active"
219+
"@column": "is_active"
216220
}
217221
}
218222
]

server/java/codegen-base/src/main/java/com/metaobjects/generator/constraint/CodegenAttributeConstants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
* <li><strong>Build-Time Generation</strong> - Maven plugin and build tool attributes</li>
1919
* </ul>
2020
*
21-
* <p><strong>Architectural Note:</strong> Database-related attributes (dbTable, dbColumn, etc.)
21+
* <p><strong>Architectural Note:</strong> Database-related attributes (dbTable, column, etc.)
2222
* are defined in {@link com.metaobjects.database.common.DatabaseAttributeConstants} to avoid
2323
* duplication between OMDB and code generation modules.</p>
2424
*

server/java/codegen-base/src/test/resources/schema-validation/valid-complete-metadata.xml

Lines changed: 0 additions & 74 deletions
This file was deleted.

server/java/codegen-base/src/test/resources/schema-validation/valid-inline-attributes.json

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,19 @@
66
"object": {
77
"name": "Product",
88
"subType": "pojo",
9-
"@dbTable": "products",
109
"@hasAuditing": true,
1110
"children": [
11+
{
12+
"source": {
13+
"subType": "rdb",
14+
"@table": "products"
15+
}
16+
},
1217
{
1318
"field": {
1419
"name": "productId",
1520
"subType": "long",
16-
"@dbColumn": "product_id",
21+
"@column": "product_id",
1722
"@dbNullable": false,
1823
"children": [
1924
{
@@ -29,7 +34,7 @@
2934
"field": {
3035
"name": "name",
3136
"subType": "string",
32-
"@dbColumn": "product_name",
37+
"@column": "product_name",
3338
"@isSearchable": true,
3439
"children": [
3540
{
@@ -53,7 +58,7 @@
5358
"field": {
5459
"name": "price",
5560
"subType": "double",
56-
"@dbColumn": "price",
61+
"@column": "price",
5762
"@dbScale": 2,
5863
"children": [
5964
{
@@ -77,14 +82,14 @@
7782
"name": "inStock",
7883
"subType": "boolean",
7984
"@defaultValue": true,
80-
"@dbColumn": "in_stock"
85+
"@column": "in_stock"
8186
}
8287
},
8388
{
8489
"field": {
8590
"name": "categoryId",
8691
"subType": "int",
87-
"@dbColumn": "category_id",
92+
"@column": "category_id",
8893
"@dbForeignKey": "categories.id",
8994
"@isOptional": true
9095
}

server/java/codegen-base/src/test/resources/template-test-metadata.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,23 @@
55
"object.entity": {
66
"name": "User",
77
"package": "example",
8-
"@dbTable": "users",
98
"@description": "User entity for template testing",
109
"children": [
10+
{
11+
"source.rdb": {
12+
"@table": "users"
13+
}
14+
},
1115
{
1216
"field.long": {
1317
"name": "id",
14-
"@dbColumn": "id"
18+
"@column": "id"
1519
}
1620
},
1721
{
1822
"field.string": {
1923
"name": "username",
20-
"@dbColumn": "username",
24+
"@column": "username",
2125
"@dbNullable": "false",
2226
"children": [
2327
{
@@ -34,7 +38,7 @@
3438
{
3539
"field.string": {
3640
"name": "email",
37-
"@dbColumn": "email",
41+
"@column": "email",
3842
"children": [
3943
{
4044
"validator.required": {}

0 commit comments

Comments
 (0)