---
id: FAS-PFM-DJE-06
feature: FEAT-PFM-DJE-06
product_area: platform
module: data-job-engine
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
capabilities:
  - CAP-PFM-DJE-019
  - CAP-PFM-DJE-020
scenarios:
  - id: FAS-PFM-DJE-06-01
    title: Workload protection and storage housekeeping retain their separate outcomes
    kind: behaviour
    exercises:
      - CAP-PFM-DJE-019
      - CAP-PFM-DJE-020
    relies_on:
      - ATS-PFM-DJE-019-03
      - ATS-PFM-DJE-020-01
      - ATS-PFM-DJE-020-04
    preconditions: >-
      Prepare critical capacity and a maintenance registry containing one valid and one failing
      history table.
    steps:
      - do: Publish the protection factors and run history maintenance.
        expect: >-
          Bulk capacity remains zero while history maintenance prepares the valid table and reports
          the independent failure.
        provenance: proposed
        source: >-
          services-platform:modules/capacity/tests/unit/services/capacity/decide-state.spec.ts#halves
          bulk and heavy in constrained and arms the read ceiling;
          services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#creates
          the current month and the two after it on the first run, and drops nothing;
          services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#fails
          the run as a whole when one table’s pass failed, naming that table
    expected: >-
      Bulk capacity remains zero while history maintenance prepares the valid table and reports the
      independent failure.
    negative: true
    data_needs: >-
      Prepare critical capacity and a maintenance registry containing one valid and one failing
      history table.
    bound_to: []
    provenance: proposed
    source: >-
      services-platform:modules/capacity/tests/unit/services/capacity/decide-state.spec.ts#halves
      bulk and heavy in constrained and arms the read ceiling;
      services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#creates
      the current month and the two after it on the first run, and drops nothing;
      services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#fails
      the run as a whole when one table’s pass failed, naming that table
  - id: FAS-PFM-DJE-06-02
    title: A pressure pin does not suspend history preparation
    kind: interaction
    exercises:
      - CAP-PFM-DJE-019
      - CAP-PFM-DJE-020
    relies_on:
      - ATS-PFM-DJE-019-06
      - ATS-PFM-DJE-020-01
    preconditions: Prepare registered history and an authorized staff operator.
    steps:
      - do: >-
          Pin critical, evaluate the next sentinel tick, maintain the history window and release the
          pin.
        expect: >-
          The pin is audited and published while history preparation continues independently of bulk
          admission.
        provenance: proposed
        source: >-
          services-platform:modules/capacity/tests/integration/services/pins/capacity-pins.integration.spec.js#records
          the pin and its removal, each with what it was and what it became;
          services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#creates
          the current month and the two after it on the first run, and drops nothing
    expected: >-
      The pin is audited and published while history preparation continues independently of bulk
      admission.
    negative: false
    data_needs: Prepare registered history and an authorized staff operator.
    bound_to: []
    provenance: proposed
    source: >-
      services-platform:modules/capacity/tests/integration/services/pins/capacity-pins.integration.spec.js#records
      the pin and its removal, each with what it was and what it became;
      services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#creates
      the current month and the two after it on the first run, and drops nothing
  - id: FAS-PFM-DJE-06-03
    title: Recovery and a later maintenance pass retain prior successful work
    kind: lifecycle
    exercises:
      - CAP-PFM-DJE-019
      - CAP-PFM-DJE-020
    relies_on:
      - ATS-PFM-DJE-019-02
      - ATS-PFM-DJE-020-01
      - ATS-PFM-DJE-020-04
    preconditions: Prepare emergency capacity and a maintenance pass with one failing table.
    steps:
      - do: 'Supply calmer readings through recovery, repair the failing table and repeat maintenance.'
        expect: >-
          Protection steps down under its timing guards and maintenance keeps existing partitions
          while preparing the repaired table.
        provenance: proposed
        source: >-
          services-platform:modules/capacity/tests/unit/services/capacity/decide-state.spec.ts#enters
          constrained on three constrained readings in a row;
          services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#creates
          the current month and the two after it on the first run, and drops nothing;
          services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#fails
          the run as a whole when one table’s pass failed, naming that table
    expected: >-
      Protection steps down under its timing guards and maintenance keeps existing partitions while
      preparing the repaired table.
    negative: false
    data_needs: Prepare emergency capacity and a maintenance pass with one failing table.
    bound_to: []
    provenance: proposed
    source: >-
      services-platform:modules/capacity/tests/unit/services/capacity/decide-state.spec.ts#enters
      constrained on three constrained readings in a row;
      services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#creates
      the current month and the two after it on the first run, and drops nothing;
      services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#fails
      the run as a whole when one table’s pass failed, naming that table
  - id: FAS-PFM-DJE-06-04
    title: A customer administrator cannot change shared protection
    kind: permission
    exercises:
      - CAP-PFM-DJE-019
      - CAP-PFM-DJE-020
    relies_on:
      - ATS-PFM-DJE-019-04
      - ATS-PFM-DJE-020-01
    preconditions: Prepare a customer administrator and a scheduled maintenance context.
    steps:
      - do: 'Attempt a capacity pin as the administrator, then run the maintenance context''s pass.'
        expect: >-
          The pin is refused without changing protection; scheduled history preparation remains a
          system operation.
        provenance: proposed
        source: >-
          services-platform:modules/capacity/tests/e2e/capacity-pins.e2e.spec.js#refuses a staff
          member who holds only another HQ key;
          services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#creates
          the current month and the two after it on the first run, and drops nothing
    expected: >-
      The pin is refused without changing protection; scheduled history preparation remains a system
      operation.
    negative: true
    data_needs: Prepare a customer administrator and a scheduled maintenance context.
    bound_to: []
    provenance: proposed
    source: >-
      services-platform:modules/capacity/tests/e2e/capacity-pins.e2e.spec.js#refuses a staff member
      who holds only another HQ key;
      services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#creates
      the current month and the two after it on the first run, and drops nothing
  - id: FAS-PFM-DJE-06-05
    title: Signal fallback does not manufacture a successful maintenance heartbeat
    kind: regression
    exercises:
      - CAP-PFM-DJE-019
      - CAP-PFM-DJE-020
    relies_on:
      - ATS-PFM-DJE-019-08
      - ATS-PFM-DJE-020-04
    preconditions: Prepare critical capacity without an active pin and a history table pass that fails.
    steps:
      - do: Evaluate two failed signal ticks and run the failing maintenance pass.
        expect: >-
          Protection returns normal on its fallback path while the failed maintenance still omits
          its full-run success heartbeat.
        provenance: proposed
        source: >-
          services-platform:modules/capacity/tests/unit/services/capacity/decide-state.spec.ts#keeps
          the previous state for one tick;
          services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#fails
          the run as a whole when one table’s pass failed, naming that table
    expected: >-
      Protection returns normal on its fallback path while the failed maintenance still omits its
      full-run success heartbeat.
    negative: true
    data_needs: Prepare critical capacity without an active pin and a history table pass that fails.
    bound_to: []
    provenance: proposed
    source: >-
      services-platform:modules/capacity/tests/unit/services/capacity/decide-state.spec.ts#keeps the
      previous state for one tick;
      services-platform:modules/partitions/tests/integration/services/maintenance/maintain-partitions.integration.spec.js#fails
      the run as a whole when one table’s pass failed, naming that table
evidence:
  - CAP-PFM-DJE-019
  - CAP-PFM-DJE-020
  - specs/CONVENTIONS.md#5.3 Feature Acceptance Suite
  - specs/CONVENTIONS.md#9.10 Capability Test Specification
---

# Shared database workload controls: Feature Acceptance Suite

## What the Feature Must Do as a Whole

Workload protection and storage housekeeping retain their separate outcomes is the feature-level acceptance outcome. The suite follows the work through its participating capabilities and checks the final records, job accounts and refusals together. Permission and regression cases revisit the same feature boundary with changed authority or input.

## Interactions Between Capabilities

A pressure pin does not suspend history preparation. The interaction case changes a shared prerequisite and checks how that change affects the next capability's result. Lifecycle cases retain partial work and distinguish a new attempt from resuming existing work. These feature expectations remain proposed until their complete executable coverage is established.

## Regression Record

| Revision | Change | Scenario | Why |
|---|---|---|---|
| 1 | initial | all | Establish cumulative acceptance across the feature's landed capabilities. |
