# Step 0: io-contract ## Read First Read these files before editing: - `/AGENTS.md` - `/docs/PRD.md` - `/docs/ARCHITECTURE.md` - `/docs/ADR.md` - `/docs/SOLVER_AGENT_DESIGN.md` - `/docs/io-definitions/README.md` ## Task Create the feature-level I/O contract for the Abaqus input parser at `/docs/io-definitions/abaqus-input-parser-io.md`. The contract must explicitly state that FESA supports only the documented Abaqus keyword subset, not full Abaqus compatibility. Keep this document at a semantic level. Do not design C++ APIs and do not implement parser code in this step. Required scope: - Model data keywords: `*HEADING`, `*NODE`, `*ELEMENT`, `*NSET`, `*ELSET`, `*MATERIAL`, `*ELASTIC`, and section keywords needed for V0 bar/truss use. - History data keywords: `*STEP`, `*STATIC`, `*BOUNDARY`, `*CLOAD`, `*OUTPUT`, `*NODE OUTPUT`, and `*ELEMENT OUTPUT`. - Syntax policy for comments beginning with `**`, case-insensitive keywords, comma-separated parameters and data, blank lines, unsupported keywords, and parse diagnostics. - Internal semantic mapping to `Domain`, nodes, elements, sets, materials, properties, `AnalysisStep`, boundary conditions, loads, and output requests. - HDF5 and reference CSV comparison schema summary consistent with existing PRD/architecture documents. Do not create or modify reference artifacts. ## Tests To Write First No C++ tests are required in this documentation-only step. ## Acceptance Criteria ```powershell python -m unittest discover -s scripts -p "test_*.py" python scripts/validate_workspace.py ``` ## Verification Procedure 1. Run the acceptance criteria commands. 2. Confirm the contract does not claim full Abaqus compatibility. 3. Confirm every supported keyword has purpose, data requirements, mapping, and unsupported-case behavior. 4. Update `phases/abaqus-input-parser/index.json` step 0: - success: `"status": "completed"`, `"summary": "Abaqus input parser I/O contract added"` - error after three attempts: `"status": "error"`, `"error_message": ""` - blocked: `"status": "blocked"`, `"blocked_reason": ""` ## Forbidden - Do not implement parser code. - Do not design C++ APIs. - Do not run Abaqus, Nastran, or any reference solver. - Do not generate or modify Abaqus reference CSV files.