---
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
finding_evidence:
  - finding: FND-PFM-INT-001
    source:
      - specs/PRODUCT-AREAS.md (MOD-PFM-INT row)
      - 'specs/PRODUCT-AREAS.md (MOD-PFM-INT row); react-console tree at baf6dae3:react-console tree at baf6dae3'
  - finding: FND-PFM-INT-002
    source:
      - 'services-platform:docs/integrations/README.md#Decisions WS4 made'
      - 'services-platform:modules/integrations/services/connections/transition.ts:CONNECTION_TRANSITIONS'
  - finding: FND-PFM-INT-003
    source:
      - 'services-platform:modules/integrations/services/connections/transition.ts'
      - 'services-platform:docs/milestones/INTG-M1-find-install-connect.md#Decisions'
  - finding: FND-PFM-INT-004
    source:
      - 'services-platform:aws/platform.service.ts:INTEGRATION_EXECUTIONS_PERMISSIONS'
      - 'services-platform:modules/integrations/tests/e2e/reader-access.e2e.spec.js#every tenant GET route is declared with platform.integrations.read and nothing else'
  - finding: FND-PFM-INT-005
    source:
      - 'services-platform:modules/integrations/services/health/tenant-integration-health.ts:ATTENTION_STATUSES'
      - 'react-console:lib/integrations/needs-attention.test.ts#lists failed_verification, degraded and reauth_required connections, each with its state and reason'
  - finding: FND-PFM-INT-006
    source: 'services-platform:docs/milestones/INTG-M3-webhooks-events-deliveries.md#Acceptance scenarios'
  - finding: FND-PFM-INT-007
    source: 'services-platform:docs/milestones/INTG-M4-oauth-and-credential-lifecycle.md#Acceptance scenarios'
  - finding: FND-PFM-INT-008
    source:
      - 'services-platform:docs/milestones/INTG-M2-calls-through-the-gateway.md#M2-D10'
      - 'services-platform:modules/integrations/aws/api/integrations.routes.ts:migrateIntegrationBindings'
  - finding: FND-PFM-INT-009
    source: 'services-platform:modules/integrations/services/persistence/integration-rate-limits.ts:putOperatorRateLimit'
  - finding: FND-PFM-INT-010
    source:
      - 'react-console:lib/extensions/adapters.ts'
      - 'react-console:components/extensions/subscription-sheet.tsx'
      - 'services-platform:docs/proposals/extensibility/decision-log.md#A4'
  - finding: FND-PFM-INT-011
    source:
      - 'services-platform:docs/proposals/extensibility/README.md'
      - 'services-platform:docs/proposals/extensibility/decision-log.md#A2'
  - finding: FND-PFM-INT-012
    source: react-console tree at baf6dae3 (no route reads workflow_actions)
  - finding: FND-PFM-INT-013
    source:
      - 'services-platform:docs/workflow-actions/automation-rules.md#Automation rules: the engine''s third host'
      - 'services-platform:modules/workflow-actions/contracts/platform-declarations.ts'
  - finding: FND-PFM-INT-014
    source:
      - 'react-console:lib/integrations/library-routes.ts'
      - 'services-platform:docs/milestones/INTG-M1-acceptance-report-m1live10.md#Failures and exceptions'
  - finding: FND-PFM-INT-015
    source:
      - 'services-platform:modules/integrations/aws/api/gateway.routes.ts:notBuilt'
      - 'services-platform:docs/integrations/README.md#Consent is the adapter''s authority for subscriptions'
  - finding: FND-PFM-INT-016
    source: 'services-platform:docs/extensions.md#6. What is not built'
  - finding: FND-PFM-INT-017
    source: 'services-platform:docs/integrations/README.md#The archive and its read-through'
  - finding: FND-PFM-INT-018
    source:
      - 'services-platform:docs/milestones/INTG-M2-calls-through-the-gateway.plan.md#12. Risks'
      - 'services-platform:docs/integrations/README.md#Circuits (13 §10)'
  - finding: FND-PFM-INT-019
    source:
      - 'services-platform:modules/integrations/services/persistence/integration-versions.ts:transitionIntegrationVersion'
      - 'services-platform:docs/milestones/INTG-M6-rhythm-hq-operations.md'
  - finding: FND-PFM-INT-020
    source:
      - 'react-console:acceptance/integrations/journeys/library/INT-ACC-0006.json'
      - 'services-platform:aws/platform.service.ts:INTEGRATIONS_PERMISSIONS'
  - finding: FND-PFM-INT-021
    source: 'services-platform:modules/integrations/tests/integration/services/connections/disconnect-discard-uninstall.integration.spec.js#removes every subscription of the installation with the uninstallation, and no other installation’s'
  - finding: FND-PFM-INT-022
    source: 'services-platform:docs/milestones/INTG-M2-calls-through-the-gateway.md#Status history'
  - finding: FND-PFM-INT-023
    source: 'react-console:acceptance/integrations/inventory/capabilities.json'
  - finding: FND-PFM-INT-024
    source: 'services-platform:docs/extensions.md#3. The registration intake'
  - finding: FND-PFM-INT-025
    source: 'services-platform:modules/integrations/services/installations/installation-lifecycle.ts:requireAcceptance'
  - finding: FND-PFM-INT-026
    source: 'services-platform:modules/integrations/db/integration-versions.table.ts:integrationVersions'
  - finding: FND-PFM-INT-027
    source: 'services-platform:modules/integrations/tests/integration/services/registration/register-integration-version.integration.spec.js#makes it the definition’s current version'
  - finding: FND-PFM-INT-028
    source: 'services-platform:modules/extensions/aws/lambda/REGISTRATION.handler.ts:registerExtensionsManifest'
  - finding: FND-PFM-INT-029
    source: 'rhythm-v2-docs:briefs/planning/platform-integrations.brief.md (absent at 7e2b9bffae5e0b515ff674b75adcac97d6373497)'
  - finding: FND-PFM-INT-030
    source: 'services-platform:modules/workflow-actions/db/trigger-points.table.ts:triggerPoints'
  - finding: FND-PFM-INT-031
    source: 'services-platform:modules/workflow-actions/services/persistence/business-calendars.ts:createBusinessCalendar'
  - finding: FND-PFM-INT-032
    source: 'services-platform:modules/integrations/services/events/event-router.ts:routeIntegrationEvents'
  - finding: FND-PFM-INT-033
    source: 'rhythm-v2-docs:specs/CONVENTIONS.md#5.1 Capability Specification (`CAP`)'
  - finding: FND-PFM-INT-034
    source: 'react-console:acceptance/integrations/playwright/journeys/credentials/INT-ACC-0202.spec.ts#INT-ACC-0202'
  - finding: FND-PFM-INT-035
    source: 'rhythm-v2-docs:specs/CONVENTIONS.md#9.8 Inference Operation (`IOP`)'
  - finding: FND-PFM-INT-036
    source:
      - 'services-platform:docs/standards/record-write-contracts.md#W1. Version preconditions on field-changing writes (D-05, D-35, D-52)'
      - 'services-platform:modules/integrations/aws/api/integrations.schemas.ts:suspensionRequestSchema'
      - 'services-platform:modules/integrations/aws/api/integrations.schemas.ts:disconnectRequestSchema'
  - finding: FND-PFM-INT-037
    source:
      - 'services-platform:modules/integrations/services/maintenance/tenant-participant.ts:integrationsParticipant'
      - 'services-platform:modules/extensions/services/maintenance/tenant-participant.ts'
      - 'services-platform:docs/integrations/README.md#The archive and its read-through'
  - finding: FND-PFM-INT-038
    source: 'services-platform:modules/integrations/services/notices/connection-notices.ts'
  - finding: FND-PFM-INT-039
    source: 'services-platform:docs/extensions.md#4. The admin API'
  - finding: FND-PFM-INT-040
    source:
      - 'services-platform:modules/integrations/services/registration/register-integration-version.ts:registerIntegrationVersion'
      - 'services-platform:modules/workflow-actions/services/registry/register-manifest.ts:applyRegistration'
  - finding: FND-PFM-INT-041
    source: 'rhythm-v2-docs:briefs/design/platform-integrations.brief.md (absent at af7a117e241023dbfc334a9f7ccc5bbbd1ffe424)'
  - finding: FND-PFM-INT-042
    source: 'services-platform:modules/integrations/services/persistence/integration-versions.ts:transitionIntegrationVersion; modules/integrations/services/catalog/catalog.ts'
  - finding: FND-PFM-INT-043
    source: 'services-platform:modules/integrations/services/executions/reconciler.ts; modules/extensions/services/persistence/extension-handlers.ts'
  - finding: FND-PFM-INT-044
    source: 'services-platform:modules/integrations/services/executions/reconciler.ts:reconcileExecution; modules/integrations/aws/logic/integrations-gateway.lambda.ts'
  - finding: FND-PFM-INT-045
    source: 'services-platform:modules/extensions/services/persistence/extension-handlers.ts:createExtensionHandler; modules/extensions/handler-secrets.ts'
  - finding: FND-PFM-INT-046
    source: 'react-console:components/integrations/needs-attention-screen.tsx; components/integrations/connection-detail.tsx; app/(console)/console/[tenantId]/configuration/platform/extensions/layout.tsx'
  - finding: FND-PFM-INT-047
    source: 'services-platform:docs/proposals/application-processes-and-workflow-actions/14-decisions.md#D-03; modules/extensions/services/persistence/extension-invocations.ts; modules/integrations/services/registration/register-integration-version.ts'
  - finding: FND-PFM-INT-048
    source: 'services-platform:modules/integrations/services/events/event-operations.ts; modules/integrations/services/connections/transition.ts; modules/integrations/services/maintenance/tenant-participant.ts'
  - finding: FND-PFM-INT-049
    source:
      - 'react-console:components/extensions/handler-detail.tsx:Overview'
      - 'react-console:components/integrations/needs-attention-screen.tsx:ResolveDialog'
      - 'services-platform:modules/integrations/services/credentials/oauth-flow.ts'
      - 'services-platform:modules/integrations/services/webhooks/ingress.ts'
  - finding: FND-PFM-INT-050
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/MODULE.md:coverage_catalog'
      - 'services-platform:modules/extensions/aws/lambda/REGISTRATION.handler.ts:registerExtensionsManifest'
      - 'services-platform:modules/integrations/aws/api/gateway.routes.ts:notBuilt'
      - 'services-platform:modules/workflow-actions/aws/api/workflow-actions.routes.ts'
