Skip to content

The NLI citation verifier ships without a stated licence #18

Description

@DenisDrobyshev

The citation verifier is the component the whole product rests on, and its weights carry no licence at all.

What was checked

src/praxis/verify/nli.py loads cointegrated/rubert-base-cased-nli-threeway by default. Its Hugging Face metadata has no licence:

GET https://huggingface.co/api/models/cointegrated/rubert-base-cased-nli-threeway
→ no cardData.license, no license: tag, no licence stated in the model card

Its base model, DeepPavlov/rubert-base-cased, is the same — no licence field found.

Nothing suggests the weights are restricted. Nothing establishes that they are not. Absent a licence, the default position under copyright is that no rights are granted, so a user relying on praxis commercially is relying on weights they have no stated permission to use.

For comparison, the other two models are explicit and fine:

Model Licence Verified
BAAI/bge-m3 MIT cardData.license: mit
BAAI/bge-reranker-v2-m3 Apache-2.0 cardData.license: apache-2.0
cointegrated/rubert-base-cased-nli-threeway none stated no field, no tag, no text

Why it matters more here than elsewhere

The weights are not vendored — they are pulled from the Hub at first use — so praxis does not redistribute them, which limits the exposure. But the README's central claim is that citations are checked rather than asserted, and this model is what does the checking. The one component the product is named for is the one with unresolved rights.

While the project is free and runs locally, this is tolerable. The README says paid features and a subscription are planned. It stops being tolerable then.

Options, roughly in order

  1. Ask the author to state a licence. cointegrated is an active maintainer; a request on the model's discussion page costs one message and would resolve this outright.
  2. Move to a model with an explicit permissive licence and re-measure the verifier on the golden set — the number would have to be re-earned, not carried over.
  3. Document the gap in the README so a user evaluating praxis for commercial use learns it from the project rather than from their own legal review.

Option 3 is worth doing regardless of which of the first two happens, because it is true today.

Related

The shipped corpus has a separate, unstated rights basis: every file in corpus/ carries "edition": "Викитека (транскрипция; сверять с pravo.gov.ru)", and the repository states no licence for that text. Worth handling in the same pass — see the corpus provenance issue.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationsecurityAdvisory, hardening, or a scanning result

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions