# Step 4: parser-phase1-subset ## Sprint Contract ### Objective Complete Phase 1 Abaqus input subset behavior and explicit rejection diagnostics for unsupported features. ### Required Reading - /AGENTS.md - /PROGRESS.md - /PLAN.md - /docs/README.md - /docs/HARNESS_ENGINEERING.md - /docs/PRD.md - /docs/ARCHITECTURE.md - /docs/ABAQUS_INPUT_SUBSET.md - /docs/VERIFICATION_PLAN.md - /phases/1-linear-static-mitc4/step3.md ### Scope - Parse `*Node`, `*Element`, `*Nset`, `*Elset`, `*Material`, `*Elastic`, `*Shell Section`, `*Boundary`, `*Cload`, `*Step`, `*Static`, and `*End Step` as documented. - Support generated and explicit set definitions only if documented in `docs/ABAQUS_INPUT_SUBSET.md`. - Reject unsupported Abaqus constructs with clear diagnostics. ### Allowed Files - `include/**` - `src/**` - `tests/**` - `docs/ABAQUS_INPUT_SUBSET.md` only for clarification of already agreed behavior - `PLAN.md` - `PROGRESS.md` - `phases/1-linear-static-mitc4/index.json` ### Explicit Non-Goals - Do not support `S4R`, `Part`, `Assembly`, `Instance`, `*Include`, pressure loads, nonzero prescribed displacement, `*Density`, or `NLGEOM=YES`. - Do not make `quad_01.inp` pass as Phase 1 input. - Do not add geometric/material nonlinearity, dynamics, thermal coupling, or mesh quality diagnostics. ### Tests To Write First - Positive parser tests for each Phase 1 supported keyword. - Negative parser tests for `S4R`, `Part/Assembly/Instance`, `*Include`, `*Density`, pressure loads, nonzero prescribed displacement, and `NLGEOM=YES`. - Diagnostics tests for missing required parameters, malformed data rows, and invalid labels. ### Reference Artifacts - Format/provenance only: `references/quad_01.inp` may be used to assert that unsupported features are rejected or documented, not as a passing parser case. ### Acceptance Commands ```bash python scripts/validate_workspace.py ``` ### Evaluator Checklist - Supported keyword coverage matches `docs/ABAQUS_INPUT_SUBSET.md`. - Unsupported features fail loudly and specifically. - S4 maps to the internal MITC4 shell element type; S4R remains unsupported. - Tests include both successful subset parsing and negative diagnostics. ### Handoff Requirements - Record parser coverage, unsupported-feature behavior, and validation in `PROGRESS.md`. - Update `PLAN.md` if a parser blocker remains. - 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 to ensure unsupported Abaqus features are not silently accepted. ## Do Not - Do not widen parser support because a stored reference file happens to contain a keyword.