add uncommitted files

This commit is contained in:
KOKO\Mimi
2026-07-29 23:32:26 +09:00
parent fb0f8f39a0
commit f5379472ce
80 changed files with 7461 additions and 1 deletions
+31
View File
@@ -0,0 +1,31 @@
{
"project": "FESA",
"phase": "internal-release",
"steps": [
{
"step": 0,
"name": "release-checklist",
"status": "pending"
},
{
"step": 1,
"name": "cmake-install-package",
"status": "pending"
},
{
"step": 2,
"name": "install-tree-smoke-test",
"status": "pending"
},
{
"step": 3,
"name": "phase1-scale-benchmark",
"status": "pending"
},
{
"step": 4,
"name": "release-evidence-gate",
"status": "pending"
}
]
}
+54
View File
@@ -0,0 +1,54 @@
# Step 0: Release Checklist
## 읽어야 할 파일
- `/AGENTS.md`
- `/docs/PRD.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/docs/VALIDATION.md`
- `/docs/HDF5_SCHEMA.md`
- `/docs/ABAQUS_INPUT_SUBSET.md`
- `/CMakePresets.json`
## 작업
packaging 전에 `docs/BUILDING.md`, `docs/INPUT_FORMAT.md`,
`docs/RELEASE_CHECKLIST.md`를 작성한다.
체크리스트는 다음 증거 위치와 command를 포함해야 한다.
- MSVC v143 x64, C++20 및 dependency versions
- Debug/Release configure, build, zero-warning, nonzero CTest count
- flat 및 단일 무변환 Instance example
- HDF5 schema inspection
- 현재 Abaqus displacement/reaction comparison
- synthetic internal-force/stress adapter coverage
- deterministic thread-count test
- 100k-DOF scale measurement
- runtime DLL inventory와 clean install-tree smoke test
PRD section 8 각 항목에 고유 checklist ID를 부여한다.
## Acceptance Criteria
```powershell
cmake --build --preset windows-debug
ctest --preset windows-debug --output-on-failure
```
문서의 모든 command가 현재 target/preset 이름과 일치하고 미제공 Abaqus
내력·응력을 qualification 완료로 표시하지 않아야 한다.
## 검증 절차
1. PRD release criterion을 하나씩 checklist에 매핑한다.
2. 현재 test/target 이름을 CMake에서 재확인한다.
3. 증거가 없는 항목은 pass로 쓰지 않고 미실행 상태로 둔다.
4. index summary에 세 문서와 checklist ID 범위를 기록한다.
## 금지사항
- installer나 외부 고객 SDK를 약속하지 마라. 이유: 내부 배포 범위다.
- evidence 없는 checkbox를 완료 표시하지 마라. 이유: release gate를 왜곡한다.
- per-model metadata 파일을 다시 요구하지 마라. 이유: 승인된 검증 계약과 다르다.
+49
View File
@@ -0,0 +1,49 @@
# Step 1: CMake Install Package
## 읽어야 할 파일
- `/AGENTS.md`
- `/docs/PRD.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/docs/BUILDING.md`
- `/docs/RELEASE_CHECKLIST.md`
- `/CMakeLists.txt`
- `/CMakePresets.json`
## 작업
`cmake --install`로 내부 배포용 install tree를 만든다.
- `cmake/install.cmake`, `cmake/FESAConfig.cmake.in`을 추가한다.
- install tree에 `fesa.exe`, `fesa_core` static library, public headers,
CMake package config, required runtime DLL inventory, example input,
`HDF5_SCHEMA.md`, `INPUT_FORMAT.md`, `VALIDATION.md`를 포함한다.
- absolute build path가 install config에 남지 않는 실패 검사부터 작성한다.
- Phase 1 public ABI compatibility를 약속하지 않는다.
## Acceptance Criteria
```powershell
cmake --preset windows-release
cmake --build --preset windows-release
ctest --preset windows-release --output-on-failure
cmake --install out\build\windows-release --config Release --prefix out\package\fesa
Get-ChildItem -Recurse out\package\fesa
```
install tree가 build source tree 밖에서 사용 가능한 상대 경로와 명시적 runtime inventory를
가져야 한다.
## 검증 절차
1. install manifest 검사 실패를 먼저 확인한다.
2. 최소 install/export rule을 구현한다.
3. package tree와 CMake config의 절대 경로 누출을 확인한다.
4. index summary에 install manifest를 기록한다.
## 금지사항
- registry write나 MSI installer를 추가하지 마라. 이유: 배포 범위 밖이다.
- dependency를 package 중 다운로드하지 마라. 이유: 사전 설치 정책 위반이다.
- Debug/Release binary를 혼합하지 마라. 이유: runtime 불일치 위험이 있다.
+44
View File
@@ -0,0 +1,44 @@
# Step 2: Install-tree Smoke Test
## 읽어야 할 파일
- `/AGENTS.md`
- `/docs/PRD.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/docs/BUILDING.md`
- `/docs/RELEASE_CHECKLIST.md`
- `/cmake/FESAConfig.cmake.in`
- `/cmake/install.cmake`
## 작업
source/build tree를 참조하지 않는 clean install consumer와 CLI smoke test를 만든다.
- `tests/install/consumer/CMakeLists.txt`, `tests/install/consumer/main.cpp`,
`tests/install/install_tree_smoke.cmake`를 만든다.
- installed `FESAConfig.cmake`로 작은 consumer를 configure/link한다.
- installed CLI의 `--version`, example solve, 생성 HDF5 public inspection을 실행한다.
- source include path나 build library path를 숨긴 상태에서 먼저 실패를 확인한다.
## Acceptance Criteria
```powershell
cmake --preset windows-release
cmake --build --preset windows-release
ctest --preset windows-release -R InstallTreeSmoke --output-on-failure
ctest --preset windows-release --output-on-failure
```
## 검증 절차
1. 설치 전 smoke test 실패를 확인한다.
2. install tree만 사용하도록 test working directory와 environment를 격리한다.
3. consumer link, CLI solve, HDF5 open을 모두 확인한다.
4. 전체 Release test와 index를 갱신한다.
## 금지사항
- source directory include를 fallback으로 넣지 마라. 이유: packaging 결함을 숨긴다.
- PATH의 개발용 `fesa.exe`를 실행하지 마라. 이유: installed binary 검증이 아니다.
- external dependency installer를 만들지 마라. 이유: inventory만 제공한다.
+46
View File
@@ -0,0 +1,46 @@
# Step 3: Phase 1 Scale Benchmark
## 읽어야 할 파일
- `/AGENTS.md`
- `/docs/PRD.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/docs/RELEASE_CHECKLIST.md`
- `/include/fesa/analysis/run_solver.hpp`
- `/tests/performance/assembly_benchmark.cpp`
## 작업
약 100,000 DOF의 deterministic Beam chain 모델로 메모리와 시간을 측정하는
`tests/performance/phase1_scale_benchmark.cpp`를 만든다.
- model generation, parsing/Domain build, assembly, PARDISO solve, recovery, HDF5 write
시간을 구분해 출력한다.
- peak working set 또는 Windows에서 재현 가능한 memory metric을 기록한다.
- benchmark는 finite result, equilibrium, expected DOF count와 정상 종료만 assertion한다.
- 임의 성능 기준이나 speedup을 pass 조건으로 만들지 않는다.
## Acceptance Criteria
```powershell
cmake --build --preset windows-release
.\out\build\windows-release\Release\fesa_phase1_scale_benchmark.exe
ctest --preset windows-release --output-on-failure
```
출력에 모델 크기, 각 stage 시간, memory metric, thread 설정, solver 설정이 포함되어야
한다.
## 검증 절차
1. 작은 model에서 benchmark correctness test를 먼저 실패시킨다.
2. 동일 generator로 목표 크기를 실행한다.
3. 측정값과 환경을 release checklist에 기록한다.
4. index summary에 결과 위치와 실제 DOF count를 기록한다.
## 금지사항
- benchmark를 unit test timeout에 묶지 마라. 이유: 머신 성능에 따라 달라진다.
- 결과 정확성 검사를 생략하지 마라. 이유: 빠른 오답은 성능 증거가 아니다.
- 실제 측정 없이 목표 시간을 만들지 마라. 이유: 요구사항에 근거가 없다.
+57
View File
@@ -0,0 +1,57 @@
# Step 4: Release Evidence Gate
## 읽어야 할 파일
- `/AGENTS.md`
- `/docs/PRD.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/docs/VALIDATION.md`
- `/docs/BUILDING.md`
- `/docs/INPUT_FORMAT.md`
- `/docs/RELEASE_CHECKLIST.md`
- `/docs/HDF5_SCHEMA.md`
## 작업
새 실행 증거로 PRD section 8의 내부 배포 수용 조건을 모두 판정한다.
- Debug와 Release configure/build/test를 각각 실행한다.
- test count가 0이 아닌지 확인한다.
- Harness Python self-test를 실행한다.
- reference, determinism, install-tree, HDF5 inspection, scale benchmark 결과를
checklist ID에 연결한다.
- 현재 검증 범위가 Abaqus displacement/reaction이며 내력/응력은 synthetic adapter
coverage임을 release note에 명시한다.
- 하나라도 증거가 없거나 실패하면 release를 완료 처리하지 말고 `blocked` 또는
`error`로 기록한다.
## Acceptance Criteria
```powershell
uv run --with pytest python -m pytest -v -rs
cmake --preset windows-debug
cmake --build --preset windows-debug
ctest --preset windows-debug --output-on-failure
cmake --preset windows-release
cmake --build --preset windows-release
ctest --preset windows-release --output-on-failure
.\out\build\windows-release\Release\fesa_phase1_scale_benchmark.exe
cmake --install out\build\windows-release --config Release --prefix out\package\fesa
```
모든 명령이 종료 코드 0이고 release checklist의 각 criterion이 해당 출력 또는
validation report 항목으로 추적되어야 한다.
## 검증 절차
1. 위 명령을 생략 없이 새로 실행한다.
2. warning, test count, reference maximum error, benchmark와 install manifest를 기록한다.
3. 성공한 경우에만 step/phase를 `completed`로 갱신한다.
4. 미제공 외부 데이터가 필요하면 범위를 확대하지 말고 정확한 blocker를 기록한다.
## 금지사항
- 실패 테스트를 disable하거나 제외하지 마라. 이유: release 증거를 조작한다.
- 구현되지 않은 Abaqus 내력/응력 qualification을 선언하지 마라. 이유: golden이 없다.
- 자동 push하지 마라. 이유: 사용자가 `--push`를 명시한 경우에만 허용된다.