---
id: TST-PFM-OPS-104
title: Workspace applications
kind: integration
product_area: platform
module: operations
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/licensing/tests/integration/services/persistence/tenant-applications.integration.spec.js
implements:
  - ATS-PFM-OPS-015-06
  - ATS-PFM-OPS-015-13
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
estimate_basis: Scheduling estimate only; no duration is measured during this documentation pass.
isolation: >-
  The prepared local test database and suite-owned identifiers; existing hooks control rollback or
  cleanup.
evidence:
  - >-
    services-platform:modules/licensing/tests/integration/services/persistence/tenant-applications.integration.spec.js
    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/integration/services/persistence/tenant-applications.integration.spec.js#creates
    the row, because no row at all is how "never provisioned" is stored
  - >-
    services-platform:modules/licensing/tests/integration/services/persistence/tenant-applications.integration.spec.js#stamps
    the instant the state changed
  - >-
    services-platform:modules/licensing/tests/integration/services/persistence/tenant-applications.integration.spec.js#stamps
    the caller as the person who changed it, when a person did
  - >-
    services-platform:modules/licensing/tests/integration/services/persistence/tenant-applications.integration.spec.js#stamps
    nobody when the server decided, so the column is never a small lie about who acted
  - >-
    services-platform:modules/licensing/tests/integration/services/persistence/tenant-applications.integration.spec.js#leaves
    first_enabled_at empty for a state that is not enabled
  - >-
    services-platform:modules/licensing/tests/integration/services/persistence/tenant-applications.integration.spec.js#stamps
    first_enabled_at when the first state is enabled
  - >-
    services-platform:modules/licensing/tests/integration/services/persistence/tenant-applications.integration.spec.js#lets
    both finish with one row, never a unique violation (a new workspace provisioning beside a development
    seed)
  - >-
    services-platform:modules/licensing/tests/integration/services/persistence/tenant-applications.integration.spec.js#moves
    the state and the version together
---

# Workspace applications

## Verification Boundary

This suite exercises application licensing through production operations against the local database. Its implementation is present at the pinned source revision, and this register records no execution result.

## What This Suite Proves

The checks create and move operational rows, compare concurrent insertions, preserve first enablement and exercise core-row activation and backfill. 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 prepared PostgreSQL database and production operations under test are real. The suite controls time where boundary checks require it.

## Must Not Be Doubled

The persistence operations, database constraints and reads under assertion remain real.
