cadrumo.core.schema_family_disposition module

Closed disposition vocabulary for a registry revision’s schema families.

A revision declares content in collections - casillas, formulas, bindings, export layouts - and an empty one is ambiguous in a way that matters. It can mean the family genuinely does not apply to this modelo, which is a legitimate and citable claim: an informative modelo has no formulas because it computes nothing. It can equally mean nobody has built that family yet. Read as a bare count, the two are indistinguishable, and the second silently reads as the first - which is how a revision with no calculation closure can present as complete.

RegistrySchemaFamilyDisposition closes that vocabulary so the distinction is recorded rather than inferred. A family is populated because it holds content, not_applicable because somebody stated it does not apply and cited why, or blocked_pending_evidence because neither is true yet.

The third member is the fail-closed default and the point of the whole vocabulary. It is what an empty, undeclared family reads as, and what it DOES is refuse: a revision claiming any rung above applicability while one of its enrolled families sits blocked fails registry build, named family by family. It clears nothing and permits nothing. It is deliberately never allowlistable - there is no mechanism for marking one as acceptable, because the only honest ways out are to populate the family or to state and cite why it does not apply. An allowlist would be a third way that records nothing and clears the entry.

This vocabulary is about a family’s CONTENT. It is not about the evidence backing that content, which the coverage ledger’s evidence tiers already answer on a different axis, and it is not about how far a revision’s authority reaches, which RegistryAuthorityGrade answers. The grade READS these dispositions - a rung requires the families it enrols to be resolved - so the two are ordered, not overlapping.

class RegistrySchemaFamilyDisposition(*values)[source]

Bases: StrEnum

Why one of a revision’s schema families holds what it holds.

POPULATED

The family holds content; no further claim is needed or permitted.

NOT_APPLICABLE

The family is empty because it does not apply, and the reason is cited.

A substantive claim, so it carries a reason and legal references. An informative modelo declaring no formula family is the canonical case.

BLOCKED_PENDING_EVIDENCE

The family is empty and nobody has said why - the fail-closed default.

Never allowlistable. The only exits are populating the family or declaring and citing its inapplicability.

UNRESOLVED_SCHEMA_FAMILY_DISPOSITIONS: frozenset[RegistrySchemaFamilyDisposition]

The dispositions that do NOT resolve a family, as a set rather than a member.

A grade rung requires every family it enrols to be RESOLVED, so the consumer’s question is set membership, not equality against one member. Expressing it as a set means a future unresolved disposition enrols itself into every such check instead of needing each call site found and widened - the same reason REVIEWED_REVISION_REVIEW_STATUSES is a set beside its enum.