testing_coverage_evidence:
  - finding: FND-PFM-INT-051
    source:
      - 'services-platform:modules/integrations/tests/integration/services/webhooks/webhook-worker.integration.spec.js#ignores a second request with the provider event id of one already processed, pointing at the first'
  - finding: FND-PFM-INT-052
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-001-offer-integrations-to-the-customers-who-may-use-them.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-001-offer-integrations-to-the-customers-who-may-use-them.md'
    categories:
      - failure
    permissions:
      - key: hq.integrations.publish
        where_checked: api
      - key: hq.integrations.operate
        where_checked: api
    unproved_rules: []
  - finding: FND-PFM-INT-053
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-001-offer-integrations-to-the-customers-who-may-use-them.md'
    unbound_scenarios:
      - ATS-PFM-INT-001-06
      - ATS-PFM-INT-001-07
      - ATS-PFM-INT-001-08
      - ATS-PFM-INT-001-12
      - ATS-PFM-INT-001-13
      - ATS-PFM-INT-001-14
      - ATS-PFM-INT-001-15
  - finding: FND-PFM-INT-054
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-002-find-an-integration-the-workspace-may-use.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-002-find-an-integration-the-workspace-may-use.md'
    categories:
      - transition
      - validation
      - failure
      - boundary
      - concurrency
      - invariant
    permissions:
      - key: platform.integrations.read
        where_checked: api
      - key: platform.integrations.read
        where_checked: console
    unproved_rules: []
  - finding: FND-PFM-INT-055
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-002-find-an-integration-the-workspace-may-use.md'
    unbound_scenarios:
      - ATS-PFM-INT-002-06
  - finding: FND-PFM-INT-056
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-003-install-an-integration-on-the-access-the-administrator.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-003-install-an-integration-on-the-access-the-administrator.md'
    categories:
      - rule
      - edge
      - failure
    permissions:
      - key: platform.integrations.manage
        where_checked: api
      - key: platform.integrations.read
        where_checked: api
      - key: platform.integrations.manage
        where_checked: console
    unproved_rules: []
  - finding: FND-PFM-INT-057
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-003-install-an-integration-on-the-access-the-administrator.md'
    unbound_scenarios:
      - ATS-PFM-INT-003-12
      - ATS-PFM-INT-003-13
      - ATS-PFM-INT-003-14
      - ATS-PFM-INT-003-15
      - ATS-PFM-INT-003-16
  - finding: FND-PFM-INT-058
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-004-connect-a-provider-account-and-look-after-the-connection.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-004-connect-a-provider-account-and-look-after-the-connection.md'
    categories:
      - rule
      - permission
      - boundary
      - concurrency
    permissions:
      - key: platform.integrations.manage
        where_checked: api
      - key: platform.integrations.read
        where_checked: api
      - key: platform.integrations.manage
        where_checked: console
    unproved_rules:
      - BR-CAP-PFM-INT-004-11
      - BR-CAP-PFM-INT-004-12
  - finding: FND-PFM-INT-059
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-004-connect-a-provider-account-and-look-after-the-connection.md'
    unbound_scenarios:
      - ATS-PFM-INT-004-05
      - ATS-PFM-INT-004-11
      - ATS-PFM-INT-004-12
      - ATS-PFM-INT-004-13
      - ATS-PFM-INT-004-14
      - ATS-PFM-INT-004-15
  - finding: FND-PFM-INT-060
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-005-keep-provider-credentials-secret-and-current.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-005-keep-provider-credentials-secret-and-current.md'
    categories:
      - validation
      - failure
    permissions:
      - key: platform.integration-credentials.manage
        where_checked: api
      - key: platform.integrations.read
        where_checked: api
      - key: platform.integration-credentials.manage
        where_checked: console
    unproved_rules:
      - BR-CAP-PFM-INT-005-10
      - BR-CAP-PFM-INT-005-13
  - finding: FND-PFM-INT-061
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-005-keep-provider-credentials-secret-and-current.md'
    unbound_scenarios:
      - ATS-PFM-INT-005-05
      - ATS-PFM-INT-005-12
      - ATS-PFM-INT-005-13
      - ATS-PFM-INT-005-14
      - ATS-PFM-INT-005-15
      - ATS-PFM-INT-005-16
      - ATS-PFM-INT-005-17
  - finding: FND-PFM-INT-062
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-006-watch-the-health-and-history-of-integrations.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-006-watch-the-health-and-history-of-integrations.md'
    categories:
      - validation
      - permission
      - edge
      - concurrency
      - invariant
    permissions:
      - key: platform.integrations.read
        where_checked: api
      - key: platform.integrations.manage
        where_checked: api
      - key: platform.integrations.read
        where_checked: console
    unproved_rules:
      - BR-CAP-PFM-INT-006-05
  - finding: FND-PFM-INT-063
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-006-watch-the-health-and-history-of-integrations.md'
    unbound_scenarios:
      - ATS-PFM-INT-006-09
      - ATS-PFM-INT-006-10
      - ATS-PFM-INT-006-11
      - ATS-PFM-INT-006-12
      - ATS-PFM-INT-006-13
  - finding: FND-PFM-INT-064
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-007-choose-which-connection-serves-each-capability.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-007-choose-which-connection-serves-each-capability.md'
    categories:
      - boundary
    permissions:
      - key: platform.integrations.manage
        where_checked: api
      - key: platform.integrations.read
        where_checked: api
      - key: platform.integrations.manage
        where_checked: console
    unproved_rules:
      - BR-CAP-PFM-INT-007-11
  - finding: FND-PFM-INT-065
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-007-choose-which-connection-serves-each-capability.md'
    unbound_scenarios:
      - ATS-PFM-INT-007-11
      - ATS-PFM-INT-007-12
      - ATS-PFM-INT-007-13
      - ATS-PFM-INT-007-14
  - finding: FND-PFM-INT-066
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-008-route-each-call-to-an-eligible-connection-and-explain-why.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-008-route-each-call-to-an-eligible-connection-and-explain-why.md'
    categories:
      - boundary
      - concurrency
    permissions:
      - key: platform.integrations.read
        where_checked: api
      - key: platform.integrations.read
        where_checked: console
    unproved_rules:
      - BR-CAP-PFM-INT-008-10
  - finding: FND-PFM-INT-067
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-008-route-each-call-to-an-eligible-connection-and-explain-why.md'
    unbound_scenarios:
      - ATS-PFM-INT-008-10
      - ATS-PFM-INT-008-11
  - finding: FND-PFM-INT-068
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-009-call-a-capability-through-the-gateway-without-doing-it-twice.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-009-call-a-capability-through-the-gateway-without-doing-it-twice.md'
    categories:
      - rule
    permissions:
      - key: platform.integrations.invoke
        where_checked: api
      - key: platform.integrations.invoke
        where_checked: service
    unproved_rules: []
  - finding: FND-PFM-INT-069
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-009-call-a-capability-through-the-gateway-without-doing-it-twice.md'
    unbound_scenarios:
      - ATS-PFM-INT-009-08
      - ATS-PFM-INT-009-12
      - ATS-PFM-INT-009-13
      - ATS-PFM-INT-009-14
      - ATS-PFM-INT-009-15
      - ATS-PFM-INT-009-16
      - ATS-PFM-INT-009-17
      - ATS-PFM-INT-009-18
  - finding: FND-PFM-INT-070
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-010-settle-calls-whose-outcome-is-unknown-or-late.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-010-settle-calls-whose-outcome-is-unknown-or-late.md'
    categories:
      - transition
      - validation
      - boundary
      - concurrency
    permissions:
      - key: platform.integrations.read
        where_checked: api
      - key: platform.integrations.invoke
        where_checked: service
    unproved_rules:
      - BR-CAP-PFM-INT-010-08
  - finding: FND-PFM-INT-071
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-010-settle-calls-whose-outcome-is-unknown-or-late.md'
    unbound_scenarios:
      - ATS-PFM-INT-010-08
      - ATS-PFM-INT-010-09
      - ATS-PFM-INT-010-10
      - ATS-PFM-INT-010-11
  - finding: FND-PFM-INT-072
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-011-review-and-operate-calls-by-hand.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-011-review-and-operate-calls-by-hand.md'
    categories:
      - rule
      - edge
      - failure
      - boundary
      - concurrency
      - invariant
    permissions:
      - key: platform.integrations.read
        where_checked: api
      - key: platform.integration-executions.operate
        where_checked: api
      - key: platform.integration-executions.read
        where_checked: api
      - key: hq.integrations.operate
        where_checked: api
    unproved_rules:
      - BR-CAP-PFM-INT-011-04
  - finding: FND-PFM-INT-073
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-011-review-and-operate-calls-by-hand.md'
    unbound_scenarios:
      - ATS-PFM-INT-011-07
  - finding: FND-PFM-INT-074
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-012-try-a-capability-on-a-test-connection.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-012-try-a-capability-on-a-test-connection.md'
    categories:
      - rule
      - transition
      - failure
      - boundary
      - concurrency
    permissions:
      - key: platform.integrations.manage
        where_checked: api
      - key: platform.integrations.manage
        where_checked: console
    unproved_rules:
      - BR-CAP-PFM-INT-012-07
  - finding: FND-PFM-INT-075
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-012-try-a-capability-on-a-test-connection.md'
    unbound_scenarios:
      - ATS-PFM-INT-012-07
      - ATS-PFM-INT-012-08
  - finding: FND-PFM-INT-076
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-013-receive-provider-notifications-once-and-replay-them.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-013-receive-provider-notifications-once-and-replay-them.md'
    categories:
      - validation
      - edge
    permissions:
      - key: platform.integrations.read
        where_checked: api
      - key: platform.integrations.manage
        where_checked: api
      - key: platform.integration-executions.operate
        where_checked: api
    unproved_rules:
      - BR-CAP-PFM-INT-013-03
  - finding: FND-PFM-INT-077
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-013-receive-provider-notifications-once-and-replay-them.md'
    unbound_scenarios:
      - ATS-PFM-INT-013-07
      - ATS-PFM-INT-013-09
      - ATS-PFM-INT-013-10
      - ATS-PFM-INT-013-11
      - ATS-PFM-INT-013-12
      - ATS-PFM-INT-013-13
  - finding: FND-PFM-INT-078
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-014-send-rhythm-changes-to-subscribed-integrations.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-014-send-rhythm-changes-to-subscribed-integrations.md'
    categories:
      - rule
      - permission
      - boundary
      - concurrency
    permissions:
      - key: platform.integrations.manage
        where_checked: api
      - key: platform.integrations.read
        where_checked: api
      - key: platform.integration-executions.operate
        where_checked: api
    unproved_rules: []
  - finding: FND-PFM-INT-079
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-014-send-rhythm-changes-to-subscribed-integrations.md'
    unbound_scenarios:
      - ATS-PFM-INT-014-08
      - ATS-PFM-INT-014-09
      - ATS-PFM-INT-014-10
      - ATS-PFM-INT-014-11
      - ATS-PFM-INT-014-12
  - finding: FND-PFM-INT-080
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-015-deliver-integration-events-to-rhythm-applications.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-015-deliver-integration-events-to-rhythm-applications.md'
    categories:
      - validation
      - edge
      - invariant
    permissions:
      - key: hq.integrations.publish
        where_checked: service
      - key: platform.integrations.read
        where_checked: api
      - key: hq.integrations.operate
        where_checked: api
    unproved_rules:
      - BR-CAP-PFM-INT-015-07
      - BR-CAP-PFM-INT-015-08
  - finding: FND-PFM-INT-081
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-015-deliver-integration-events-to-rhythm-applications.md'
    unbound_scenarios:
      - ATS-PFM-INT-015-07
      - ATS-PFM-INT-015-08
      - ATS-PFM-INT-015-09
      - ATS-PFM-INT-015-10
  - finding: FND-PFM-INT-082
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-016-register-extension-points-and-business-event-types.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-016-register-extension-points-and-business-event-types.md'
    categories:
      - rule
      - failure
      - concurrency
      - invariant
    permissions:
      - key: platform.extension-points.read
        where_checked: api
    unproved_rules:
      - BR-CAP-PFM-INT-016-06
      - BR-CAP-PFM-INT-016-08
  - finding: FND-PFM-INT-083
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-016-register-extension-points-and-business-event-types.md'
    unbound_scenarios:
      - ATS-PFM-INT-016-05
      - ATS-PFM-INT-016-07
      - ATS-PFM-INT-016-08
      - ATS-PFM-INT-016-09
  - finding: FND-PFM-INT-084
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-017-customize-an-extension-point-with-handlers-and-bindings.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-017-customize-an-extension-point-with-handlers-and-bindings.md'
    categories:
      - failure
    permissions:
      - key: platform.extension-points.read
        where_checked: api
      - key: platform.extension-handlers.manage
        where_checked: api
      - key: platform.extension-rules.manage
        where_checked: api
      - key: platform.extension-bindings.manage
        where_checked: api
      - key: platform.extension-handlers.test
        where_checked: api
      - key: platform.extension-invocations.read
        where_checked: api
    unproved_rules: []
  - finding: FND-PFM-INT-085
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-017-customize-an-extension-point-with-handlers-and-bindings.md'
    unbound_scenarios:
      - ATS-PFM-INT-017-13
      - ATS-PFM-INT-017-14
      - ATS-PFM-INT-017-15
  - finding: FND-PFM-INT-086
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-018-register-workflow-trigger-points-and-action-types.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-018-register-workflow-trigger-points-and-action-types.md'
    categories:
      - edge
      - failure
      - boundary
      - concurrency
      - invariant
    permissions:
      - key: platform.workflow-actions.registry-register
        where_checked: service
      - key: platform.workflow-actions.registry-read
        where_checked: api
    unproved_rules:
      - BR-CAP-PFM-INT-018-04
      - BR-CAP-PFM-INT-018-06
  - finding: FND-PFM-INT-087
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-018-register-workflow-trigger-points-and-action-types.md'
    unbound_scenarios:
      - ATS-PFM-INT-018-05
      - ATS-PFM-INT-018-06
      - ATS-PFM-INT-018-07
      - ATS-PFM-INT-018-08
  - finding: FND-PFM-INT-088
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-019-reuse-action-templates-and-keep-business-calendars.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-019-reuse-action-templates-and-keep-business-calendars.md'
    categories:
      - failure
      - invariant
    permissions:
      - key: platform.workflow-actions.registry-read
        where_checked: api
      - key: platform.workflow-actions.templates-manage
        where_checked: api
      - key: platform.workflow-actions.calendars-manage
        where_checked: api
    unproved_rules:
      - BR-CAP-PFM-INT-019-08
  - finding: FND-PFM-INT-089
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-019-reuse-action-templates-and-keep-business-calendars.md'
    unbound_scenarios:
      - ATS-PFM-INT-019-08
      - ATS-PFM-INT-019-09
  - finding: FND-PFM-INT-090
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-020-run-actions-automatically-when-a-business-event-happens.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-020-run-actions-automatically-when-a-business-event-happens.md'
    categories:
      - edge
      - boundary
    permissions:
      - key: platform.workflow-actions.automation-manage
        where_checked: api
      - key: platform.workflow-actions.registry-read
        where_checked: api
      - key: platform.workflow-actions.runs-read
        where_checked: api
      - key: platform.workflow-actions.runs-resolve
        where_checked: service
    unproved_rules: []
  - finding: FND-PFM-INT-091
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-020-run-actions-automatically-when-a-business-event-happens.md'
    unbound_scenarios:
      - ATS-PFM-INT-020-09
      - ATS-PFM-INT-020-10
  - finding: FND-PFM-INT-092
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-021-reuse-validated-action-and-workflow-recipes.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-021-reuse-validated-action-and-workflow-recipes.md'
    categories:
      - transition
      - edge
      - failure
      - boundary
      - invariant
    permissions:
      - key: platform.workflow-actions.registry-read
        where_checked: api
      - key: platform.workflow-actions.templates-manage
        where_checked: api
    unproved_rules: []
  - finding: FND-PFM-INT-093
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-021-reuse-validated-action-and-workflow-recipes.md'
    unbound_scenarios:
      - ATS-PFM-INT-021-05
  - finding: FND-PFM-INT-094
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/capabilities/CAP-PFM-INT-022-schedule-work-with-customer-business-calendars.md'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-022-schedule-work-with-customer-business-calendars.md'
    categories:
      - rule
      - failure
      - concurrency
      - invariant
    permissions:
      - key: platform.workflow-actions.registry-read
        where_checked: api
      - key: platform.workflow-actions.calendars-manage
        where_checked: api
    unproved_rules: []
  - finding: FND-PFM-INT-095
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-022-schedule-work-with-customer-business-calendars.md'
    unbound_scenarios:
      - ATS-PFM-INT-022-04
      - ATS-PFM-INT-022-05
      - ATS-PFM-INT-022-06
      - ATS-PFM-INT-022-07
  - finding: FND-PFM-INT-096
    source:
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0440.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0441.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0442.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0443.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0444.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0448.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0452.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0453.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0456.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0459.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0460.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0464.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0465.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0466.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0467.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0468.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0469.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0470.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0472.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0473.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0474.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0476.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0477.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0478.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0480.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0481.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0482.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0483.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0484.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0486.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0487.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0488.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0489.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0490.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0491.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0492.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0493.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0495.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0496.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0497.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0498.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adapters/INT-ACC-0499.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0601.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0607.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0612.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0620.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0622.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0625.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0626.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0627.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0628.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0630.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0636.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0637.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0638.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0639.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0646.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0647.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0648.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/bindings/INT-ACC-0231.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/bindings/INT-ACC-0240.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/bindings/INT-ACC-0245.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/executions/INT-ACC-0291.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/executions/INT-ACC-0313.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/executions/INT-ACC-0326.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/security/INT-ACC-0514.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/security/INT-ACC-0515.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/security/INT-ACC-0523.spec.ts'
      - 'react-console:acceptance/integrations/playwright/journeys/security/INT-ACC-0525.spec.ts'
    excluded_files:
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0440.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0441.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0442.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0443.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0444.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0448.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0452.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0453.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0456.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0459.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0460.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0464.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0465.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0466.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0467.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0468.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0469.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0470.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0472.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0473.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0474.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0476.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0477.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0478.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0480.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0481.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0482.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0483.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0484.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0486.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0487.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0488.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0489.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0490.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0491.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0492.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0493.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0495.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0496.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0497.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0498.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adapters/INT-ACC-0499.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0601.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0607.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0612.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0620.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0622.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0625.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0626.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0627.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0628.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0630.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0636.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0637.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0638.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0639.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0646.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0647.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0648.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/bindings/INT-ACC-0231.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/bindings/INT-ACC-0240.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/bindings/INT-ACC-0245.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/executions/INT-ACC-0291.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/executions/INT-ACC-0313.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/executions/INT-ACC-0326.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/security/INT-ACC-0514.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/security/INT-ACC-0515.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/security/INT-ACC-0523.spec.ts
      - repository: react-console
        file: acceptance/integrations/playwright/journeys/security/INT-ACC-0525.spec.ts
  - finding: FND-PFM-INT-097
    source:
      - 'react-console:acceptance/integrations/playwright/fixtures/journey.ts'
    limited_files:
      - acceptance/integrations/playwright/journeys/adapters/INT-ACC-0445.spec.ts
      - acceptance/integrations/playwright/journeys/adapters/INT-ACC-0446.spec.ts
      - acceptance/integrations/playwright/journeys/adapters/INT-ACC-0447.spec.ts
      - acceptance/integrations/playwright/journeys/adapters/INT-ACC-0451.spec.ts
      - acceptance/integrations/playwright/journeys/adapters/INT-ACC-0455.spec.ts
      - acceptance/integrations/playwright/journeys/adapters/INT-ACC-0461.spec.ts
      - acceptance/integrations/playwright/journeys/adapters/INT-ACC-0471.spec.ts
      - acceptance/integrations/playwright/journeys/adapters/INT-ACC-0475.spec.ts
      - acceptance/integrations/playwright/journeys/adapters/INT-ACC-0485.spec.ts
      - acceptance/integrations/playwright/journeys/adapters/INT-ACC-0494.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0600.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0602.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0603.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0604.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0605.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0606.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0608.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0609.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0610.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0611.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0613.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0614.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0615.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0616.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0617.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0618.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0619.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0621.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0623.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0624.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0629.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0631.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0632.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0633.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0634.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0635.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0640.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0641.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0642.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0643.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0644.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0645.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0649.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0650.spec.ts
      - acceptance/integrations/playwright/journeys/adversarial/INT-ACC-0653.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0221.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0222.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0229.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0230.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0232.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0233.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0234.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0235.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0236.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0238.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0241.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0242.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0243.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0244.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0246.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0248.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0250.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0251.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0252.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0253.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0255.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0256.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0257.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0258.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0259.spec.ts
      - acceptance/integrations/playwright/journeys/bindings/INT-ACC-0261.spec.ts
      - acceptance/integrations/playwright/journeys/catalog/INT-ACC-0112.spec.ts
      - acceptance/integrations/playwright/journeys/credentials/INT-ACC-0160.spec.ts
      - acceptance/integrations/playwright/journeys/credentials/INT-ACC-0166.spec.ts
      - acceptance/integrations/playwright/journeys/credentials/INT-ACC-0168.spec.ts
      - acceptance/integrations/playwright/journeys/credentials/INT-ACC-0174.spec.ts
      - acceptance/integrations/playwright/journeys/credentials/INT-ACC-0180.spec.ts
      - acceptance/integrations/playwright/journeys/credentials/INT-ACC-0182.spec.ts
      - acceptance/integrations/playwright/journeys/credentials/INT-ACC-0195.spec.ts
      - acceptance/integrations/playwright/journeys/credentials/INT-ACC-0201.spec.ts
      - acceptance/integrations/playwright/journeys/credentials/INT-ACC-0202.spec.ts
      - acceptance/integrations/playwright/journeys/credentials/INT-ACC-0205.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0560.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0563.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0564.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0565.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0567.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0568.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0569.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0571.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0572.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0573.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0575.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0576.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0577.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0578.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0579.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0580.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0581.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0582.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0583.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0587.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0588.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0589.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0590.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0591.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0592.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0593.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0594.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0595.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0596.spec.ts
      - acceptance/integrations/playwright/journeys/cross-application/INT-ACC-0597.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0280.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0282.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0285.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0287.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0290.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0300.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0301.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0302.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0303.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0304.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0306.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0308.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0310.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0312.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0314.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0316.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0318.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0319.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0321.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0322.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0323.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0328.spec.ts
      - acceptance/integrations/playwright/journeys/executions/INT-ACC-0331.spec.ts
      - acceptance/integrations/playwright/journeys/library/INT-ACC-0037.spec.ts
      - acceptance/integrations/playwright/journeys/library/INT-ACC-0052.spec.ts
      - acceptance/integrations/playwright/journeys/providers/INT-ACC-0702.spec.ts
      - acceptance/integrations/playwright/journeys/providers/INT-ACC-0703.spec.ts
      - acceptance/integrations/playwright/journeys/providers/INT-ACC-0704.spec.ts
      - acceptance/integrations/playwright/journeys/providers/INT-ACC-0705.spec.ts
      - acceptance/integrations/playwright/journeys/providers/INT-ACC-0710.spec.ts
      - acceptance/integrations/playwright/journeys/providers/INT-ACC-0711.spec.ts
      - acceptance/integrations/playwright/journeys/providers/INT-ACC-0712.spec.ts
      - acceptance/integrations/playwright/journeys/providers/INT-ACC-0713.spec.ts
      - acceptance/integrations/playwright/journeys/providers/INT-ACC-0714.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0500.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0501.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0502.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0503.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0504.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0505.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0506.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0507.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0508.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0511.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0512.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0513.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0516.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0517.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0518.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0519.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0520.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0522.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0526.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0527.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0528.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0530.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0532.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0533.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0534.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0535.spec.ts
      - acceptance/integrations/playwright/journeys/security/INT-ACC-0536.spec.ts
  - finding: FND-PFM-INT-098
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/features/FEAT-PFM-INT-01-integration-library-and-catalog.md'
    unbound_scenarios:
      - FAS-PFM-INT-01-01
      - FAS-PFM-INT-01-02
      - FAS-PFM-INT-01-03
      - FAS-PFM-INT-01-04
      - FAS-PFM-INT-01-05
  - finding: FND-PFM-INT-099
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/features/FEAT-PFM-INT-02-connections-and-credentials.md'
    unbound_scenarios:
      - FAS-PFM-INT-02-01
      - FAS-PFM-INT-02-02
      - FAS-PFM-INT-02-03
      - FAS-PFM-INT-02-04
      - FAS-PFM-INT-02-05
  - finding: FND-PFM-INT-100
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/features/FEAT-PFM-INT-03-capability-calls-through-the-gateway.md'
    unbound_scenarios:
      - FAS-PFM-INT-03-01
      - FAS-PFM-INT-03-02
      - FAS-PFM-INT-03-03
      - FAS-PFM-INT-03-04
      - FAS-PFM-INT-03-05
  - finding: FND-PFM-INT-101
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/features/FEAT-PFM-INT-04-webhooks-events-and-deliveries.md'
    unbound_scenarios:
      - FAS-PFM-INT-04-01
      - FAS-PFM-INT-04-02
      - FAS-PFM-INT-04-03
      - FAS-PFM-INT-04-04
      - FAS-PFM-INT-04-05
  - finding: FND-PFM-INT-102
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/features/FEAT-PFM-INT-05-extensions.md'
    unbound_scenarios:
      - FAS-PFM-INT-05-01
      - FAS-PFM-INT-05-02
      - FAS-PFM-INT-05-03
      - FAS-PFM-INT-05-04
      - FAS-PFM-INT-05-05
  - finding: FND-PFM-INT-103
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/planning/features/FEAT-PFM-INT-06-workflow-actions-and-automation.md'
    unbound_scenarios:
      - FAS-PFM-INT-06-01
      - FAS-PFM-INT-06-02
      - FAS-PFM-INT-06-03
      - FAS-PFM-INT-06-04
      - FAS-PFM-INT-06-05
  - finding: FND-PFM-INT-104
    source:
      - 'services-platform:modules/integrations/tests/integration/services/executions/invoke-capability.integration.spec.js#replays a settled execution’s stored answer for the same key and request, without calling the adapter again'
      - 'rhythm-v2-docs:specs/platform/integrations/design/tests/ATS-PFM-INT-009-call-a-capability-through-the-gateway-without-doing-it-twice.md'
    unbound_scenarios:
      - ATS-PFM-INT-009-19
    note: The existing replay suite makes sequential requests and checks a pending reconciliation response; it does not race initial requests.
  - finding: FND-PFM-INT-105
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/objects/DOM-PFM-INT-001-integration.md'
    invariant_obligations:
      - invariant: INV-DOM-PFM-INT-001-01
        source: 'services-platform:modules/integrations/tests/integration/services/registration/register-integration-version.integration.spec.js#refuses an adapter principal registering another adapter’s key (403), and writes nothing'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-001-02
        source: 'services-platform:modules/integrations/services/persistence/integration-versions.ts:writeRegisteredVersion'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-001-03
        source: 'services-platform:modules/integrations/tests/integration/services/registration/register-integration-version.integration.spec.js#drains the deployment it replaces'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-001-04
        source: 'services-platform:modules/integrations/services/persistence/integration-versions.ts:VERSION_TRANSITIONS'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-001-05
        source: 'services-platform:modules/integrations/services/persistence/integration-versions.ts:moveCurrentVersionIfNewest'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-001-06
        source: 'services-platform:modules/integrations/tests/integration/services/catalog/catalog.integration.spec.js#shows a restricted integration only to the tenant granted it'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-001-07
        source: 'services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses an integration installed already, and writes no second'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-001-08
        source: 'services-platform:modules/integrations/services/installations/installation-lifecycle.ts:requireAcceptance'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-001-09
        source: 'services-platform:modules/integrations/tests/integration/services/connections/disconnect-discard-uninstall.integration.spec.js#is refused while a connection is not disconnected, naming each by id, name and status'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-001-10
        source: 'services-platform:modules/integrations/tests/integration/services/installations/history-and-security-trail.integration.spec.js#writes the narrowing to the history and to the security trail'
        scenarios: []
  - finding: FND-PFM-INT-106
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/objects/DOM-PFM-INT-002-connection.md'
    invariant_obligations:
      - invariant: INV-DOM-PFM-INT-002-01
        source: 'services-platform:modules/integrations/tests/unit/services/connection-state-machine.spec.ts#is chapter 09 §4.3’s, edge for edge, and the three discards of INTG-M1 (D7)'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-002-02
        source: 'services-platform:modules/integrations/tests/integration/db/integration-connections.table.integration.spec.js#refuses the same provider account connected twice under the installation'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-002-03
        source: 'services-platform:modules/integrations/tests/e2e/disconnect-and-uninstall.e2e.spec.js#answers a disconnection of a bound connection 409, code connection_has_bindings, naming each binding'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-002-04
        source: 'services-platform:modules/integrations/tests/integration/services/connections/disconnect-discard-uninstall.integration.spec.js#ends a pending_auth connection disconnected, by the caller, with a reason saying it was discarded before it was ever connected'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-002-05
        source: 'services-platform:modules/integrations/tests/integration/services/credentials/credential-state.integration.spec.js#answers no secret value, secret name or key version'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-002-06
        source: 'services-platform:modules/integrations/tests/integration/services/credentials/broker.integration.spec.js#is refused as connection_unavailable for a suspended connection'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-002-07
        source: 'services-platform:modules/integrations/services/credentials/credential-store.ts:storeConnectionCredential'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-002-08
        source: 'services-platform:modules/integrations/tests/integration/services/connections/connection-job-dedup.integration.spec.js#answers one job to both requests, which the connection’s lock serializes'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-002-09
        source: 'services-platform:docs/integrations/README.md#Circuits (13 §10)'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-002-10
        source: 'services-platform:modules/integrations/services/connections/connection-operations.ts:requestVersionUpdate'
        scenarios: []
  - finding: FND-PFM-INT-107
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/objects/DOM-PFM-INT-003-capability-call.md'
    invariant_obligations:
      - invariant: INV-DOM-PFM-INT-003-01
        source: 'services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#leaves one active binding at the scope'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-003-02
        source: 'services-platform:modules/integrations/tests/integration/db/integration-binding-revisions.table.integration.spec.js#refuses an UPDATE of a revision by the application role, so a history cannot be rewritten'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-003-03
        source: 'services-platform:modules/integrations/tests/unit/services/execution-idempotency.spec.ts#replays the stored answer of a succeeded execution, exactly'
        scenarios:
          - ATS-PFM-INT-009-19
      - invariant: INV-DOM-PFM-INT-003-04
        source: 'services-platform:modules/integrations/tests/integration/services/executions/invoke-capability.integration.spec.js#records the execution succeeded, with its digest, summaries, reference and one attempt'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-003-05
        source: 'services-platform:modules/integrations/tests/integration/services/executions/invoke-capability.integration.spec.js#queues no continuation and nudges no dispatcher, so nothing runs in the background'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-003-06
        source: 'services-platform:modules/integrations/tests/integration/services/executions/execution-settlement.integration.spec.js#settles an execution whose next attempt is the eleventh failed, with the last class and retry_exhausted.attempt_limit'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-003-07
        source: 'services-platform:modules/integrations/tests/integration/services/executions/execution-settlement.integration.spec.js#is written once for two settlements that both read the execution running, the loser moving nothing'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-003-08
        source: 'services-platform:modules/integrations/tests/unit/services/binding-resolution.spec.ts#resolves a payment whose processor’s circuit is open rather than refusing it binding_ineligible'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-003-09
        source: 'services-platform:modules/integrations/tests/integration/services/bindings/resolve.integration.spec.js#read the tenant’s rows afresh on every resolution: a suspension is seen at once'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-003-10
        source: 'services-platform:modules/integrations/tests/integration/services/executions/reconciler.integration.spec.js#lets an operator resolve a needs_attention execution by hand, audited, with no call to the provider'
        scenarios: []
  - finding: FND-PFM-INT-108
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/objects/DOM-PFM-INT-004-integration-event.md'
    invariant_obligations:
      - invariant: INV-DOM-PFM-INT-004-01
        source: 'services-platform:modules/integrations/tests/integration/services/webhooks/ingress.integration.spec.js#stores the body and headers, then records the event pending and queued with its digest and a queue row'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-004-02
        source: 'services-platform:modules/integrations/tests/integration/services/webhooks/webhook-worker.integration.spec.js#ignores a second request with the provider event id of one already processed, pointing at the first'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-004-03
        source: 'services-platform:modules/integrations/tests/integration/services/webhooks/webhook-worker.integration.spec.js#verifies with the previous secret too while the endpoint rotates'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-004-04
        source: 'services-platform:modules/integrations/services/events/event-router.ts:routeIntegrationEvents'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-004-05
        source: 'services-platform:modules/integrations/tests/e2e-adapters/events-dummy.adapters.spec.js#reaches the consumer of the application that invoked it, carrying the response'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-004-06
        source: 'services-platform:modules/integrations/tests/integration/services/subscriptions/subscriptions.integration.spec.js#refuses a subscription to a type the installation has not accepted, naming the type, and writes nothing'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-004-07
        source: 'services-platform:modules/integrations/tests/integration/services/subscriptions/subscriptions.integration.spec.js#turns a CRM change event into a queued delivery of the catalog projection, never the row'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-004-08
        source: 'services-platform:modules/integrations/tests/integration/services/subscriptions/subscriptions.integration.spec.js#pauses a subscription after fifty dead deliveries in a row and tells its administrators once'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-004-09
        source: 'services-platform:modules/integrations/tests/integration/services/subscriptions/subscription-consent.integration.spec.js#pauses the active subscription of the type left out'
        scenarios: []
  - finding: FND-PFM-INT-109
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/objects/DOM-PFM-INT-005-extension.md'
    invariant_obligations:
      - invariant: INV-DOM-PFM-INT-005-01
        source: 'services-platform:modules/extensions/tests/integration/services/registration/register-service-extensions.integration.spec.js#refuses a malformed fragment as ObjectInvalid, naming the path'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-005-02
        source: 'services-platform:modules/extensions/tests/integration/services/registration/register-service-extensions.integration.spec.js#refuses a key another service declares, naming that service'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-005-03
        source: 'services-platform:modules/extensions/tests/integration/services/registration/register-service-extensions.integration.spec.js#orphans every binding of a retired point, in every tenant, whatever its status'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-005-04
        source: 'services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses a second enabled binding at one scope of a single point as 409'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-005-05
        source: 'services-platform:modules/extensions/tests/unit/lifecycle.spec.js#allows draft to become enabled, shadow or disabled, enabled and shadow to trade places, disabled to return, and orphaned only to be disabled'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-005-06
        source: 'services-platform:modules/extensions/tests/integration/services/persistence/extension-handlers.integration.spec.js#refuses a rule that does not fit, naming each problem by its path and code, and writes nothing'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-005-07
        source: 'services-platform:modules/extensions/tests/integration/services/persistence/extension-handlers.integration.spec.js#never stores the secret value anywhere in the row'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-005-08
        source: 'services-platform:modules/extensions/tests/integration/services/persistence/extension-handlers.integration.spec.js#refuses to delete a handler a binding uses, naming why, and keeps it'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-005-09
        source: 'services-platform:modules/extensions/tests/integration/services/persistence/extension-handlers.integration.spec.js#records the creation in the security trail, naming the secret by field and never by value'
        scenarios: []
  - finding: FND-PFM-INT-110
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/design/objects/DOM-PFM-INT-006-workflow-action.md'
    invariant_obligations:
      - invariant: INV-DOM-PFM-INT-006-01
        source: 'services-platform:modules/workflow-actions/tests/e2e/workflow-actions-registry.e2e.spec.js#answers 403 to another application’s principal registering CRM'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-006-02
        source: 'services-platform:modules/workflow-actions/tests/integration/services/registry/register-manifest.integration.spec.js#refuses a key another application registered (409)'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-006-03
        source: 'services-platform:modules/workflow-actions/tests/integration/services/registry/register-manifest.integration.spec.js#retires what is absent, and answers its keys'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-006-04
        source: 'services-platform:modules/workflow-actions/tests/integration/services/persistence/action-templates.integration.spec.js#refuses a type that is declared and switched off'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-006-05
        source: 'services-platform:docs/workflow-actions/README.md#Workflow actions: Platform''s part of the Workflow Action Engine'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-006-06
        source: 'services-platform:modules/workflow-actions/services/persistence/business-calendars.ts:clearOtherDefault'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-006-07
        source: 'services-platform:modules/workflow-actions/tests/integration/db/workflow-actions-tables.integration.spec.js#refuses a change to a published version’s actions'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-006-08
        source: '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'
        scenarios: []
      - invariant: INV-DOM-PFM-INT-006-09
        source: 'macroservice-libraries:packages/workflow-actions/src/tests/integration/automation.integration.spec.ts#raises each matching rule’s actions as platform.automation_rule, rule and version, at event, once per event'
        scenarios: []
  - finding: FND-PFM-INT-111
    source: 'rhythm-v2-docs:tools/check-corpus.mjs:report filename recognition'
    corpus_source_sha: 92677ad625b711c604d289f69e550743733ebd75
    required_report: reports/TESTING-BACKFILL-2026-10-23.md
    compatible_report: reports/TESTING-EXAMINATION-2026-10-23.md
    resolution:
      status: resolved
      examined_at: '2026-10-23'
      corpus_source_sha: b9480832382f675bea003ce68c2eb36a2ae8354b
      provenance: observed
      source: 'rhythm-v2-docs:tools/check-corpus.mjs:report filename recognition'
      note: The starting checker accepts dated uppercase report names; the requested back-fill report now passes unchanged checker rules.
