---
id: WF-PFM-QRY-013
title: Walk and select the records of a list
trigger: A list reader opens a record for navigation or requests the identities of all matching records.
product_area: platform
module: queries
revision: 1
status: draft
design_intent: proposed
implementation_evidence: observed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
inference: []
implements:
  - CAP-PFM-QRY-010
moves:
  - STATE-PFM-QRY-005
crosses:
  - SVC-PFM-QRY-explorer
  - SVC-PFM-QRY-queries
idempotency: >-
  New navigation requests create new sessions. Interior location is a stored read, edge movement can
  update the window, and selection reads up to ten thousand identities without a stored result
  snapshot.
concurrency: >-
  Windows belong to the person. Their identity ordering can outlast record edits, while opening each
  record requires its application’s current read checks.
hops:
  - 'n': 1
    actor_or_service: Explorer API
    action: >-
      Resolve the dataset and, when supplied, its valid grain-preserving recipe anchor with the
      caller’s access.
    anchor: 'services-platform:modules/explorer/services/navigation/ordered-queries.ts'
    seam: sync
    on_failure: 'Refuse inaccessible, missing or mismatched sources.'
    left_inconsistent: No session is created by a failed source check.
    observer: the person
    provenance: observed
    source: 'services-platform:modules/explorer/services/definitions/recipe-anchors.ts'
  - 'n': 2
    actor_or_service: Navigation
    action: >-
      Scan thousand-identity pages up to twenty thousand, count distinct records and store a window
      of at most two thousand plus return state.
    anchor: >-
      services-platform:modules/explorer/services/navigation/navigation-sessions.ts:startNavigationSession
    seam: sync
    on_failure: Refuse excess scanning or a record that no longer matches.
    left_inconsistent: The console can open the record without navigation after refusing the session.
    observer: the person
    provenance: observed
    source: 'services-platform:modules/explorer/services/navigation/navigation-sessions.ts'
  - 'n': 3
    actor_or_service: Navigation
    action: >-
      Read stored neighbors and position; at the boundary execute again to extend or rebuild the
      window.
    anchor: >-
      services-platform:modules/explorer/services/navigation/navigation-sessions.ts:locateInNavigationSession
    seam: sync
    on_failure: >-
      Interior state can remain readable after dataset access loss, but edge execution can be
      refused.
    left_inconsistent: The window can remain stale or unextended.
    observer: the person
    provenance: observed
    source: 'services-platform:modules/explorer/services/navigation/navigation-sessions.ts'
  - 'n': 4
    actor_or_service: Selection
    action: >-
      Read ordered matching identities up to ten thousand and mark truncation. The caller’s later
      bulk action separately checks each record.
    anchor: 'services-platform:modules/explorer/services/selection/select-record-ids.ts'
    seam: sync
    on_failure: Refuse invalid or inaccessible query execution.
    left_inconsistent: Selection does not itself perform any bulk change.
    observer: the person
    provenance: observed
    source: 'services-platform:modules/explorer/services/selection/select-record-ids.ts'
branches:
  - Operations owns bulk modification jobs over the selected identities.
waits: []
evidence:
  - >-
    services-platform at ad3f6a6: modules/explorer/services/**;
    aws/api/explorer-navigation.routes.ts; modules/queries/services/execute/ordered-record-ids.ts;
    docs/explorer.md
  - 'react-console at baf6dae: lib/record-explorer/*.ts; lib/result-navigation'
controls: [TC-AVL-001, TC-AVL-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-005, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-TEN-004, TC-VEN-001, TC-VEN-002, TC-VEN-003]
---

# Walk and select the records of a list

## What It Does

A list reader opens a record for navigation or requests the identities of all matching records. Operations owns bulk modification jobs over the selected identities.

## The Flow

```mermaid
sequenceDiagram
  participant C as Request or schedule
  participant H0 as Explorer API
  participant H1 as Navigation
  participant H2 as Navigation
  participant H3 as Selection
  C->>H0: Resolve the dataset and, when supplied, its valid grain-preserving recipe anchor with the caller’s a
  opt Navigation session creation
    C->>H1: Scan thousand-identity pages up to twenty thousand, count distinct records and store a window of at 
  end
  opt Navigation movement
    C->>H2: Read stored neighbors and position
  end
  opt Selection request
    C->>H3: Read ordered matching identities up to ten thousand and mark truncation
  end
```

Resolve the dataset and, when supplied, its valid grain-preserving recipe anchor with the caller’s access. Scan thousand-identity pages up to twenty thousand, count distinct records and store a window of at most two thousand plus return state. Read stored neighbors and position; at the boundary execute again to extend or rebuild the window. Read ordered matching identities up to ten thousand and mark truncation. The caller’s later bulk action separately checks each record.

## When Something Fails

Refuse inaccessible, missing or mismatched sources. No session is created by a failed source check. Refuse excess scanning or a record that no longer matches. The console can open the record without navigation after refusing the session. Interior state can remain readable after dataset access loss, but edge execution can be refused. The window can remain stale or unextended. Refuse invalid or inaccessible query execution. Selection does not itself perform any bulk change.

## Idempotency and Concurrency

New navigation requests create new sessions. Interior location is a stored read, edge movement can update the window, and selection reads up to ten thousand identities without a stored result snapshot. Windows belong to the person. Their identity ordering can outlast record edits, while opening each record requires its application’s current read checks.
