cadrumo.domain.calculations.registry.modelo_inception module

The first filing year a modelo answers for, and why it answers no earlier.

A modelo with no revision for a requested year gives no reason for the absence, and two opposite situations produce that same silence: the modelo did not exist yet, or it existed and nobody has authored the edition. The first is the product declaring its scope; the second is debt. Refusing both identically is correct; reporting both identically is not, because only one of them is work.

Nothing derives this from the corpus. The earliest authored revision is the same in both cases, which is exactly why it cannot be the evidence. Grounding a modelo’s inception is an authoring act, and this declaration is where the author records which of the two situations holds.

The two arms mirror the predecessor mechanism in revision_contracts: a positive claim, or a single grounding table stating what absence cannot say.

inception = { filing_year = 2023, legal_refs = [“orden-hfp-886-2023:art-1”] } inception = { unauthored = { earliest_authored = 2025, reason = “…” } }

Both refuse a request below them. Neither permits a later edition to be carried backwards into a year the modelo did not answer for: applying a design to a period that predates it is wrong as law whether or not anybody has noticed.

class DeclaredInception(**data)[source]

Bases: RegistryModel

The modelo began here in law; earlier years are outside the product’s reach.

A refusal below this year is final and carries no worklist entry: nothing is owed for a year in which the modelo did not exist. legal_refs names the authority that created it, because a claim about when a modelo began is a claim about law and cannot rest on the corpus’s own shape.

Parameters:

data (Any)

filing_year: FilingYear
legal_refs: LegalRefs
source_refs: tuple[SourceRefId, ...]
class UnauthoredBefore(**data)[source]

Bases: RegistryModel

The modelo existed earlier; those editions are simply not authored yet.

A refusal below earliest_authored is equally final, and equally a refusal, but it stays on the worklist. This is the arm that keeps a gap visible as debt instead of letting it read as scope.

Parameters:

data (Any)

earliest_authored: FilingYear
reason: str
legal_refs: tuple[LegalRefId, ...]
source_refs: tuple[SourceRefId, ...]