control_gap_evidence:
  - finding: FND-PFM-INT-051
    controls:
      - TC-DAT-003
      - TC-DAT-004
      - TC-SEC-003
    provenance: observed
    source:
      - 'services-platform:modules/integrations/services/maintenance/tenant-participant.ts:integrationsParticipant'
      - 'services-platform:modules/extensions/services/maintenance/tenant-participant.ts'
      - 'services-platform:docs/integrations/README.md#The archive and its read-through'
    related_finding: FND-PFM-INT-037
  - finding: FND-PFM-INT-052
    controls:
      - TC-MON-002
      - TC-AVL-004
      - TC-PI-004
    provenance: observed
    source: 'services-platform:modules/integrations/services/notices/connection-notices.ts'
    related_finding: FND-PFM-INT-038
  - finding: FND-PFM-INT-053
    controls:
      - TC-LOG-001
    provenance: observed
    source:
      - 'services-platform:modules/integrations/services/registration/register-integration-version.ts:registerIntegrationVersion'
      - 'services-platform:modules/workflow-actions/services/registry/register-manifest.ts:applyRegistration'
    related_finding: FND-PFM-INT-040
  - finding: FND-PFM-INT-054
    controls:
      - TC-AVL-004
      - TC-PI-004
      - TC-LOG-001
    provenance: observed
    source: 'services-platform:modules/extensions/services/persistence/extension-handlers.ts:createExtensionHandler; modules/extensions/handler-secrets.ts'
    related_finding: FND-PFM-INT-045
