retain-compliance-evidence-on-a-schedule
Use when setting how long screening results, alerts, decisions and travel-rule records are kept, and how they are stored so an examiner can verify them years later.
- License 许可
- MIT
- 最近更新
- 2026-11-14
- Stars
- ★ 81
- Forks
- 17
01 前言 Front Matter
- name
- retain-compliance-evidence-on-a-schedule
- description
- Use when setting how long screening results, alerts, decisions and travel-rule records are kept, and how they are stored so an examiner can verify them years later.
02 资源文件 3
- 许可证LICENSE1.0 KB
- 参考文档SOURCE.md366 B
- 参考文档TRUST.auto.yaml2.2 KB
03 SKILL.md 正文
Retain compliance evidence on a schedule
The record is the control. A screen that happened but cannot be evidenced is treated as a screen that did not happen, so retention is designed around reconstructing a decision, not around archiving files.
Procedure
-
Classify each record type and attach a retention period with its source:
cat > retention.csv <<'CSV' record_type,period_years,basis,format sanctions_screen_result,5,BSA 31 CFR 1010.430(a),json travel_rule_payload,5,BSA/FATF R.16,encrypted_json kyc_verification_ref,5,AMLD5 as applied,pdf_ref_only alert_disposition,5,internal policy,json CSV -
Store records immutably. Use object-lock in compliance mode with a retention-until date, so a compromised application identity cannot rewrite history.
aws s3api put-object --bucket compliance-archive --key "$ID" --body "$ID.json" \ --object-lock-mode COMPLIANCE --object-lock-retain-until-date "2031-01-01T00:00:00Z" -
Write a hash chain: each record's digest includes the previous record's digest, so a gap or an edit is detectable without trusting the store.
python3 -c 'import hashlib,json;s=open("prev.json","rb").read(); print(hashlib.sha256(s+open("rec.json","rb").read()).hexdigest())' -
Keep the queryable index separate from the evidence blob. The index is small and lets you answer "what did we do on date X", while the blob holds the full payload under lock.
-
Encrypt payloads and keep the key outside the archive account. Retention without key custody is only an availability plan.
-
Test the retrieval path on a timer, not on the first examination. Pull a record from two years back and confirm it decrypts and validates against its hash.
Pitfalls
- Retaining decision metadata but not the input. Without the list digest and the screened subject, the decision cannot be re-evaluated.
- Letting retention run past the period because deletion is manual. Legal hold is the exception; the default should be automated expiry.
- Storing person-level data in the immutable archive beyond its period, which converts a records programme into a data-protection problem.
- Assuming a backup is an archive. Backups rotate; the archive must be addressable by record id for the whole period.
- Skipping the hash chain, then discovering during an examination that no one can show the record was not altered.
Verification
python3 -c 'import csv;r=list(csv.DictReader(open("retention.csv")));
print(len(r),"types"); assert all(x["basis"] for x in r); print("all basis-cited")'
aws s3api get-object-retention --bucket compliance-archive --key sample.json | jq -r '.Retention.Mode'
A pass shows every record type cites a retention basis and the archive returns COMPLIANCE mode
for a sampled object.
Report the record types, periods and bases, the archive location, the last successful retrieval test, and any keys without an expiry. Final decisions about retention periods and holds belong to a qualified compliance officer and counsel.
04 同仓库更多 Skills
recipe-performance
Diagnose a specific MetaMask user flow's real-app performance and Sentry critical-user-flow telemetry with deterministic mm-harness recipes. Use for CUF boundaries, cold/warm/background-resume behavior, latency regressions, lifecycle tags, duplicate or blocking network requests, long tasks, layout/paint cost, screen redraws, React rerenders, or browser trace analysis where tests alone cannot prove the real app.
mexc-spot-websocket
MEXC Spot WebSocket workflows for public streams, protobuf handling, depth maintenance, listen keys, and private streams without exposing API keys.
mexc-spot-rest
MEXC Spot REST workflows for public data, signed account requests, orders, wallet/admin actions, and secure signing without exposing API keys.
mexc-futures-websocket
MEXC Futures WebSocket workflows for public streams, private account/order/position streams, ping/pong, subscriptions, and depth maintenance.
0xklen-version-and-refresh-sanctions-lists
暂无简介
verify-tests-cover-changed-lines
Use when a PR adds code that the existing suite may not exercise. Measures patch coverage — the share of newly changed lines hit by tests — before approving.