Hold the lattice to the temporal types MEOS admits - #112
Merged
estebanzimanyi merged 1 commit intoSep 1, 2026
Merged
Conversation
`temporal_type()` admits 20 user-facing types; the lattice's leaves model 14. Six have no leaf class — `T_TH3INDEX`, `T_TQUADBIN`, `T_TS2CELL`, `T_TPOSECHAIN`, `T_TPCPOINT`, `T_TPCPATCH` — so the object model cannot express them and a binding projected from it reaches those values only through the flat C surface. The gate already here could not see it. Its assertions hold each node to its own predicate, which passes whether or not a type has a class at all: the root's membership comes from `temporal_type()` and already names `T_TPOSECHAIN`, while nothing asked which types a LEAF claims. Coverage is a different question from membership, and only the second was being asked. `_UNMODELLED` records the six as a RATCHET rather than a permission. The assertion compares against it exactly, so a newly uncovered type fails the suite, and giving one of these a class fails it too until its entry goes — the gap can neither grow nor close unnoticed. Both directions are exercised: removing an entry fails, and a leaf that stops claiming its type fails. A type claimed by two leaves fails as well, since two classes for one type is an ambiguity the projection cannot resolve. What the six need is not uniform. `T_TPOSECHAIN` sits beside `TPose`, and the point-cloud pair beside the other spatial leaves. The three cell-index families are one question rather than three: H3, quadbin and S2 are the same kind of thing, a temporal value over a discrete global grid, and whether they share an abstract parent the way `TPoint` groups `TGeomPoint` and `TGeogPoint` is a taxonomy decision for the model's owner. The comment says so where the next reader will meet it.
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.
temporal_type()admits 20 user-facing types; the lattice's leaves model 14.Six have no leaf class —
T_TH3INDEX,T_TQUADBIN,T_TS2CELL,T_TPOSECHAIN,T_TPCPOINT,T_TPCPATCH— so the object model cannot expressthem and a binding projected from it reaches those values only through the flat
C surface.
The gate already here could not see it. Its assertions hold each node to its own
predicate, which passes whether or not a type has a class at all: the root's
membership comes from
temporal_type()and already namesT_TPOSECHAIN, whilenothing asked which types a LEAF claims. Coverage is a different question from
membership, and only the second was being asked.
_UNMODELLEDrecords the six as a RATCHET rather than a permission. Theassertion compares against it exactly, so a newly uncovered type fails the
suite, and giving one of these a class fails it too until its entry goes — the
gap can neither grow nor close unnoticed. Both directions are exercised:
removing an entry fails, and a leaf that stops claiming its type fails.
A type claimed by two leaves fails as well, since two classes for one type is an
ambiguity the projection cannot resolve.
What the six need is not uniform.
T_TPOSECHAINsits besideTPose, and thepoint-cloud pair beside the other spatial leaves. The three cell-index families
are one question rather than three: H3, quadbin and S2 are the same kind of
thing, a temporal value over a discrete global grid, and whether they share an
abstract parent the way
TPointgroupsTGeomPointandTGeogPointis ataxonomy decision for the model's owner. The comment says so where the next
reader will meet it.