Skip to content

Commit 3e5f074

Browse files
dmealingclaude
andcommitted
ci+docs: wire SP-G registry-conformance gate into CI + finalize README per-port status
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 9456a40 commit 3e5f074

3 files changed

Lines changed: 21 additions & 1 deletion

File tree

.github/workflows/conformance.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ jobs:
4747
bun install
4848
# Loader + YAML + object-model corpora (packages/metadata).
4949
cd server/typescript/packages/metadata && bun test test/conformance.test.ts test/yaml-conformance.test.ts test/object-model-conformance.test.ts
50+
# Registry-conformance gate (TS is the reference emitter — byte-matches
51+
# the committed canonical) + untested-vocabulary coverage report.
52+
# C#/Python run theirs via the whole-project/whole-dir scope below;
53+
# Java/Kotlin's runner is @Disabled (pending the Java reconciliation, #36)
54+
# and is intentionally NOT added to their scoped -Dtest= lists.
55+
bun test test/registry-conformance.test.ts test/registry-coverage.test.ts
5056
# Byte-exact render / verify / extract / output-prompt corpora (packages/render).
5157
cd ../render && bun test test/render-conformance.test.ts test/verify-conformance.test.ts test/extract/extract-conformance.test.ts test/output-prompt-conformance.test.ts
5258
# Validator-parity corpus (generated input validation). No Docker.

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ import { CurrencyInput } from "@metaobjectsdev/react";
406406

407407
Preserve the following contracts exactly across all language ports:
408408

409-
**Metamodel subtype vocabularies (must be identical across languages):**
409+
**Metamodel subtype vocabularies (must be identical across languages):** the `registry-conformance` gate (`fixtures/registry-conformance/`) is the structural enforcer of this rule — each port emits its registry as a canonical manifest byte-matched to `expected-registry.json` (TS/C#/Python live + green; Java/Kotlin gated pending reconciliation). See `fixtures/registry-conformance/README.md`.
410410
- Filter operators: `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `like`, `isNull`
411411
- Source subtypes: `rdb` (paradigm; ADR-0007). The pre-v2 `dbTable`/`dbView` subtypes are RETIRED — `source.rdb` + `@kind: table|view|materializedView|storedProc|tableFunction` is the form, with read-only-ness derived from `@kind`. Multi-source via `@role` (exactly one `primary` per object). Source physical name = `@table` (NOT `@name`); field physical name = `@column` (renamed from `@dbColumn`). Referential actions on relationships: `@onDelete` / `@onUpdate`.
412412
- Origin subtypes: `passthrough`, `aggregate`

fixtures/registry-conformance/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,20 @@ divergence:
184184

185185
## Per-port status
186186

187+
| Port | Status | Runner | Runs in CI via |
188+
|---|---|---|---|
189+
| TypeScript | **live + green** (reference emitter; produces the canonical) | `packages/metadata/test/registry-conformance.test.ts` | `conformance` job, `typescript` matrix leg (scoped `bun test`) |
190+
| C# | **live + green** (byte-identical) | `MetaObjects.Conformance.Tests/RegistryManifestConformanceTests.cs` | `conformance` job, `csharp` matrix leg (whole `MetaObjects.Conformance.Tests` project) |
191+
| Python | **live + green** (byte-identical) | `tests/conformance/test_registry_conformance.py` | `conformance` job, `python` matrix leg (whole `tests/conformance` dir) |
192+
| Java | **gated (`@Ignore`)** — Phase-2 vocabulary divergence | `metadata/src/test/java/com/metaobjects/registry/RegistryManifestConformanceTest.java` | n/a — intentionally NOT in the scoped `-Dtest=` list while gated |
193+
| Kotlin | **gated (`@Disabled`)** — shares the Java JVM registry | `codegen-kotlin/src/test/kotlin/com/metaobjects/generator/kotlin/RegistryManifestConformanceTest.kt` | n/a — intentionally NOT in the scoped `-Dtest=` list while gated |
194+
195+
The three live ports (TS / C# / Python) genuinely run on every CI build (`.github/workflows/conformance.yml`, `conformance` job). The Java + Kotlin runners are wired and compile, but their assertions are `@Ignore`/`@Disabled` pending the Java metamodel-vocabulary reconciliation (tracked as a dedicated follow-on; see the **divergence analysis**:
196+
[`docs/superpowers/specs/2026-06-02-sp-g-java-registry-divergence-analysis.md`](../../docs/superpowers/specs/2026-06-02-sp-g-java-registry-divergence-analysis.md) and the
197+
[reconciliation plan](../../docs/superpowers/plans/2026-06-02-sp-g-java-reconciliation-plan.md)). They are left out of the Java/Kotlin scoped `-Dtest=` lists so they neither run nor error — re-add them (and drop the annotation) once the reconciliation lands.
198+
199+
Detail per port:
200+
187201
- **TypeScript** — reference emitter; green (produces the canonical).
188202
- **C#** — green, byte-identical.
189203
- **Python** — green, byte-identical (`emit_registry_manifest` in

0 commit comments

Comments
 (0)