{
 "use_case": "foia-desk",
 "title": "Public-records desk: three synthetic records from a fictional permit office",
 "about": "A federal FOIA request about a dredging permit, its confirmed search scope and three synthetic records from a fictional Bureau of Coastal Permits: a resident's comment with her phone and email, a dive-team roster with two Social Security numbers, and an email from before the requested date range. The comment must be released in part with the phone and email redacted under (b)(6), both SSNs redacted, the early record put out of scope by code, the release PDF must pass its recoverable-text check and the signed record must verify.",
 "licence": "Synthetic, written for Decosa (CC0): the Bureau of Coastal Permits, Tidewater Dredge Co. and every person, address, phone number and SSN are fictional.",
 "inputs": [
  {
   "file": "inputs/request.json",
   "what": "The request as received: {id, received, requester, agency, text}."
  },
  {
   "file": "inputs/scope.json",
   "what": "The search scope the officer confirmed (subjects, keywords, date range, exclusions); POST /foia/scope drafts one from the request text."
  },
  {
   "file": "inputs/records.json",
   "what": "The records: a list of {id, date, from, to, subject, custodian, body} (emails, memos, comments)."
  },
  {
   "file": "inputs/people.json",
   "what": "Agency lawyers and the agency's mail domains (their mail is official, not private)."
  }
 ],
 "steps": [
  {
   "id": "review",
   "method": "POST",
   "path": "/foia/review",
   "timeout": 300,
   "body": {
    "request": {
     "$file": "inputs/request.json"
    },
    "scope": {
     "$file": "inputs/scope.json"
    },
    "documents": {
     "$file": "inputs/records.json"
    },
    "people": {
     "$file": "inputs/people.json"
    },
    "agency_domains": [
     "coastalpermits.example"
    ],
    "jurisdiction": "federal",
    "samples": 0,
    "title": "Rehearsal: FOIA-2026-0412 (synthetic)",
    "stream": false
   }
  },
  {
   "id": "vaughn",
   "method": "GET",
   "path": "/foia/runs/${review.run_id}/export?format=csv",
   "as": "text"
  },
  {
   "id": "verify",
   "method": "POST",
   "path": "/record/verify",
   "auth": false,
   "body": {
    "record": {
     "$ref": "review.report.record"
    }
   }
  },
  {
   "id": "tampered",
   "method": "POST",
   "path": "/record/verify",
   "auth": false,
   "body": {
    "record": {
     "$ref": "review.report.record"
    }
   },
   "tamper": {
    "at": "record.statement.totals.redactions",
    "set": 0
   }
  }
 ],
 "checks": [
  {
   "says": "the resident's comment (CP-002) is released in part",
   "path": "review.documents[id=CP-002][0].disposition",
   "equals": "release_in_part"
  },
  {
   "says": "her phone number and email address are redacted under (b)(6)",
   "path": "review.documents[id=CP-002][0].redactions[exemption=(b)(6)].kind",
   "contains": [
    "phone",
    "email"
   ]
  },
  {
   "says": "both Social Security numbers on the dive roster (CP-007) are redacted",
   "path": "review.documents[id=CP-007][0].redactions[kind=ssn]",
   "count_min": 2
  },
  {
   "says": "both dates of birth on the dive roster are redacted",
   "path": "review.documents[id=CP-007][0].redactions[kind=dob]",
   "count_min": 2
  },
  {
   "says": "the record from before the requested range (CP-010) is not responsive, decided by code with no model call",
   "path": "review.documents[id=CP-010][0].responsive.by",
   "equals": "code"
  },
  {
   "says": "nothing redacted can be recovered from the release PDF",
   "path": "review.release.integrity.ok",
   "equals": true
  },
  {
   "says": "the Vaughn index (CSV) cites (b)(6) for CP-002",
   "path": "vaughn",
   "contains": [
    "CP-002",
    "(b)(6)"
   ]
  },
  {
   "says": "the Vaughn index does not repeat a redacted SSN",
   "path": "vaughn",
   "not_contains": [
    "512-44-8391",
    "530-19-2274"
   ]
  },
  {
   "says": "the signed record verifies",
   "path": "verify.ok",
   "equals": true
  },
  {
   "says": "a record with its redaction count changed no longer verifies",
   "path": "tampered.ok",
   "equals": false
  },
  {
   "says": "every model call has a signed receipt",
   "receipts": "signed"
  }
 ]
}
