You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 63a470b
Browse filesBrowse the repository at this point in the historyBrowse files
docs(conformance): rule the unknown-config-key asymmetry INTENDED, and pin both halves
A genuinely unknown top-level key in `.metaobjects/config.json` throws in
TypeScript and resolves fine in Java, C# and Python. The corpus README recorded
this as a confirmed cross-port divergence and left it as "an open,
human-reviewable follow-up". Reviewed: neither side moves.
It is not a defect that leaked — it falls out of ownership. The file is
TypeScript's, and TypeScript is the only port that models its whole vocabulary,
so it is the only one that CAN tell a typo from a key a sibling owns. `.strict()`
is what turns that knowledge into a diagnostic, and the hazard it catches is
specific and already pinned: a stripped `scopes` (for `scope`) silently means
"everything in scope", and a stripped `migrate.scopee` silently governs the whole
database. The other three model the neutral subset, for which every other key is
indistinguishable from a TS-owned one; they could imitate strictness only by
carrying TypeScript's key list in lockstep, and would then REJECT a config a
newer `meta` had just written. Tolerance is the only coherent behaviour for a
partial reader, strictness the only coherent behaviour for the owner.
So this stays off the shared corpus permanently rather than being deferred again.
A shared case asserts ONE outcome and the correct outcome differs by port by
design, so adding one could only be done by making some port wrong. Each half is
now pinned where it belongs instead — TypeScript's in `config.test.ts` beside the
`scopes`/`scopee` cases it shares a rationale with, and the tolerant half in the
C#, Python and Java resolver tests, none of which previously covered it. The
forward-compatibility cost is stated and accepted: a config written by a newer
`meta` hard-fails an older one, which is what `schema_version` is for.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
0 commit comments