promptdojo_

The paper trail — legal review, versions, and adverse-action evidence — step 7 of 8

Write check_record(r) — the completeness check every adverse-action decision record passes before it's filed.

Return a list of gap strings, tested in this order:

  1. r["ai_recommended"] is empty → "no AI recommendation logged"
  2. r["decided_by"] is empty or "auto""no human decider"
  3. r["reason"] is empty → "no reason recorded"
  4. r["notice_date"] is empty → "no adverse-action notice"

The report loop (provided) prints GAP — with semicolon-joined gaps, or DEFENSIBLE (retain through {year}) where the retention year is the decision year plus 3 — the Colorado retention window, adopted everywhere: int(r["decided_date"][:4]) + 3.

Expected output:

R-101: DEFENSIBLE (retain through 2029)
R-102: GAP — no human decider; no reason recorded
R-103: GAP — no adverse-action notice

full-screen editor opens — close anytime to keep reading.