---
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  rhythm-v2-docs: f946bdcc118035206f18109fbf69cd8e9e785aaf
finding_evidence:
  - finding: FND-PFM-QRY-001
    source: 'rhythm-v2-docs:specs/PRODUCT-AREAS.md'
  - finding: FND-PFM-QRY-002
    source: 'services-platform:modules/quick-search/registry/record-types.ts'
  - finding: FND-PFM-QRY-003
    source: 'react-console:app/(console)/console/[tenantId]/search/page.tsx'
  - finding: FND-PFM-QRY-004
    source: 'services-platform:docs/data-exports.md'
  - finding: FND-PFM-QRY-005
    source: 'services-platform:aws/api/platform.routes.ts:platformPermissionCatalog'
  - finding: FND-PFM-QRY-006
    source: 'services-platform:docs/milestones/RPT-M1-catalog-sharing-subledger.md#History'
  - finding: FND-PFM-QRY-007
    source: 'services-platform:modules/queries/aws/api/saved-queries.routes.ts'
  - finding: FND-PFM-QRY-008
    source: 'services-platform:docs/milestones/RPT-M1-catalog-sharing-subledger.md#History'
  - finding: FND-PFM-QRY-009
    source: 'services-platform:modules/queries/tests/e2e/read-tier.e2e.spec.js#is refused starting an export of a report with 403'
  - finding: FND-PFM-QRY-010
    source: 'services-platform:docs/milestones/plans/RPT-M1-plan.md'
  - finding: FND-PFM-QRY-011
    source: 'services-platform:docs/quick-search.md'
  - finding: FND-PFM-QRY-012
    source: 'services-platform:docs/queries/semantic-query-layer.md#10.6 Complexity limits (first release)'
  - finding: FND-PFM-QRY-013
    source: 'services-platform:docs/debt/query-export-link-page-status.md'
  - finding: FND-PFM-QRY-014
    source: 'services-platform:docs/explorer.md'
  - finding: FND-PFM-QRY-015
    source: 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0425.spec.ts#RPT-ACC-0425'
  - finding: FND-PFM-QRY-016
    source: 'services-platform:docs/milestones/RPT-M1-catalog-sharing-subledger.md#History'
  - finding: FND-PFM-QRY-017
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests'
  - finding: FND-PFM-QRY-018
    source: 'services-platform:aws/platform.service.ts:QUERIES_PERMISSIONS'
  - finding: FND-PFM-QRY-019
    source: 'react-console:acceptance/reporting/inventory/capabilities.json'
  - finding: FND-PFM-QRY-020
    source: 'services-platform:docs/queries/reports.md'
  - finding: FND-PFM-QRY-021
    source: 'services-platform:docs/data-exports.md'
  - finding: FND-PFM-QRY-022
    source: 'services-platform:docs/quick-search.md#10. Known debt'
  - finding: FND-PFM-QRY-023
    source: 'rhythm-v2-docs:specs/PRODUCT-AREAS.md'
  - finding: FND-PFM-QRY-024
    source: 'services-platform:docs/queries/custom-query-tables/rhythm-custom-query-tables-architecture.md#2026-10-12 — Final acceptance (phase 1)'
  - finding: FND-PFM-QRY-025
    source: 'services-platform:modules/explorer/services/navigation/navigation-sessions.ts:locateInNavigationSession'
  - finding: FND-PFM-QRY-026
    source: 'services-platform:modules/queries/services/reports/report-library.ts:readableReports'
  - finding: FND-PFM-QRY-027
    source: 'services-platform:modules/queries/services/execute/compile-predicates.ts:evaluateSubjectPredicates'
  - finding: FND-PFM-QRY-028
    source: 'services-platform:modules/queries/tests/e2e/report-exports.e2e.spec.js#answers 403 without platform.reports.use'
  - finding: FND-PFM-QRY-029
    source: 'services-platform:modules/quick-search/tests/e2e/quick-search-configurations.e2e.spec.js#answers the rebuild job the change owes, so a client can watch it'
  - finding: FND-PFM-QRY-030
    source: 'services-platform:modules/queries/aws/api/custom-tables.routes.ts'
  - finding: FND-PFM-QRY-031
    source: 'react-console:app/(console)/hq/customQueryTables/page.tsx'
  - finding: FND-PFM-QRY-032
    source: 'services-platform:modules/data-exports/services/executions/admit-execution.ts:admitExecution'
  - finding: FND-PFM-QRY-033
    source: 'services-platform:modules/data-exports/services/destinations/bindings.ts'
  - finding: FND-PFM-QRY-034
    source: 'services-platform:modules/data-exports/db/data-export-definitions.table.ts'
  - finding: FND-PFM-QRY-035
    source: 'services-platform:modules/data-exports/services/persistence/executions.ts'
  - finding: FND-PFM-QRY-036
    source: 'services-platform:modules/explorer/db/explorer-views.table.ts'
  - finding: FND-PFM-QRY-037
    source: 'services-platform:modules/queries/db/saved-queries.table.ts'
  - finding: FND-PFM-QRY-038
    source: 'services-platform:modules/queries/services/schedules/scheduled-report-delivery.ts'
  - finding: FND-PFM-QRY-039
    source: 'services-platform:modules/quick-search/services/maintenance/tenant-participant.ts'
  - finding: FND-PFM-QRY-040
    source: 'services-platform:modules/tenants/services/lifecycle/participants.ts:platformQueriesParticipant'
  - finding: FND-PFM-QRY-041
    source: 'react-console:lib/record-explorer/views.ts'
  - finding: FND-PFM-QRY-042
    source: 'services-platform:modules/queries/services/custom-tables/revalidate-custom-tables.ts'
  - finding: FND-PFM-QRY-043
    source: 'services-platform:modules/snapshots/aws/logic/snapshots-functions.lambda.ts'
  - finding: FND-PFM-QRY-044
    source: 'rhythm-v2-docs:specs/PRODUCT-AREAS.md'
  - finding: FND-PFM-QRY-045
    source: 'rhythm-v2-docs:specs/platform/queries/MODULE.md'
  - finding: FND-PFM-QRY-046
    source: 'services-platform:modules/quick-search/services/providers/algolia/filters.ts; modules/quick-search/services/providers/algolia/documents.ts; react-console:lib/quick-search/search.ts'
  - finding: FND-PFM-QRY-047
    source: 'services-platform:modules/queries/services/describe/resolve-query-model.ts; modules/queries/services/persistence/query-description-stamps.ts'
  - finding: FND-PFM-QRY-048
    source: 'services-platform:modules/queries/tests/live/generate-query/smoke.js'
  - finding: FND-PFM-QRY-049
    source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-run-workflow.js:advanceSnapshotRun'
  - finding: FND-PFM-QRY-050
    source: 'react-console:lib/api/data-exports/client.ts; lib/api/data-exports/types.ts; lib/auth/api.ts; services-platform:modules/data-exports/aws/api/data-exports-api-mapper.ts; modules/data-exports/aws/api/data-exports.routes.ts; modules/data-exports/aws/api/data-exports.schemas.ts'
  - finding: FND-PFM-QRY-051
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-001-know-which-data-can-be-queried-and-what-each-dataset-holds.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-002-registered-dataset-declaration.md'
  - finding: FND-PFM-QRY-052
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-002-ask-a-question-of-the-workspace-s-data-and-see-only-what.md'
  - finding: FND-PFM-QRY-053
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-003-have-a-query-written-from-a-plain-english-request.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-003-query-generation.md'
  - finding: FND-PFM-QRY-054
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-004-let-rhythm-staff-query-every-customer-from-rhythm-hq.md'
  - finding: FND-PFM-QRY-055
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-005-give-one-customer-a-staff-authored-custom-query-table.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-001-custom-query-table-definition-and-versions.md'
  - finding: FND-PFM-QRY-056
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-006-keep-and-share-saved-queries-without-widening-anyone-s.md'
  - finding: FND-PFM-QRY-057
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-007-run-a-saved-query-with-the-values-it-asks-for-as-the-person.md'
  - finding: FND-PFM-QRY-058
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-008-start-a-query-from-a-recipe-rhythm-ships.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-004-query-recipe-declaration.md'
  - finding: FND-PFM-QRY-059
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-009-keep-and-share-the-explorer-views-a-person-works-from.md'
  - finding: FND-PFM-QRY-060
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-010-walk-a-list-record-by-record-and-act-on-every-record-it.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-005-explorer-navigation-session.md'
  - finding: FND-PFM-QRY-061
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-011-keep-share-and-find-reports-without-sharing-anyone-s-data.md'
  - finding: FND-PFM-QRY-062
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-012-assemble-a-dashboard-from-several-saved-queries.md'
  - finding: FND-PFM-QRY-063
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-013-print-a-report-or-dashboard-to-pdf-or-excel-as-the-person.md'
  - finding: FND-PFM-QRY-064
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-014-take-a-query-s-whole-result-away-as-a-csv-or-excel-file.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-006-query-export-file.md'
  - finding: FND-PFM-QRY-065
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-015-send-a-saved-query-or-report-to-chosen-people-on-a-schedule.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-007-query-schedule-enablement.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-008-schedule-run.md'
  - finding: FND-PFM-QRY-066
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-016-find-contacts-and-organizations-as-one-types.md'
  - finding: FND-PFM-QRY-067
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-017-choose-what-quick-search-finds-records-by-and-keep-the.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-013-search-index-of-a-record-type.md'
  - finding: FND-PFM-QRY-068
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-018-take-a-complete-portable-export-of-the-workspace-s-data.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-009-workspace-data-export-execution.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-010-workspace-export-package.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-011-workspace-export-delivery.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-012-export-coverage-declaration.md'
  - finding: FND-PFM-QRY-069
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-019-keep-monthly-snapshots-of-each-workspace-and-show-which.md; rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-014-monthly-snapshot-run.md'
  - finding: FND-PFM-QRY-070
    source: 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-020-evaluate-dated-conditions-for-named-records.md'
  - finding: FND-PFM-QRY-071
    source: 'services-platform:modules/queries/tests/live/generate-query/smoke.js; services-platform:modules/quick-search/tests/integration/db/quick-search-rebuild-jobs.table.integration.spec.js; services-platform:modules/snapshots/tests/integration/lifecycle/pipeline/snapshot-pipeline.integration.spec.js'
  - finding: FND-PFM-QRY-072
    source: 'rhythm-v2-docs:specs/platform/queries/implementation/tests'
  - finding: FND-PFM-QRY-073
    source: 'rhythm-v2-docs:tools/check-corpus.mjs:182'
  - finding: FND-PFM-QRY-074
    source: 'rhythm-v2-docs:tools/check-corpus.mjs:341'