continuation_evidence:
  - finding: FND-PFM-INT-112
    provenance: observed
    source:
      - 'rhythm-v2-docs:specs/platform/integrations/ID_REGISTRY.md#Series'
      - 'rhythm-v2-docs:specs/platform/integrations/ID_REGISTRY.md#Testing Back-Fill Allocations'
      - 'rhythm-v2-docs:specs/platform/integrations/FINDINGS.md:testing_coverage_evidence'
      - 'rhythm-v2-docs:specs/platform/integrations/FINDINGS.md:control_gap_evidence'
    corpus_source_sha: b9480832382f675bea003ce68c2eb36a2ae8354b
    conflicting_ids:
      - FND-PFM-INT-051
      - FND-PFM-INT-052
      - FND-PFM-INT-053
      - FND-PFM-INT-054
    disposition: open
    note: Both historical meanings remain recorded. No identifier is renumbered or reused in this continuation; Andrew must decide how the existing conflicting references are represented.

---
# Integration Platform findings and open questions

## Findings

| id | severity | statement | affects | evidence | kind |
|---|---|---|---|---|---|
| `FND-PFM-INT-001` | medium | The initial module boundary omitted the Library, extension pages and module documentation while naming a redirect. Source coverage must use the actual screens and documented module paths. | `MOD-PFM-INT` | Structured evidence | inconsistency |
| `FND-PFM-INT-002` | medium | The overview describes narrower disconnection safeguards than the service implements: every current binding prevents retirement, unfinished accounts can be discarded, and a previously verified account can be disconnected after verification fails. | `BR-CAP-PFM-INT-004-07`, `BR-CAP-PFM-INT-004-08` | Structured evidence | inconsistency |
| `FND-PFM-INT-003` | low | Implementation comments refer to an additional account-disconnection decision absent from the recorded milestone decision list. The observed exception remains unconfirmed. | `BR-CAP-PFM-INT-004-07` | Structured evidence | undocumented |
| `FND-PFM-INT-004` | medium | The separately declared execution-reading permission is unused by read routes. Granting that key alone does not authorize execution access, which uses the general integration-reading permission. | `CAP-PFM-INT-011`, `BR-CAP-PFM-INT-011-01`, `OQ-PFM-INT-004` | Structured evidence | inconsistency |
| `FND-PFM-INT-005` | medium | The service health summary counts suspended accounts as requiring attention, but the Library queue excludes them. The recorded display decision represents suspension as grey, leaving the intended queue treatment unresolved. | `BR-CAP-PFM-INT-006-05`, `BR-CAP-PFM-INT-006-10`, `OQ-PFM-INT-003` | Structured evidence | inconsistency |
| `FND-PFM-INT-006` | high | Provider notifications, integration events and subscription deliveries have reachable implementations ahead of their proposed milestone. Their open product decisions prevent treating implementation as approved intent. | `CAP-PFM-INT-013`, `CAP-PFM-INT-014`, `CAP-PFM-INT-015`, `OQ-PFM-INT-002` | Structured evidence | undocumented |
| `FND-PFM-INT-007` | medium | OAuth setup, callbacks and refresh exist ahead of the proposed credential milestone. The test provider’s sign-in deployment and a recorded acceptance of this complete flow are absent from the examined evidence. | `BR-CAP-PFM-INT-005-08`, `BR-CAP-PFM-INT-005-09`, `BR-CAP-PFM-INT-005-11` | Structured evidence | undocumented |
| `FND-PFM-INT-008` | medium | Contract-major binding migration is implemented despite the call milestone explicitly deferring that outcome. | `BR-CAP-PFM-INT-007-09` | Structured evidence | inconsistency |
| `FND-PFM-INT-009` | medium | The approved operator rate-limit adjustment has a persistence writer but no exposed route or caller in the examined module. | `BR-CAP-PFM-INT-009-12` | Structured evidence | debt |
| `FND-PFM-INT-010` | high | Extension pages use a local sample adapter rather than Platform services. They also expose customer event subscriptions removed by the recorded build decision. | `CAP-PFM-INT-016`, `CAP-PFM-INT-017`, `JNY-PFM-INT-005` | Structured evidence | inconsistency |
| `FND-PFM-INT-011` | medium | The extension build adopts design recommendations without a recorded Andrew ruling for each product decision. Its observed behaviour remains proposed pending an explicit approval record. | `CAP-PFM-INT-016`, `CAP-PFM-INT-017`, `OQ-PFM-INT-001` | Structured evidence | undocumented |
| `FND-PFM-INT-012` | medium | The examined console has no connected pages for action recipes, business calendars, automation management or shared action runs and timers. | `CAP-PFM-INT-018`, `CAP-PFM-INT-019`, `CAP-PFM-INT-020`, `JNY-PFM-INT-006` | Structured evidence | debt |
| `FND-PFM-INT-013` | low | Automation configuration exists, but the examined boundary does not prove a consuming application’s event execution. The declared notification action remains disabled until its supporting product exists. | `BR-CAP-PFM-INT-020-06`, `BR-CAP-PFM-INT-018-04` | Structured evidence | undocumented |
| `FND-PFM-INT-014` | medium | Synchronization pages appear in the Library while synchronization profiles lack Platform support. The recorded installation walk reports a failure on this unfinished surface. | `CAP-PFM-INT-015` | Structured evidence | debt |
| `FND-PFM-INT-015` | low | Data-grant routes validate requests and return an unimplemented result. Accepted data scopes therefore do not establish working data delivery, and that refusal is not an approved product outcome. | `BR-CAP-PFM-INT-015-08`, `BR-CAP-PFM-INT-003-02` | Structured evidence | debt |
| `FND-PFM-INT-016` | medium | Invocation records refer to captured payloads without an implemented storage write, and the extension module has no history-retention sweep. | `BR-CAP-PFM-INT-017-12` | Structured evidence | debt |
| `FND-PFM-INT-017` | low | Archived executions lack an expiry implementation. Payment-history retention duration remains an unresolved product decision. | `BR-CAP-PFM-INT-011-07` | Structured evidence | debt |
| `FND-PFM-INT-018` | medium | The short-window circuit threshold uses a local process counter rather than a shared account counter. Ephemeral execution weakens that threshold, and existing tests do not prove the complete circuit-opening behaviour. | `BR-CAP-PFM-INT-009-08` | Structured evidence | inconsistency |
| `FND-PFM-INT-019` | low | Automated proof of version publication, deprecation and pinned-version retirement refusal is missing. Their staff screens belong to a proposed operational milestone. | `BR-CAP-PFM-INT-001-06`, `BR-CAP-PFM-INT-001-07` | Structured evidence | debt |
| `FND-PFM-INT-020` | low | Legacy acceptance personas name configuration permissions that Platform does not declare. Current integration permission declarations must govern role setup. | `CAP-PFM-INT-002` | Structured evidence | inconsistency |
| `FND-PFM-INT-021` | low | Uninstallation deletes subscriptions, whereas the recorded decision only says to stop them. Reinstallation does not recover those deleted definitions. | `BR-CAP-PFM-INT-003-08` | Structured evidence | inconsistency |
| `FND-PFM-INT-022` | medium | The call milestone remains in progress, with recorded product defects in its examination runs. Built gateway behaviour is not equivalent to a completed product acceptance. | `CAP-PFM-INT-007`, `CAP-PFM-INT-008`, `CAP-PFM-INT-009`, `CAP-PFM-INT-010`, `CAP-PFM-INT-011`, `CAP-PFM-INT-012` | Structured evidence | debt |
| `FND-PFM-INT-023` | low | Legacy adapter acceptance entries include developer packages, provider implementations and consumer applications beyond this module boundary. Identifier absorption does not verify their behaviour. | `CAP-PFM-INT-001`, `CAP-PFM-INT-009`, `CAP-PFM-INT-015` | Structured evidence | debt |
| `FND-PFM-INT-024` | low | Extension deployment registration logs its result but creates no product audit record of definitions changed, retired or orphaned. | `BR-CAP-PFM-INT-016-08` | Structured evidence | undocumented |

