Derive the lattice's type membership from the source - #104
Merged
estebanzimanyi merged 1 commit intoAug 31, 2026
Conversation
Which temporal types a class holds is MEOS's to state, so the parse reads it from `meos_catalog.c` at each run instead of the model file carrying a copy: a class naming a `predicate` takes the types that predicate admits, and a leaf takes the base type `MEOS_RELTYPE_CATALOG` gives the one type it models, through the same reader `attach_type_relations` uses. `Temporal` publishes 20 types and `TSpatial` 14, and a type MEOS adds reaches the published lattice with no edit here. The model file states neither, and a test holds that it does not — a copy is what drifts, so the fix is that there is none to drift. What it keeps is the design: the class tree, each class's prefixes, and the one type a leaf models, which is that class's identity rather than a restatement of MEOS. `objectModel.membership.status` reads `derived`, or `source-unavailable` where `meos_catalog.c` is not reachable, and the lattice then names no membership at all. A class naming no type would read the same as one MEOS has no type for, so the status is what tells them apart — the answer the error contract beside it already gives. A source that IS readable and disagrees with the model raises instead: a predicate the model names that MEOS does not declare, a predicate admitting nothing, a leaf modelling a type the relation catalog does not relate. `locate_catalog` is public for the same reason it is shared: two readers of one array are two things to keep in step.
estebanzimanyi
force-pushed
the
feat/derive-the-lattice-membership-from-the-source
branch
from
August 31, 2026 14:06
8a9a791 to
33f36c4
Compare
estebanzimanyi
deleted the
feat/derive-the-lattice-membership-from-the-source
branch
August 31, 2026 15:52
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.
Which temporal types a class holds is MEOS's to state, so the parse reads it
from
meos_catalog.cat each run instead of the model file carrying a copy: aclass naming a
predicatetakes the types that predicate admits, and a leaftakes the base type
MEOS_RELTYPE_CATALOGgives the one type it models,through the same reader
attach_type_relationsuses.Temporalpublishes 20types and
TSpatial14, and a type MEOS adds reaches the published latticewith no edit here.
The model file states neither, and a test holds that it does not — a copy is
what drifts, so the fix is that there is none to drift. What it keeps is the
design: the class tree, each class's prefixes, and the one type a leaf models,
which is that class's identity rather than a restatement of MEOS.
Deriving requires the source, so the attach raises where
meos_catalog.cisunreachable. An empty membership is indistinguishable in the output from a
class MEOS genuinely has no type for, and every consumer of the published
lattice would inherit it, so there is no honest degradation to fall back to.
locate_catalogis public for the same reason it is shared: two readers of onearray are two things to keep in step.