# Step 8: results-writer-minimal ## Sprint Contract ### Objective Implement the minimal result model and writer boundary for Phase 1 `U` and `RF` step/frame/field outputs. ### Required Reading - /AGENTS.md - /PROGRESS.md - /PLAN.md - /docs/README.md - /docs/HARNESS_ENGINEERING.md - /docs/ARCHITECTURE.md - /docs/ADR.md - /docs/NUMERICAL_CONVENTIONS.md - /docs/RESULTS_SCHEMA.md - /phases/1-linear-static-mitc4/step6.md - /phases/1-linear-static-mitc4/step7.md ### Scope - Add result data structures for model ids/connectivity plus step/frame/field outputs. - Support mandatory Phase 1 fields `U` and `RF` with components `UX`, `UY`, `UZ`, `RX`, `RY`, `RZ`. - Add an in-memory or file-backed writer boundary as appropriate for the current build system. - If HDF5 is implemented now, keep HDF5 APIs behind an adapter/wrapper. ### Allowed Files - `include/**` - `src/**` - `tests/**` - `docs/RESULTS_SCHEMA.md` only for clarification of agreed schema details - `PLAN.md` - `PROGRESS.md` - `phases/1-linear-static-mitc4/index.json` ### Explicit Non-Goals - Do not add stress, strain, shell force, history, nonlinear frame, thermal, or composite outputs unless R-007 is resolved and docs are updated first. - Do not write RF from reduced vectors only. - Do not expose HDF5 APIs in solver core headers. ### Tests To Write First - Schema tests for step/frame layout and mandatory field names. - Component-label and ordering tests for `U` and `RF`. - Model id/connectivity storage tests using int64 ids. - Adapter-boundary tests if HDF5 is introduced. ### Reference Artifacts - None for solver regression. This step only prepares output data consumed by later comparison. ### Acceptance Commands ```bash python scripts/validate_workspace.py ``` ### Evaluator Checklist - Result layout follows `docs/RESULTS_SCHEMA.md`. - `U` and `RF` have six components in the documented order. - HDF5, if present, is isolated behind an adapter. - No extra Phase 1 outputs were added without resolving R-007. ### Handoff Requirements - Record result writer scope and validation in `PROGRESS.md`. - Update `PLAN.md` if R-007 changes or output scope remains blocked. - Update the matching phase index entry: use `completed` with a one-line `summary`, or `blocked` with `blocked_reason`, or `error` with `error_message`. ## Verification 1. Run the acceptance command. 2. Inspect tests for schema and component ordering. ## Do Not - Do not treat a file being created as proof that its schema matches the contract.