| `FND-PFM-INT-025` | high | The service allows previously withdrawn access to be restored within the current release declaration, while the approved decision describes access as narrowable only; version updates also check only newly introduced access rather than every unaccepted request. | `BR-CAP-PFM-INT-003-02`, `BR-CAP-PFM-INT-004-10` | Structured evidence | inconsistency |

| `FND-PFM-INT-026` | medium | Several draft rows attribute whole-rule enforcement to the database where the permitted table declaration establishes only shape or uniqueness checks; the examination removes those claims and leaves database-trigger coverage outside this source boundary unverified. | `CAP-PFM-INT-001`, `CAP-PFM-INT-003`, `CAP-PFM-INT-004`, `CAP-PFM-INT-005`, `CAP-PFM-INT-009` | Structured evidence | inconsistency |

| `FND-PFM-INT-027` | medium | Some existing test bindings establish only part of their acceptance scenario; publication ordering, empty neutral values and circuit opening lack complete bound proof, and the unwired Extensions console cannot establish backend behaviour at browser level. | `ATS-PFM-INT-001`, `ATS-PFM-INT-009`, `ATS-PFM-INT-016`, `ATS-PFM-INT-017` | Structured evidence | debt |

| `FND-PFM-INT-028` | high | An admitted extension registration caller can name another application in its declaration; the intake checks ownership against that supplied name without authenticating it against the invoking application, so replacement can retire that application’s points and orphan its bindings. | `BR-CAP-PFM-INT-016-09`, `ATS-PFM-INT-016-07` | Structured evidence | defect |

