---
title: "AML Lookback Disposition Rollup"
method: POST
path: "/v1/tools/roll_up_aml_lookback_disposition"
tags: ["TODO_TAGS_REVIEW", "TODO_AP2_EXPORT_REVIEW"]
---

# AML Lookback Disposition Rollup

`POST /v1/tools/roll_up_aml_lookback_disposition`

## Request

- Base URL: `https://ainumbers.co`
- URL: `https://ainumbers.co/v1/tools/roll_up_aml_lookback_disposition`
- Auth: none declared

Closes the loop art-470 (lookback-completeness-reconciler) and art-471 (disposition-sampling-frame) leave open. Art-470 reconciles that the RE-SCREENING extract was complete; art-471 builds a deterministic sample of the resulting dispositions for independent review; neither checks that a disposition was actually recorded for every sampled item, that a filed or no-SAR determination carries a rationale, or that the sample frame's declared population size still reconciles to the completeness population. This node rolls those three axes up: disposition-coverage against the sample frame's own declared size, disposition-rationale-presence on every filed/no-SAR determination, and a population-to-sample tie-out between art-470's and art-471's declared population sizes. Emits a closed §27.4 gate-policy value: full coverage with rationale present on every filed/no-SAR item yields auto_pass; any missing disposition evaluated as of a caller-declared date on or after the lookback's declared close date yields escalate; a population tie-out failure or an explicit caller-declared sampling-frame discrepancy yields hold; a disposition present without its required rationale yields review_required. Customer id and alert id cross this kernel already salted -- callers supply a sha256-salted@1 commitment string, never the plaintext identifier -- and the kernel never sees, requests, or computes over the plaintext. Deterministic rollup arithmetic only. Zero network, zero PII.

**Tool URL:** https://ainumbers.co/chaingraph/art-534-aml-lookback-disposition-rollup.html

## Request body

- object
  - `as_of` unknown, required
  - `lookback_close_date` unknown, required
  - `lookback_id` string, required
  - `population_size` unknown, required
  - `sample_frame_population_size` unknown, required
  - `sample_frame_size` unknown, required
  - `sampled_items` unknown[], required
    - unknown
  - `sampling_frame_discrepancy_flag` boolean, required

## Response `200`

Successful tool execution result

- object
  - `as_of` string
  - `decision` object
    - `execution_state` string
    - `gate_policy` string
    - `reason` string
  - `disposition_coverage_pct` integer
  - `items` object[]
    - `disposition` string
    - `has_rationale_reference` boolean
    - `identity_ok` boolean
    - `index` integer
    - `rationale_ok` boolean
    - `rationale_required` boolean
  - `items_missing_rationale` unknown[]
    - unknown
  - `lookback_close_date` string
  - `lookback_id` string
  - `missing_disposition_count` integer
  - `population_size` integer
  - `population_tie_out_holds` boolean
  - `rationale_presence_pct` integer
  - `rejected_inputs` unknown[]
    - unknown
  - `sample_frame_population_size` integer
  - `sample_frame_size` integer
  - `sampled_item_count` integer
  - `sampling_frame_discrepancy_flag` boolean

---

[API](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite.md) · [All operations](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/llms.txt) · [OpenAPI document](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/revisions/b462e4f5bb28?raw)
