Skip to content
Menu

Coverage

"Is this organisation covered for this repository?" — one question, a frozen set of eight answers, computed by a pure, versioned function over published documents only.

The coverage endpoint is not switched on in production yet

The computed endpoint is built and its answer set is frozen. It is switched on in the edge's preview and dev configurations, over a published set of sample documents; production's flag stays down until launch, when the artifact store arrives with it. Until then, coverage is proved by the signed entitlement record: fetch /v1/entitlements/{companyId}.jws, verify it against /jwks.json, and read the entitlement's lane, scope, and period. The verification page does the signature check for you.

The eight answers

This enumeration is frozen. Answers are additive-only: a future version may explain more, never rename these.

The complete coverage answer set, in precedence order

Answer Meaning
yes-via-pass An active Pass covers every registered repository, including this one.
yes-via-project An active Project entitlement whose scope contains this repository.
yes-via-portfolio An active Portfolio entitlement whose scope is the organisation that owns this repository.
yes-via-waiver The repository granted this organisation a gratis, public waiver. Waivers are checked before any entitlement short-circuit, so a waived organisation is reachable even with no account and no verified domain.
yes-via-donation Retired: never returned. It answered for a Donation Entitlement, a direct-donation route that was dropped before it opened. It stays in the frozen set so that a client switching over all eight keeps working.
lapsed-in-grace The term ended but the 30-day grace window has not. Carries the period end and the grace end so a late invoice is visibly not a violation yet.
no-entitlement-required-under-threshold The organisation self-certified as below the threshold and that certification has not expired. Carries the certification date.
no No current entitlement, no waiver, no valid threshold certification. Absence of a record answers "no" — never an error, so a scanner can read it.

How the answer is computed

  • Only published documents are inputs. The company's signed entitlement record, the repository record, and the public waiver list. No database is consulted, which is why the endpoint cannot be made slow or expensive by traffic.
  • Time is a parameter, not a clock read. The function is deterministic: the same inputs and the same instant always produce the same answer, and the answer echoes the instant it used so you can re-derive it.
  • Grace and lapse are derived from dates, never published as statuses. A published status of active plus an expired period is exactly what lapsed-in-grace is computed from.
  • A suspended entitlement answers no immediately — a chargeback is not a grace period.
  • A repository with no published record is answered only for a Pass. An organisation holding a Pass inside its term gets yes-via-pass, with the reason pass-any-work and the state no-record. For every other organisation it is an error, not an answer (repo_not_registered). No record means only that nothing is published under that id: the repository may be registered and not yet published, or not under the licence at all. A repository that quit or was delisted still computes: entitlements and vesting stand regardless of what the repository did.

The walkthrough, on one lookup

Sample data

The documents this page reads in this build are dev test records from the dev environment's test registry. No record here is a production one.

The walkthrough needs a registered repository and a verified domain to work through, and this build has no verified domain yet: organisation verification has not opened. Until it does, look an organisation up by its company identifier instead.

The domain index, as published

Domain-verified organisations are indexed by domain so a scanner can resolve a company without knowing its identifier. The index is a published artifact: /entitlements/domain-index.json. It carries domains and identifiers and nothing else — no names, no contacts, no amounts. A domain in the index resolves to its organisation's identifier whether or not the organisation asked to be named, because coverage is answerable either way; a name appears only on the list of covered organisations, and only on request.

The index is empty in this build: organisation verification has not opened, so no organisation has a verified domain to key it by. An empty index answers no for every domain, which is correct rather than broken. Every organisation is resolved by its identifier instead, and a lookup by name is a POST, never a query string.

Organisation names never go in a URL

When the endpoint activates, a lookup by domain will be a POST. Only opaque company identifiers are accepted in a GET query string, because a GET carrying a third party's name would land that name in shareable links, proxy logs, and shared caches. The same rule governs every form on this site.

The source is published

The function and its test vectors publish in the specification repository, and the deployed bundle's module hash is checked against that published copy in continuous integration. If the two disagree, the deploy fails. See algorithms and schedule versions.