Gap Normalization
Unify gaps from different sources into the standard GapRecord format.
HARD-GATE
Pipeline
- Precondition check: Verify input is non-empty; count the entries; identify the input format (plain text / JSON / mixed)
- Format identification: Determine the format type of each entry — free-text description, partially structured object, fully structured object
- Field extraction: Extract id (generate or reuse), title, description, domain, source, evidence, context from each raw entry
- Normalization: Denoise and truncate title (≤120 characters); complete description into full sentences; map domain to a controlled vocabulary
- Validation: Check the completeness of required fields for each GapRecord; tag incomplete entries with
status: "incomplete" and record the missing fields
- Output: Return GapRecord[] and a processing summary (total / complete / incomplete)
Output Format
{
"records": [
{
"id": "gap_001",
"title": "Short title (≤120 characters)",
"description": "Full description (1-3 sentences)",
"domain": "Domain label",
"source": "Source identifier",
"evidence": "Supporting evidence (optional)",
"context": "Background information (optional)",
"status": "complete | incomplete",
"missing_fields": []
}
],
"summary": {
"total": 0,
"complete": 0,
"incomplete": 0
}
}
1---2name: gap-normalization3description: SOP: Unify gaps from different sources into the standard GapRecord format4---56# Gap Normalization78Unify gaps from different sources into the standard GapRecord format.910## HARD-GATE1112<HARD-GATE>13- Input must not be empty: must contain at least 1 raw gap entry14- Each output GapRecord must contain non-empty id, title, description, domain, and source fields15- If any required field cannot be extracted, the entry is marked `status: "incomplete"` rather than silently dropped16</HARD-GATE>1718## Pipeline19201. **Precondition check**: Verify input is non-empty; count the entries; identify the input format (plain text / JSON / mixed)212. **Format identification**: Determine the format type of each entry — free-text description, partially structured object, fully structured object223. **Field extraction**: Extract id (generate or reuse), title, description, domain, source, evidence, context from each raw entry234. **Normalization**: Denoise and truncate title (≤120 characters); complete description into full sentences; map domain to a controlled vocabulary245. **Validation**: Check the completeness of required fields for each GapRecord; tag incomplete entries with `status: "incomplete"` and record the missing fields256. **Output**: Return GapRecord[] and a processing summary (total / complete / incomplete)2627## Output Format2829```json30{31 "records": [32 {33 "id": "gap_001",34 "title": "Short title (≤120 characters)",35 "description": "Full description (1-3 sentences)",36 "domain": "Domain label",37 "source": "Source identifier",38 "evidence": "Supporting evidence (optional)",39 "context": "Background information (optional)",40 "status": "complete | incomplete",41 "missing_fields": []42 }43 ],44 "summary": {45 "total": 0,46 "complete": 0,47 "incomplete": 048 }49}50```