4.6 KiB
4.6 KiB
Step 4: I/O Contract
담당 역할과 필수 스킬
- 담당 역할:
io-definition-agent - 필수 스킬:
fesa-io-contract - 스킬을 끝까지 읽고 semantic contract만 정의하라. C++ API는 다음 gate가 담당한다.
읽어야 할 파일
/AGENTS.md/docs/SOLVER_AGENT_DESIGN.md/docs/io-definitions/README.md/docs/linear-static-3d-euler-beam/requirements.md/docs/linear-static-3d-euler-beam/formulation.md/docs/linear-static-3d-euler-beam/numerical-review.md/docs/superpowers/specs/2026-08-08-linear-static-3d-euler-beam-design.md/reference/cantilever beam/cantilever beam.inp/reference/cantilever beam/cantilever beam displacements.csv/reference/cantilever beam/cantilever beam reactions.csv/reference/cantilever beam/cantilever beam elemental forces.csv
작업
docs/linear-static-3d-euler-beam/io.md를 생성하라. Metadata status는
ready-for-implementation-planning으로 둔다.
- 지원 keyword별 위치, parameter, data grammar, case policy, source-location 보존, duplicate/dangling reference validation을 표로 정의한다.
*PART/*ASSEMBLY/*INSTANCEnesting grammar, 여러 identity instance, stableSourceEntityId, assembly set의INSTANCEparameter를 정의한다.- B33 acceptance, B31 rejection, transform/nested assembly/multiple-step rejection code를 포함한다.
*STEP의NLGEOM은 absent 또는NO만 허용하고YES는 거부한다.*STATIC의 승인 legacy datainitial increment, time period, minimum increment, maximum increment네 값을 accept하되 V0 결과 identity는(Step-1, frame 0)으로 고정한다.*BOUNDARY target, first_dof, last_dof[, value]와*CLOAD target, dof, magnitude, DOF 1..6 의미를 정확히 정의한다.- General section의
A,I11,I12,I22,J, materialE,nu,G, guide vector/geometry validation과 local axis mapping을 정의한다. *PREPRINT,*RESTART,*TRANSVERSE SHEAR STIFFNESS,*OUTPUT, FIELD,*OUTPUT, HISTORY,*NODE OUTPUT,*ELEMENT OUTPUT,*CONTACT OUTPUT및 그 output variable data의 warning no-op allowlist와 unknown model-affecting keyword error를 분리한다.- HDF5 schema v0의 exact dataset path, shape, row identity, component order, units label, metadata, diagnostics, atomic finalization을 정의한다.
- legacy CSV header의
U-U1/U-U2/U-U3,UR-UR1/UR-UR2/UR-UR3,RF-RF1/RF-RF2/RF-RF3,RM-RM1/RM-RM2/RM-RM3,SF-SF1,SM-SM1/SM-SM2/SM-SM3을 canonical component로 바꾸는 규칙과 frame/instance/node-station normalization 및SF1->N,SM1->My,SM2->Mz,SM3->T, interior endpoint consistency를 정의한다. - 일반 end-action/section mapping은
SF1->FX/N,SF3->FY,SF2->FZ,SM3->MX/T,SM1->MY,SM2->MZ로 정의한다. 승인 legacy comparison에는 CSV에 존재하는SF1/SM1/SM2/SM3만 사용하고SF2/SF3를 reference row로 만들어내지 않는다. - component-scale tolerance와 missing/extra/nonfinite precheck를 정의한다.
- CLI syntax와 exit code
0,2,3,4,5,6을 포함한다.
Acceptance Criteria
$path = 'docs/linear-static-3d-euler-beam/io.md'
if (-not (Test-Path $path)) { throw "Missing $path" }
$required = @(
'status: `ready-for-implementation-planning`',
'## Abaqus Input Scope',
'## Syntax Policy',
'## Model Data Mapping',
'## Output HDF5 Schema',
'## FESA HDF5 to Reference CSV Comparison Schema',
'*OUTPUT, FIELD',
'SF1',
'/steps/<step-name>/frames/0/nodal/displacement',
'absolute_floor + 1e-6 * reference_scale'
)
foreach ($text in $required) {
if (-not (Select-String -LiteralPath $path -SimpleMatch $text -Quiet)) {
throw "Missing I/O contract: $text"
}
}
git diff --check -- $path
검증 절차
- Acceptance Criteria 명령을 실행한다.
- 지원 keyword마다 purpose, required data, unsupported behavior가 있는지 확인한다.
- HDF5 dataset과 reference CSV component/identity가 양방향으로 추적되는지 확인한다.
- Step 4를
completed와 schema summary로 갱신한다. upstream 충돌은blocked, 반복 생성 실패는error로 기록한다.
금지사항
- parser나 HDF5 writer를 구현하지 마라. 이유: 이 step은 I/O 계약만 소유한다.
- full Abaqus compatibility를 주장하지 마라. 이유: 승인 subset만 지원한다.
- output request가 FESA 기본 output을 끄도록 정의하지 마라. 이유: 승인 의미와 반대다.
- reference CSV를 rewrite하거나 tolerance를 변경하지 마라. 이유: 승인 baseline이다.
- 직접 commit하지 마라. 이유: Harness executor가 담당한다.