Files
2026-07-29 23:32:26 +09:00

53 lines
1.9 KiB
Markdown

# 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를 보존해야 한다.