check:contracts

Checks that the feature contracts and the SPL’s UVL constraints tell the same dependency story. A dependency lives in both places, the feature’s [tool.splent.contract.requires].features and the UVL’s A => B, and feature:install and the marketplace read only the first while product:auto-require and configuration checks read only the second.


Example

splent check:contracts --spl cms_spl
  check:contracts  cms_spl
  ------------------------------------------------------------
  ⚠  UVL says 'team => media' but team's contract does not require 'media'
      fix: add "media" to requires.features_manual in splent_feature_team/pyproject.toml (preserved on regeneration), or confirm it is SPL-level policy

  0 error(s), 1 warning(s).

Options

Option Description
--spl SPL Check one SPL instead of every model spl:list knows, sample_splent_spl included.

What it reports

Level Finding
Error A contract dependency with no matching UVL constraint, so a product could select A without B and break at runtime. The output points to spl:add-constraints.
Error A contract dependency on a feature that is not in the model at all.
Error A feature the model offers that exists nowhere, not in the workspace, the cache or the forge, so product:configure would offer it and derive would fail. When the forge cannot be asked (no network, a rate limit) the feature is assumed to exist.
Warning A UVL implication no contract backs, invisible to feature:install and the marketplace. The output names the requires.features_manual entry to add, which survives a contract regeneration.
Warning A model that is not on disk, with the spl:fetch command that gets it, or the note that no DOI records it.

A feature the UVL names that exists on the forge but not locally is listed as not local (skipped).

It exits 1 when there are errors and 0 otherwise, so it fits in CI next to product:validate.


Back to top

splent. Distributed by an LGPL license v3. Contact us: drorganvidez@us.es