| `FND-PFM-INT-029` | low | The named planning brief is absent from the supplied corpus commit, so the examination cannot compare the layer with that brief’s discovery instructions or exclusions. | `MOD-PFM-INT` | Structured evidence | undocumented |

| `FND-PFM-INT-030` | medium | Cross-application database grants, external host adoption and infrastructure deployment are outside the permitted source paths or are not executed in this examination; source declarations establish intended wiring rather than operational readiness. | `CAP-PFM-INT-018`, `CAP-PFM-INT-020` | Structured evidence | debt |

| `FND-PFM-INT-031` | low | Workflow configuration needs explicit calendar-limit, concurrency and lock refusals and deployment-refresh effects; the examination adds these obligations with proposed scenarios because no single existing binding proves each complete case. | `BR-CAP-PFM-INT-018-07`, `BR-CAP-PFM-INT-019-10` | Structured evidence | debt |

| `FND-PFM-INT-032` | medium | Event routing retries can deliver again to consumers that already handled an earlier attempt; the source supports at-least-once transport and consumer deduplication, rather than one total invocation per consumer. | `BR-CAP-PFM-INT-015-02`, `ATS-PFM-INT-015-02` | Structured evidence | inconsistency |

| `FND-PFM-INT-033` | medium | Additional refusals, calculations and record-changing effects are mandatory proof obligations; the listed rules need dedicated complete scenarios or stronger bindings before approval, even where neighbouring scenarios provide partial coverage. | `BR-CAP-PFM-INT-003-09`, `BR-CAP-PFM-INT-004-11`, `BR-CAP-PFM-INT-004-12`, `BR-CAP-PFM-INT-005-10`, `BR-CAP-PFM-INT-005-13`, `BR-CAP-PFM-INT-006-05`, `BR-CAP-PFM-INT-007-11`, `BR-CAP-PFM-INT-008-10`, `BR-CAP-PFM-INT-010-08`, `BR-CAP-PFM-INT-011-04`, `BR-CAP-PFM-INT-012-07`, `BR-CAP-PFM-INT-013-03`, `BR-CAP-PFM-INT-015-07`, `BR-CAP-PFM-INT-016-06`, `BR-CAP-PFM-INT-016-08`, `BR-CAP-PFM-INT-018-04`, `BR-CAP-PFM-INT-018-06`, `BR-CAP-PFM-INT-019-04`, `BR-CAP-PFM-INT-019-08`, `BR-CAP-PFM-INT-021-04`, `BR-CAP-PFM-INT-022-04` | Structured evidence | debt |

