---
id: TST-PFM-TNL-052
title: Platform deletion decisions
kind: api-lifecycle
product_area: platform
module: tenant-lifecycle
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js
implements:
  - ATS-PFM-TNL-006-05
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: >-
  Run-owned target and comparison workspace records in the prepared test database; owner access is limited to
  fixture arrangement, independent inspection and cleanup of those records.
evidence:
  - 'services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js'
  - >-
    services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js imports
    ../../../../aws/api/platform-api-handler
  - >-
    services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js imports
    ../../../../db/config
  - >-
    services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js imports
    ../../../../db/seeds/integration/seed
  - >-
    services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js imports
    ../../../../tests/e2e/staff-context
  - >-
    services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js imports
    ../local-provisioning
  - >-
    services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js imports
    ../../db/tenant-deletion-notices.table
  - >-
    services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js imports
    ../../db/tenant-deletion-requests.table
  - >-
    services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js imports
    ../../db/tenants.table
  - >-
    services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js imports
    ../../aws/api/tenants.routes
binding_scope: >-
  Each implements link names a scenario whose retained cited checks all occur in this file. Partial assertions
  for other scenarios remain evidence only.
partial_scenario_evidence:
  - scenario: ATS-PFM-TNL-013-01
    references:
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#may not ask for a
        tenant to be deleted
    provenance: test
    scope: partial assertions; no complete scenario implementation claimed
  - scenario: ATS-PFM-TNL-013-02
    references:
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#refuses a
        confirmation that does not repeat the tenant's name as 400
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#names the
        confirmation in that refusal, so the person knows what to type
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#refuses a body with
        no version as 400
    provenance: test
    scope: partial assertions; no complete scenario implementation claimed
  - scenario: ATS-PFM-TNL-013-03
    references:
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#refuses a tenant that
        is still live as 409
    provenance: test
    scope: partial assertions; no complete scenario implementation claimed
  - scenario: ATS-PFM-TNL-013-04
    references:
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#refuses a second
        request for the same tenant as 409
    provenance: test
    scope: partial assertions; no complete scenario implementation claimed
  - scenario: ATS-PFM-TNL-013-06
    references:
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#answers the
        thirty-day waiting period
    provenance: test
    scope: partial assertions; no complete scenario implementation claimed
  - scenario: ATS-PFM-TNL-013-09
    references:
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#moves the tenant to
        deletion_pending, read back through the tenants API
    provenance: test
    scope: partial assertions; no complete scenario implementation claimed
  - scenario: ATS-PFM-TNL-014-01
    references:
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#may not hold a
        deletion request
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#may not release a
        deletion request
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#may not cancel a
        deletion request
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#may not read a
        deletion request
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#may not list deletion
        requests
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#leaves the request
        exactly as it was after all of those refusals
    provenance: test
    scope: partial assertions; no complete scenario implementation claimed
  - scenario: ATS-PFM-TNL-014-02
    references:
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#refuses an action at
        a stale version as 409
    provenance: test
    scope: partial assertions; no complete scenario implementation claimed
  - scenario: ATS-PFM-TNL-014-05
    references:
      - >-
        services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#leaves the tenant
        disabled: calling off a deletion restores nobody access
    provenance: test
    scope: partial assertions; no complete scenario implementation claimed
---
# Platform deletion decisions

## Verification Boundary

The suite sends request-shaped events through the local production dispatcher with signed caller contexts and a test database. Its API boundary is real inside the process; it does not call a deployed endpoint or drive a browser.

## What This Suite Proves

Deletion decisions is the inspected subject. The implements links identify scenarios whose cited checks occur in this file. The original test-title references delimit those checks; partial contributions to other combined scenarios remain evidence only.

## What It Does Not Prove

Source inspection supplies no passing run. The suite does not establish console behavior, deployment configuration, complete removal in every application or recovery from a provider failure beyond its declared seams. A local zero inventory covers declared and seeded resources only.

## Real Dependencies and Test Doubles

The local provisioning harness keeps the workflow definition, handler, job engine, Platform participants and database real. It replaces workflow execution with the local runner and supplies remote-application, invitation-provider and message-sender doubles. A completed fixture build therefore does not prove a deployed remote build.

## Must Not Be Doubled

Keep the production service or persistence function and the database constraints, row policies and guarded removal functions under test real. For dispatcher cases, keep route selection and authorization real as well. Provider and remote-application seams must remain explicit and cannot stand in for deployed cross-application qualification.
