Create traceable cleaned data and one reusable profile. Do not repeat the same data inspection separately for every candidate method.
Preconditions- Problem parse and subquestion IDs exist.
- Raw files are available under
workspace/data_raw/or the workspace's documented legacy raw-data path. - Required outputs and known field needs are available.
Stop rather than fabricate a missing attachment, unit, field meaning, or label.
Workflow- Map attachments before cleaning.
- List each attachment with name, size, sheet names, headers, and a small preview.
- Map it to Qx or mark it shared.
- Ask the user only when two mappings remain materially plausible.
-
Preserve raw data.
- Treat raw files as read-only.
- Record hashes or stable file metadata when practical.
- Write cleaned copies under
workspace/data_clean/.
-
Audit structure and semantics.
- Rows, columns, keys, types, units, categories, time granularity, and encoding.
- Missing values, duplicates, impossible values, outliers, discontinuities, and leakage risks.
- Field-to-subquestion and field-to-required-output mapping.
-
Compute reusable risk-profile statistics.
- Effective sample size and rows usable per Qx.
- Missingness by field and row.
- Numeric distribution summaries and extreme-value rates.
- Category/class counts, imbalance ratios, rare levels, and cardinality.
- Time coverage, gaps, sampling interval, and chronological split constraints.
- Correlation/redundancy warnings where relevant.
- Target or score concentration indicators when a target exists.
- Record facts; do not convert them into a final method verdict.
-
Plan and apply cleaning.
- Separate safe normalization of representation from assumption-bearing imputations or removals.
- Explain and record every assumption-bearing operation.
- Keep reproducible cleaning code only when transformations are nontrivial.
-
Assess readiness per Qx.
ready,ready_with_warnings, orblocked.- Name missing fields and risks precisely.
- Hand the profile to
method-selectorfor method-specific risk probes.
workspace/data/data_report.md
workspace/data/data_profile.json
workspace/data_clean/<cleaned files>
workspace/code/scripts/<cleaning script> # only when needed
Accept legacy workspace/data/data_clean/ as an input/output location during migration.
data_profile.json contains:
{
"schema_version": 1,
"raw_files": [],
"attachment_mapping": [],
"fields": [],
"quality": {
"missingness": {},
"duplicates": {},
"impossible_values": {},
"outliers": {}
},
"coverage": {
"rows": 0,
"effective_sample_size": null,
"time_range": null,
"time_gaps": null
},
"distribution_risks": {
"class_imbalance": null,
"rare_categories": [],
"high_cardinality": [],
"redundancy_warnings": [],
"concentration_metrics": {}
},
"per_question_readiness": {},
"cleaned_files": [],
"unresolved_risks": []
}
Use null with an explanation when a field is not applicable; do not invent a value to fill the schema.
- Do not select the model.
- Do not overwrite raw data.
- Do not silently delete, impute, winsorize, rescale, or recode.
- Do not produce decorative EDA.
- Reuse one profile downstream instead of regenerating statistics.
- Store detailed row-level change logs only when changes occurred; successful no-op checks need only summary counts.
- Attachment mapping is unambiguous or human-confirmed.
- Raw files remain untouched.
- Cleaned files trace to raw sources and transformation rules.
- Profile includes effective sample size, imbalance/cardinality, and concentration evidence when applicable.
- Readiness is reported per subquestion.
- Downstream handoff points to paths rather than pasting the full report.