affected:
  - finding: FND-PFM-QRY-001
    ids:
      - MOD-PFM-QRY
  - finding: FND-PFM-QRY-002
    ids:
      - BR-CAP-PFM-QRY-016-02
      - CAP-PFM-QRY-016
      - OQ-PFM-QRY-001
  - finding: FND-PFM-QRY-003
    ids:
      - CAP-PFM-QRY-016
  - finding: FND-PFM-QRY-004
    ids:
      - BR-CAP-PFM-QRY-018-08
      - BR-CAP-PFM-QRY-018-12
      - BR-CAP-PFM-QRY-018-13
      - CAP-PFM-QRY-018
      - JNY-PFM-QRY-006
  - finding: FND-PFM-QRY-005
    ids:
      - CAP-PFM-QRY-002
      - CAP-PFM-QRY-017
  - finding: FND-PFM-QRY-006
    ids:
      - CAP-PFM-QRY-011
      - CAP-PFM-QRY-012
      - JNY-PFM-QRY-001
  - finding: FND-PFM-QRY-007
    ids:
      - BR-CAP-PFM-QRY-006-03
      - BR-CAP-PFM-QRY-011-02
  - finding: FND-PFM-QRY-008
    ids:
      - BR-CAP-PFM-QRY-011-03
      - BR-CAP-PFM-QRY-012-08
  - finding: FND-PFM-QRY-009
    ids:
      - BR-CAP-PFM-QRY-014-01
      - BR-CAP-PFM-QRY-013-01
      - OQ-PFM-QRY-002
  - finding: FND-PFM-QRY-010
    ids:
      - CAP-PFM-QRY-013
      - CAP-PFM-QRY-015
      - BR-CAP-PFM-QRY-015-12
      - JNY-PFM-QRY-004
  - finding: FND-PFM-QRY-011
    ids:
      - CAP-PFM-QRY-017
      - CAP-PFM-QRY-019
  - finding: FND-PFM-QRY-012
    ids:
      - BR-CAP-PFM-QRY-002-15
  - finding: FND-PFM-QRY-013
    ids:
      - BR-CAP-PFM-QRY-014-09
  - finding: FND-PFM-QRY-014
    ids:
      - BR-CAP-PFM-QRY-009-11
  - finding: FND-PFM-QRY-015
    ids:
      - CAP-PFM-QRY-015
  - finding: FND-PFM-QRY-016
    ids:
      - JNY-PFM-QRY-001
      - JNY-PFM-QRY-002
      - JNY-PFM-QRY-004
      - MOD-PFM-QRY
  - finding: FND-PFM-QRY-017
    ids:
      - BR-CAP-PFM-QRY-002-15
      - BR-CAP-PFM-QRY-005-08
      - BR-CAP-PFM-QRY-005-11
      - BR-CAP-PFM-QRY-010-01
      - BR-CAP-PFM-QRY-010-08
      - BR-CAP-PFM-QRY-012-08
      - BR-CAP-PFM-QRY-018-12
      - BR-CAP-PFM-QRY-018-13
      - BR-CAP-PFM-QRY-019-09
  - finding: FND-PFM-QRY-018
    ids:
      - CAP-PFM-QRY-003
  - finding: FND-PFM-QRY-019
    ids:
      - MOD-PFM-QRY
      - CAP-PFM-QRY-011
  - finding: FND-PFM-QRY-020
    ids:
      - BR-CAP-PFM-QRY-011-14
  - finding: FND-PFM-QRY-021
    ids:
      - BR-CAP-PFM-QRY-018-10
  - finding: FND-PFM-QRY-022
    ids:
      - CAP-PFM-QRY-016
      - CAP-PFM-QRY-017
  - finding: FND-PFM-QRY-023
    ids:
      - MOD-PFM-QRY
  - finding: FND-PFM-QRY-024
    ids:
      - CAP-PFM-QRY-005
      - BR-CAP-PFM-QRY-005-09
      - BR-CAP-PFM-QRY-005-13
  - finding: FND-PFM-QRY-025
    ids:
      - CAP-PFM-QRY-010
      - JNY-PFM-QRY-003
  - finding: FND-PFM-QRY-026
    ids:
      - CAP-PFM-QRY-011
      - CAP-PFM-QRY-012
  - finding: FND-PFM-QRY-027
    ids:
      - CAP-PFM-QRY-002
      - CAP-PFM-QRY-005
      - CAP-PFM-QRY-020
      - CAP-PFM-QRY-003
      - CAP-PFM-QRY-016
  - finding: FND-PFM-QRY-028
    ids:
      - ATS-PFM-QRY-013
      - MOD-PFM-QRY
  - finding: FND-PFM-QRY-029
    ids:
      - ATS-PFM-QRY-017
      - AS-JNY-PFM-QRY-005-01
  - finding: FND-PFM-QRY-030
    ids:
      - MOD-PFM-QRY
      - SVC-PFM-QRY-queries
      - STATE-PFM-QRY-001
      - CAP-PFM-QRY-005
  - finding: FND-PFM-QRY-031
    ids:
      - MOD-PFM-QRY
      - SCR-PFM-QRY-017
      - SCR-PFM-QRY-018
  - finding: FND-PFM-QRY-032
    ids:
      - CAP-PFM-QRY-018
      - BR-CAP-PFM-QRY-018-06
      - BR-CAP-PFM-QRY-018-08
      - WF-PFM-QRY-019
      - STATE-PFM-QRY-009
      - ADR-PFM-QRY-013
      - OQ-PFM-QRY-003
  - finding: FND-PFM-QRY-033
    ids:
      - SVC-PFM-QRY-data-exports
      - STATE-PFM-QRY-011
      - BR-CAP-PFM-QRY-018-05
  - finding: FND-PFM-QRY-034
    ids:
      - SVC-PFM-QRY-data-exports
      - DOM-PFM-QRY-004
      - CAP-PFM-QRY-018
  - finding: FND-PFM-QRY-035
    ids:
      - CON-PFM-QRY-004
      - DOM-PFM-QRY-004
      - ADR-PFM-QRY-001
      - OQ-PFM-QRY-004
  - finding: FND-PFM-QRY-036
    ids:
      - CON-PFM-QRY-002
      - DOM-PFM-QRY-002
      - SVC-PFM-QRY-explorer
      - ADR-PFM-QRY-001
  - finding: FND-PFM-QRY-037
    ids:
      - CON-PFM-QRY-002
      - CON-PFM-QRY-003
      - DOM-PFM-QRY-002
      - DOM-PFM-QRY-003
      - ADR-PFM-QRY-009
  - finding: FND-PFM-QRY-038
    ids:
      - WF-PFM-QRY-008
      - WF-PFM-QRY-007
      - STATE-PFM-QRY-008
  - finding: FND-PFM-QRY-039
    ids:
      - BR-CAP-PFM-QRY-016-06
      - WF-PFM-QRY-014
      - WF-PFM-QRY-021
  - finding: FND-PFM-QRY-040
    ids:
      - WF-PFM-QRY-021
      - DOM-PFM-QRY-004
      - BR-CAP-PFM-QRY-014-08
  - finding: FND-PFM-QRY-041
    ids:
      - SVC-PFM-QRY-explorer
      - CAP-PFM-QRY-009
      - CAP-PFM-QRY-010
  - finding: FND-PFM-QRY-042
    ids:
      - CAP-PFM-QRY-005
      - BR-CAP-PFM-QRY-005-05
      - WF-PFM-QRY-009
      - WF-PFM-QRY-010
      - ADR-PFM-QRY-014
  - finding: FND-PFM-QRY-043
    ids:
      - SVC-PFM-QRY-snapshots
  - finding: FND-PFM-QRY-044
    ids:
      - MOD-PFM-QRY
  - finding: FND-PFM-QRY-045
    ids:
      - MOD-PFM-QRY
  - finding: FND-PFM-QRY-046
    ids:
      - BR-CAP-PFM-QRY-017-05
      - WF-PFM-QRY-016
  - finding: FND-PFM-QRY-047
    ids:
      - WF-PFM-QRY-003
  - finding: FND-PFM-QRY-048
    ids:
      - IOP-PFM-QRY-001
  - finding: FND-PFM-QRY-049
    ids:
      - BR-CAP-PFM-QRY-019-06
      - DOM-PFM-QRY-006
      - WF-PFM-QRY-018
  - finding: FND-PFM-QRY-050
    ids:
      - SCR-PFM-QRY-012
      - SCR-PFM-QRY-013
      - SCR-PFM-QRY-014
      - SVC-PFM-QRY-data-exports
  - finding: FND-PFM-QRY-051
    ids:
      - CAP-PFM-QRY-001
      - ATS-PFM-QRY-001
  - finding: FND-PFM-QRY-052
    ids:
      - CAP-PFM-QRY-002
      - ATS-PFM-QRY-002
  - finding: FND-PFM-QRY-053
    ids:
      - CAP-PFM-QRY-003
      - ATS-PFM-QRY-003
  - finding: FND-PFM-QRY-054
    ids:
      - CAP-PFM-QRY-004
      - ATS-PFM-QRY-004
  - finding: FND-PFM-QRY-055
    ids:
      - CAP-PFM-QRY-005
      - ATS-PFM-QRY-005
  - finding: FND-PFM-QRY-056
    ids:
      - CAP-PFM-QRY-006
      - ATS-PFM-QRY-006
  - finding: FND-PFM-QRY-057
    ids:
      - CAP-PFM-QRY-007
      - ATS-PFM-QRY-007
  - finding: FND-PFM-QRY-058
    ids:
      - CAP-PFM-QRY-008
      - ATS-PFM-QRY-008
  - finding: FND-PFM-QRY-059
    ids:
      - CAP-PFM-QRY-009
      - ATS-PFM-QRY-009
  - finding: FND-PFM-QRY-060
    ids:
      - CAP-PFM-QRY-010
      - ATS-PFM-QRY-010
  - finding: FND-PFM-QRY-061
    ids:
      - CAP-PFM-QRY-011
      - ATS-PFM-QRY-011
  - finding: FND-PFM-QRY-062
    ids:
      - CAP-PFM-QRY-012
      - ATS-PFM-QRY-012
  - finding: FND-PFM-QRY-063
    ids:
      - CAP-PFM-QRY-013
      - ATS-PFM-QRY-013
  - finding: FND-PFM-QRY-064
    ids:
      - CAP-PFM-QRY-014
      - ATS-PFM-QRY-014
  - finding: FND-PFM-QRY-065
    ids:
      - CAP-PFM-QRY-015
      - ATS-PFM-QRY-015
  - finding: FND-PFM-QRY-066
    ids:
      - CAP-PFM-QRY-016
      - ATS-PFM-QRY-016
  - finding: FND-PFM-QRY-067
    ids:
      - CAP-PFM-QRY-017
      - ATS-PFM-QRY-017
  - finding: FND-PFM-QRY-068
    ids:
      - CAP-PFM-QRY-018
      - ATS-PFM-QRY-018
  - finding: FND-PFM-QRY-069
    ids:
      - CAP-PFM-QRY-019
      - ATS-PFM-QRY-019
  - finding: FND-PFM-QRY-070
    ids:
      - CAP-PFM-QRY-020
      - ATS-PFM-QRY-020
  - finding: FND-PFM-QRY-071
    ids: &ref_20
      - ATS-PFM-QRY-003-05
      - ATS-PFM-QRY-017-05
      - ATS-PFM-QRY-019-06
  - finding: FND-PFM-QRY-072
    ids:
      - TST-PFM-QRY-001
      - TST-PFM-QRY-002
      - TST-PFM-QRY-004
      - TST-PFM-QRY-005
      - TST-PFM-QRY-006
      - TST-PFM-QRY-007
      - TST-PFM-QRY-008
      - TST-PFM-QRY-009
      - TST-PFM-QRY-010
      - TST-PFM-QRY-011
      - TST-PFM-QRY-012
      - TST-PFM-QRY-013
      - TST-PFM-QRY-014
      - TST-PFM-QRY-015
      - TST-PFM-QRY-016
      - TST-PFM-QRY-017
      - TST-PFM-QRY-018
      - TST-PFM-QRY-019
      - TST-PFM-QRY-020
      - TST-PFM-QRY-021
      - TST-PFM-QRY-022
      - TST-PFM-QRY-024
      - TST-PFM-QRY-025
      - TST-PFM-QRY-026
      - TST-PFM-QRY-028
      - TST-PFM-QRY-029
      - TST-PFM-QRY-030
      - TST-PFM-QRY-031
      - TST-PFM-QRY-032
      - TST-PFM-QRY-033
      - TST-PFM-QRY-034
      - TST-PFM-QRY-035
      - TST-PFM-QRY-036
      - TST-PFM-QRY-037
      - TST-PFM-QRY-038
      - TST-PFM-QRY-039
      - TST-PFM-QRY-040
      - TST-PFM-QRY-041
      - TST-PFM-QRY-042
      - TST-PFM-QRY-043
      - TST-PFM-QRY-044
      - TST-PFM-QRY-045
      - TST-PFM-QRY-046
      - TST-PFM-QRY-048
      - TST-PFM-QRY-049
      - TST-PFM-QRY-051
      - TST-PFM-QRY-052
      - TST-PFM-QRY-056
      - TST-PFM-QRY-058
      - TST-PFM-QRY-059
      - TST-PFM-QRY-060
      - TST-PFM-QRY-061
      - TST-PFM-QRY-062
      - TST-PFM-QRY-063
      - TST-PFM-QRY-064
      - TST-PFM-QRY-065
      - TST-PFM-QRY-066
      - TST-PFM-QRY-067
      - TST-PFM-QRY-070
      - TST-PFM-QRY-071
      - TST-PFM-QRY-072
      - TST-PFM-QRY-073
      - TST-PFM-QRY-075
      - TST-PFM-QRY-076
      - TST-PFM-QRY-077
      - TST-PFM-QRY-078
      - TST-PFM-QRY-079
      - TST-PFM-QRY-080
      - TST-PFM-QRY-081
      - TST-PFM-QRY-082
      - TST-PFM-QRY-083
      - TST-PFM-QRY-084
      - TST-PFM-QRY-085
      - TST-PFM-QRY-086
      - TST-PFM-QRY-087
      - TST-PFM-QRY-088
      - TST-PFM-QRY-089
      - TST-PFM-QRY-090
      - TST-PFM-QRY-091
      - TST-PFM-QRY-092
      - TST-PFM-QRY-093
      - TST-PFM-QRY-094
      - TST-PFM-QRY-098
      - TST-PFM-QRY-099
      - TST-PFM-QRY-100
      - TST-PFM-QRY-101
      - TST-PFM-QRY-102
      - TST-PFM-QRY-103
      - TST-PFM-QRY-104
      - TST-PFM-QRY-105
      - TST-PFM-QRY-106
      - TST-PFM-QRY-107
      - TST-PFM-QRY-114
      - TST-PFM-QRY-115
      - TST-PFM-QRY-116
      - TST-PFM-QRY-117
      - TST-PFM-QRY-119
      - TST-PFM-QRY-120
      - TST-PFM-QRY-121
      - TST-PFM-QRY-122
      - TST-PFM-QRY-123
      - TST-PFM-QRY-124
      - TST-PFM-QRY-125
      - TST-PFM-QRY-126
      - TST-PFM-QRY-128
      - TST-PFM-QRY-129
      - TST-PFM-QRY-130
      - TST-PFM-QRY-131
      - TST-PFM-QRY-132
      - TST-PFM-QRY-133
      - TST-PFM-QRY-134
      - TST-PFM-QRY-135
      - TST-PFM-QRY-136
      - TST-PFM-QRY-137
      - TST-PFM-QRY-138
      - TST-PFM-QRY-141
      - TST-PFM-QRY-144
      - TST-PFM-QRY-145
      - TST-PFM-QRY-146
      - TST-PFM-QRY-148
      - TST-PFM-QRY-152
      - TST-PFM-QRY-153
      - TST-PFM-QRY-154
      - TST-PFM-QRY-155
      - TST-PFM-QRY-156
      - TST-PFM-QRY-157
      - TST-PFM-QRY-158
      - TST-PFM-QRY-159
      - TST-PFM-QRY-160
      - TST-PFM-QRY-161
      - TST-PFM-QRY-162
      - TST-PFM-QRY-163
      - TST-PFM-QRY-164
      - TST-PFM-QRY-165
      - TST-PFM-QRY-166
      - TST-PFM-QRY-167
      - TST-PFM-QRY-168
      - TST-PFM-QRY-169
      - TST-PFM-QRY-170
      - TST-PFM-QRY-171
      - TST-PFM-QRY-172
      - TST-PFM-QRY-173
      - TST-PFM-QRY-174
      - TST-PFM-QRY-175
      - TST-PFM-QRY-176
      - TST-PFM-QRY-177
      - TST-PFM-QRY-178
      - TST-PFM-QRY-179
      - TST-PFM-QRY-180
      - TST-PFM-QRY-181
      - TST-PFM-QRY-182
      - TST-PFM-QRY-183
      - TST-PFM-QRY-184
      - TST-PFM-QRY-185
      - TST-PFM-QRY-188
      - TST-PFM-QRY-189
      - TST-PFM-QRY-190
      - TST-PFM-QRY-191
      - TST-PFM-QRY-192
      - TST-PFM-QRY-195
      - TST-PFM-QRY-196
      - TST-PFM-QRY-198
      - TST-PFM-QRY-199
      - TST-PFM-QRY-202
      - TST-PFM-QRY-203
      - TST-PFM-QRY-204
      - TST-PFM-QRY-205
      - TST-PFM-QRY-206
      - TST-PFM-QRY-207
      - TST-PFM-QRY-212
      - TST-PFM-QRY-215
      - TST-PFM-QRY-216
      - TST-PFM-QRY-217
      - TST-PFM-QRY-219
      - TST-PFM-QRY-221
      - TST-PFM-QRY-236
      - TST-PFM-QRY-237
      - TST-PFM-QRY-238
      - TST-PFM-QRY-239
      - TST-PFM-QRY-240
      - TST-PFM-QRY-241
      - TST-PFM-QRY-242
      - TST-PFM-QRY-243
      - TST-PFM-QRY-244
      - TST-PFM-QRY-245
      - TST-PFM-QRY-246
      - TST-PFM-QRY-247
      - TST-PFM-QRY-248
      - TST-PFM-QRY-249
      - TST-PFM-QRY-251
      - TST-PFM-QRY-252
      - TST-PFM-QRY-253
      - TST-PFM-QRY-255
      - TST-PFM-QRY-256
      - TST-PFM-QRY-257
      - TST-PFM-QRY-258
      - TST-PFM-QRY-259
      - TST-PFM-QRY-260
      - TST-PFM-QRY-261
      - TST-PFM-QRY-264
      - TST-PFM-QRY-265
      - TST-PFM-QRY-267
      - TST-PFM-QRY-268
      - TST-PFM-QRY-269
      - TST-PFM-QRY-271
      - TST-PFM-QRY-272
      - TST-PFM-QRY-273
      - TST-PFM-QRY-274
      - TST-PFM-QRY-275
      - TST-PFM-QRY-277
      - TST-PFM-QRY-278
      - TST-PFM-QRY-279
      - TST-PFM-QRY-280
      - TST-PFM-QRY-281
      - TST-PFM-QRY-282
      - TST-PFM-QRY-283
      - TST-PFM-QRY-284
      - TST-PFM-QRY-285
      - TST-PFM-QRY-288
      - TST-PFM-QRY-291
      - TST-PFM-QRY-292
      - TST-PFM-QRY-294
      - TST-PFM-QRY-295
      - TST-PFM-QRY-297
      - TST-PFM-QRY-298
      - TST-PFM-QRY-299
      - TST-PFM-QRY-300
      - TST-PFM-QRY-303
      - TST-PFM-QRY-304
      - TST-PFM-QRY-305
      - TST-PFM-QRY-306
      - TST-PFM-QRY-308
      - TST-PFM-QRY-309
      - TST-PFM-QRY-310
      - TST-PFM-QRY-311
      - TST-PFM-QRY-312
      - TST-PFM-QRY-313
      - TST-PFM-QRY-314
      - TST-PFM-QRY-315
      - TST-PFM-QRY-316
      - TST-PFM-QRY-317
      - TST-PFM-QRY-318
      - TST-PFM-QRY-319
      - TST-PFM-QRY-320
      - TST-PFM-QRY-321
      - TST-PFM-QRY-323
      - TST-PFM-QRY-324
      - TST-PFM-QRY-325
      - TST-PFM-QRY-327
      - TST-PFM-QRY-328
      - TST-PFM-QRY-329
      - TST-PFM-QRY-330
      - TST-PFM-QRY-331
      - TST-PFM-QRY-336
      - TST-PFM-QRY-337
      - TST-PFM-QRY-338
      - TST-PFM-QRY-339
      - TST-PFM-QRY-340
      - TST-PFM-QRY-342
      - TST-PFM-QRY-344
      - TST-PFM-QRY-346
      - TST-PFM-QRY-348
      - TST-PFM-QRY-351
      - TST-PFM-QRY-352
      - TST-PFM-QRY-353
      - TST-PFM-QRY-354
      - TST-PFM-QRY-355
      - TST-PFM-QRY-356
      - TST-PFM-QRY-357
      - TST-PFM-QRY-358
      - TST-PFM-QRY-360
      - TST-PFM-QRY-361
      - TST-PFM-QRY-362
      - TST-PFM-QRY-363
      - TST-PFM-QRY-364
      - TST-PFM-QRY-365
      - TST-PFM-QRY-366
      - TST-PFM-QRY-367
      - TST-PFM-QRY-368
      - TST-PFM-QRY-369
      - TST-PFM-QRY-370
      - TST-PFM-QRY-373
      - TST-PFM-QRY-374
      - TST-PFM-QRY-375
      - TST-PFM-QRY-376
      - TST-PFM-QRY-377
      - TST-PFM-QRY-378
      - TST-PFM-QRY-379
      - TST-PFM-QRY-380
      - TST-PFM-QRY-381
      - TST-PFM-QRY-382
      - TST-PFM-QRY-383
      - TST-PFM-QRY-384
      - TST-PFM-QRY-385
      - TST-PFM-QRY-386
      - TST-PFM-QRY-387
      - TST-PFM-QRY-388
      - TST-PFM-QRY-389
      - TST-PFM-QRY-390
      - TST-PFM-QRY-391
      - TST-PFM-QRY-392
      - TST-PFM-QRY-393
      - TST-PFM-QRY-396
      - TST-PFM-QRY-397
      - TST-PFM-QRY-398
      - TST-PFM-QRY-399
      - TST-PFM-QRY-400
      - TST-PFM-QRY-401
      - TST-PFM-QRY-402
      - TST-PFM-QRY-403
      - TST-PFM-QRY-404
      - TST-PFM-QRY-405
      - TST-PFM-QRY-406
      - TST-PFM-QRY-407
      - TST-PFM-QRY-408
      - TST-PFM-QRY-410
      - TST-PFM-QRY-412
      - TST-PFM-QRY-414
      - TST-PFM-QRY-415
      - TST-PFM-QRY-416
      - TST-PFM-QRY-420
      - TST-PFM-QRY-421
      - TST-PFM-QRY-422
      - TST-PFM-QRY-424
      - TST-PFM-QRY-425
      - TST-PFM-QRY-426
      - TST-PFM-QRY-427
      - TST-PFM-QRY-428
      - TST-PFM-QRY-429
      - TST-PFM-QRY-430
      - TST-PFM-QRY-431
      - TST-PFM-QRY-434
      - TST-PFM-QRY-436
      - TST-PFM-QRY-437
      - TST-PFM-QRY-440
      - TST-PFM-QRY-441
      - TST-PFM-QRY-442
      - TST-PFM-QRY-443
      - TST-PFM-QRY-444
      - TST-PFM-QRY-446
      - TST-PFM-QRY-448
      - TST-PFM-QRY-449
      - TST-PFM-QRY-450
      - TST-PFM-QRY-451
      - TST-PFM-QRY-452
      - TST-PFM-QRY-453
      - TST-PFM-QRY-455
      - TST-PFM-QRY-456
      - TST-PFM-QRY-457
      - TST-PFM-QRY-458
      - TST-PFM-QRY-459
      - TST-PFM-QRY-460
      - TST-PFM-QRY-461
      - TST-PFM-QRY-462
      - TST-PFM-QRY-463
      - TST-PFM-QRY-464
      - TST-PFM-QRY-465
      - TST-PFM-QRY-466
      - TST-PFM-QRY-469
      - TST-PFM-QRY-470
      - TST-PFM-QRY-474
      - TST-PFM-QRY-475
  - finding: FND-PFM-QRY-073
    ids: &ref_21
      - MOD-PFM-QRY
  - finding: FND-PFM-QRY-074
    ids: &ref_22
      - FAS-PFM-QRY-04-02
      - FAS-PFM-QRY-05-04
      - FAS-PFM-QRY-08-03
      - TST-PFM-QRY-047
      - TST-PFM-QRY-140
      - TST-PFM-QRY-472
evidence:
  - 'Pinned reference: react-console:acceptance/reporting/inventory/capabilities.json'
  - 'Pinned reference: react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0425.spec.ts'
  - 'Pinned reference: react-console:app/(console)/console/[tenantId]/search/page.tsx'
  - 'Pinned reference: rhythm-v2-docs:specs/PRODUCT-AREAS.md'
  - 'Pinned reference: rhythm-v2-docs:specs/platform/queries/design/tests'
  - 'Pinned reference: services-platform:aws/api/platform.routes.ts'
  - 'Pinned reference: services-platform:aws/platform.service.ts'
  - 'Pinned reference: services-platform:docs/data-exports.md'
  - 'Pinned reference: services-platform:docs/debt/query-export-link-page-status.md'
  - 'Pinned reference: services-platform:docs/explorer.md'
  - 'Pinned reference: services-platform:docs/milestones/RPT-M1-catalog-sharing-subledger.md'
  - 'Pinned reference: services-platform:docs/milestones/plans/RPT-M1-plan.md'
  - 'Pinned reference: services-platform:docs/queries/custom-query-tables/rhythm-custom-query-tables-architecture.md'
  - 'Pinned reference: services-platform:docs/queries/reports.md'
  - 'Pinned reference: services-platform:docs/queries/semantic-query-layer.md'
  - 'Pinned reference: services-platform:docs/quick-search.md'
  - 'Pinned reference: services-platform:modules/explorer/services/navigation/navigation-sessions.ts'
  - 'Pinned reference: services-platform:modules/queries/aws/api/saved-queries.routes.ts'
  - 'Pinned reference: services-platform:modules/queries/services/execute/compile-predicates.ts'
  - 'Pinned reference: services-platform:modules/queries/services/reports/report-library.ts'
  - 'Pinned reference: services-platform:modules/queries/tests/e2e/read-tier.e2e.spec.js'
  - 'Pinned reference: services-platform:modules/queries/tests/e2e/report-exports.e2e.spec.js'
  - 'Pinned reference: services-platform:modules/quick-search/registry/record-types.ts'
  - 'Pinned reference: services-platform:modules/quick-search/tests/e2e/quick-search-configurations.e2e.spec.js'
