# Sprint Contract: Results Comparator Foundation ## Objective Rebuild or verify the minimum Phase 1 results model and Abaqus displacement CSV comparator before using stored reference regressions. ## Required Reading - /AGENTS.md - /docs/RESULTS_SCHEMA.md - /docs/VERIFICATION_PLAN.md - /docs/NUMERICAL_CONVENTIONS.md ## Scope - Store minimum result model data for nodes, elements, `U`, and `RF`. - Preserve step/frame/field structure even if HDF5 writing is deferred. - Load Abaqus `*_displacements.csv` by node id and component label. - Compare using absolute and relative tolerances. ## Allowed Files - `include/` - `src/` - `tests/` - `docs/RESULTS_SCHEMA.md` only for clarifying schema text - `docs/VERIFICATION_PLAN.md` only for clarifying tolerance/reference text - `PLAN.md` - `PROGRESS.md` ## Explicit Non-Goals - Do not make `S`, `E`, or `SF` mandatory. - Do not require Abaqus execution. - Do not rely on CSV row order. ## Tests To Write First - `U` and `RF` field component labels and basis tests. - CSV required-header tests. - Duplicate/missing/non-numeric node row tests. - Node-id-based comparison tests with absolute and relative tolerance paths. - Result frame metadata tests for Phase 1 linear static frame 0. ## Reference Artifacts - `references/quad_02_displacements.csv` - `references/quad_01_displacements.csv` ## Acceptance Commands ```bash python scripts/validate_workspace.py ``` ## Evaluator Checklist - Result component order matches docs. - Comparator maps Abaqus columns to FESA `U` labels exactly. - `RF` exists as a result field even if Abaqus RF CSV is unavailable. ## Handoff Requirements - Record comparator readiness and remaining RF artifact decision in `PROGRESS.md` and `PLAN.md`. ## Do Not - Do not add undocumented CSV formats.