102 lines
5.0 KiB
Markdown
102 lines
5.0 KiB
Markdown
# 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`
|
||
- `/.codex/skills/fesa-requirements-baseline/SKILL.md`
|
||
- `/docs/superpowers/specs/2026-08-08-linear-static-3d-euler-beam-design.md`
|
||
- `/docs/linear-static-3d-euler-beam/formulation.md`
|
||
- `/reference/cantilever beam/cantilever beam.inp`
|
||
|
||
승인된 설계 문서의 `status: approved`와 2026-08-09 amendment를 이 step의 사용자 승인
|
||
근거로 사용한다.
|
||
|
||
## 작업
|
||
|
||
`docs/linear-static-3d-euler-beam/requirements.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 Euler–Bernoulli, 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/linear-static-3d-euler-beam/requirements.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를 관리한다.
|