Cross-port gate for verify strict-by-default (ADR-0023, issue #96).
meta verify (TS) and metaobjects verify (Python) load metadata strict by
default: an authored own @attr that no registered provider declares is
ERR_UNKNOWN_ATTR, and verify exits non-zero. This matches Java's Maven
metaobjects:verify goal, which already forces strict load
(LoaderOptions.create(false, false, true)). A --lax flag opts back into the
legacy open-attr load.
Each case is a directory with:
input/— a tiny metadata doc with one made-up@attron a registered node.expected.json— the cross-port expectation:strict.exitNonZero/strict.errorCode— bareverify(strict default) must fail with this loader error code.lax.exitZero—verify --laxmust succeed (the legacy open-attr load).
A field.string carries @madeUpAttr, declared by no provider. Strict verify →
ERR_UNKNOWN_ATTR (exit non-zero); verify --lax → exit 0.
- TypeScript —
server/typescript/packages/cli/test/unit/verify-strict.test.tsdrivesverifyCommandagainst the fixture metadata (default → exit 1;--lax→ exit 0). - Python —
server/python/tests/codegen/test_cli_verify_strict.pydrives themetaobjects verifyCLI against the same fixture file. - Java already enforces strict load via its Maven goal; the loader-level
cross-port gate for
ERR_UNKNOWN_ATTRlives infixtures/conformance/error-unknown-attr/(all five ports).