# Step 0: Abaqus Input Contract ## 읽어야 할 파일 - `/AGENTS.md` - `/docs/PRD.md` - `/docs/ARCHITECTURE.md` - `/docs/ADR.md` - `/docs/superpowers/specs/2026-07-29-abaqus-assembly-reference-design.md` - `/docs/superpowers/plans/2026-07-29-fesa-phase-1.md` - `/include/fesa/io/abaqus/` - `/reference/cantilever beam/cantilever beam.inp` ## 작업 production parser를 수정하기 전에 `docs/ABAQUS_INPUT_SUBSET.md`를 normative contract로 작성하고 valid/invalid fixture matrix를 등록한다. 문서에 각 keyword의 허용 scope, parameter, data line, diagnostic을 정확히 정의한다. - `*NODE`, `*ELEMENT,TYPE=B31` - `*PART/*END PART`, `*ASSEMBLY/*END ASSEMBLY`, `*INSTANCE/*END INSTANCE` - `*NSET`, `*ELSET`, `GENERATE`, nested set, `INSTANCE=` - `*MATERIAL`, `*ELASTIC`, `*BEAM GENERAL SECTION` - optional `*TRANSVERSE SHEAR STIFFNESS` - `*BOUNDARY`, `*CLOAD`, `*STEP`, `*STATIC`, `*END STEP` - no-op `*HEADING`, `*PREPRINT`, `*RESTART`, `*OUTPUT` `tests/fixtures/abaqus/valid`와 `invalid`에 최소 한 규칙당 fixture를 정의하고 data-driven contract test를 먼저 실패시킨다. ## Acceptance Criteria ```powershell cmake --build --preset windows-debug ctest --preset windows-debug -R AbaqusInputContract --output-on-failure ctest --preset windows-debug --output-on-failure ``` ## 검증 절차 1. 문서와 fixture manifest를 먼저 작성한다. 2. 아직 미구현인 계약 테스트가 실패하는 것을 확인한다. 3. 이 step에서는 parser behavior를 확장하지 않는다. 4. index summary에 계약 문서와 미통과 fixture 범위를 기록한다. ## 금지사항 - Abaqus 전체 문법 지원을 약속하지 마라. 이유: 명시된 subset만 대상이다. - unknown keyword ignore 규칙을 만들지 마라. 이유: 조용한 모델 손실을 유발한다. - reference 원본을 고치지 마라. 이유: golden provenance를 보존해야 한다.