On this page
The declared strictspec floor must reach every generated validator -- a floor below a committed GENERATED_BY ships validators that cannot import at all.
#rlsbl.strictspec_floor
#rlsbl.strictspec_floor
The declared strictspec floor must reach every generated validator.
A strictspec-generated validator carries the release that produced it as GENERATED_BY and calls strictspec.require_runtime_version(GENERATED_BY) AT IMPORT. That pairing is exact: the runtime the validator imports must be the release it was generated by, or the import raises before any document is validated.
So the manifest's strictspec floor is not advisory. A floor BELOW any committed GENERATED_BY ships an artifact whose validators cannot import on a floor-resolved install: the repo's own lock resolves the newer strictspec and every local test passes, while a consumer installing the published artifact resolves the floor and hits the pairing error on first use.
Why dep-floors cannot see this ----------------------------------
dep-floors compares at major.minor, deliberately: a patch bump in a lock is not a behavior boundary for an ordinary dependency. For this pairing it is -- 0.2.3 and 0.2.4 are different releases and the guard refuses the mismatch -- so the comparison here is at FULL PATCH precision, against the generated files rather than against the lock.
What is compared ----------------
strictspec.toml is the manifest that declares which validators exist and where they are written, so it is the enumeration this check reads: no directory is guessed at. For every declared output that exists, the GENERATED_BY constant is read; the highest one across all of them is the floor the manifest must declare at least.
#StrictspecFloorVerdict
Result of comparing the declared floor against the generated code.
#ok
def ok(self)#parse_version
def parse_version(text)(major, minor, patch) of a version string, or None.
Full patch precision, unlike :func:rlsbl.dep_floors.version_tuple: the runtime pairing this check polices is exact, so a patch difference is the whole point rather than noise.
#declared_floor
def declared_floor(constraint)The highest lower bound a PEP 440 specifier set states, or None.
#read_generated_by
def read_generated_by(path)The GENERATED_BY constant of a generated file, or None.
#declared_targets
def declared_targets(project_root)[(output_path, lang)] every schema target the manifest declares.
Returns None when there is no readable strictspec.toml -- a project that generates no validators, which is not this check's business.
#evaluate_strictspec_floor
def evaluate_strictspec_floor(project_root)Compare the declared strictspec floor against every generated file.