---
id: TST-PFM-OPS-112
title: Product grants
kind: unit
product_area: platform
module: operations
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/licensing/tests/unit/catalog/product-grants.spec.ts
implements:
  - ATS-PFM-OPS-014-07
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
estimate_basis: Scheduling estimate only; no duration is measured during this documentation pass.
isolation: 'Process-local inputs, registries and test adapters.'
evidence:
  - >-
    services-platform:modules/licensing/tests/unit/catalog/product-grants.spec.ts at
    ad3f6a6582843008ed0f5a17b131878d15829af1: existing suite body, setup, assertions and cleanup.
binding_note: Bindings apply only to the listed specification scenarios.
assertion_sources:
  - >-
    services-platform:modules/licensing/tests/unit/catalog/product-grants.spec.ts#are every one an
    application key of this release, so no SKU grants an application that does not exist
  - >-
    services-platform:modules/licensing/tests/unit/catalog/product-grants.spec.ts#name each application
    once per SKU, so nothing is granted twice by one product
  - >-
    services-platform:modules/licensing/tests/unit/catalog/product-grants.spec.ts#grant `accounting` and
    never the retired `collect`, which is the rename of 2026-10-13
  - >-
    services-platform:modules/licensing/tests/unit/catalog/product-grants.spec.ts#never grant `hq`, which
    is staff-only and available by rule rather than by any licence
  - >-
    services-platform:modules/licensing/tests/unit/catalog/product-grants.spec.ts#never grant `platform`,
    which the registry already makes always-available to every tenant
  - >-
    services-platform:modules/licensing/tests/unit/catalog/product-grants.spec.ts#are every one well
    formed: an application key, a dot, and a lower-case hyphenated name
  - >-
    services-platform:modules/licensing/tests/unit/catalog/product-grants.spec.ts#each name a real
    application before the dot, so a feature belongs to an application somebody has
  - >-
    services-platform:modules/licensing/tests/unit/catalog/product-grants.spec.ts#are each named by
    exactly one SKU, so two products never license the same feature
---

# Product grants

## Verification Boundary

This suite exercises application licensing through its declared function or structural boundary. Its implementation is present at the pinned source revision, and this register records no execution result.

## What This Suite Proves

The checks exercise product grants within the file’s declared setup and assertion boundary. The structured assertion anchors distinguish these checks from the surrounding feature flows. The scenario bindings name the attributed outcomes.

## What It Does Not Prove

Local execution does not establish deployed infrastructure, live commercial-provider configuration or authorization-cache completion. Registration and an implemented suite do not establish a passing result.

## Real Dependencies and Test Doubles

The production logic under assertion is real. Inputs, registries or source files supply the declared test data; no live service workflow runs.

## Must Not Be Doubled

The production function, registry or builder under assertion remains real.
