---
id: FAS-PFM-INT-06
title: Workflow configuration and automation acceptance
feature: FEAT-PFM-INT-06
product_area: platform
module: integrations
revision: 2
status: proposed
product_intent: proposed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
capabilities:
  - CAP-PFM-INT-018
  - CAP-PFM-INT-019
  - CAP-PFM-INT-021
  - CAP-PFM-INT-022
  - CAP-PFM-INT-020
scenarios:
  - id: FAS-PFM-INT-06-01
    title: Shared configuration produces valid published automation
    kind: behaviour
    exercises:
      - CAP-PFM-INT-018
      - CAP-PFM-INT-019
      - CAP-PFM-INT-020
      - CAP-PFM-INT-021
      - CAP-PFM-INT-022
    relies_on:
      - ATS-PFM-INT-018-04
      - ATS-PFM-INT-021-02
      - ATS-PFM-INT-020-03
      - ATS-PFM-INT-022-03
    preconditions: 'A registered event has configurable actions, a customer recipe and a business calendar.'
    steps: >-
      Inspect builder choices, copy a valid recipe, calculate a business deadline and publish its
      automation.
    expected: >-
      The publication uses registry-valid copied actions and the deadline follows the selected working
      calendar.
    negative: false
    data_needs: 'Run-owned declarations, records and role fixtures in an isolated workspace.'
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-platform:modules/workflow-actions/tests/e2e/workflow-actions.e2e.spec.js#lists the types
        configurable at a trigger, the switched-off one left out
      - >-
        services-platform:modules/workflow-actions/tests/integration/services/persistence/action-templates.integration.spec.js#refuses
        a type that is declared and switched off
      - >-
        services-platform:modules/workflow-actions/tests/integration/services/automation/publish-automation-rule.integration.spec.js#refuses
        a publisher without the permission an action’s type requires
      - >-
        macroservice-libraries:packages/workflow-actions/src/business-days.spec.ts#P2D business from a
        Friday 16:00 with a Monday holiday lands on Wednesday 16:00, across the DST change (08 §10 case
        8)
  - id: FAS-PFM-INT-06-02
    title: Retired actions block new recipe use and publication
    kind: interaction
    exercises:
      - CAP-PFM-INT-018
      - CAP-PFM-INT-020
      - CAP-PFM-INT-021
    relies_on:
      - ATS-PFM-INT-018-03
      - ATS-PFM-INT-021-02
      - ATS-PFM-INT-020-03
    preconditions: A draft and a customer recipe use one active action type.
    steps: >-
      Retire that type through registration, inspect builder choices and attempt a recipe save and draft
      publication.
    expected: Both writes refuse without altering the stored recipe or publishing the draft.
    negative: false
    data_needs: 'Run-owned declarations, records and role fixtures in an isolated workspace.'
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-platform:modules/workflow-actions/tests/integration/services/registry/register-manifest.integration.spec.js#retires
        what is absent, and answers its keys
      - >-
        services-platform:modules/workflow-actions/tests/integration/services/persistence/action-templates.integration.spec.js#refuses
        a type that is declared and switched off
      - >-
        services-platform:modules/workflow-actions/tests/integration/services/automation/publish-automation-rule.integration.spec.js#refuses
        a publisher without the permission an action’s type requires
  - id: FAS-PFM-INT-06-03
    title: Configuration history outlives subsequent edits
    kind: lifecycle
    exercises:
      - CAP-PFM-INT-020
      - CAP-PFM-INT-021
      - CAP-PFM-INT-022
    relies_on:
      - ATS-PFM-INT-020-02
      - ATS-PFM-INT-020-05
      - ATS-PFM-INT-021-03
      - ATS-PFM-INT-022-02
    preconditions: A published rule uses copied recipe settings and a seeded calendar has calculated a timer.
    steps: 'Edit the recipe and calendar, open a new rule draft, disable and retire the rule.'
    expected: >-
      Published settings and the old timer retain their values while a new draft and new calculations use
      explicit edits.
    negative: false
    data_needs: 'Run-owned declarations, records and role fixtures in an isolated workspace.'
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-platform:modules/workflow-actions/tests/integration/db/workflow-actions-tables.integration.spec.js#refuses
        a second draft of one rule
      - >-
        services-platform:modules/workflow-actions/tests/integration/services/persistence/automation-rules.integration.spec.js#refuses
        to delete a published rule, which is retired instead (409)
      - >-
        services-platform:modules/workflow-actions/tests/integration/services/persistence/action-templates.integration.spec.js#refuses
        an id in Rhythm’s own prefix, which the configuration-id grammar reserves (400)
      - >-
        services-platform:modules/workflow-actions/tests/integration/services/maintenance/tenant-participant.integration.spec.js#gives
        the tenant Standard week in its own zone, as its default
  - id: FAS-PFM-INT-06-04
    title: Registry inspection does not grant configuration effects
    kind: permission
    exercises:
      - CAP-PFM-INT-018
      - CAP-PFM-INT-020
      - CAP-PFM-INT-021
      - CAP-PFM-INT-022
    relies_on:
      - ATS-PFM-INT-018-01
      - ATS-PFM-INT-020-08
      - ATS-PFM-INT-021-04
      - ATS-PFM-INT-022-04
    preconditions: >-
      An application registrant, registry reader and distinct recipe, calendar and automation managers
      are available.
    steps: >-
      Attempt foreign registration and each configuration mutation with a reader, then exercise the
      appropriate managers.
    expected: >-
      Unauthorized writes preserve existing records and authority remains separate for each configuration
      concern.
    negative: true
    data_needs: 'Run-owned declarations, records and role fixtures in an isolated workspace.'
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-platform:modules/workflow-actions/tests/e2e/workflow-actions-registry.e2e.spec.js#answers
        403 to another application’s principal registering CRM
      - >-
        services-platform:modules/workflow-actions/tests/e2e/workflow-actions.e2e.spec.js#refuses a
        reader the publish (403)
      - >-
        services-platform:modules/workflow-actions/tests/e2e/workflow-actions.e2e.spec.js#refuses a
        caller without templates-manage a write (403)
      - >-
        services-platform:modules/workflow-actions/aws/api/workflow-actions.routes.ts:workflowActionsRoutes
  - id: FAS-PFM-INT-06-05
    title: A retired declaration cannot publish through a saved recipe
    kind: regression
    exercises:
      - CAP-PFM-INT-018
      - CAP-PFM-INT-020
      - CAP-PFM-INT-021
    relies_on:
      - ATS-PFM-INT-018-04
      - ATS-PFM-INT-020-03
      - ATS-PFM-INT-021-02
    preconditions: An automation draft contains actions copied while their type was active.
    steps: Retire the type and attempt publication without replacing its actions.
    expected: Current registry validation refuses publication despite the earlier valid recipe save.
    negative: true
    data_needs: 'Run-owned declarations, records and role fixtures in an isolated workspace.'
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-platform:modules/workflow-actions/tests/e2e/workflow-actions.e2e.spec.js#lists the types
        configurable at a trigger, the switched-off one left out
      - >-
        services-platform:modules/workflow-actions/tests/integration/services/automation/publish-automation-rule.integration.spec.js#refuses
        a publisher without the permission an action’s type requires
      - >-
        services-platform:modules/workflow-actions/tests/integration/services/persistence/action-templates.integration.spec.js#refuses
        a type that is declared and switched off
evidence:
  - >-
    The feature, its capabilities and the detailed scenarios listed in each reliance are examined at the
    pinned revisions.
---
# Workflow configuration and automation: Feature Acceptance Suite

## What the Feature Must Do as a Whole

The suite follows the action registry into reusable recipes, calendar configuration and automation publication. Acceptance checks the combined configuration against the current declarations and inspects the history of work after later edits.

## Interactions Between Capabilities

Retirement changes what a saved recipe can contribute to a new publication. The cases also distinguish published configuration from later recipe and calendar edits and verify that registry inspection alone does not grant configuration authority.

The reliance links identify detailed capability scenarios. None of these composed acceptance sequences has a verified executable binding at the pinned revisions; the corresponding coverage finding remains open.

## Regression Record

| Revision | Change | Scenarios | Reason |
|---|---|---|---|
| 1 | Initial | All | Establish the cumulative acceptance sequences and initial regression cases. |
| 2 | Testing examination continuation | All | Clarify the feature boundary and preserve proposed status for unbound composed sequences. |
