---
id: FAS-PFM-QRY-06
feature: FEAT-PFM-QRY-06
product_area: platform
module: queries
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  rhythm-v2-docs: 99376625d3e7ac26936413cfc31a88fba6562464
capabilities:
  - CAP-PFM-QRY-016
  - CAP-PFM-QRY-017
scenarios:
  - id: FAS-PFM-QRY-06-01
    title: Configure and find a contact through an added field
    kind: behaviour
    exercises:
      - CAP-PFM-QRY-016
      - CAP-PFM-QRY-017
    relies_on:
      - ATS-PFM-QRY-017-12
      - ATS-PFM-QRY-016-11
    preconditions: A contact has a searchable custom value absent from default settings.
    steps: 'Add the eligible field, wait for rebuilding, open lookup and search its value.'
    expected: >-
      The contact is found through that field after indexing and ordinary discovery still respects inactive
      inclusion.
    negative: false
    data_needs: 'Use an isolated workspace, named fixture records and the caller grants described by the prerequisites.'
    bound_to: []
    provenance: proposed
    source:
      - FND-PFM-QRY-029
      - 'services-platform:docs/quick-search.md#7.5 Archived records leave the search'
  - id: FAS-PFM-QRY-06-02
    title: First lookup creates work that settings inspection can explain
    kind: interaction
    exercises:
      - CAP-PFM-QRY-016
      - CAP-PFM-QRY-017
    relies_on:
      - ATS-PFM-QRY-016-05
      - ATS-PFM-QRY-017-02
      - ATS-PFM-QRY-017-04
    preconditions: A record type is unprovisioned and an administrator can read settings.
    steps: 'Read defaults, request lookup access twice and inspect the type’s target and owed work.'
    expected: >-
      Default inspection writes nothing; first lookup provisions the type and repeated lookup does not create
      another configuration version.
    negative: false
    data_needs: 'Use an isolated workspace, named fixture records and the caller grants described by the prerequisites.'
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-platform:modules/quick-search/tests/e2e/quick-search-access.e2e.spec.js#provisioned the
        record type the tenant had never searched
      - >-
        services-platform:modules/quick-search/tests/e2e/quick-search-configurations.e2e.spec.js#answers
        version 0, which is the version no tenant ever wrote
      - >-
        services-platform:modules/quick-search/tests/e2e/quick-search-configurations.e2e.spec.js#moves the
        index target to the generation and version the indexer must write
  - id: FAS-PFM-QRY-06-03
    title: Field retirement remains visible while repair converges
    kind: lifecycle
    exercises:
      - CAP-PFM-QRY-016
      - CAP-PFM-QRY-017
    relies_on:
      - ATS-PFM-QRY-017-09
      - ATS-PFM-QRY-017-10
      - ATS-PFM-QRY-016-08
    preconditions: A custom field is configured and a contact is indexed with its value.
    steps: >-
      Archive the field, inspect degraded settings, let repair rebuild and repeat a lookup using current
      credentials.
    expected: >-
      Settings retain the unavailable field for explanation, repair owes the replacement and eventual lookup
      no longer relies on the retired field.
    negative: false
    data_needs: 'Use an isolated workspace, named fixture records and the caller grants described by the prerequisites.'
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-platform:modules/quick-search/tests/e2e/quick-search-configurations.e2e.spec.js#answers the
        archived field in place, as unavailable with the reason a screen shows
      - >-
        services-platform:modules/quick-search/tests/integration/services/maintenance/resubmit-targets.integration.spec.js#submits
        nothing on a second pass in the same hour
      - >-
        services-platform:modules/quick-search/tests/integration/services/indexing/discoverable-attribute.integration.spec.js#says
        a record of each status the rule does not offer is not discoverable
  - id: FAS-PFM-QRY-06-04
    title: Configuration powers do not substitute for lookup powers
    kind: permission
    exercises:
      - CAP-PFM-QRY-016
      - CAP-PFM-QRY-017
    relies_on:
      - ATS-PFM-QRY-016-01
      - ATS-PFM-QRY-017-01
    preconditions: One person can look up contacts and another can only read index settings.
    steps: >-
      Try each other’s operation, then request a mixed contact and organization credential lacking one type’s
      grant.
    expected: >-
      Each operation checks its own power and the mixed credential request is refused as a whole without
      provisioning denied types.
    negative: true
    data_needs: 'Use an isolated workspace, named fixture records and the caller grants described by the prerequisites.'
    bound_to: []
    provenance: proposed
    source:
      - >-
        services-platform:modules/quick-search/tests/e2e/quick-search-access.e2e.spec.js#refuses the whole
        request rather than granting what it can
      - >-
        services-platform:modules/quick-search/tests/e2e/quick-search-configurations.e2e.spec.js#refuses the
        configuration list to a caller holding only the Quick Search lookup
  - id: FAS-PFM-QRY-06-05
    title: Older answers never replace a newer search
    kind: regression
    exercises:
      - CAP-PFM-QRY-016
      - CAP-PFM-QRY-017
    relies_on:
      - ATS-PFM-QRY-016-12
      - ATS-PFM-QRY-017-08
    preconditions: The dialog has visible results and its index remains readable during a delayed request.
    steps: 'Type a new term, change inactive inclusion and complete two search responses in reverse order.'
    expected: >-
      The latest term and filter determine displayed results; retained results remain during loading and
      another workspace’s indexing failure does not widen access.
    negative: true
    data_needs: 'Use an isolated workspace, named fixture records and the caller grants described by the prerequisites.'
    bound_to: []
    provenance: proposed
    source:
      - 'react-console:lib/quick-search/__tests__/controller.test.ts#searches once for a word typed in one go'
      - >-
        services-platform:modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js#fails
        every event of the tenant whose write was refused, so CRM redelivers exactly those
evidence:
  - 'rhythm-v2-docs:specs/platform/queries/planning/features/FEAT-PFM-QRY-06-quick-search.md'
  - >-
    rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-016-find-contacts-and-organizations-as-one-types.md
  - >-
    rhythm-v2-docs:specs/platform/queries/planning/capabilities/CAP-PFM-QRY-017-choose-what-quick-search-finds-records-by-and-keep-the.md
---

# Record lookup: Feature Acceptance Suite

## What the Feature Must Do as a Whole

People choose searchable fields and then find the records those fields describe. The examples connect provisioning, indexing, repair and dialog behavior while leaving provider publication limits visible.

## Interactions Between Capabilities

First lookup creates work that settings inspection can explain. The combined example checks the dependent outcome after another capability changes its source or authority. The lifecycle and regression examples revisit retained state after a later change rather than repeating individual rule rows.

## Regression Record

| Revision | Change | Scenario | Why |
|---|---|---|---|
| 1 | initial | all | Establish the cumulative feature baseline from the pinned specification and executable assertions. |
