Files
FESADev/phases/linear-static-3d-euler-beam/step0.md
T
2026-08-09 01:35:44 +09:00

102 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Step 0: Requirements Baseline
## 담당 역할과 필수 스킬
- 담당 역할: `requirement-agent`
- 필수 스킬: `fesa-requirements-baseline`
- 작업을 시작하기 전에 위 스킬의 `SKILL.md`를 끝까지 읽고 경계를 준수하라.
## 읽어야 할 파일
먼저 아래 파일을 읽고 승인된 범위와 프로젝트 규칙을 파악하라.
- `/AGENTS.md`
- `/docs/PRD.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/docs/SOLVER_AGENT_DESIGN.md`
- `/docs/requirements/README.md`
- `/docs/superpowers/specs/2026-08-08-linear-static-3d-euler-beam-design.md`
- `/docs/formulations/3d-isoparametric-euler-beam-formulation.md`
- `/reference/cantilever beam/cantilever beam.inp`
승인된 설계 문서의 `status: approved`와 2026-08-09 amendment를 이 step의 사용자 승인
근거로 사용한다.
## 작업
`docs/requirements/linear-static-3d-euler-beam.md`를 생성하라. 문서는 다음 계약을
downstream agent가 추측 없이 사용할 수 있는 `shall` 요구조건과 검증 행렬로 바꿔야 한다.
- Metadata: `feature_id: linear-static-3d-euler-beam`, `status: approved`,
`owner_agent: requirement-agent`, 현재 날짜, 승인된 설계 경로를 기록한다.
- 목적, In Scope, Out Of Scope, Analysis Definition, Input Requirements, Output
Requirements, Verification Quantities, Tolerance Policy, Reference Artifact
Requirements, Requirement Verification Matrix, Downstream Handoff를 포함한다.
- 한 입력당 단일 `*STEP, *STATIC`, 2절점 3D EulerBernoulli, node당 6 DOF,
`TYPE=B33`만 지원하고 B31은 오류로 거부하는 요구조건을 분리한다.
- `*PART/*ASSEMBLY/*INSTANCE` identity wrapper, stable source identity, 여러 identity
instance 허용, transform/nested assembly 거부를 요구조건으로 만든다.
- 지원 keyword와 warning no-op allowlist를 정확히 열거하고 allowlist 밖 model-affecting
keyword는 오류로 요구한다.
- factorization-before-load 순서, nonzero prescribed displacement, deterministic
COO-to-CSR, MKL/TBB/HDF5 adapter 경계, CLI exit code, HDF5 schema/output을 요구한다.
- B33 legacy reference bundle은 read-only이며 exact filename을 보존하고 stress reference
comparison은 N/A지만 `S11` output과 test는 필수임을 명시한다.
- reference tolerance는 같은 model/step/frame/quantity/component의 read-only Abaqus
scale만 사용해 `absolute_floor + 1e-6 * reference_scale`을 모든 row에 적용한다.
SI floor는 displacement/rotation `1e-9`, force/moment `1e-3`이다.
- 모든 `must` 요구조건에 acceptance criterion, verification method, tolerance 또는 N/A,
downstream agent, status를 매핑한다. 숫자 ID는
`FESA-REQ-LS3DEB-001`부터 중복 없이 연속 부여한다.
설계가 이미 승인했으므로 새 정책 결정을 만들지 말고, 충돌을 발견하면 문서를 승인
상태로 꾸미지 말고 phase step을 `blocked`로 기록하라.
## Acceptance Criteria
```powershell
$path = 'docs/requirements/linear-static-3d-euler-beam.md'
if (-not (Test-Path $path)) { throw "Missing $path" }
$required = @(
'feature_id: `linear-static-3d-euler-beam`',
'status: `approved`',
'## In Scope',
'## Out Of Scope',
'## Requirement Verification Matrix',
'TYPE=B33',
'TYPE=B31',
'absolute_floor + 1e-6 * reference_scale',
'reference/cantilever beam/'
)
foreach ($text in $required) {
if (-not (Select-String -LiteralPath $path -SimpleMatch $text -Quiet)) {
throw "Missing contract text: $text"
}
}
$ids = Select-String -LiteralPath $path -Pattern 'FESA-REQ-LS3DEB-\d{3}' -AllMatches |
ForEach-Object { $_.Matches.Value }
if (($ids | Sort-Object -Unique).Count -lt 1) { throw 'No requirement ids found' }
git diff --check -- $path
```
## 검증 절차
1. Acceptance Criteria 명령을 실행한다.
2. 설계 문서 2절, 6절, 9절, 10절, 11절, 12절의 각 필수 계약이 최소 한 요구조건과
verification matrix row에 추적되는지 점검한다.
3. 수치값, 단위, 좌표계, artifact path가 설계와 정확히 일치하는지 확인한다.
4. `/phases/linear-static-3d-euler-beam/index.json`의 Step 0을 갱신한다.
- 성공: `status``completed`로 바꾸고 생성 파일과 승인 baseline을 `summary` 한 줄에 기록한다.
- 수정 3회 후 실패: `status: error``error_message`를 기록한다.
- 승인 설계와 프로젝트 문서가 충돌해 사용자 결정이 필요하면 `status: blocked`
`blocked_reason`을 기록하고 중단한다.
## 금지사항
- C++ API나 파일 구조를 설계하지 마라. 이유: Requirement Agent의 책임 범위를 넘는다.
- formulation 수식을 수정하지 마라. 이유: 수학 계약은 후속 gate가 담당한다.
- Abaqus 또는 reference solver를 실행하지 마라. 이유: 승인된 read-only artifact만 사용한다.
- `/reference/` 파일을 생성·수정·rename하지 마라. 이유: correctness baseline을 오염시킨다.
- 직접 commit하지 마라. 이유: Harness executor가 commit과 timestamp를 관리한다.