testing_coverage_gaps:
  - id: FND-PFM-QRY-051
    category_gaps:
      - category: edge
        reason: 'Empty, absent or changed source data needs a focused example.'
        required_example: Retire a declaration and restore it while a cached description and a retained recipe still refer to the subject.
      - category: failure
        reason: Dependency failure and rollback need a focused proof beyond authorization refusal.
        required_example: Interrupt persistence after registration validation and verify that the preceding accepted declaration remains readable.
      - category: boundary
        reason: Exact accepted and first-refused numeric or time values need a focused proof.
        required_example: 'Compare registration at the workspace/system scope boundary, including record-opening fields that are direct versus selected collection values.'
      - category: concurrency
        reason: Overlapping calls need a controlled race rather than only a stale-version replay.
        required_example: 'Pause description resolution between its stamp read and metadata read, commit a registration change and inspect the cached result and next request.'
      - category: transition
        reason: 'Individual design transitions need explicit starting-state, guard and side-effect assertions.'
      - category: invariant
        reason: The corresponding domain invariants need explicit assertions beyond neighboring rule examples.
    transition_gaps:
      - state: STATE-PFM-QRY-002
        transition: 1
        from: active
        to: retired
        trigger: Application registration omits an existing dataset.
        source: 'services-platform:modules/queries/services/registration/register-query-application.ts:registerQueryApplication'
        gap: FND-PFM-QRY-051
      - state: STATE-PFM-QRY-002
        transition: 2
        from: retired
        to: active
        trigger: A valid application manifest includes the retired dataset again.
        source: 'services-platform:modules/queries/db/registered-query-objects.table.ts (retired_at)'
        gap: FND-PFM-QRY-051
    invariant_gaps:
      - id: INV-DOM-PFM-QRY-001-04
        source: 'services-platform:modules/queries/services/persistence/registered-query-objects.ts:retireRegisteredQueryObjectsExcept'
      - id: INV-DOM-PFM-QRY-001-06
        source: 'services-platform:docs/standards/custom-field-capability.md#3.3 What Platform enforces'
      - id: INV-DOM-PFM-QRY-001-08
        source: 'services-platform:db/migrations/0065_custom_query_tables.sql:custom_query_table_versions_immutable'
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-001-12
      - ATS-PFM-QRY-001-13
      - ATS-PFM-QRY-001-14
    source: &ref_0
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-001-know-which-data-can-be-queried-and-what-each-dataset-holds.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-002-registered-dataset-declaration.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.queries.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-001-know-which-data-can-be-queried-and-what-each-dataset-holds.md'
        gap: FND-PFM-QRY-051
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: '<application>.<dataset>.query (the owner''s key, e.g. crm.contacts.query)'
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-001-know-which-data-can-be-queried-and-what-each-dataset-holds.md'
        gap: FND-PFM-QRY-051
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: <application>.<records>.read where the owner declares it (e.g. crm.organizations.read)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-001-know-which-data-can-be-queried-and-what-each-dataset-holds.md'
        gap: FND-PFM-QRY-051
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: 'platform.custom-records.query (scoped to custom_object:<object key>)'
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-001-know-which-data-can-be-queried-and-what-each-dataset-holds.md'
        gap: FND-PFM-QRY-051
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: edge
        example: Retire a declaration and restore it while a cached description and a retained recipe still refer to the subject.
        provenance: proposed
        source: *ref_0
      - category: failure
        example: Interrupt persistence after registration validation and verify that the preceding accepted declaration remains readable.
        provenance: proposed
        source: *ref_0
      - category: boundary
        example: 'Compare registration at the workspace/system scope boundary, including record-opening fields that are direct versus selected collection values.'
        provenance: proposed
        source: *ref_0
      - category: concurrency
        example: 'Pause description resolution between its stamp read and metadata read, commit a registration change and inspect the cached result and next request.'
        provenance: proposed
        source: *ref_0
  - id: FND-PFM-QRY-052
    category_gaps:
      - category: concurrency
        reason: Overlapping calls need a controlled race rather than only a stale-version replay.
        required_example: 'Commit a matching record change between page and total reads, then establish whether both answers use the same snapshot rather than relying on one transaction alone.'
    transition_gaps: []
    invariant_gaps: []
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-002-15
      - ATS-PFM-QRY-002-17
      - ATS-PFM-QRY-002-18
      - ATS-PFM-QRY-002-19
    source: &ref_1
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-002-ask-a-question-of-the-workspace-s-data-and-see-only-what.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.queries.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-002-ask-a-question-of-the-workspace-s-data-and-see-only-what.md'
        gap: FND-PFM-QRY-052
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: <application>.<dataset>.query (the owner's key)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-002-ask-a-question-of-the-workspace-s-data-and-see-only-what.md'
        gap: FND-PFM-QRY-052
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: concurrency
        example: 'Commit a matching record change between page and total reads, then establish whether both answers use the same snapshot rather than relying on one transaction alone.'
        provenance: proposed
        source: *ref_1
  - id: FND-PFM-QRY-053
    category_gaps:
      - category: validation
        reason: A focused invalid-input proof is absent from the category map.
      - category: edge
        reason: 'Empty, absent or changed source data needs a focused example.'
        required_example: 'Complete a clarification-only predecessor, refine it and verify that the new generation preserves the predecessor relationship without inventing a query.'
      - category: transition
        reason: 'Individual design transitions need explicit starting-state, guard and side-effect assertions.'
    transition_gaps:
      - state: STATE-PFM-QRY-003
        transition: 1
        from: working
        to: succeeded
        trigger: The worker returns an accepted final outcome.
        source: 'services-platform:modules/queries/services/generate/run-generation.ts'
        gap: FND-PFM-QRY-053
      - state: STATE-PFM-QRY-003
        transition: 2
        from: working
        to: failed
        trigger: The worker encounters a terminal generation failure.
        source: 'services-platform:modules/queries/services/generate/generation-problem-codes.ts'
        gap: FND-PFM-QRY-053
      - state: STATE-PFM-QRY-003
        transition: 3
        from: working
        to: failed
        trigger: The asynchronous worker invocation fails during admission.
        source: 'services-platform:modules/queries/services/generate/start-generation.ts'
        gap: FND-PFM-QRY-053
      - state: STATE-PFM-QRY-003
        transition: 4
        from: working
        to: failed
        trigger: Reconciliation finds the worker deadline and margin exceeded.
        source: 'services-platform:modules/queries/services/generate/reconcile-generations.ts'
        gap: FND-PFM-QRY-053
      - state: STATE-PFM-QRY-003
        transition: 5
        from: succeeded
        to: removed
        trigger: Retention cleanup finds a success older than thirty days.
        source: 'services-platform:modules/queries/services/generate/reconcile-generations.ts'
        gap: FND-PFM-QRY-053
      - state: STATE-PFM-QRY-003
        transition: 6
        from: failed
        to: removed
        trigger: Retention cleanup finds a failed generation older than thirty days.
        source: 'services-platform:modules/queries/services/generate/reconcile-generations.ts'
        gap: FND-PFM-QRY-053
    invariant_gaps: []
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-003-12
    source: &ref_2
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-003-have-a-query-written-from-a-plain-english-request.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-003-query-generation.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.queries.generate
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-003-have-a-query-written-from-a-plain-english-request.md'
        gap: FND-PFM-QRY-053
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: <application>.<dataset>.query (the owner's key)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-003-have-a-query-written-from-a-plain-english-request.md'
        gap: FND-PFM-QRY-053
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: rule
        example: Exercise a clarification-only outcome and inspect its retained generation without supplying a runnable query.
        provenance: proposed
        source: *ref_2
      - category: edge
        example: 'Complete a clarification-only predecessor, refine it and verify that the new generation preserves the predecessor relationship without inventing a query.'
        provenance: proposed
        source: *ref_2
  - id: FND-PFM-QRY-054
    category_gaps:
      - category: failure
        reason: Dependency failure and rollback need a focused proof beyond authorization refusal.
        required_example: Interrupt HQ execution after access succeeds and check safe failure output and read-only rollback.
      - category: boundary
        reason: Exact accepted and first-refused numeric or time values need a focused proof.
        required_example: Compare an authorized system subject with a workspace subject of a similar name and try a reference crossing the execution scopes.
      - category: concurrency
        reason: Overlapping calls need a controlled race rather than only a stale-version replay.
        required_example: 'Register changed system vocabulary while an HQ description and run are being resolved, and inspect whether each accepted request uses a coherent model.'
    transition_gaps: []
    invariant_gaps: []
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-004-08
      - ATS-PFM-QRY-004-09
    source: &ref_3
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-004-let-rhythm-staff-query-every-customer-from-rhythm-hq.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: hq.queries.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-004-let-rhythm-staff-query-every-customer-from-rhythm-hq.md'
        gap: FND-PFM-QRY-054
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: 'each system dataset''s own key (hq.customers.read, hq.tenants.read, hq.jobs.read, hq.staff.read, hq.llm-usage.read)'
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-004-let-rhythm-staff-query-every-customer-from-rhythm-hq.md'
        gap: FND-PFM-QRY-054
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: boundary
        example: Compare an authorized system subject with a workspace subject of a similar name and try a reference crossing the execution scopes.
        provenance: proposed
        source: *ref_3
      - category: concurrency
        example: 'Register changed system vocabulary while an HQ description and run are being resolved, and inspect whether each accepted request uses a coherent model.'
        provenance: proposed
        source: *ref_3
      - category: failure
        example: Interrupt HQ execution after access succeeds and check safe failure output and read-only rollback.
        provenance: proposed
        source: *ref_3
  - id: FND-PFM-QRY-055
    category_gaps:
      - category: rule
        reason: A focused ordinary-success proof is absent from the category map.
        required_example: 'Follow an acknowledged publication through assignment, description and a saved question using the chosen version.'
      - category: edge
        reason: 'Empty, absent or changed source data needs a focused example.'
        required_example: 'Inspect an unassigned, excluded, deprecated and disabled publication through discovery and a retained question.'
      - category: transition
        reason: 'Individual design transitions need explicit starting-state, guard and side-effect assertions.'
      - category: invariant
        reason: The corresponding domain invariants need explicit assertions beyond neighboring rule examples.
    transition_gaps:
      - state: STATE-PFM-QRY-001
        transition: 1
        from: active
        to: deprecated
        trigger: Staff deprecate the definition using its read version.
        source: 'services-platform:modules/queries/services/custom-tables/custom-table-library.ts:deprecate'
        gap: FND-PFM-QRY-055
      - state: STATE-PFM-QRY-001
        transition: 2
        from: active
        to: disabled
        trigger: Staff disable the definition.
        source: 'services-platform:modules/queries/services/custom-tables/custom-table-library.ts:disable'
        gap: FND-PFM-QRY-055
      - state: STATE-PFM-QRY-001
        transition: 3
        from: deprecated
        to: disabled
        trigger: Staff disable a deprecated definition.
        source: 'services-platform:modules/queries/services/persistence/custom-query-tables.ts:setCustomQueryTableStatus'
        gap: FND-PFM-QRY-055
      - state: STATE-PFM-QRY-001
        transition: 4
        from: deprecated
        to: active
        trigger: Staff restore a deprecated definition.
        source: 'services-platform:modules/queries/services/custom-tables/custom-table-library.ts:restore'
        gap: FND-PFM-QRY-055
      - state: STATE-PFM-QRY-001
        transition: 5
        from: disabled
        to: active
        trigger: Staff restore a disabled definition.
        source: 'services-platform:modules/queries/services/custom-tables/custom-table-library.ts:restore'
        gap: FND-PFM-QRY-055
      - state: STATE-PFM-QRY-001
        transition: 6
        from: draft version
        to: published version
        trigger: Staff publish the analyzed draft.
        source: 'services-platform:modules/queries/services/persistence/custom-query-tables.ts:publishCustomTableDraft'
        gap: FND-PFM-QRY-055
      - state: STATE-PFM-QRY-001
        transition: 7
        from: published version
        to: superseded version
        trigger: Another draft is published.
        source: 'services-platform:db/migrations/0065_custom_query_tables.sql:custom_query_table_versions_immutable'
        gap: FND-PFM-QRY-055
      - state: STATE-PFM-QRY-001
        transition: 8
        from: active
        to: active
        trigger: Staff set the requested definition availability.
        source: 'services-platform:modules/queries/services/custom-tables/custom-table-library.ts:restore'
        gap: FND-PFM-QRY-055
      - state: STATE-PFM-QRY-001
        transition: 9
        from: deprecated
        to: deprecated
        trigger: Staff set the requested definition availability.
        source: 'services-platform:modules/queries/services/custom-tables/custom-table-library.ts:deprecate'
        gap: FND-PFM-QRY-055
      - state: STATE-PFM-QRY-001
        transition: 10
        from: disabled
        to: deprecated
        trigger: Staff set the requested definition availability.
        source: 'services-platform:modules/queries/services/custom-tables/custom-table-library.ts:deprecate'
        gap: FND-PFM-QRY-055
      - state: STATE-PFM-QRY-001
        transition: 11
        from: disabled
        to: disabled
        trigger: Staff set the requested definition availability.
        source: 'services-platform:modules/queries/services/custom-tables/custom-table-library.ts:disable'
        gap: FND-PFM-QRY-055
    invariant_gaps:
      - id: INV-DOM-PFM-QRY-001-04
        source: 'services-platform:modules/queries/services/persistence/registered-query-objects.ts:retireRegisteredQueryObjectsExcept'
      - id: INV-DOM-PFM-QRY-001-06
        source: 'services-platform:docs/standards/custom-field-capability.md#3.3 What Platform enforces'
      - id: INV-DOM-PFM-QRY-001-08
        source: 'services-platform:db/migrations/0065_custom_query_tables.sql:custom_query_table_versions_immutable'
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-005-08
      - ATS-PFM-QRY-005-11
      - ATS-PFM-QRY-005-17
      - ATS-PFM-QRY-005-18
    source: &ref_4
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-005-give-one-customer-a-staff-authored-custom-query-table.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-001-custom-query-table-definition-and-versions.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: hq.custom-query-tables.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-005-give-one-customer-a-staff-authored-custom-query-table.md'
        gap: FND-PFM-QRY-055
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: hq.custom-query-tables.author
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-005-give-one-customer-a-staff-authored-custom-query-table.md'
        gap: FND-PFM-QRY-055
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: hq.custom-query-tables.publish
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-005-give-one-customer-a-staff-authored-custom-query-table.md'
        gap: FND-PFM-QRY-055
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: hq.custom-query-tables.assign
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-005-give-one-customer-a-staff-authored-custom-query-table.md'
        gap: FND-PFM-QRY-055
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: rule
        example: 'Follow an acknowledged publication through assignment, description and a saved question using the chosen version.'
        provenance: proposed
        source: *ref_4
      - category: edge
        example: 'Inspect an unassigned, excluded, deprecated and disabled publication through discovery and a retained question.'
        provenance: proposed
        source: *ref_4
  - id: FND-PFM-QRY-056
    category_gaps:
      - category: edge
        reason: 'Empty, absent or changed source data needs a focused example.'
        required_example: Archive a selected role while a colleague’s library and an already-open shared question are being read.
      - category: failure
        reason: Dependency failure and rollback need a focused proof beyond authorization refusal.
        required_example: Fail the dependent-report lock or query replacement transaction and verify that neither audience nor stored definition changes.
    transition_gaps: []
    invariant_gaps: []
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-006-17
      - ATS-PFM-QRY-006-18
      - ATS-PFM-QRY-006-19
    source: &ref_5
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-006-keep-and-share-saved-queries-without-widening-anyone-s.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.saved-queries.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-006-keep-and-share-saved-queries-without-widening-anyone-s.md'
        gap: FND-PFM-QRY-056
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.saved-queries.use
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-006-keep-and-share-saved-queries-without-widening-anyone-s.md'
        gap: FND-PFM-QRY-056
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.saved-queries.share
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-006-keep-and-share-saved-queries-without-widening-anyone-s.md'
        gap: FND-PFM-QRY-056
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.saved-queries.manage
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-006-keep-and-share-saved-queries-without-widening-anyone-s.md'
        gap: FND-PFM-QRY-056
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: <application>.<dataset>.query (the owner's key)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-006-keep-and-share-saved-queries-without-widening-anyone-s.md'
        gap: FND-PFM-QRY-056
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: rule
        example: 'Keep a new ordinary question, reopen it and run it before adding report or schedule dependencies.'
        provenance: proposed
        source: *ref_5
      - category: edge
        example: Archive a selected role while a colleague’s library and an already-open shared question are being read.
        provenance: proposed
        source: *ref_5
      - category: failure
        example: Fail the dependent-report lock or query replacement transaction and verify that neither audience nor stored definition changes.
        provenance: proposed
        source: *ref_5
  - id: FND-PFM-QRY-057
    category_gaps:
      - category: edge
        reason: 'Empty, absent or changed source data needs a focused example.'
        required_example: Enumerate an empty saved-query population and compare the uncapped count with the first capped page.
      - category: failure
        reason: Dependency failure and rollback need a focused proof beyond authorization refusal.
        required_example: Interrupt population paging after a definition or identity change and verify the specific refusal without logging subject values.
      - category: concurrency
        reason: Overlapping calls need a controlled race rather than only a stale-version replay.
        required_example: Change a saved definition or revoke the named person’s access between population pages and inspect the fingerprint and fresh authorization check.
    transition_gaps: []
    invariant_gaps: []
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-007-12
      - ATS-PFM-QRY-007-13
    source: &ref_6
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-007-run-a-saved-query-with-the-values-it-asks-for-as-the-person.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.saved-queries.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-007-run-a-saved-query-with-the-values-it-asks-for-as-the-person.md'
        gap: FND-PFM-QRY-057
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: <application>.<dataset>.query (the owner's key)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-007-run-a-saved-query-with-the-values-it-asks-for-as-the-person.md'
        gap: FND-PFM-QRY-057
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: edge
        example: Enumerate an empty saved-query population and compare the uncapped count with the first capped page.
        provenance: proposed
        source: *ref_6
      - category: failure
        example: Interrupt population paging after a definition or identity change and verify the specific refusal without logging subject values.
        provenance: proposed
        source: *ref_6
      - category: concurrency
        example: Change a saved definition or revoke the named person’s access between population pages and inspect the fingerprint and fresh authorization check.
        provenance: proposed
        source: *ref_6
  - id: FND-PFM-QRY-058
    category_gaps:
      - category: failure
        reason: Dependency failure and rollback need a focused proof beyond authorization refusal.
        required_example: Fail the registration transaction after validation and verify that retirement and replacement do not partially commit.
      - category: boundary
        reason: Exact accepted and first-refused numeric or time values need a focused proof.
        required_example: Exercise recipe parameter and declaration size boundaries with an accepted control and the first invalid value.
      - category: transition
        reason: 'Individual design transitions need explicit starting-state, guard and side-effect assertions.'
    transition_gaps:
      - state: STATE-PFM-QRY-004
        transition: 1
        from: active
        to: active
        trigger: Registration supplies changed recipe content.
        source: 'services-platform:modules/queries/services/recipe-registration/register-query-recipes.ts:registerQueryRecipes'
        gap: FND-PFM-QRY-058
      - state: STATE-PFM-QRY-004
        transition: 2
        from: active
        to: retired
        trigger: The new release omits the recipe.
        source: 'services-platform:modules/queries/db/query-recipes.table.ts (retired_at)'
        gap: FND-PFM-QRY-058
      - state: STATE-PFM-QRY-004
        transition: 3
        from: retired
        to: active
        trigger: A later release includes the retired recipe.
        source: 'services-platform:modules/queries/db/query-recipes.table.ts'
        gap: FND-PFM-QRY-058
    invariant_gaps: []
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-008-11
      - ATS-PFM-QRY-008-12
    source: &ref_7
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-008-start-a-query-from-a-recipe-rhythm-ships.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-004-query-recipe-declaration.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.queries.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-008-start-a-query-from-a-recipe-rhythm-ships.md'
        gap: FND-PFM-QRY-058
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: <application>.<dataset>.query (the owner's key)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-008-start-a-query-from-a-recipe-rhythm-ships.md'
        gap: FND-PFM-QRY-058
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: boundary
        example: Exercise recipe parameter and declaration size boundaries with an accepted control and the first invalid value.
        provenance: proposed
        source: *ref_7
      - category: failure
        example: Fail the registration transaction after validation and verify that retirement and replacement do not partially commit.
        provenance: proposed
        source: *ref_7
  - id: FND-PFM-QRY-059
    category_gaps:
      - category: failure
        reason: Dependency failure and rollback need a focused proof beyond authorization refusal.
        required_example: Fail a versioned preference or view write after validation and compare the retained definition and opening-view references.
      - category: invariant
        reason: The corresponding domain invariants need explicit assertions beyond neighboring rule examples.
        required_example: 'Compare saved views, navigation and selection over a recipe with a repeating join, including a retained view whose recipe changes grain.'
    transition_gaps: []
    invariant_gaps: []
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-009-12
      - ATS-PFM-QRY-009-13
    source: &ref_8
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-009-keep-and-share-the-explorer-views-a-person-works-from.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.explorer-views.use
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-009-keep-and-share-the-explorer-views-a-person-works-from.md'
        gap: FND-PFM-QRY-059
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.explorer-views.share
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-009-keep-and-share-the-explorer-views-a-person-works-from.md'
        gap: FND-PFM-QRY-059
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.explorer-views.manage
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-009-keep-and-share-the-explorer-views-a-person-works-from.md'
        gap: FND-PFM-QRY-059
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: <application>.<dataset>.query (the owner's key)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-009-keep-and-share-the-explorer-views-a-person-works-from.md'
        gap: FND-PFM-QRY-059
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: failure
        example: Fail a versioned preference or view write after validation and compare the retained definition and opening-view references.
        provenance: proposed
        source: *ref_8
      - category: invariant
        example: 'Compare saved views, navigation and selection over a recipe with a repeating join, including a retained view whose recipe changes grain.'
        provenance: proposed
        source: *ref_8
  - id: FND-PFM-QRY-060
    category_gaps:
      - category: failure
        reason: Dependency failure and rollback need a focused proof beyond authorization refusal.
        required_example: Interrupt navigation extension after reading identifiers and verify the stored return state and window remain usable.
      - category: concurrency
        reason: Overlapping calls need a controlled race rather than only a stale-version replay.
        required_example: Renew the same navigation window concurrently while matching records change; inspect stored-window replacement and the renewed access check.
      - category: transition
        reason: 'Individual design transitions need explicit starting-state, guard and side-effect assertions.'
    transition_gaps:
      - state: STATE-PFM-QRY-005
        transition: 1
        from: live
        to: live
        trigger: The owner navigates beyond the retained window edge.
        source: 'services-platform:modules/explorer/services/navigation/navigation-sessions.ts:locateInNavigationSession'
        gap: FND-PFM-QRY-060
      - state: STATE-PFM-QRY-005
        transition: 2
        from: live
        to: expired
        trigger: The twelve-hour navigation lifetime ends.
        source: 'services-platform:modules/explorer/db/explorer-navigation-sessions.table.ts (expires_at)'
        gap: FND-PFM-QRY-060
      - state: STATE-PFM-QRY-005
        transition: 3
        from: expired
        to: purged
        trigger: The owner starts another session after the cleanup cutoff.
        source: 'services-platform:modules/explorer/services/persistence/explorer-navigation-sessions.ts'
        gap: FND-PFM-QRY-060
    invariant_gaps: []
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-010-01
      - ATS-PFM-QRY-010-08
      - ATS-PFM-QRY-010-11
      - ATS-PFM-QRY-010-13
    source: &ref_9
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-010-walk-a-list-record-by-record-and-act-on-every-record-it.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-005-explorer-navigation-session.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.explorer-views.use
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-010-walk-a-list-record-by-record-and-act-on-every-record-it.md'
        gap: FND-PFM-QRY-060
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: <application>.<dataset>.query (the owner's key)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-010-walk-a-list-record-by-record-and-act-on-every-record-it.md'
        gap: FND-PFM-QRY-060
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: concurrency
        example: Renew the same navigation window concurrently while matching records change; inspect stored-window replacement and the renewed access check.
        provenance: proposed
        source: *ref_9
      - category: failure
        example: Interrupt navigation extension after reading identifiers and verify the stored return state and window remain usable.
        provenance: proposed
        source: *ref_9
  - id: FND-PFM-QRY-061
    category_gaps:
      - category: edge
        reason: 'Empty, absent or changed source data needs a focused example.'
        required_example: 'Compare catalog and direct reads after a source is retired, including dashboards with no sources and reports whose joined dataset is denied.'
      - category: failure
        reason: Dependency failure and rollback need a focused proof beyond authorization refusal.
        required_example: Fail report deletion before the transaction commits and verify that its source dependency and schedule pause remain unchanged.
      - category: invariant
        reason: The corresponding domain invariants need explicit assertions beyond neighboring rule examples.
    transition_gaps: []
    invariant_gaps: []
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-011-14
      - ATS-PFM-QRY-011-15
      - ATS-PFM-QRY-011-16
      - ATS-PFM-QRY-011-17
    source: &ref_10
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-011-keep-share-and-find-reports-without-sharing-anyone-s-data.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.reports.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-011-keep-share-and-find-reports-without-sharing-anyone-s-data.md'
        gap: FND-PFM-QRY-061
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.reports.use
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-011-keep-share-and-find-reports-without-sharing-anyone-s-data.md'
        gap: FND-PFM-QRY-061
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.reports.share
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-011-keep-share-and-find-reports-without-sharing-anyone-s-data.md'
        gap: FND-PFM-QRY-061
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.reports.manage
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-011-keep-share-and-find-reports-without-sharing-anyone-s-data.md'
        gap: FND-PFM-QRY-061
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.saved-queries.read and the dataset's query key (to read a report's data)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-011-keep-share-and-find-reports-without-sharing-anyone-s-data.md'
        gap: FND-PFM-QRY-061
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: edge
        example: 'Compare catalog and direct reads after a source is retired, including dashboards with no sources and reports whose joined dataset is denied.'
        provenance: proposed
        source: *ref_10
      - category: failure
        example: Fail report deletion before the transaction commits and verify that its source dependency and schedule pause remain unchanged.
        provenance: proposed
        source: *ref_10
      - category: boundary
        example: 'Check catalog paging at its accepted limit and the first refused size, in addition to the existing layout and name cases.'
        provenance: proposed
        source: *ref_10
  - id: FND-PFM-QRY-062
    category_gaps:
      - category: failure
        reason: Dependency failure and rollback need a focused proof beyond authorization refusal.
        required_example: 'Fail one widget’s source execution while another remains authorized, then inspect independent widget results and any requested document output.'
      - category: boundary
        reason: Exact accepted and first-refused numeric or time values need a focused proof.
        required_example: 'Save a dashboard with fifty distinct sources and try fifty-one, checking that refusal changes neither layout nor source references.'
      - category: concurrency
        reason: Overlapping calls need a controlled race rather than only a stale-version replay.
        required_example: Race dashboard audience widening with source-query audience narrowing and inspect both committed audiences and dependency locks.
    transition_gaps: []
    invariant_gaps: []
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-012-08
      - ATS-PFM-QRY-012-11
      - ATS-PFM-QRY-012-12
    source: &ref_11
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-012-assemble-a-dashboard-from-several-saved-queries.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.reports.use
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-012-assemble-a-dashboard-from-several-saved-queries.md'
        gap: FND-PFM-QRY-062
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.reports.share
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-012-assemble-a-dashboard-from-several-saved-queries.md'
        gap: FND-PFM-QRY-062
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.reports.manage
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-012-assemble-a-dashboard-from-several-saved-queries.md'
        gap: FND-PFM-QRY-062
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: boundary
        example: 'Save a dashboard with fifty distinct sources and try fifty-one, checking that refusal changes neither layout nor source references.'
        provenance: proposed
        source: *ref_11
      - category: failure
        example: 'Fail one widget’s source execution while another remains authorized, then inspect independent widget results and any requested document output.'
        provenance: proposed
        source: *ref_11
      - category: concurrency
        example: Race dashboard audience widening with source-query audience narrowing and inspect both committed audiences and dependency locks.
        provenance: proposed
        source: *ref_11
  - id: FND-PFM-QRY-063
    category_gaps:
      - category: rule
        reason: A focused ordinary-success proof is absent from the category map.
      - category: edge
        reason: 'Empty, absent or changed source data needs a focused example.'
        required_example: 'Render an empty table and a dashboard with no source widgets, checking readiness and the eligible document format.'
      - category: concurrency
        reason: Overlapping calls need a controlled race rather than only a stale-version replay.
        required_example: 'Race report deletion or permission withdrawal with admission, browser startup and a later print-page read; inspect stored output and final status.'
      - category: invariant
        reason: The corresponding domain invariants need explicit assertions beyond neighboring rule examples.
    transition_gaps: []
    invariant_gaps:
      - id: INV-DOM-PFM-QRY-004-01
        source: 'services-platform:modules/queries/db/query-export-requests.table.ts'
      - id: INV-DOM-PFM-QRY-004-02
        source: 'services-platform:modules/queries/services/persistence/query-exports.ts:startQueryExportRun, completeQueryExport, failQueryExport'
      - id: INV-DOM-PFM-QRY-004-08
        source: 'services-platform:modules/queries/services/schedules/scheduled-delivery.ts'
      - id: INV-DOM-PFM-QRY-004-12
        source: 'services-platform:modules/data-exports/services/persistence/executions.ts; modules/data-exports/services/persistence/deliveries.ts'
      - id: INV-DOM-PFM-QRY-004-14
        source: 'services-platform:modules/data-exports/services/persistence/volumes.ts'
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-013-12
      - ATS-PFM-QRY-013-13
      - ATS-PFM-QRY-013-14
      - ATS-PFM-QRY-013-15
    source: &ref_12
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-013-print-a-report-or-dashboard-to-pdf-or-excel-as-the-person.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.reports.use
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-013-print-a-report-or-dashboard-to-pdf-or-excel-as-the-person.md'
        gap: FND-PFM-QRY-063
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: 'platform.queries.read (to follow and download, CAP-014)'
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-013-print-a-report-or-dashboard-to-pdf-or-excel-as-the-person.md'
        gap: FND-PFM-QRY-063
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: edge
        example: 'Render an empty table and a dashboard with no source widgets, checking readiness and the eligible document format.'
        provenance: proposed
        source: *ref_12
      - category: concurrency
        example: 'Race report deletion or permission withdrawal with admission, browser startup and a later print-page read; inspect stored output and final status.'
        provenance: proposed
        source: *ref_12
  - id: FND-PFM-QRY-064
    category_gaps:
      - category: failure
        reason: Dependency failure and rollback need a focused proof beyond authorization refusal.
      - category: concurrency
        reason: Overlapping calls need a controlled race rather than only a stale-version replay.
        required_example: 'Redeliver unfinished export work while a first worker is completing storage and inspect conditional status updates, file identity and queued-work reuse.'
      - category: transition
        reason: 'Individual design transitions need explicit starting-state, guard and side-effect assertions.'
      - category: invariant
        reason: The corresponding domain invariants need explicit assertions beyond neighboring rule examples.
    transition_gaps:
      - state: STATE-PFM-QRY-006
        transition: 1
        from: queued
        to: running
        trigger: A worker receives the queued export.
        source: 'services-platform:modules/queries/services/exports/run-query-export.ts'
        gap: FND-PFM-QRY-064
      - state: STATE-PFM-QRY-006
        transition: 2
        from: running
        to: running
        trigger: The queue delivers unfinished work again.
        source: 'services-platform:modules/queries/db/query-exports.table.ts'
        gap: FND-PFM-QRY-064
      - state: STATE-PFM-QRY-006
        transition: 3
        from: running
        to: succeeded
        trigger: The generator finishes and stores the object.
        source: 'services-platform:modules/queries/services/exports/run-query-export.ts'
        gap: FND-PFM-QRY-064
      - state: STATE-PFM-QRY-006
        transition: 4
        from: running
        to: failed
        trigger: A permanent refusal occurs or infrastructure retries are exhausted.
        source: 'services-platform:modules/queries/services/rendering/render-report.ts'
        gap: FND-PFM-QRY-064
      - state: STATE-PFM-QRY-006
        transition: 5
        from: queued
        to: failed
        trigger: Pre-render checks find lost access or a missing report.
        source: 'services-platform:modules/queries/services/rendering/render-report.ts'
        gap: FND-PFM-QRY-064
      - state: STATE-PFM-QRY-006
        transition: 6
        from: succeeded
        to: expired
        trigger: The recorded completion-based expiry passes.
        source: 'services-platform:modules/queries/services/persistence/query-exports.ts:completeQueryExport; modules/queries/services/exports/query-export-library.ts'
        gap: FND-PFM-QRY-064
    invariant_gaps:
      - id: INV-DOM-PFM-QRY-004-01
        source: 'services-platform:modules/queries/db/query-export-requests.table.ts'
      - id: INV-DOM-PFM-QRY-004-02
        source: 'services-platform:modules/queries/services/persistence/query-exports.ts:startQueryExportRun, completeQueryExport, failQueryExport'
      - id: INV-DOM-PFM-QRY-004-08
        source: 'services-platform:modules/queries/services/schedules/scheduled-delivery.ts'
      - id: INV-DOM-PFM-QRY-004-12
        source: 'services-platform:modules/data-exports/services/persistence/executions.ts; modules/data-exports/services/persistence/deliveries.ts'
      - id: INV-DOM-PFM-QRY-004-14
        source: 'services-platform:modules/data-exports/services/persistence/volumes.ts'
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-014-11
      - ATS-PFM-QRY-014-12
      - ATS-PFM-QRY-014-13
    source: &ref_13
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-014-take-a-query-s-whole-result-away-as-a-csv-or-excel-file.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-006-query-export-file.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.queries.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-014-take-a-query-s-whole-result-away-as-a-csv-or-excel-file.md'
        gap: FND-PFM-QRY-064
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: <application>.<dataset>.query (the owner's key)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-014-take-a-query-s-whole-result-away-as-a-csv-or-excel-file.md'
        gap: FND-PFM-QRY-064
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.query-schedules.manage (to follow and download anyone's export)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-014-take-a-query-s-whole-result-away-as-a-csv-or-excel-file.md'
        gap: FND-PFM-QRY-064
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: concurrency
        example: 'Redeliver unfinished export work while a first worker is completing storage and inspect conditional status updates, file identity and queued-work reuse.'
        provenance: proposed
        source: *ref_13
      - category: interaction
        example: 'Compare report and query files under the same requester, owner, manager and foreign-reader contexts without granting package permissions to either file.'
        provenance: proposed
        source: *ref_13
  - id: FND-PFM-QRY-065
    category_gaps:
      - category: transition
        reason: 'Individual design transitions need explicit starting-state, guard and side-effect assertions.'
      - category: invariant
        reason: The corresponding domain invariants need explicit assertions beyond neighboring rule examples.
    transition_gaps:
      - state: STATE-PFM-QRY-007
        transition: 1
        from: enabled
        to: paused
        trigger: An authorized person pauses recurrence.
        source: 'services-platform:modules/queries/services/schedules/query-schedule-library.ts'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-007
        transition: 2
        from: paused
        to: enabled
        trigger: An authorized person resumes a user-paused schedule.
        source: 'services-platform:modules/queries/aws/api/query-schedules.routes.ts:resumeQuerySchedule'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-007
        transition: 3
        from: paused by Platform
        to: enabled
        trigger: The person resumes after an automatic pause.
        source: 'services-platform:modules/queries/services/schedules/query-schedule-library.ts'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-007
        transition: 4
        from: imported and paused
        to: enabled
        trigger: The imported schedule is resumed.
        source: 'services-platform:docs/migrations/query-scheduling-exports/README.md#D13'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-007
        transition: 5
        from: enabled
        to: paused by Platform
        trigger: Automatic execution detects source access loss.
        source: 'services-platform:modules/queries/services/schedules/scheduled-delivery.ts'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-007
        transition: 6
        from: enabled
        to: paused by Platform
        trigger: The failure streak reaches five runs.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-schedules/dist/schedule-repository.js (DEFAULT_AUTO_PAUSE_AFTER_FAILURES)'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-007
        transition: 7
        from: enabled
        to: paused for a deleted report
        trigger: The source report is removed.
        source: 'services-platform:modules/queries/services/reports/report-library.ts:removeReport'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-007
        transition: 8
        from: paused
        to: paused for a deleted report
        trigger: The paused schedule’s source report is removed.
        source: 'services-platform:modules/queries/services/reports/report-library.ts:removeReport'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-007
        transition: 9
        from: paused for a deleted report
        to: deleted
        trigger: The remaining report-deleted schedule is removed.
        source: 'services-platform:modules/queries/db/query-schedules.table.ts'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-007
        transition: 10
        from: enabled
        to: deleted
        trigger: The enabled schedule is removed.
        source: 'services-platform:modules/queries/aws/api/query-schedules.routes.ts:deleteQuerySchedule'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-007
        transition: 11
        from: paused
        to: deleted
        trigger: The paused schedule is removed.
        source: 'services-platform:modules/queries/aws/api/query-schedules.routes.ts:deleteQuerySchedule'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-008
        transition: 1
        from: queued
        to: running
        trigger: The delivery consumer begins the occurrence.
        source: 'services-platform:modules/queries/aws/logic/query-schedules.lambda.ts'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-008
        transition: 2
        from: running
        to: succeeded
        trigger: File production and recipient outcome recording finish.
        source: 'services-platform:modules/queries/services/schedules/scheduled-delivery.ts'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-008
        transition: 3
        from: running
        to: skipped
        trigger: The file has no records and empty-result suppression is enabled.
        source: 'services-platform:modules/queries/services/schedules/scheduled-delivery.ts'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-008
        transition: 4
        from: running
        to: failed
        trigger: A request refusal or exhausted infrastructure attempt settles the run.
        source: 'services-platform:modules/queries/services/schedules/scheduled-report-delivery.ts'
        gap: FND-PFM-QRY-065
      - state: STATE-PFM-QRY-008
        transition: 5
        from: running
        to: running
        trigger: An infrastructure failure returns unfinished work to the queue.
        source: 'services-platform:docs/migrations/query-scheduling-exports/README.md#D12'
        gap: FND-PFM-QRY-065
    invariant_gaps:
      - id: INV-DOM-PFM-QRY-004-01
        source: 'services-platform:modules/queries/db/query-export-requests.table.ts'
      - id: INV-DOM-PFM-QRY-004-02
        source: 'services-platform:modules/queries/services/persistence/query-exports.ts:startQueryExportRun, completeQueryExport, failQueryExport'
      - id: INV-DOM-PFM-QRY-004-08
        source: 'services-platform:modules/queries/services/schedules/scheduled-delivery.ts'
      - id: INV-DOM-PFM-QRY-004-12
        source: 'services-platform:modules/data-exports/services/persistence/executions.ts; modules/data-exports/services/persistence/deliveries.ts'
      - id: INV-DOM-PFM-QRY-004-14
        source: 'services-platform:modules/data-exports/services/persistence/volumes.ts'
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-015-17
      - ATS-PFM-QRY-015-18
      - ATS-PFM-QRY-015-19
      - ATS-PFM-QRY-015-20
    source: &ref_14
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-015-send-a-saved-query-or-report-to-chosen-people-on-a-schedule.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-007-query-schedule-enablement.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-008-schedule-run.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.queries.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-015-send-a-saved-query-or-report-to-chosen-people-on-a-schedule.md'
        gap: FND-PFM-QRY-065
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.query-schedules.use
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-015-send-a-saved-query-or-report-to-chosen-people-on-a-schedule.md'
        gap: FND-PFM-QRY-065
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.query-schedules.manage
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-015-send-a-saved-query-or-report-to-chosen-people-on-a-schedule.md'
        gap: FND-PFM-QRY-065
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.query-schedules.external-recipients
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-015-send-a-saved-query-or-report-to-chosen-people-on-a-schedule.md'
        gap: FND-PFM-QRY-065
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.reports.use (report schedules)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-015-send-a-saved-query-or-report-to-chosen-people-on-a-schedule.md'
        gap: FND-PFM-QRY-065
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: boundary
        example: Try fifty recipients and the first excess distinct recipient while resolving a scheduled date across a workspace-day boundary.
        provenance: proposed
        source: *ref_14
      - category: failure
        example: Interrupt communications after one recipient submission and inspect retry reuse before the fifth consecutive failure pause.
        provenance: proposed
        source: *ref_14
  - id: FND-PFM-QRY-066
    category_gaps:
      - category: invariant
        reason: The corresponding domain invariants need explicit assertions beyond neighboring rule examples.
    transition_gaps: []
    invariant_gaps:
      - id: INV-DOM-PFM-QRY-005-01
        source: 'services-platform:modules/quick-search/services/persistence/index-states.ts:activateGeneration; modules/quick-search/services/providers/algolia/filters.ts:accessFilter; modules/quick-search/services/providers/algolia/documents.ts:objectIdOf'
      - id: INV-DOM-PFM-QRY-005-04
        source: 'services-platform:docs/proposals/quick-search.md#9.3'
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-016-11
      - ATS-PFM-QRY-016-13
    source: &ref_15
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-016-find-contacts-and-organizations-as-one-types.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.quick-search.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-016-find-contacts-and-organizations-as-one-types.md'
        gap: FND-PFM-QRY-066
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: 'crm.contacts.read (the record type''s own permission, for contacts and organizations alike)'
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-016-find-contacts-and-organizations-as-one-types.md'
        gap: FND-PFM-QRY-066
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: rule
        example: 'Open lookup with current credentials, close it and reopen after a permission change to inspect credential renewal and reset discovery choices.'
        provenance: proposed
        source: *ref_15
      - category: edge
        example: Inspect empty provider results and absent legacy discovery markers without changing the signed workspace or type restriction.
        provenance: proposed
        source: *ref_15
  - id: FND-PFM-QRY-067
    category_gaps:
      - category: transition
        reason: 'Individual design transitions need explicit starting-state, guard and side-effect assertions.'
      - category: invariant
        reason: The corresponding domain invariants need explicit assertions beyond neighboring rule examples.
        required_example: Delay an older provider write until after a deletion claim and inspect deletion precedence and the generation activation compare-and-set.
    transition_gaps:
      - state: STATE-PFM-QRY-013
        transition: 1
        from: unprovisioned
        to: populating
        trigger: 'Provisioning, access or configuration creates the first scope.'
        source: 'services-platform:modules/quick-search/services/configuration/provision.ts'
        gap: FND-PFM-QRY-067
      - state: STATE-PFM-QRY-013
        transition: 2
        from: populating
        to: ready
        trigger: Initial rebuild completes its activation step.
        source: 'services-platform:modules/quick-search/services/rebuild/quick-search-rebuild-operations.ts'
        gap: FND-PFM-QRY-067
      - state: STATE-PFM-QRY-013
        transition: 3
        from: ready
        to: rebuilding
        trigger: Configuration or repair requires another generation.
        source: 'services-platform:modules/quick-search/services/rebuild/request-rebuild.ts:requestRebuild'
        gap: FND-PFM-QRY-067
      - state: STATE-PFM-QRY-013
        transition: 4
        from: rebuilding
        to: ready
        trigger: The target rebuild completes activation.
        source: 'services-platform:modules/quick-search/services/rebuild/quick-search-rebuild-workflow.ts'
        gap: FND-PFM-QRY-067
      - state: STATE-PFM-QRY-013
        transition: 5
        from: rebuilding
        to: rebuilding
        trigger: A rebuild fails or another target supersedes it.
        source: 'services-platform:modules/quick-search/services/maintenance/resubmit-targets.ts'
        gap: FND-PFM-QRY-067
      - state: STATE-PFM-QRY-013
        transition: 6
        from: ready
        to: removed
        trigger: Workspace purge removes a ready scope.
        source: 'services-platform:modules/quick-search/services/maintenance/tenant-participant.ts'
        gap: FND-PFM-QRY-067
      - state: STATE-PFM-QRY-013
        transition: 7
        from: rebuilding
        to: removed
        trigger: Workspace purge encounters an unfinished rebuild.
        source: 'services-platform:modules/quick-search/services/rebuild/quick-search-rebuild-operations.ts'
        gap: FND-PFM-QRY-067
    invariant_gaps:
      - id: INV-DOM-PFM-QRY-005-01
        source: 'services-platform:modules/quick-search/services/persistence/index-states.ts:activateGeneration; modules/quick-search/services/providers/algolia/filters.ts:accessFilter; modules/quick-search/services/providers/algolia/documents.ts:objectIdOf'
      - id: INV-DOM-PFM-QRY-005-04
        source: 'services-platform:docs/proposals/quick-search.md#9.3'
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-017-12
      - ATS-PFM-QRY-017-13
      - ATS-PFM-QRY-017-14
      - ATS-PFM-QRY-017-15
    source: &ref_16
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-017-choose-what-quick-search-finds-records-by-and-keep-the.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-013-search-index-of-a-record-type.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.quick-search-settings.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-017-choose-what-quick-search-finds-records-by-and-keep-the.md'
        gap: FND-PFM-QRY-067
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.quick-search-settings.update
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-017-choose-what-quick-search-finds-records-by-and-keep-the.md'
        gap: FND-PFM-QRY-067
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.quick-search-settings.rebuild
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-017-choose-what-quick-search-finds-records-by-and-keep-the.md'
        gap: FND-PFM-QRY-067
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: <application>.<dataset>.query (the owner's key)
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-017-choose-what-quick-search-finds-records-by-and-keep-the.md'
        gap: FND-PFM-QRY-067
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: boundary
        example: 'Test one and thirty eligible distinct fields against zero and thirty-one, including automatic repair just before and at its hourly cutoff.'
        provenance: proposed
        source: *ref_16
      - category: invariant
        example: Delay an older provider write until after a deletion claim and inspect deletion precedence and the generation activation compare-and-set.
        provenance: proposed
        source: *ref_16
  - id: FND-PFM-QRY-068
    category_gaps:
      - category: validation
        reason: A focused invalid-input proof is absent from the category map.
        required_example: 'Compare structurally malformed settings, destination and execution requests with accepted shapes before persistence is entered.'
      - category: edge
        reason: 'Empty, absent or changed source data needs a focused example.'
        required_example: 'Inspect history with no package, a removed destination and a queued execution whose customer cancellation action is unavailable.'
      - category: transition
        reason: 'Individual design transitions need explicit starting-state, guard and side-effect assertions.'
      - category: invariant
        reason: The corresponding domain invariants need explicit assertions beyond neighboring rule examples.
    transition_gaps:
      - state: STATE-PFM-QRY-009
        transition: 1
        from: queued
        to: running
        trigger: The mark-running helper is invoked by future orchestration.
        source: 'services-platform:modules/data-exports/services/persistence/executions.ts:markRunning'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-009
        transition: 2
        from: running
        to: succeeded
        trigger: The completion helper records successful execution.
        source: 'services-platform:modules/data-exports/services/persistence/executions.ts:markSucceeded'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-009
        transition: 3
        from: running
        to: failed
        trigger: The failure helper settles running execution.
        source: 'services-platform:modules/data-exports/services/generation/data-export-job-type.ts'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-009
        transition: 4
        from: queued
        to: failed
        trigger: The failure helper settles execution before generation starts.
        source: 'services-platform:modules/data-exports/services/persistence/executions.ts:markFailed'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-009
        transition: 5
        from: queued
        to: cancelled
        trigger: The cancellation helper is called for queued work.
        source: 'services-platform:modules/data-exports/services/persistence/executions.ts:markCancelled'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-009
        transition: 6
        from: running
        to: cancelled
        trigger: The cancellation helper is called for running work.
        source: 'services-platform:modules/data-exports/services/persistence/executions.ts:markCancelled'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-010
        transition: 1
        from: available
        to: expired
        trigger: The expiry helper is called after a due-artifact read.
        source: 'services-platform:modules/data-exports/services/persistence/artifacts.ts (listDueArtifacts)'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-010
        transition: 2
        from: available
        to: deleted
        trigger: The early-deletion helper is called.
        source: 'services-platform:modules/data-exports/services/persistence/artifacts.ts'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-011
        transition: 1
        from: pending
        to: delivering
        trigger: Future processing calls the transfer-start helper.
        source: 'services-platform:modules/data-exports/services/persistence/deliveries.ts'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-011
        transition: 2
        from: failed
        to: delivering
        trigger: Future retry processing calls the transfer-start helper.
        source: 'services-platform:modules/data-exports/services/persistence/deliveries.ts'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-011
        transition: 3
        from: delivering
        to: delivered
        trigger: The accepted-outcome helper is called.
        source: 'services-platform:modules/data-exports/services/persistence/deliveries.ts:markDelivered'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-011
        transition: 4
        from: delivering
        to: failed
        trigger: The failure helper is called.
        source: 'services-platform:modules/data-exports/services/persistence/deliveries.ts'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-011
        transition: 5
        from: pending
        to: withheld
        trigger: Processing marks an unavailable destination withheld.
        source: 'services-platform:modules/data-exports/services/persistence/deliveries.ts'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-011
        transition: 6
        from: pending
        to: expired
        trigger: Package cleanup calls expiry for pending delivery.
        source: 'services-platform:modules/data-exports/services/persistence/deliveries.ts'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-011
        transition: 7
        from: failed
        to: expired
        trigger: Package cleanup calls expiry for failed delivery.
        source: 'services-platform:modules/data-exports/services/persistence/deliveries.ts'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-011
        transition: 8
        from: withheld
        to: expired
        trigger: Package cleanup calls expiry for withheld delivery.
        source: 'services-platform:modules/data-exports/services/persistence/deliveries.ts'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-011
        transition: 9
        from: failed
        to: superseded
        trigger: The supersession helper is called.
        source: 'services-platform:modules/data-exports/services/persistence/deliveries.ts'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-012
        transition: 1
        from: active
        to: active
        trigger: Activation supplies a new schema release for the dataset.
        source: 'services-platform:modules/data-exports/services/export-coverage/reconcile-coverage.ts:planCoverage'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-012
        transition: 2
        from: active
        to: retired
        trigger: An explicit dataset declaration list omits an existing dataset.
        source: 'services-platform:modules/data-exports/services/export-coverage/reconcile-coverage.ts'
        gap: FND-PFM-QRY-068
      - state: STATE-PFM-QRY-012
        transition: 3
        from: retired
        to: active
        trigger: Activation declares a retired dataset again.
        source: 'services-platform:modules/data-exports/services/export-coverage/reconcile-coverage.ts'
        gap: FND-PFM-QRY-068
    invariant_gaps:
      - id: INV-DOM-PFM-QRY-004-01
        source: 'services-platform:modules/queries/db/query-export-requests.table.ts'
      - id: INV-DOM-PFM-QRY-004-02
        source: 'services-platform:modules/queries/services/persistence/query-exports.ts:startQueryExportRun, completeQueryExport, failQueryExport'
      - id: INV-DOM-PFM-QRY-004-08
        source: 'services-platform:modules/queries/services/schedules/scheduled-delivery.ts'
      - id: INV-DOM-PFM-QRY-004-12
        source: 'services-platform:modules/data-exports/services/persistence/executions.ts; modules/data-exports/services/persistence/deliveries.ts'
      - id: INV-DOM-PFM-QRY-004-14
        source: 'services-platform:modules/data-exports/services/persistence/volumes.ts'
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-018-12
      - ATS-PFM-QRY-018-13
      - ATS-PFM-QRY-018-15
      - ATS-PFM-QRY-018-16
      - ATS-PFM-QRY-018-17
    source: &ref_17
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-018-take-a-complete-portable-export-of-the-workspace-s-data.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-009-workspace-data-export-execution.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-010-workspace-export-package.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-011-workspace-export-delivery.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-012-export-coverage-declaration.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.data-exports.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-018-take-a-complete-portable-export-of-the-workspace-s-data.md'
        gap: FND-PFM-QRY-068
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.data-exports.manage
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-018-take-a-complete-portable-export-of-the-workspace-s-data.md'
        gap: FND-PFM-QRY-068
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.data-exports.execute
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-018-take-a-complete-portable-export-of-the-workspace-s-data.md'
        gap: FND-PFM-QRY-068
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: platform.data-exports.download
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-018-take-a-complete-portable-export-of-the-workspace-s-data.md'
        gap: FND-PFM-QRY-068
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: hq.data-exports.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-018-take-a-complete-portable-export-of-the-workspace-s-data.md'
        gap: FND-PFM-QRY-068
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: hq.data-exports.operate
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-018-take-a-complete-portable-export-of-the-workspace-s-data.md'
        gap: FND-PFM-QRY-068
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: validation
        example: 'Compare structurally malformed settings, destination and execution requests with accepted shapes before persistence is entered.'
        provenance: proposed
        source: *ref_17
      - category: edge
        example: 'Inspect history with no package, a removed destination and a queued execution whose customer cancellation action is unavailable.'
        provenance: proposed
        source: *ref_17
  - id: FND-PFM-QRY-069
    category_gaps:
      - category: edge
        reason: 'Empty, absent or changed source data needs a focused example.'
        required_example: 'Read a skipped-only month with no current publication, then retain several inactive historical versions without admitting overlapping active work.'
      - category: transition
        reason: 'Individual design transitions need explicit starting-state, guard and side-effect assertions.'
      - category: invariant
        reason: The corresponding domain invariants need explicit assertions beyond neighboring rule examples.
    transition_gaps:
      - state: STATE-PFM-QRY-014
        transition: 1
        from: planned
        to: queued
        trigger: The owner dispatcher claims the planned run.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:claimRuns'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 2
        from: queued
        to: running
        trigger: The job worker starts the queued run.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:startRun'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 3
        from: running
        to: validating
        trigger: Generation enters final validation.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:beginValidation'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 4
        from: validating
        to: published
        trigger: Final validation passes.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:publishRun'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 5
        from: running
        to: failed
        trigger: Generation or exhausted job processing fails.
        source: 'services-platform:modules/snapshots/services/runs/snapshot-run-workflow.ts'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 6
        from: validating
        to: failed
        trigger: The final transaction fails validation.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-run-workflow.js:advanceSnapshotRun'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 7
        from: failed
        to: queued
        trigger: The failed attempt reaches its next-attempt time.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-states.js (SNAPSHOT_RETRY_DELAYS_MINUTES)'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 8
        from: planned
        to: cancelled
        trigger: 'Cancellation records workspace removal, policy or operator reason.'
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:cancelRun'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 9
        from: running
        to: cancelled
        trigger: Cancellation occurs during generation.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:cancelRun'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 10
        from: queued
        to: cancelled
        trigger: Cancellation occurs before the attempt starts.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:cancelRun'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 11
        from: validating
        to: cancelled
        trigger: Cancellation occurs during validation.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:cancelRun'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 12
        from: failed
        to: cancelled
        trigger: Cancellation replaces a pending retry.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:cancelRun'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 13
        from: running
        to: running
        trigger: The worker resumes existing generation.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:startRun'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 14
        from: validating
        to: validating
        trigger: The worker resumes existing validation.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:startRun'
        gap: FND-PFM-QRY-069
      - state: STATE-PFM-QRY-014
        transition: 15
        from: queued
        to: failed
        trigger: The job fails before generation starts.
        source: 'services-platform:node_modules/@rhythmsoftware/macroservice-snapshots/dist/snapshot-repository.js:failRun'
        gap: FND-PFM-QRY-069
    invariant_gaps:
      - id: INV-DOM-PFM-QRY-006-05
        source: 'services-platform:modules/snapshots/aws/logic/snapshots-functions.lambda.ts'
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-019-09
      - ATS-PFM-QRY-019-12
      - ATS-PFM-QRY-019-13
      - ATS-PFM-QRY-019-14
    source: &ref_18
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-019-keep-monthly-snapshots-of-each-workspace-and-show-which.md'
      - 'rhythm-v2-docs:specs/platform/queries/design/state-models/STATE-PFM-QRY-014-monthly-snapshot-run.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations:
      - key: platform.snapshots.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-019-keep-monthly-snapshots-of-each-workspace-and-show-which.md'
        gap: FND-PFM-QRY-069
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: hq.snapshots.read
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-019-keep-monthly-snapshots-of-each-workspace-and-show-which.md'
        gap: FND-PFM-QRY-069
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
      - key: hq.snapshots.manage
        source: 'rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-019-keep-monthly-snapshots-of-each-workspace-and-show-which.md'
        gap: FND-PFM-QRY-069
        reason: 'Existing permission examples are candidates for this grant; complete allowed, absent, denied and scope controls still require assertion-level review.'
    required_examples:
      - category: edge
        example: 'Read a skipped-only month with no current publication, then retain several inactive historical versions without admitting overlapping active work.'
        provenance: proposed
        source: *ref_18
      - category: concurrency
        example: Race dispatcher claims under the owning service’s total and backfill caps and inspect attached attempt identities.
        provenance: proposed
        source: *ref_18
  - id: FND-PFM-QRY-070
    category_gaps:
      - category: validation
        reason: A focused invalid-input proof is absent from the category map.
      - category: failure
        reason: Dependency failure and rollback need a focused proof beyond authorization refusal.
        required_example: 'Interrupt a dated evaluation after compilation and verify safe failure output, read-only rollback and absence of subject values in logs.'
      - category: concurrency
        reason: Overlapping calls need a controlled race rather than only a stale-version replay.
        required_example: Change a named record between evaluation requests and inspect the calendar anchor and result snapshot within each request.
    transition_gaps: []
    invariant_gaps: []
    unproved_rules: []
    unbound_scenarios:
      - ATS-PFM-QRY-020-02
      - ATS-PFM-QRY-020-04
      - ATS-PFM-QRY-020-06
      - ATS-PFM-QRY-020-07
    source: &ref_19
      - 'rhythm-v2-docs:specs/platform/queries/design/tests/ATS-PFM-QRY-020-evaluate-dated-conditions-for-named-records.md'
    kind: coverage-gap
    provenance: observed
    permission_obligations: []
    required_examples:
      - category: failure
        example: 'Interrupt a dated evaluation after compilation and verify safe failure output, read-only rollback and absence of subject values in logs.'
        provenance: proposed
        source: *ref_19
      - category: concurrency
        example: Change a named record between evaluation requests and inspect the calendar anchor and result snapshot within each request.
        provenance: proposed
        source: *ref_19
testing_binding_limits:
  - finding: FND-PFM-QRY-071
    provenance: observed
    source:
      - 'services-platform:modules/queries/tests/live/generate-query/smoke.js'
      - 'services-platform:modules/quick-search/tests/integration/db/quick-search-rebuild-jobs.table.integration.spec.js'
      - 'services-platform:modules/snapshots/tests/integration/lifecycle/pipeline/snapshot-pipeline.integration.spec.js'
    affects: *ref_20
    limitations:
      - 'Live query-generation smoke asserts accepted execution and metering, not semantic agreement with the request.'
      - Rebuild-job uniqueness does not establish old-generation visibility during provider writes.
      - Small snapshot rollback does not establish deletion of earlier committed chunks.
  - finding: FND-PFM-QRY-072
    provenance: observed
    source:
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs-cross-application/DJE-ACC-0150.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs-cross-application/DJE-ACC-0151.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0101.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0102.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0103.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0104.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0105.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0106.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0107.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0108.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0109.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0110.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0111.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0112.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0113.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0114.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0115.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0116.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0117.spec.ts'
      - 'react-console:acceptance/data-jobs/playwright/rehearsals/plat-m19.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/_smoke/RPT-ACC-0000.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0491.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0492.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0493.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0495.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0496.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0497.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0498.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0499.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0500.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0501.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0502.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0503.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0504.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0505.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0506.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0507.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0508.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0509.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0510.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0511.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/adversarial/RPT-ACC-0512.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0001.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0003.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0004.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0006.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0007.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0011.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0013.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0014.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0015.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0016.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0017.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0018.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0019.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0020.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0021.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0022.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0150.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0151.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0152.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0153.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0155.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0156.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0157.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0158.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0159.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0160.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0161.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0162.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0163.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0164.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0165.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0166.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0167.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0168.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/dashboards-designer/RPT-ACC-0230.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/dashboards-designer/RPT-ACC-0231.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/dashboards-designer/RPT-ACC-0232.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/dashboards-designer/RPT-ACC-0235.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/dashboards-designer/RPT-ACC-0237.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/dashboards-designer/RPT-ACC-0238.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/dashboards-designer/RPT-ACC-0251.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/dashboards-designer/RPT-ACC-0255.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/dashboards-designer/RPT-ACC-0257.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0340.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0341.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0342.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0343.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0344.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0345.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0346.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0354.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0355.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0356.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0357.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0359.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0360.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0080.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0081.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0082.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0083.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0084.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0085.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0087.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0088.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0091.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0092.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0093.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0094.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/saved-query-reports/RPT-ACC-0095.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0420.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0421.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0422.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0423.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0426.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0429.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0430.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0431.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0433.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0438.spec.ts'
      - 'react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0439.spec.ts'
      - 'react-console:e2e/controlled/quick-search.controlled.spec.ts'
      - 'react-console:e2e/controlled/record-views.controlled.spec.ts'
      - 'react-console:e2e/dev/organizations-explorer.dev.spec.ts'
      - 'react-console:e2e/dev/queries.dev.spec.ts'
      - 'react-console:e2e/dev/query-schedules.dev.spec.ts'
      - 'react-console:e2e/dev/quick-search.dev.spec.ts'
      - 'react-console:e2e/dev/record-explorer.dev.spec.ts'
      - 'react-console:e2e/dev/record-links.dev.spec.ts'
      - 'react-console:e2e/dev/record-views.dev.spec.ts'
      - 'react-console:e2e/dev/saved-query-parameters.dev.spec.ts'
      - 'react-console:e2e/dev/subledger-query-walk.dev.spec.ts'
      - 'react-console:e2e/mock/custom-query-tables.spec.ts'
      - 'react-console:e2e/mock/dashboard-lab.mock.spec.ts'
      - 'react-console:e2e/mock/dashboard-unsaved.mock.spec.ts'
      - 'react-console:e2e/mock/data-exports.mock.spec.ts'
      - 'react-console:e2e/mock/query-schedules.mock.spec.ts'
      - 'react-console:e2e/mock/record-explorer-access.mock.spec.ts'
      - 'react-console:e2e/mock/record-explorer-ask.mock.spec.ts'
      - 'react-console:e2e/mock/record-explorer-views.mock.spec.ts'
      - 'react-console:e2e/mock/record-links.spec.ts'
      - 'react-console:e2e/mock/relative-date-builder-compat.mock.spec.ts'
      - 'react-console:e2e/mock/relative-date-builder.mock.spec.ts'
      - 'react-console:e2e/mock/relative-dates.mock.spec.ts'
      - 'react-console:e2e/mock/reporting-access.mock.spec.ts'
      - 'react-console:e2e/mock/reporting-catalog.mock.spec.ts'
      - 'react-console:e2e/mock/reporting-classic.mock.spec.ts'
      - 'react-console:e2e/mock/reporting-delete.mock.spec.ts'
      - 'react-console:e2e/mock/reporting-export.mock.spec.ts'
      - 'react-console:e2e/mock/reporting-print.mock.spec.ts'
      - 'react-console:e2e/mock/reporting-sharing.mock.spec.ts'
      - 'react-console:e2e/mock/reporting-system-dashboard.mock.spec.ts'
      - 'react-console:e2e/mock/saved-query-parameters.spec.ts'
      - 'services-platform:modules/data-exports/tests/integration/db/data-export-artifacts.table.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/db/data-export-definitions.table.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/db/data-export-deliveries.table.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/db/data-export-executions.table.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/db/export-coverage-datasets.table.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/services/maintenance/tenant-participant.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/services/persistence/artifacts.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/services/persistence/deliveries.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/services/persistence/delivery-attempts.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/services/persistence/executions.queries.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/services/persistence/notices.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/services/persistence/parts.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/integration/services/persistence/volumes.integration.spec.js'
      - 'services-platform:modules/data-exports/tests/unit/export-coverage/contract.spec.js'
      - 'services-platform:modules/data-exports/tests/unit/services/export-coverage/reconcile-coverage.spec.js'
      - 'services-platform:modules/explorer/tests/integration/services/navigation/custom-object-navigation.integration.spec.js'
      - 'services-platform:modules/explorer/tests/integration/services/persistence/explorer-navigation-sessions.queries.integration.spec.js'
      - 'services-platform:modules/explorer/tests/integration/services/persistence/explorer-view-preferences.integration.spec.js'
      - 'services-platform:modules/explorer/tests/integration/services/persistence/explorer-view-preferences.queries.integration.spec.js'
      - 'services-platform:modules/explorer/tests/integration/services/persistence/explorer-views.queries.integration.spec.js'
      - 'services-platform:modules/explorer/tests/unit/explorer-permission-keys.spec.ts'
      - 'services-platform:modules/queries/tests/integration/db/query-generations.table.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/db/query-recipes.table.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/db/registered-query-objects.table.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/db/registered-query-picks.table.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/db/report-shared-roles.table.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/db/report-sources.table.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/db/reports.table.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/db/saved-queries.table.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/db/saved-query-shared-roles.table.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/catalog/dataset-catalog.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/custom-tables/custom-table-analysis.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/custom-tables/custom-table-assignment.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/custom-tables/custom-table-lifecycle.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/custom-tables/custom-table-pinning.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/describe/association-families.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/describe/custom-object-exposure.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/describe/dataset-declarations.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/describe/dataset-grants.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/describe/dataset-scope.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/describe/describe-affiliations.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/describe/describe-configured-relationships.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/describe/describe-custom-objects.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/describe/describe-dataset-mapping.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/describe/describe-dataset.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/describe/shared-description-cache.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/affiliation-queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/configured-relationship-queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/contact-affiliation-fields.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/contact-pick-flattening.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/custom-dataset-isolation.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/custom-dataset-queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/custom-field-queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/custom-object-queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/custom-table-joins.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/display-links.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/enumerate-records.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/find-record-ids.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/input-edges.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/ordered-record-ids.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/organization-hierarchy-queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/plan-and-compile-query.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/polymorphic-references.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/project-records.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/query-value-conversions.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/record-bindings.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/record-id-sets.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/relative-dates.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/resolve-date-expressions.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/system-mode.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/two-stage-paging.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/execute/user-joins.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/exports/custom-object-export.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/generate/evaluation-scenarios.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/generate/generate-query-context.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/generate/generate-query-tools.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/generate/run-generation.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/generate/validate-generated-query.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/configuration-rows.queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/database-tables.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/database-tables.queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/query-description-stamps.queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/query-exports.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/query-exports.queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/query-generations.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/query-generations.queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/query-recipes.queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/query-schedules.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/query-schedules.queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/registered-query-objects.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/registered-query-objects.queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/reports.queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/saved-queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/persistence/saved-queries.queries.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/recipes/query-recipe-library.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/recipes/recipe-draft-descriptions.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/registration/affiliation-registration.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/registration/pick-views.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/registration/query-sources.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/reports/report-readability.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/reports/staff-access.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/reports/staff-grant-access.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/saved-queries/browse-saved-query-library.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/saved-queries/marketing-record-ids-invocation.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/saved-queries/relative-dates.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/saved-queries/saved-query-library.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/saved-queries/saved-query-parameters.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/saved-queries/validate-definition.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/schedules/scheduled-report-delivery.integration.spec.js'
      - 'services-platform:modules/queries/tests/integration/services/schedules/scheduled-report-purpose.integration.spec.js'
      - 'services-platform:modules/queries/tests/live/generate-query/smoke.js'
      - 'services-platform:modules/queries/tests/render/print-excel-contract.render.spec.js'
      - 'services-platform:modules/queries/tests/render/real-chromium.render.spec.js'
      - 'services-platform:modules/queries/tests/unit/aws/api/custom-tables-column-key.spec.ts'
      - 'services-platform:modules/queries/tests/unit/aws/api/queries-api-mapper.spec.ts'
      - 'services-platform:modules/queries/tests/unit/aws/api/query-schedules-api-mapper.spec.ts'
      - 'services-platform:modules/queries/tests/unit/aws/renderer-image.spec.ts'
      - 'services-platform:modules/queries/tests/unit/dataset-permission-keys.spec.ts'
      - 'services-platform:modules/queries/tests/unit/db/dashboard-sources.spec.ts'
      - 'services-platform:modules/queries/tests/unit/evaluation/generate-query-scenarios.spec.js'
      - 'services-platform:modules/queries/tests/unit/live/generate-query/live-gate.spec.js'
      - 'services-platform:modules/queries/tests/unit/live/generate-query/report.spec.js'
      - 'services-platform:modules/queries/tests/unit/live/generate-query/score-answer.spec.js'
      - 'services-platform:modules/queries/tests/unit/llm-usage-datasets.spec.ts'
      - 'services-platform:modules/queries/tests/unit/queries-route-slice-size.spec.ts'
      - 'services-platform:modules/queries/tests/unit/read-tier-keys.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/custom-tables/analyze-sql-definitions.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/custom-tables/column-review.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/custom-tables/parameterized-sql.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/custom-tables/placeholders.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/custom-tables/query-source-warnings.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/custom-tables/revalidation-check.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/custom-tables/version-changes.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/describe/build-identity.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/describe/description-cache.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/describe/may-query-sensitive-dataset.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/describe/owner-dataset-authorization.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/describe/shared-description-cache.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/execute/as-of-environment.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/execute/compile-query-input-edges.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/execute/compile-query.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/execute/configured-join-aliases.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/execute/custom-object-compilation.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/execute/custom-source-compilation.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/execute/linked-matches-and-exists.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/execute/polymorphic-record-binding.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/execute/record-binding.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/execute/two-stage-paging.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/exports/export-files.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/exports/export-queue.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/exports/xlsx-writer.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/generate/generate-query-context.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/generate/generate-query-prompt.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/generate/generate-query-tools.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/generate/generated-query-outcome.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/generate/generation-problem-codes.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/generate/generation-runner.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/generate/query-dictionary.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/generate/validate-generated-query.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/persistence/database-tables.spec.js'
      - 'services-platform:modules/queries/tests/unit/services/persistence/same-read-definition.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/rendering/print-excel-answer.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/saved-queries/person-execution-keys.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/schedules/query-summaries.spec.ts'
      - 'services-platform:modules/queries/tests/unit/services/schedules/scheduled-report-delivery.spec.ts'
      - 'services-platform:modules/queries/tests/unit/system-route-precedence.spec.ts'
      - 'services-platform:modules/quick-search/tests/integration/db/quick-search-configurations.table.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/db/quick-search-documents.table.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/db/quick-search-index-states.table.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/lifecycle/rebuild/quick-search-archived-field.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/lifecycle/rebuild/quick-search-rebuild-resilience.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/lifecycle/rebuild/quick-search-rebuild.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/configuration/apply-configuration.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/configuration/degrade-fields.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/configuration/field-eligibility.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/configuration/projection.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/configuration/provision.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/indexing/index-records.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/maintenance/reconcile.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/maintenance/reindex.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/maintenance/tenant-participant.provisioning.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/maintenance/wipe.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/persistence/configurations.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/persistence/documents.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/persistence/index-states.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/integration/services/rebuild/request-rebuild.integration.spec.js'
      - 'services-platform:modules/quick-search/tests/unit/aws/api/quick-search-api-mapper.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/aws/api/quick-search-permission-keys.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/db/quick-search-field-list.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/registry/record-types.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/configuration/degrade-fields.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/configuration/field-eligibility.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/indexing/display-images.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/indexing/handle-change-events.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/maintenance/maintenance-pass.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/maintenance/tenant-participant.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/providers/algolia/algolia-provider.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/providers/algolia/credentials.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/providers/algolia/documents.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/providers/algolia/filters.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/providers/algolia/settings.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/providers/provider.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/providers/record-type-source.spec.ts'
      - 'services-platform:modules/quick-search/tests/unit/services/rebuild/request-rebuild.spec.ts'
      - 'services-platform:modules/snapshots/tests/integration/db/snapshot-runs-capability-writer-role.integration.spec.js'
      - 'services-platform:modules/snapshots/tests/integration/db/snapshot-runs-writer-grants-reassert.integration.spec.js'
      - 'services-platform:modules/snapshots/tests/integration/services/persistence/snapshot-tenant-policies.integration.spec.js'
      - 'services-platform:modules/snapshots/tests/unit/snapshots-configuration.spec.ts'
    affects:
      - TST-PFM-QRY-001
      - TST-PFM-QRY-002
      - TST-PFM-QRY-004
      - TST-PFM-QRY-005
      - TST-PFM-QRY-006
      - TST-PFM-QRY-007
      - TST-PFM-QRY-008
      - TST-PFM-QRY-009
      - TST-PFM-QRY-010
      - TST-PFM-QRY-011
      - TST-PFM-QRY-012
      - TST-PFM-QRY-013
      - TST-PFM-QRY-014
      - TST-PFM-QRY-015
      - TST-PFM-QRY-016
      - TST-PFM-QRY-017
      - TST-PFM-QRY-018
      - TST-PFM-QRY-019
      - TST-PFM-QRY-020
      - TST-PFM-QRY-021
      - TST-PFM-QRY-022
      - TST-PFM-QRY-024
      - TST-PFM-QRY-025
      - TST-PFM-QRY-026
      - TST-PFM-QRY-028
      - TST-PFM-QRY-029
      - TST-PFM-QRY-030
      - TST-PFM-QRY-031
      - TST-PFM-QRY-032
      - TST-PFM-QRY-033
      - TST-PFM-QRY-034
      - TST-PFM-QRY-035
      - TST-PFM-QRY-036
      - TST-PFM-QRY-037
      - TST-PFM-QRY-038
      - TST-PFM-QRY-039
      - TST-PFM-QRY-040
      - TST-PFM-QRY-041
      - TST-PFM-QRY-042
      - TST-PFM-QRY-043
      - TST-PFM-QRY-044
      - TST-PFM-QRY-045
      - TST-PFM-QRY-046
      - TST-PFM-QRY-048
      - TST-PFM-QRY-049
      - TST-PFM-QRY-051
      - TST-PFM-QRY-052
      - TST-PFM-QRY-056
      - TST-PFM-QRY-058
      - TST-PFM-QRY-059
      - TST-PFM-QRY-060
      - TST-PFM-QRY-061
      - TST-PFM-QRY-062
      - TST-PFM-QRY-063
      - TST-PFM-QRY-064
      - TST-PFM-QRY-065
      - TST-PFM-QRY-066
      - TST-PFM-QRY-067
      - TST-PFM-QRY-070
      - TST-PFM-QRY-071
      - TST-PFM-QRY-072
      - TST-PFM-QRY-073
      - TST-PFM-QRY-075
      - TST-PFM-QRY-076
      - TST-PFM-QRY-077
      - TST-PFM-QRY-078
      - TST-PFM-QRY-079
      - TST-PFM-QRY-080
      - TST-PFM-QRY-081
      - TST-PFM-QRY-082
      - TST-PFM-QRY-083
      - TST-PFM-QRY-084
      - TST-PFM-QRY-085
      - TST-PFM-QRY-086
      - TST-PFM-QRY-087
      - TST-PFM-QRY-088
      - TST-PFM-QRY-089
      - TST-PFM-QRY-090
      - TST-PFM-QRY-091
      - TST-PFM-QRY-092
      - TST-PFM-QRY-093
      - TST-PFM-QRY-094
      - TST-PFM-QRY-098
      - TST-PFM-QRY-099
      - TST-PFM-QRY-100
      - TST-PFM-QRY-101
      - TST-PFM-QRY-102
      - TST-PFM-QRY-103
      - TST-PFM-QRY-104
      - TST-PFM-QRY-105
      - TST-PFM-QRY-106
      - TST-PFM-QRY-107
      - TST-PFM-QRY-114
      - TST-PFM-QRY-115
      - TST-PFM-QRY-116
      - TST-PFM-QRY-117
      - TST-PFM-QRY-119
      - TST-PFM-QRY-120
      - TST-PFM-QRY-121
      - TST-PFM-QRY-122
      - TST-PFM-QRY-123
      - TST-PFM-QRY-124
      - TST-PFM-QRY-125
      - TST-PFM-QRY-126
      - TST-PFM-QRY-128
      - TST-PFM-QRY-129
      - TST-PFM-QRY-130
      - TST-PFM-QRY-131
      - TST-PFM-QRY-132
      - TST-PFM-QRY-133
      - TST-PFM-QRY-134
      - TST-PFM-QRY-135
      - TST-PFM-QRY-136
      - TST-PFM-QRY-137
      - TST-PFM-QRY-138
      - TST-PFM-QRY-141
      - TST-PFM-QRY-144
      - TST-PFM-QRY-145
      - TST-PFM-QRY-146
      - TST-PFM-QRY-148
      - TST-PFM-QRY-152
      - TST-PFM-QRY-153
      - TST-PFM-QRY-154
      - TST-PFM-QRY-155
      - TST-PFM-QRY-156
      - TST-PFM-QRY-157
      - TST-PFM-QRY-158
      - TST-PFM-QRY-159
      - TST-PFM-QRY-160
      - TST-PFM-QRY-161
      - TST-PFM-QRY-162
      - TST-PFM-QRY-163
      - TST-PFM-QRY-164
      - TST-PFM-QRY-165
      - TST-PFM-QRY-166
      - TST-PFM-QRY-167
      - TST-PFM-QRY-168
      - TST-PFM-QRY-169
      - TST-PFM-QRY-170
      - TST-PFM-QRY-171
      - TST-PFM-QRY-172
      - TST-PFM-QRY-173
      - TST-PFM-QRY-174
      - TST-PFM-QRY-175
      - TST-PFM-QRY-176
      - TST-PFM-QRY-177
      - TST-PFM-QRY-178
      - TST-PFM-QRY-179
      - TST-PFM-QRY-180
      - TST-PFM-QRY-181
      - TST-PFM-QRY-182
      - TST-PFM-QRY-183
      - TST-PFM-QRY-184
      - TST-PFM-QRY-185
      - TST-PFM-QRY-188
      - TST-PFM-QRY-189
      - TST-PFM-QRY-190
      - TST-PFM-QRY-191
      - TST-PFM-QRY-192
      - TST-PFM-QRY-195
      - TST-PFM-QRY-196
      - TST-PFM-QRY-198
      - TST-PFM-QRY-199
      - TST-PFM-QRY-202
      - TST-PFM-QRY-203
      - TST-PFM-QRY-204
      - TST-PFM-QRY-205
      - TST-PFM-QRY-206
      - TST-PFM-QRY-207
      - TST-PFM-QRY-212
      - TST-PFM-QRY-215
      - TST-PFM-QRY-216
      - TST-PFM-QRY-217
      - TST-PFM-QRY-219
      - TST-PFM-QRY-221
      - TST-PFM-QRY-236
      - TST-PFM-QRY-237
      - TST-PFM-QRY-238
      - TST-PFM-QRY-239
      - TST-PFM-QRY-240
      - TST-PFM-QRY-241
      - TST-PFM-QRY-242
      - TST-PFM-QRY-243
      - TST-PFM-QRY-244
      - TST-PFM-QRY-245
      - TST-PFM-QRY-246
      - TST-PFM-QRY-247
      - TST-PFM-QRY-248
      - TST-PFM-QRY-249
      - TST-PFM-QRY-251
      - TST-PFM-QRY-252
      - TST-PFM-QRY-253
      - TST-PFM-QRY-255
      - TST-PFM-QRY-256
      - TST-PFM-QRY-257
      - TST-PFM-QRY-258
      - TST-PFM-QRY-259
      - TST-PFM-QRY-260
      - TST-PFM-QRY-261
      - TST-PFM-QRY-264
      - TST-PFM-QRY-265
      - TST-PFM-QRY-267
      - TST-PFM-QRY-268
      - TST-PFM-QRY-269
      - TST-PFM-QRY-271
      - TST-PFM-QRY-272
      - TST-PFM-QRY-273
      - TST-PFM-QRY-274
      - TST-PFM-QRY-275
      - TST-PFM-QRY-277
      - TST-PFM-QRY-278
      - TST-PFM-QRY-279
      - TST-PFM-QRY-280
      - TST-PFM-QRY-281
      - TST-PFM-QRY-282
      - TST-PFM-QRY-283
      - TST-PFM-QRY-284
      - TST-PFM-QRY-285
      - TST-PFM-QRY-288
      - TST-PFM-QRY-291
      - TST-PFM-QRY-292
      - TST-PFM-QRY-294
      - TST-PFM-QRY-295
      - TST-PFM-QRY-297
      - TST-PFM-QRY-298
      - TST-PFM-QRY-299
      - TST-PFM-QRY-300
      - TST-PFM-QRY-303
      - TST-PFM-QRY-304
      - TST-PFM-QRY-305
      - TST-PFM-QRY-306
      - TST-PFM-QRY-308
      - TST-PFM-QRY-309
      - TST-PFM-QRY-310
      - TST-PFM-QRY-311
      - TST-PFM-QRY-312
      - TST-PFM-QRY-313
      - TST-PFM-QRY-314
      - TST-PFM-QRY-315
      - TST-PFM-QRY-316
      - TST-PFM-QRY-317
      - TST-PFM-QRY-318
      - TST-PFM-QRY-319
      - TST-PFM-QRY-320
      - TST-PFM-QRY-321
      - TST-PFM-QRY-323
      - TST-PFM-QRY-324
      - TST-PFM-QRY-325
      - TST-PFM-QRY-327
      - TST-PFM-QRY-328
      - TST-PFM-QRY-329
      - TST-PFM-QRY-330
      - TST-PFM-QRY-331
      - TST-PFM-QRY-336
      - TST-PFM-QRY-337
      - TST-PFM-QRY-338
      - TST-PFM-QRY-339
      - TST-PFM-QRY-340
      - TST-PFM-QRY-342
      - TST-PFM-QRY-344
      - TST-PFM-QRY-346
      - TST-PFM-QRY-348
      - TST-PFM-QRY-351
      - TST-PFM-QRY-352
      - TST-PFM-QRY-353
      - TST-PFM-QRY-354
      - TST-PFM-QRY-355
      - TST-PFM-QRY-356
      - TST-PFM-QRY-357
      - TST-PFM-QRY-358
      - TST-PFM-QRY-360
      - TST-PFM-QRY-361
      - TST-PFM-QRY-362
      - TST-PFM-QRY-363
      - TST-PFM-QRY-364
      - TST-PFM-QRY-365
      - TST-PFM-QRY-366
      - TST-PFM-QRY-367
      - TST-PFM-QRY-368
      - TST-PFM-QRY-369
      - TST-PFM-QRY-370
      - TST-PFM-QRY-373
      - TST-PFM-QRY-374
      - TST-PFM-QRY-375
      - TST-PFM-QRY-376
      - TST-PFM-QRY-377
      - TST-PFM-QRY-378
      - TST-PFM-QRY-379
      - TST-PFM-QRY-380
      - TST-PFM-QRY-381
      - TST-PFM-QRY-382
      - TST-PFM-QRY-383
      - TST-PFM-QRY-384
      - TST-PFM-QRY-385
      - TST-PFM-QRY-386
      - TST-PFM-QRY-387
      - TST-PFM-QRY-388
      - TST-PFM-QRY-389
      - TST-PFM-QRY-390
      - TST-PFM-QRY-391
      - TST-PFM-QRY-392
      - TST-PFM-QRY-393
      - TST-PFM-QRY-396
      - TST-PFM-QRY-397
      - TST-PFM-QRY-398
      - TST-PFM-QRY-399
      - TST-PFM-QRY-400
      - TST-PFM-QRY-401
      - TST-PFM-QRY-402
      - TST-PFM-QRY-403
      - TST-PFM-QRY-404
      - TST-PFM-QRY-405
      - TST-PFM-QRY-406
      - TST-PFM-QRY-407
      - TST-PFM-QRY-408
      - TST-PFM-QRY-410
      - TST-PFM-QRY-412
      - TST-PFM-QRY-414
      - TST-PFM-QRY-415
      - TST-PFM-QRY-416
      - TST-PFM-QRY-420
      - TST-PFM-QRY-421
      - TST-PFM-QRY-422
      - TST-PFM-QRY-424
      - TST-PFM-QRY-425
      - TST-PFM-QRY-426
      - TST-PFM-QRY-427
      - TST-PFM-QRY-428
      - TST-PFM-QRY-429
      - TST-PFM-QRY-430
      - TST-PFM-QRY-431
      - TST-PFM-QRY-434
      - TST-PFM-QRY-436
      - TST-PFM-QRY-437
      - TST-PFM-QRY-440
      - TST-PFM-QRY-441
      - TST-PFM-QRY-442
      - TST-PFM-QRY-443
      - TST-PFM-QRY-444
      - TST-PFM-QRY-446
      - TST-PFM-QRY-448
      - TST-PFM-QRY-449
      - TST-PFM-QRY-450
      - TST-PFM-QRY-451
      - TST-PFM-QRY-452
      - TST-PFM-QRY-453
      - TST-PFM-QRY-455
      - TST-PFM-QRY-456
      - TST-PFM-QRY-457
      - TST-PFM-QRY-458
      - TST-PFM-QRY-459
      - TST-PFM-QRY-460
      - TST-PFM-QRY-461
      - TST-PFM-QRY-462
      - TST-PFM-QRY-463
      - TST-PFM-QRY-464
      - TST-PFM-QRY-465
      - TST-PFM-QRY-466
      - TST-PFM-QRY-469
      - TST-PFM-QRY-470
      - TST-PFM-QRY-474
      - TST-PFM-QRY-475
    reason: 'These files contain executable assertions, but the inspected acceptance scenarios do not have an exact verified mapping to them.'
checker_compatibility_gaps:
  - id: FND-PFM-QRY-073
    source: 'rhythm-v2-docs:tools/check-corpus.mjs:182'
    ids: *ref_21
    statement: Resolved in continuation pass 2. The current checker accepts dated testing back-fill reports, and the required report is present. The earlier filename limitation is retained here as examination history.
    kind: coverage-gap
    provenance: observed
    status: resolved
    resolved_at: '2026-10-23'
    scope: current checker compatibility verified without editing the checker
  - id: FND-PFM-QRY-074
    source: 'rhythm-v2-docs:tools/check-corpus.mjs:341'
    ids: *ref_22
    statement: Resolved in continuation pass 2. Executable references accept registered feature scenario identifiers. The three inspected feature bindings are active and pass corpus conformance.
    kind: coverage-gap
    provenance: observed
    status: resolved
    resolved_at: '2026-10-23'
    scope: current checker compatibility verified without editing the checker
control_gap_evidence:
  - finding: FND-PFM-QRY-051
    controls:
      - TC-AVL-004
      - TC-PI-004
    provenance: documented
    source: 'services-platform:modules/data-exports/services/executions/admit-execution.ts:admitExecution'
    related_finding: FND-PFM-QRY-032
  - finding: FND-PFM-QRY-052
    controls:
      - TC-AVL-004
    provenance: observed
    source: 'services-platform:modules/data-exports/services/destinations/bindings.ts:inMemoryDestinationBindings'
    related_finding: FND-PFM-QRY-033
  - finding: FND-PFM-QRY-053
    controls:
      - TC-DAT-004
    provenance: observed
    source: 'services-platform:modules/tenants/services/lifecycle/participants.ts:platformQueriesParticipant'
    related_finding: FND-PFM-QRY-040
---

# Queries planning findings and questions

## Findings

The entries retain unresolved product choices, implementation limits and corrections made during examination. The examination report records which gaps are corrected and which still require a decision or proof.

| id | severity | statement | affects | evidence | kind |
|---|---|---|---|---|---|
| `FND-PFM-QRY-001` | medium | The original registry mixed this module with data-job material and omitted relevant records and console components. The module charter now identifies the query scope and leaves data-job ownership with operations. | `MOD-PFM-QRY` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-002` | high | Quick Search authorizes organization lookup through contact-read access. The recorded organization-search decision later requires organization read and query access. These decisions conflict, so the intended gate needs Andrew’s ruling. | `BR-CAP-PFM-QRY-016-02`, `CAP-PFM-QRY-016`, `OQ-PFM-QRY-001` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-003` | medium | The standalone Search page filters locally supplied demonstration records. The header lookup uses the real search integration. The separate page can therefore present sample records as if they were live results. | `CAP-PFM-QRY-016` | Source listed in frontmatter | defect |
| `FND-PFM-QRY-004` | medium | Workspace export admission is implemented, but the current module does not generate packages. Download, cancellation, early deletion and delivery retry remain unavailable. The accepted design also includes later protections and delivery behavior that the foundation does not enforce. | `BR-CAP-PFM-QRY-018-08`, `BR-CAP-PFM-QRY-018-12`, `BR-CAP-PFM-QRY-018-13`, `CAP-PFM-QRY-018`, `JNY-PFM-QRY-006` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-005` | low | The permission catalog includes seven unused standard actions: four query write actions and three Quick Search configuration actions. These declarations do not establish corresponding supported routes. | `CAP-PFM-QRY-002`, `CAP-PFM-QRY-017` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-006` | medium | The reporting milestone remains in progress and its last recorded cumulative run is incomplete. Approved decisions establish intent for the catalog and sharing work; they do not establish acceptance of the implementation. | `CAP-PFM-QRY-011`, `CAP-PFM-QRY-012`, `JNY-PFM-QRY-001` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-007` | low | Older descriptions use the saved-query use permission for library access. The newer read tier and route declarations require the read permission for listing, opening and running, so a role carrying use alone is insufficient. | `BR-CAP-PFM-QRY-006-03`, `BR-CAP-PFM-QRY-011-02` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-008` | medium | The milestone records joined-dataset checking as unresolved for report discovery. The catalog can include a presentation whose source later fails during execution. The corrected rules describe the narrower observed filter. | `BR-CAP-PFM-QRY-011-03`, `BR-CAP-PFM-QRY-012-08` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-009` | low | The read tier can export executable query results but cannot request report rendering. The milestone’s broader wording about preventing exports leaves the intended distinction unresolved. | `BR-CAP-PFM-QRY-014-01`, `BR-CAP-PFM-QRY-013-01`, `OQ-PFM-QRY-002` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-010` | medium | Report rendering and report scheduling exist beyond the initial catalog milestone’s scope. Their implementation does not supply approval for every later reporting outcome; unconfirmed behavior remains proposed. | `CAP-PFM-QRY-013`, `CAP-PFM-QRY-015`, `BR-CAP-PFM-QRY-015-12` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-011` | low | Index configuration and rebuild operations have backend surfaces, and snapshot months have an available-period API. No dedicated console configuration screen or report period-picker integration is established by the scoped pages. | `CAP-PFM-QRY-017`, `CAP-PFM-QRY-019` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-012` | medium | The language-size limits come from the semantic query design and a shared request schema outside the pinned repositories examined here. No cited in-scope test establishes those limits, so their rule remains documented and its acceptance scenario remains proposed. | `BR-CAP-PFM-QRY-002-15` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-013` | low | The older scheduling record and the public download implementation disagree about the download route and expired-link response. The service’s debt record describes an invalid-link page that still uses a successful HTTP status. | `BR-CAP-PFM-QRY-014-09` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-014` | low | The saved-query record makes a broad statement that version headers are unused. Explorer preference replacement provides a counterexample by using a version header. | `BR-CAP-PFM-QRY-009-11` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-015` | low | The browser journey identifies a duplicate pause label after loss of schedule-owner access. Its assertion asks for the explanation to appear once; this examination does not establish that the defect has been repaired. | `CAP-PFM-QRY-015` | Source listed in frontmatter | defect |
| `FND-PFM-QRY-016` | medium | An existing browser test proves that executable assertions were written. It does not prove a successful run at these source revisions. The recorded reporting run remains incomplete and some journeys identify console defects. | `JNY-PFM-QRY-001`, `JNY-PFM-QRY-002`, `JNY-PFM-QRY-004`, `MOD-PFM-QRY` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-017` | low | Several required proofs still have proposed acceptance scenarios without executable bindings. The unbound scenarios are explicit proof obligations; their presence does not establish passing behavior. | `BR-CAP-PFM-QRY-002-15`, `BR-CAP-PFM-QRY-005-08`, `BR-CAP-PFM-QRY-005-11`, `BR-CAP-PFM-QRY-010-01`, `BR-CAP-PFM-QRY-010-08`, `BR-CAP-PFM-QRY-012-08`, `BR-CAP-PFM-QRY-018-12`, `BR-CAP-PFM-QRY-018-13`, `BR-CAP-PFM-QRY-019-09` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-018` | low | Query generation has a separate permission and allowance mechanism, but the cited query material supplies no product approval for the complete assisted-authoring outcome. The capability retains proposed intent. | `CAP-PFM-QRY-003` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-019` | low | The earlier report inventory includes accounting calculations and period behavior outside this module’s ownership. Those inventory entries remain for Accounting; only the generic presentation and delivery concerns belong here. | `MOD-PFM-QRY`, `CAP-PFM-QRY-011` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-020` | low | Built-in report catalog filtering belongs to console behavior. The module’s record describes the intended hiding rule, but the scoped evidence does not independently prove every built-in presentation is hidden correctly. | `BR-CAP-PFM-QRY-011-14` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-021` | low | The export coverage implementation was reconstructed after an ignore rule lost its source. The repair record preserves that history; current fingerprint choices cannot be treated as proof of the original implementation. | `BR-CAP-PFM-QRY-018-10` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-022` | low | The Quick Search record describes broad rebuild scans, missing fan-out indexing, delayed coalesced targets, a limited field-retirement pass and shared-role secret access. Its production-provider limitation is a documented condition at the source revision, not a newly inspected deployment state. | `CAP-PFM-QRY-016`, `CAP-PFM-QRY-017` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-023` | medium | The requested planning brief is absent from the starting documentation revision. Its original discovery instructions therefore remain unavailable to this examination. | `MOD-PFM-QRY` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-024` | medium | The accepted custom-table phase excludes assignment pins and reverse joins into custom tables. Later code implements those behaviors, but that acceptance citation does not confirm their intent. | `CAP-PFM-QRY-005`, `BR-CAP-PFM-QRY-005-09`, `BR-CAP-PFM-QRY-005-13` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-025` | medium | Navigation retains a bounded identifier window. Extending or rebuilding it queries again, so the implementation does not guarantee an immutable entire list or continued execution after access is withdrawn. | `CAP-PFM-QRY-010`, `JNY-PFM-QRY-003` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-026` | medium | The report catalog evaluates visible sources and base-dataset access without validating the full query. A dashboard with no sources passes that check. Catalog visibility therefore does not guarantee successful result execution. | `CAP-PFM-QRY-011`, `CAP-PFM-QRY-012` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-027` | medium | The initial draft lacked an outcome for internal dated condition evaluation and explicit rules for grouped calculations, SQL safety, custom-table revalidation, generation recovery and console lookup timing. This examination adds a capability and acceptance set for the distinct outcome and rule coverage for the remaining facets. | `CAP-PFM-QRY-002`, `CAP-PFM-QRY-005`, `CAP-PFM-QRY-020` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-028` | low | The initial claim of complete backend suite binding omitted the report-export API file. The report-rendering acceptance set now binds an existing permission-refusal case from that suite. | `ATS-PFM-QRY-013`, `MOD-PFM-QRY` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-029` | medium | The original search configuration binding proves that a rebuild job is returned. It does not prove publication or lookup through the added field. The complete interaction is now a proposed browser scenario. | `ATS-PFM-QRY-017`, `AS-JNY-PFM-QRY-005-01` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-030` | low | The charter maps 115 operations, but the route declarations hold 121: deprecating, disabling and restoring a custom query table, and the queries, Explorer and snapshots health routes, are unmapped. The lifecycle routes also check no starting state, so restoring an active table is accepted and recorded as a restore. The service contract covers every route. | `MOD-PFM-QRY`, `SVC-PFM-QRY-queries`, `STATE-PFM-QRY-001`, `CAP-PFM-QRY-005` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-031` | low | Two Rhythm HQ console screens administer custom query tables, but the charter’s hosted screens and the registry’s console paths omit them. The design adds screen contracts for both; the charter should list them at its next revision. | `MOD-PFM-QRY`, `SCR-PFM-QRY-017`, `SCR-PFM-QRY-018` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-032` | high | An admitted workspace data export stays queued because no dispatcher or generation job is deployed, and cancellation answers not implemented. Only one execution may be queued or running, so the first Export now in a workspace blocks every later request with no recovery available to the customer. | `CAP-PFM-QRY-018`, `BR-CAP-PFM-QRY-018-06`, `BR-CAP-PFM-QRY-018-08`, `WF-PFM-QRY-019`, `STATE-PFM-QRY-009`, `ADR-PFM-QRY-013`, `OQ-PFM-QRY-003` | Source listed in frontmatter | defect |
| `FND-PFM-QRY-033` | medium | Destination bindings to storage connections are held in process memory until the Integration Platform’s binding store merges. A destination row and its audit event are durable, but the binding id it records does not survive a restart, so no delivery could rely on it. | `SVC-PFM-QRY-data-exports`, `STATE-PFM-QRY-011`, `BR-CAP-PFM-QRY-018-05` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-034` | low | Export definitions declare paused and suspended statuses and admission refuses a suspended definition, but nothing sets either status, and the staff operate permission reaches no route. The suspension guard protects a state the product cannot enter. | `SVC-PFM-QRY-data-exports`, `DOM-PFM-QRY-004`, `CAP-PFM-QRY-018` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-035` | medium | The export concept joins query and report files with complete workspace packages. They have different service modules, permissions, storage, retention and lifecycles, so one domain object carries two largely independent designs. | `CON-PFM-QRY-004`, `DOM-PFM-QRY-004`, `ADR-PFM-QRY-001`, `OQ-PFM-QRY-004` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-036` | low | The query concept spans two service modules: saved queries, recipes and generations in queries, and Explorer views, preferences and navigation sessions in explorer. The design keeps one domain object and records facet ownership. | `CON-PFM-QRY-002`, `DOM-PFM-QRY-002`, `SVC-PFM-QRY-explorer`, `ADR-PFM-QRY-001` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-037` | low | The planning concepts give queries a draft, private and shared lifecycle and reports a private, shared and deleted lifecycle. These are audience values and a removal, not states with transitions, so the design records no state models for them. | `CON-PFM-QRY-002`, `CON-PFM-QRY-003`, `DOM-PFM-QRY-002`, `DOM-PFM-QRY-003`, `ADR-PFM-QRY-009` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-038` | medium | A report schedule run waits inside the schedule consumer for the renderer, polling for up to twelve minutes. Only three consumers run at once, so a slow renderer backlog can delay every scheduled query delivery in the environment. | `WF-PFM-QRY-008`, `WF-PFM-QRY-007`, `STATE-PFM-QRY-008` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-039` | low | Quick Search provisions every record type when a workspace is created, as well as on first search access. The planning rule describes only the first-search path, so its description of when indexing begins is incomplete. | `BR-CAP-PFM-QRY-016-06`, `WF-PFM-QRY-014`, `WF-PFM-QRY-021` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-040` | medium | Query and report files stay in the Rhythm 1.0 bucket for up to thirty days after a workspace is deleted, because the purge removes only the rows. The bucket’s own lifecycle rule, outside Platform’s control, is the only retention mechanism. | `WF-PFM-QRY-021`, `DOM-PFM-QRY-004`, `BR-CAP-PFM-QRY-014-08` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-041` | low | Explorer views, navigation and selection are used by list screens owned by the applications that own the records. This module therefore has no Explorer screen contract, and those applications’ list screen contracts should name the Explorer operations they call. | `SVC-PFM-QRY-explorer`, `CAP-PFM-QRY-009`, `CAP-PFM-QRY-010` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-042` | medium | Production names no validation workspace, by Andrew’s decision of 2026-10-12. Custom query tables therefore cannot be analysed, previewed, published or revalidated there, and the staff outcome is available only in development. The planning rule covers absent configuration but not this production consequence. | `CAP-PFM-QRY-005`, `BR-CAP-PFM-QRY-005-05`, `WF-PFM-QRY-009`, `WF-PFM-QRY-010`, `ADR-PFM-QRY-014` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-043` | low | The snapshot routes run on the jobs module’s HTTP function rather than a snapshots function. The contract records this deployment boundary because operational ownership of those routes sits with the jobs function. | `SVC-PFM-QRY-snapshots` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-044` | medium | The requested design brief is absent from the starting documentation revision. Examination uses the authoring contract, module charter, planning artifacts and cited product records; any additional instructions in that brief remain unknown. | `MOD-PFM-QRY` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-045` | medium | The planning artifacts remain drafts and the module is awaiting planning approval. Confirmed individual decisions do not establish approval of the complete planning layer; Andrew must confirm the baseline before implementation preparation. | `MOD-PFM-QRY` | Source listed in frontmatter | undocumented |
| `FND-PFM-QRY-046` | high | Search rebuilds replace provider documents in place. Neither server access filters nor browser requests select the active generation, so a partial rebuild can change live results before ledger activation. The planning promise of serving the old generation until publication is not enforced. | `BR-CAP-PFM-QRY-017-05`, `WF-PFM-QRY-016` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-047` | medium | Description resolution reads change stamps and metadata separately without a common database snapshot or final stamp check. Stamp triggers alone do not establish a consistent cached description across concurrent registration changes. The effect of that race remains untested. | `WF-PFM-QRY-003` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-048` | medium | The live generation smoke suite checks successful execution, invocation metadata, positive settled cost and released reservations. It does not assert the requested filter, default columns, relationship or absence condition. Those semantic expectations are additional proof obligations rather than established smoke assertions. | `IOP-PFM-QRY-001` | Source listed in frontmatter | debt |
| `FND-PFM-QRY-049` | medium | Chunked snapshot runs commit rows before final validation. A failed final transaction preserves the previous current version but can leave committed unpublished chunks. The planning claim that a failed run leaves no rows is broader than the shared runner enforces. | `BR-CAP-PFM-QRY-019-06`, `DOM-PFM-QRY-006`, `WF-PFM-QRY-018` | Source listed in frontmatter | inconsistency |
| `FND-PFM-QRY-050` | high | Workspace export screens use a direct client that expects different definition, history and detail envelopes from the service responses. It sends cursor where the service reads after, omits the existing-definition write version, and calls undeclared schedule and picker routes. Case conversion does not reconcile these structural differences, so the built screens are not evidence of a working live integration. | `SCR-PFM-QRY-012`, `SCR-PFM-QRY-013`, `SCR-PFM-QRY-014`, `SVC-PFM-QRY-data-exports` | Source listed in frontmatter | defect |
| `FND-PFM-QRY-051` | medium | edge, failure, boundary, concurrency, transition, invariant coverage needs focused proofs. The formal lifecycle has 2 transitions whose complete guards and effects remain unverified. Some domain invariants lack focused assertions. 3 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-001`, `ATS-PFM-QRY-001` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-052` | medium | concurrency coverage needs focused proofs. 4 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-002`, `ATS-PFM-QRY-002` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-053` | medium | validation, edge, transition coverage needs focused proofs. The formal lifecycle has 6 transitions whose complete guards and effects remain unverified. 1 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-003`, `ATS-PFM-QRY-003` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-054` | medium | failure, boundary, concurrency coverage needs focused proofs. 2 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-004`, `ATS-PFM-QRY-004` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-055` | medium | rule, edge, transition, invariant coverage needs focused proofs. The formal lifecycle has 11 transitions whose complete guards and effects remain unverified. Some domain invariants lack focused assertions. 4 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-005`, `ATS-PFM-QRY-005` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-056` | medium | edge, failure coverage needs focused proofs. 3 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-006`, `ATS-PFM-QRY-006` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-057` | medium | edge, failure, concurrency coverage needs focused proofs. 2 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-007`, `ATS-PFM-QRY-007` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-058` | medium | failure, boundary, transition coverage needs focused proofs. The formal lifecycle has 3 transitions whose complete guards and effects remain unverified. 2 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-008`, `ATS-PFM-QRY-008` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-059` | medium | failure, invariant coverage needs focused proofs. 2 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-009`, `ATS-PFM-QRY-009` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-060` | medium | failure, concurrency, transition coverage needs focused proofs. The formal lifecycle has 3 transitions whose complete guards and effects remain unverified. 4 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-010`, `ATS-PFM-QRY-010` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-061` | medium | edge, failure, invariant coverage needs focused proofs. 4 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-011`, `ATS-PFM-QRY-011` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-062` | medium | failure, boundary, concurrency coverage needs focused proofs. 3 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-012`, `ATS-PFM-QRY-012` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-063` | medium | rule, edge, concurrency, invariant coverage needs focused proofs. Some domain invariants lack focused assertions. 4 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-013`, `ATS-PFM-QRY-013` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-064` | medium | failure, concurrency, transition, invariant coverage needs focused proofs. The formal lifecycle has 6 transitions whose complete guards and effects remain unverified. Some domain invariants lack focused assertions. 3 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-014`, `ATS-PFM-QRY-014` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-065` | medium | transition, invariant coverage needs focused proofs. The formal lifecycle has 16 transitions whose complete guards and effects remain unverified. Some domain invariants lack focused assertions. 4 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-015`, `ATS-PFM-QRY-015` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-066` | medium | invariant coverage needs focused proofs. Some domain invariants lack focused assertions. 2 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-016`, `ATS-PFM-QRY-016` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-067` | medium | transition, invariant coverage needs focused proofs. The formal lifecycle has 7 transitions whose complete guards and effects remain unverified. Some domain invariants lack focused assertions. 4 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-017`, `ATS-PFM-QRY-017` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-068` | medium | validation, edge, transition, invariant coverage needs focused proofs. The formal lifecycle has 20 transitions whose complete guards and effects remain unverified. Some domain invariants lack focused assertions. 5 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-018`, `ATS-PFM-QRY-018` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-069` | medium | edge, transition, invariant coverage needs focused proofs. The formal lifecycle has 15 transitions whose complete guards and effects remain unverified. Some domain invariants lack focused assertions. 4 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-019`, `ATS-PFM-QRY-019` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-070` | medium | validation, failure, concurrency coverage needs focused proofs. 4 scenarios remain unbound to executable assertions. | `CAP-PFM-QRY-020`, `ATS-PFM-QRY-020` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-071` | medium | Compound rule bindings establish only their cited assertions. Query smoke does not establish request semantics, rebuild uniqueness does not establish provider publication isolation, and small snapshot rollback does not establish chunk cleanup. | `ATS-PFM-QRY-003-05`, `ATS-PFM-QRY-017-05`, `ATS-PFM-QRY-019-06` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-072` | medium | 362 registered executable files lack an exact acceptance-scenario mapping. Their assertions remain engineering evidence until a focused mapping verifies the specification example they execute. | `MOD-PFM-QRY` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-073` | medium | Resolved in continuation pass 2. The current checker accepts dated testing back-fill reports, and the required report is present. The earlier filename limitation is retained here as examination history. | `MOD-PFM-QRY` | Source listed in frontmatter | coverage-gap |
| `FND-PFM-QRY-074` | medium | Resolved in continuation pass 2. Executable references accept registered feature scenario identifiers. The three inspected feature bindings are active and pass corpus conformance. | `FAS-PFM-QRY-04-02`, `FAS-PFM-QRY-05-04`, `FAS-PFM-QRY-08-03`, `TST-PFM-QRY-047`, `TST-PFM-QRY-140`, `TST-PFM-QRY-472` | Source listed in frontmatter | coverage-gap |

## Open Questions

| id | question | why_it_matters | options | recommendation | affects |
|---|---|---|---|---|---|
| `OQ-PFM-QRY-001` | Which access grants should authorize organization lookup? | The contact-based lookup gate and the later organization-search decision permit different audiences. | Keep the contact-read gate; require organization read and query access; require read access to both record types. | The product should require organization read and query access so organization lookup follows the recorded organization-search decision. | `CAP-PFM-QRY-016`, `BR-CAP-PFM-QRY-016-02` |
| `OQ-PFM-QRY-002` | Which export actions should the read tier receive? | Query files and report rendering currently use different authorization gates. | Preserve the current distinction; disallow both kinds of export; allow both for readable sources. | The product should resolve the export policy in the reporting export milestone and apply the chosen read-tier restriction consistently. | `CAP-PFM-QRY-014`, `CAP-PFM-QRY-013` |
| `OQ-PFM-QRY-003` | How should Export now behave until the workspace export engine is deployed? | The first admitted export blocks every later request indefinitely, and customers cannot cancel it. | Keep admitting and add a staff cancel; refuse admission with not implemented; hide Export now in the console until the engine ships. | The product should refuse admission, or hide Export now, until the generation engine is deployed, and staff should settle any execution already queued. | `CAP-PFM-QRY-018`, `FND-PFM-QRY-032`, `WF-PFM-QRY-019` |
| `OQ-PFM-QRY-004` | Should the export concept be split into query file delivery and the workspace data package? | One concept and one domain object now cover two designs with separate owners, permissions and lifecycles. | Keep one concept with two facets; split into two concepts at the next planning revision; move the workspace package under the data job engine. | The product should split the concept at the next planning revision so each design has its own domain object and state models. | `CON-PFM-QRY-004`, `DOM-PFM-QRY-004`, `FND-PFM-QRY-035` |

## Continuation (pass 2)

The filename and feature-reference compatibility findings are resolved against the current checker. Source inspection corrects the scheduled-delivery prerequisite to report access loss and activates the three pending feature bindings. Other coverage and product findings remain open; passing corpus conformance does not establish application execution.