| `FND-PFM-INT-034` | high | The browser credential-recovery source records a missing wizard correction control and a conditional failure before replacement; it cannot prove the complete recovery journey, and browser call-detail and manual-completion assertions also need sources that establish the entire stated result. | `ATS-PFM-INT-004-05`, `JNY-PFM-INT-001`, `JNY-PFM-INT-003`, `JNY-PFM-INT-004` | Structured evidence | defect |

| `FND-PFM-INT-035` | low | The module charter does not say in one sentence that the module performs no inference, as the conventions require when every service, workflow and screen carries an empty inference list; the design confirms no examined code asks a model a question. This is a planning correction for the charter. | `MOD-PFM-INT` | Structured evidence | undocumented |

| `FND-PFM-INT-036` | medium | Lifecycle actions (installation suspend, resume and uninstall; connection suspend, resume, disconnect and version update; binding put, delete, move and migration) carry no client-held version, while the record-write standard requires one on every state transition; two administrators acting at once are serialized only by state, and the second can act on a record that changed in a way they did not see. Edits of settings, connections, subscriptions and configuration do carry the version. | `ADR-PFM-INT-012`, `STATE-PFM-INT-002`, `STATE-PFM-INT-003`, `STATE-PFM-INT-006`, `OQ-PFM-INT-006` | Structured evidence | inconsistency |

| `FND-PFM-INT-037` | medium | Workspace deletion leaves provider material behind: the integrations participant declares no secret-storage or object-storage resources, so credential secrets of connections never disconnected, recorded payloads, stored webhook bodies and execution archives (which have no expiry) remain; the extensions participant deliberately retains handler secrets because the service role cannot list them. | `WF-PFM-INT-023`, `ADR-PFM-INT-020`, `OQ-PFM-INT-005`, `BR-CAP-PFM-INT-003-11` | Structured evidence | debt |

| `FND-PFM-INT-038` | low | Administrator notices (lost features, re-authorization required, invalid bindings, needs attention, paused subscriptions, expiring refresh tokens) are sent after commit and a failed send is only logged, with no retry or record; the change stays true but the administrator may never be told. | `WF-PFM-INT-002`, `WF-PFM-INT-005`, `WF-PFM-INT-009`, `WF-PFM-INT-013`, `WF-PFM-INT-018` | Structured evidence | undocumented |

| `FND-PFM-INT-039` | low | The extension resolution preview restates the shared library's resolution rule in Platform because the library was not published, so the preview and the hosts' real resolution can drift; the two are held together only by the same test cases. | `SVC-PFM-INT-extensions`, `ADR-PFM-INT-016`, `BR-CAP-PFM-INT-017-09` | Structured evidence | debt |

| `FND-PFM-INT-040` | low | Adapter release registration and workflow registry registration, like extension registration, write no audit record of what they created, changed or retired; deploy logs and row stamps are the only trace. | `WF-PFM-INT-001`, `WF-PFM-INT-021`, `ADR-PFM-INT-015` | Structured evidence | undocumented |

| `FND-PFM-INT-041` | low | The named design brief is absent from the supplied corpus, so its exclusions and drafting instructions cannot be independently checked. | `MOD-PFM-INT` | Structured evidence | undocumented |
| `FND-PFM-INT-042` | high | Deprecating the current release leaves the definition pointing at it; catalogue visibility requires a published pointer, so an older published release is not automatically offered. The draft incorrectly promised recomputation. | `DOM-PFM-INT-001`, `STATE-PFM-INT-001` | Structured evidence | defect |
| `FND-PFM-INT-043` | medium | Several invariant and transition citations name tests for different behaviour. This examination replaces them with matching service evidence; those changes establish source support rather than passing automated proof. | `DOM-PFM-INT-002`, `DOM-PFM-INT-005`, `DOM-PFM-INT-006`, `STATE-PFM-INT-007` | Structured evidence | debt |
| `FND-PFM-INT-044` | medium | Reconciliation has no declared exclusion lock and overlapping runs can repeat lookup calls. It selects the connection’s current release and active deployment rather than preserving the deployment that served the original execution. Settlement protects saved outcomes, but deployment stability is not established. | `WF-PFM-INT-013`, `STATE-PFM-INT-007` | Structured evidence | inconsistency |
| `FND-PFM-INT-045` | high | Handler secret creation, replacement or deletion can succeed before a later audit or database commit fails. Database rollback cannot undo secret storage, and the examined handler writer has no compensation for this failure window. | `SVC-PFM-INT-extensions`, `DOM-PFM-INT-005` | Structured evidence | defect |
| `FND-PFM-INT-046` | medium | The preview layout hides extension pages outside mock mode without an extension permission guard inside the preview. The attention queue gates delivery retry on integration management while its API requires execution operation authority; credential controls similarly use integration management while the API requires credential management. Confirmation flags were also corrected to match built controls. | `SCR-PFM-INT-004`, `SCR-PFM-INT-006`, `SCR-PFM-INT-015`, `SCR-PFM-INT-016` | Structured evidence | inconsistency |
| `FND-PFM-INT-047` | medium | The draft extended workflow ownership and registry decisions to all three services as confirmed intent. The cited decisions do not establish that full scope, and application roles write extension invocations. The examination retains these wider architectural choices as proposed and distinguishes each registration’s replacement behaviour. | `ADR-PFM-INT-001`, `ADR-PFM-INT-015` | Structured evidence | undocumented |
| `FND-PFM-INT-048` | medium | The draft modelled webhook replay as changing an old record, included disconnection under a current invalid binding despite the refusal guard, and omitted several retry and registry moves. Replay creates a new record, protected history is purged first, and lifecycle models now distinguish these limits. | `STATE-PFM-INT-006`, `STATE-PFM-INT-009`, `ADR-PFM-INT-020` | Structured evidence | inconsistency |

| `FND-PFM-INT-049` | medium | The draft listed a handler deletion control that does not exist and omitted handler enablement and attention-queue resolution controls. Authorization denial consumes valid callback state, and webhook throttling fails open without the permit store; these source limits replace stronger draft guarantees. | `SCR-PFM-INT-015`, `SCR-PFM-INT-018`, `WF-PFM-INT-004`, `WF-PFM-INT-015` | Structured evidence | inconsistency |

| `FND-PFM-INT-050` | low | The planning coverage total counts fewer operations than the complete design inventory, which also includes health entry points and declared stubs. Extension registration names the exported wrapper in planning while the invocation context uses a different operation identifier; the contract now uses the declared context identifier and planning remains unchanged. | `MOD-PFM-INT`, `SVC-PFM-INT-extensions` | Structured evidence | inconsistency |

