Repository navigation
feat(metadata): mark reserved vocabulary by implementing port - #555
Merged
Merged
Conversation
…arked implementedIn The 13 generic view.* controls (with view.textarea @rows and the view.image attrs) and object.* @object used to be carved out of the registry manifest as presentation-only or native-binding vocabulary. They are now in the shared contract in every port, marked rather than removed: - implementedIn names the ports that act on an entry so far (["typescript"] for the view controls, ["java"] for @object). Every other port registers it, loads it strictly and ignores it; an unregistered attr on it still fails. - ports names the ports a language-specific attr belongs to: @dbSetName ["csharp"] and @objectadapter ["java", "kotlin"]. All five ports register the metaobjects-ui-web provider and @object / @objectadapter, emit implementedIn in their manifests, and byte-match expected-registry.json. Java and Python gain the ui-web provider and the spec-reader support for implementedIn; Java's extends-value mapping accepts a double-valued attr. Three conformance fixtures gate the loading behaviour (view-kind1-controls, object-kind1-jvm-binding-attrs, error-kind1-view-unregistered-attr). meta types marks these entries in its text output and carries implementedIn and ports in --format json. The json tsOnly field is kept, derived from implementedIn, and deprecated; it is removed in 1.4. The metamodel docs, site reference pages and agent-context fixtures are regenerated, and docs/CONFORMANCE.md and the fixture counts are updated.
…In, tsOnly, counts (454) and carve-out removal. One stale historical sentence in registry README fixed. No unresolved gaps.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Changed
implementedInandportsinstead of carved out. This covers the genericview.*controls,view.textarea @rows, theview.imageattrs,object.* @objectand the language-specific attrs@dbSetNameand@objectAdapter. Every port registers and loads this vocabulary strictly and ignores what it does not act on. Unregistered attrs on these types still fail.fixtures/registry-conformance/expected-registry.jsonmatches byte-for-byte across all five ports. Adds theview-kind1-controls,object-kind1-jvm-binding-attrsanderror-kind1-view-unregistered-attrconformance fixtures.meta types --format jsonnow emitsimplementedInandportsbeside the existingproviderand the retainedtsOnlyfield.tsOnlyis derived fromimplementedInand is listed as deprecated, removed in 1.4. Regenerates the metamodel docs, site reference pages and agent-context fixtures.Known limits
view.*controls and their attrs, and only Java acts on@object. The other ports register this vocabulary and load it strictly but do nothing with it yet;implementedInrecords which ports act on it. Tracked in Tracking: reserved vocabulary not yet implemented in every port #549.tsOnlyinmeta types --format jsonis kept for the 1.3.x line, derived fromimplementedIn, and deprecated. It is removed in 1.4; readimplementedIninstead.docs/CONFORMANCE.mdstill has TODO lines foridentity.primary @sequenceStart(Honour identity.primary @sequenceStart in the TypeScript, Java, Kotlin and Python ports #544). They are unrelated to this change.Gate
Validated in 1 no-mistakes run. Review found that the squashed commit had put back an older
GeneratorGoldenTests.cs, undoing the CI-safe golden-file lookup from #554; the pipeline restored the file, which now matchesmain, and also fixed a garbled code comment and one out-of-date sentence in the registry README. In the test step the Java lane failed once while running beside Python and passed on two reruns. Before the run, every port's suite passed locally: TypeScript per package, C# 4564, Python 4905, the Java reactor including Kotlin, andscripts/ci-local.sh --quick.Validation
Risk Assessment
✅ Low: All five ports register the same vocabulary and emit implementedIn/ports, the spec mirrors are byte-identical, tsOnly stays as a derived deprecated field, and the earlier GeneratorGoldenTests regression is gone; the remaining risk is that I did not run the per-port manifest byte-match.
Testing
Strict-load and guard scenarios driven live through the TS CLI in disposable projects: the three review fixtures and adversarial attr-scope cases behave as the intent requires. The TS CLI reports tsOnly as derived from implementedIn across all 593 vocabulary matches. Cross-port conformance lanes passed: Python, Kotlin, Java (on rerun), and C# (conformance and integration), plus the gates lane for generated-artifact drift. Java red once in a combined run and green on rerun; cause not determined. The TypeScript baseline scenario is untested in this phase and needs a live rerun. No UI surface, so no visual artifacts.
bun bin/meta.ts verifyin temp project holding fixtures/conformance/view-kind1-controls/input/meta.catalog.json, exit=0bun bin/meta.ts verifyin temp project holding fixtures/conformance/object-kind1-jvm-binding-attrs/input, exit=0ERR_UNKNOWN_ATTR: Unknown attribute '@cropShape' on view.image 'form'bun bin/meta.ts types --format json: 593 matches, 0 tsOnly mismatches; view.* implementedIn ['typescript'] tsOnly true; @object implementedIn ['java'] tsOnly false; @dbSetName ports ['csharp']scripts/ci-local.sh --only ts-fast --only ts-unit --strict-toolchains…scripts/ci-local.sh --only java-fastrerun exit 0 (evidence/ci-java-fast-rerun.log, conformance: java and kotlin ✓); direct mvn steps all exit 0 (EjectContractTest included)conformance: python ✓,integration-tests (python) ✓ls -d fixtures/conformance/*/ | wc -l= 454 matches docs/CONFORMANCE.mdPipeline
Updates from git push no-mistakes
✅ **Intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
✅ **Review** - 2 issues found, both resolved
server/csharp/MetaObjects.Codegen.Tests/GeneratorGoldenTests.cs- the squashed commit had reverted the golden-directory lookup to[CallerFilePath], which fails on a CI build. Fixed: the file is restored to matchmain(found from the repo root).scripts/lib/requirement-vocabulary.ts- garbled comment reworded.ci-local --only java-fast, run alongside python) went red once at 54s with no failure detail in the log. Direct rerun of every Java step, and a standalone--only java-fastrerun, both passed. Likely a concurrency or stale-build artifact from running two lanes at once; not reproduced.bun bin/meta.ts verifyin temp project holding fixtures/conformance/view-kind1-controls/input/meta.catalog.json, exit=0bun bin/meta.ts verifyin temp project holding fixtures/conformance/object-kind1-jvm-binding-attrs/input, exit=0ERR_UNKNOWN_ATTR: Unknown attribute '@cropShape' on view.image 'form'bun bin/meta.ts types --format json: 593 matches, 0 tsOnly mismatches; view.* implementedIn ['typescript'] tsOnly true; @object implementedIn ['java'] tsOnly false; @dbSetName ports ['csharp']scripts/ci-local.sh --only ts-fast --only ts-unit --strict-toolchains…scripts/ci-local.sh --only java-fastrerun exit 0 (evidence/ci-java-fast-rerun.log, conformance: java and kotlin ✓); direct mvn steps all exit 0 (EjectContractTest included)conformance: python ✓,integration-tests (python) ✓ls -d fixtures/conformance/*/ | wc -l= 454 matches docs/CONFORMANCE.mdscripts/ci-local.sh --only ts-fast --only ts-unit --strict-toolchainsBaseline (given):scripts/ci-local.sh --only ts-fast --only ts-unit --strict-toolchainsbun server/typescript/packages/cli/bin/meta.ts verifyon fixtures view-kind1-controls, object-kind1-jvm-binding-attrs, error-kind1-view-unregistered-attr (temp projects)Adversarial attr-scope projects: @rows on view.checkbox, @rows on view.textarea, @object on field.string, @dbSetName on object.entity and field.stringbun server/typescript/packages/cli/bin/meta.ts types --format jsonand per-name queries (tsOnly/implementedIn/ports derivation check)scripts/ci-local.sh --only java-fast --only python(java red once, see findings)scripts/ci-local.sh --only java-fastrerun (green)Direct mvn steps for java metadata, render, codegen-base, codegen-spring, maven-plugin EjectContractTest (green)scripts/ci-local.sh --only gates(green)scripts/ci-local.sh --only csharp(green)✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.