| `FND-PFM-INT-051` | low | The notification duplicate scenario previously describes rejection before processing; the worker instead retains the repeated message and marks it ignored during processing. | `ATS-PFM-INT-013-04` | Structured testing evidence | inconsistency |
| `FND-PFM-INT-052` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-001` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-053` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-001`, `ATS-PFM-INT-001-06`, `ATS-PFM-INT-001-07`, `ATS-PFM-INT-001-08`, `ATS-PFM-INT-001-12`, `ATS-PFM-INT-001-13`, `ATS-PFM-INT-001-14`, `ATS-PFM-INT-001-15` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-054` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-002` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-055` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-002`, `ATS-PFM-INT-002-06` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-056` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-003` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-057` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-003`, `ATS-PFM-INT-003-12`, `ATS-PFM-INT-003-13`, `ATS-PFM-INT-003-14`, `ATS-PFM-INT-003-15`, `ATS-PFM-INT-003-16` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-058` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-004` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-059` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-004`, `ATS-PFM-INT-004-05`, `ATS-PFM-INT-004-11`, `ATS-PFM-INT-004-12`, `ATS-PFM-INT-004-13`, `ATS-PFM-INT-004-14`, `ATS-PFM-INT-004-15` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-060` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-005` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-061` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-005`, `ATS-PFM-INT-005-05`, `ATS-PFM-INT-005-12`, `ATS-PFM-INT-005-13`, `ATS-PFM-INT-005-14`, `ATS-PFM-INT-005-15`, `ATS-PFM-INT-005-16`, `ATS-PFM-INT-005-17` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-062` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-006` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-063` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-006`, `ATS-PFM-INT-006-09`, `ATS-PFM-INT-006-10`, `ATS-PFM-INT-006-11`, `ATS-PFM-INT-006-12`, `ATS-PFM-INT-006-13` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-064` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-007` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-065` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-007`, `ATS-PFM-INT-007-11`, `ATS-PFM-INT-007-12`, `ATS-PFM-INT-007-13`, `ATS-PFM-INT-007-14` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-066` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-008` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-067` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-008`, `ATS-PFM-INT-008-10`, `ATS-PFM-INT-008-11` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-068` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-009` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-069` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-009`, `ATS-PFM-INT-009-08`, `ATS-PFM-INT-009-12`, `ATS-PFM-INT-009-13`, `ATS-PFM-INT-009-14`, `ATS-PFM-INT-009-15`, `ATS-PFM-INT-009-16`, `ATS-PFM-INT-009-17`, `ATS-PFM-INT-009-18` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-070` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-010` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-071` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-010`, `ATS-PFM-INT-010-08`, `ATS-PFM-INT-010-09`, `ATS-PFM-INT-010-10`, `ATS-PFM-INT-010-11` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-072` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-011` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-073` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-011`, `ATS-PFM-INT-011-07` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-074` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-012` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-075` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-012`, `ATS-PFM-INT-012-07`, `ATS-PFM-INT-012-08` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-076` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-013` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-077` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-013`, `ATS-PFM-INT-013-07`, `ATS-PFM-INT-013-09`, `ATS-PFM-INT-013-10`, `ATS-PFM-INT-013-11`, `ATS-PFM-INT-013-12`, `ATS-PFM-INT-013-13` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-078` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-014` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-079` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-014`, `ATS-PFM-INT-014-08`, `ATS-PFM-INT-014-09`, `ATS-PFM-INT-014-10`, `ATS-PFM-INT-014-11`, `ATS-PFM-INT-014-12` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-080` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-015` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-081` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-015`, `ATS-PFM-INT-015-07`, `ATS-PFM-INT-015-08`, `ATS-PFM-INT-015-09`, `ATS-PFM-INT-015-10` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-082` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-016` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-083` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-016`, `ATS-PFM-INT-016-05`, `ATS-PFM-INT-016-07`, `ATS-PFM-INT-016-08`, `ATS-PFM-INT-016-09` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-084` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-017` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-085` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-017`, `ATS-PFM-INT-017-13`, `ATS-PFM-INT-017-14`, `ATS-PFM-INT-017-15` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-086` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-018` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-087` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-018`, `ATS-PFM-INT-018-05`, `ATS-PFM-INT-018-06`, `ATS-PFM-INT-018-07`, `ATS-PFM-INT-018-08` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-088` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-019` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-089` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-019`, `ATS-PFM-INT-019-08`, `ATS-PFM-INT-019-09` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-090` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-020` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-091` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-020`, `ATS-PFM-INT-020-09`, `ATS-PFM-INT-020-10` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-092` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-021` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-093` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-021`, `ATS-PFM-INT-021-05` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-094` | medium | Detailed proof remains undesigned for the listed coverage categories; permission-key coverage and remaining rule obligations also need an explicit case audit. | `ATS-PFM-INT-022` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-095` | medium | The listed capability scenarios have no executable binding at the pinned revisions. | `ATS-PFM-INT-022`, `ATS-PFM-INT-022-04`, `ATS-PFM-INT-022-05`, `ATS-PFM-INT-022-06`, `ATS-PFM-INT-022-07` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-096` | medium | Some acceptance files contain only unavailable harness steps and no direct executable product assertions; they are excluded from the implemented suite register. | `MOD-PFM-INT` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-097` | medium | Some registered browser suites include unavailable or set-aside steps; their presence does not prove those steps or an entire feature scenario. | `MOD-PFM-INT` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-098` | medium | The feature acceptance scenarios are designed compositions without a verified executable suite for the whole sequence. | `FAS-PFM-INT-01`, `FAS-PFM-INT-01-01`, `FAS-PFM-INT-01-02`, `FAS-PFM-INT-01-03`, `FAS-PFM-INT-01-04`, `FAS-PFM-INT-01-05` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-099` | medium | The feature acceptance scenarios are designed compositions without a verified executable suite for the whole sequence. | `FAS-PFM-INT-02`, `FAS-PFM-INT-02-01`, `FAS-PFM-INT-02-02`, `FAS-PFM-INT-02-03`, `FAS-PFM-INT-02-04`, `FAS-PFM-INT-02-05` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-100` | medium | The feature acceptance scenarios are designed compositions without a verified executable suite for the whole sequence. | `FAS-PFM-INT-03`, `FAS-PFM-INT-03-01`, `FAS-PFM-INT-03-02`, `FAS-PFM-INT-03-03`, `FAS-PFM-INT-03-04`, `FAS-PFM-INT-03-05` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-101` | medium | The feature acceptance scenarios are designed compositions without a verified executable suite for the whole sequence. | `FAS-PFM-INT-04`, `FAS-PFM-INT-04-01`, `FAS-PFM-INT-04-02`, `FAS-PFM-INT-04-03`, `FAS-PFM-INT-04-04`, `FAS-PFM-INT-04-05` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-102` | medium | The feature acceptance scenarios are designed compositions without a verified executable suite for the whole sequence. | `FAS-PFM-INT-05`, `FAS-PFM-INT-05-01`, `FAS-PFM-INT-05-02`, `FAS-PFM-INT-05-03`, `FAS-PFM-INT-05-04`, `FAS-PFM-INT-05-05` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-103` | medium | The feature acceptance scenarios are designed compositions without a verified executable suite for the whole sequence. | `FAS-PFM-INT-06`, `FAS-PFM-INT-06-01`, `FAS-PFM-INT-06-02`, `FAS-PFM-INT-06-03`, `FAS-PFM-INT-06-04`, `FAS-PFM-INT-06-05` | Structured testing evidence | coverage-gap |

| `FND-PFM-INT-104` | medium | The original replay scenario includes an initial-claim race absent from the cited suite; sequential outcomes stay bound and the race is retained as a separate proposed scenario. | `ATS-PFM-INT-009-03`, `ATS-PFM-INT-009-19` | Structured testing evidence | coverage-gap |

| `FND-PFM-INT-105` | medium | Independent object-invariant coverage is not fully mapped; lifecycle matrices prove their named transitions and do not substitute for separate invariant assertions. | `DOM-PFM-INT-001` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-106` | medium | Independent object-invariant coverage is not fully mapped; lifecycle matrices prove their named transitions and do not substitute for separate invariant assertions. | `DOM-PFM-INT-002` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-107` | medium | Independent object-invariant coverage is not fully mapped; lifecycle matrices prove their named transitions and do not substitute for separate invariant assertions. | `DOM-PFM-INT-003` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-108` | medium | Independent object-invariant coverage is not fully mapped; lifecycle matrices prove their named transitions and do not substitute for separate invariant assertions. | `DOM-PFM-INT-004` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-109` | medium | Independent object-invariant coverage is not fully mapped; lifecycle matrices prove their named transitions and do not substitute for separate invariant assertions. | `DOM-PFM-INT-005` | Structured testing evidence | coverage-gap |
| `FND-PFM-INT-110` | medium | Independent object-invariant coverage is not fully mapped; lifecycle matrices prove their named transitions and do not substitute for separate invariant assertions. | `DOM-PFM-INT-006` | Structured testing evidence | coverage-gap |

| `FND-PFM-INT-111` | low | Resolved in continuation: the starting checker accepts the required back-fill report name, and the report now uses it. The earlier checker restriction remains historical evidence. | `MOD-PFM-INT` | Structured testing evidence and resolution | inconsistency |
| `FND-PFM-INT-112` | medium | Findings 051 through 054 have conflicting historical allocations for control gaps and testing gaps. Their existing references remain unchanged; Andrew must decide how to represent both meanings without reusing identifiers. | `MOD-PFM-INT` | Structured continuation evidence | inconsistency |

## Open Questions

| id | question | why_it_matters | options | recommendation | affects |
|---|---|---|---|---|---|
| `OQ-PFM-INT-001` | What recorded approval and acceptance plan should govern extensions? | Design recommendations and working services do not establish approval or a connected customer experience. | Approve the recommendations explicitly; prepare an extension milestone and acceptance walk; retain proposed intent until host adoption. | The product should define an extension milestone with recorded decisions and a connected acceptance path. | `CAP-PFM-INT-016`, `CAP-PFM-INT-017`, `JNY-PFM-INT-005` |
| `OQ-PFM-INT-002` | When should the built message and subscription services enter a planned milestone? | Reachable behaviour needs product decisions and acceptance before customers depend on its current rules. | Plan and walk the message milestone; withhold unfinished screens; retain the existing proposed implementation. | The product should plan and examine the message milestone before expanding payment-provider notification use. | `CAP-PFM-INT-013`, `CAP-PFM-INT-014`, `CAP-PFM-INT-015` |
| `OQ-PFM-INT-003` | Should a deliberately suspended account appear in the attention queue? | The summary count and visible queue currently disagree. | Exclude deliberate suspension; include suspension in the queue; provide a separate paused group. | The product should exclude deliberate suspension from required attention and align the summary with the queue. | `CAP-PFM-INT-006` |
| `OQ-PFM-INT-004` | Should the separate execution-reading permission be removed or enforced? | An unused permission misleads role administrators, while enforcing it would change established reader access. | Remove the unused key; require it for execution reads; preserve and document its reserved status. | The product should retire the unused key while retaining the established integration reader access. | `CAP-PFM-INT-011` |
| `OQ-PFM-INT-005` | Should deleting a workspace destroy the integration secrets and stored provider material it leaves behind? | Credential and handler secrets and stored payloads, notification bodies and archives of a deleted customer remain in storage, which matters for data protection commitments. | Declare secret and object-storage prefixes in the participants and delete them; rely on storage expiry and add one to the archive; retain them with a documented reason and retention period. | The product should require deletion of every workspace secret and stored payload, giving the services the permissions the purge needs, and set a retention period for payment archives. | `WF-PFM-INT-023`, `ADR-PFM-INT-020`, `FND-PFM-INT-037` |
| `OQ-PFM-INT-006` | Should integration lifecycle actions require the version the person read? | Without it two administrators can suspend, disconnect or rebind the same record at once and the second never learns what changed; the record-write standard asks for it. | Require the version on every lifecycle action; require it only on administrator actions and keep service-driven transitions state-guarded; record a standing exception. | The product should require the version on administrator lifecycle actions at the next change to these routes and keep service-driven transitions guarded by state. | `ADR-PFM-INT-012`, `FND-PFM-INT-036` |
