docs: group solver evidence by feature

This commit is contained in:
KOKO\Mimi
2026-08-15 02:18:26 +09:00
parent aa5d271a2e
commit 8b42e7883b
38 changed files with 83 additions and 1903 deletions
-160
View File
@@ -1,160 +0,0 @@
# Build/Test Report 문서 작성 가이드
이 디렉터리는 Build/Test Executor Agent가 작성하거나 제안하는 기능별 build/test 실행 리포트를 보관하는 위치다.
Build/Test Executor Agent는 Implementation Agent 이후 독립적으로 C++/MSVC/CMake/CTest 검증을 실행하고, 실패를 분류해 다음 agent로 handoff한다. 이 agent는 source code, tests, CMake files, requirements, formulations, I/O contracts, reference artifacts, tolerance policies를 수정하지 않는다. 기본 build artifact는 `.harness/build/` 아래 생성된다.
기본 문서명은 `docs/build-test-reports/<feature-id>-build-test.md` 형식을 사용한다.
## Build/Test Executor Agent 역할
수행한다:
- `.harness/config.json`과 프로젝트 자동 감지 결과를 확인하고 같은 build/test 경로를 독립 실행한다.
- implementation plan/report에 명시된 feature-specific CTest를 전체 검증 전에 실행한다.
- Harness Python, Hook, agent config 변경이 포함되면 `uv run --with pytest python -m pytest -v -rs`를 실행한다.
- CMake preset, 직접 MSBuild, 기본 CMake/MSVC x64 Debug 중 어떤 검증 경로가 사용되었는지 기록한다.
- configure, compile, link, test, reference-comparison, harness, environment, upstream-contract 실패를 구분한다.
- command, exit code, duration, stdout/stderr tail, failed test name을 요약한다.
- 실패 원인에 따라 Implementation Agent, Correction Agent, Reference Verification Agent, Implementation Planning Agent 중 handoff 대상을 제안한다.
수행하지 않는다:
- source code를 수정하지 않는다.
- tests를 수정하지 않는다.
- CMake files를 수정하지 않는다.
- requirements, formulations, I/O contracts, reference artifacts, tolerance policies를 수정하지 않는다.
- Abaqus, Nastran 또는 reference solver를 실행하지 않는다.
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
- release readiness, reference tolerance success, physics validation success를 승인하지 않는다.
- 최종 reference verification report를 작성하지 않는다.
## 실행 순서
기본 순서는 implementation plan/report에 따라 다음 중 필요한 항목을 실행한다.
```powershell
cmake -S . -B .harness/build -A x64
cmake --build .harness/build --config Debug
ctest --test-dir .harness/build -C Debug -R <feature-or-label> --output-on-failure
ctest --test-dir .harness/build -C Debug --show-only=json-v1
ctest --test-dir .harness/build -C Debug --output-on-failure
```
Harness Python, Hook, agent config 변경이 검증 범위에 포함되면 다음 명령을 먼저 실행한다.
```powershell
uv run --with pytest python -m pytest -v -rs
```
프로젝트 선택 우선순위는 다음과 같다.
1. `.harness/config.json`의 명시적 `projectType`
2. 루트의 CMake metadata
3. 루트의 단일 `.sln`
4. 루트의 단일 `.vcxproj`
기본 CMake/MSVC x64 Debug 명령은 다음과 같다.
```powershell
cmake -S . -B .harness/build -A x64
cmake --build .harness/build --config Debug
ctest --test-dir .harness/build -C Debug --show-only=json-v1
ctest --test-dir .harness/build -C Debug --output-on-failure
```
CMake preset을 사용하면 configure/build/test preset과 `binaryDir`를 모두
`.harness/config.json`에 지정한다. 직접 MSBuild는 solution/project와
`msbuild.testCommand`를 지정한다. C/C++와 build metadata가 모두 없으면 검증 대상이
없으므로 통과하지만, C/C++ 파일만 있고 build metadata가 없으면 오류다.
## 문서 템플릿
```markdown
# <feature title> Build/Test Report
## Metadata
- feature_id: <feature-id>
- source_implementation_report: <path or N/A>
- source_implementation_plan: docs/implementation-plans/<feature-id>-implementation-plan.md
- status: pass-for-reference-verification | needs-correction | needs-environment-fix | needs-upstream-decision | blocked
- owner_agent: build-test-executor-agent
- date: <YYYY-MM-DD>
## Execution Environment
- os: <OS and version>
- generator: Visual Studio 17 2022 | <observed generator>
- platform: x64 | <observed platform>
- config: Debug | <observed config>
- build_dir: .harness/build | <configured/observed build dir>
- harness_config: .harness/config.json | absent-defaults
- project_selection: configured cmake | configured msbuild | auto CMake | auto MSBuild | no C/C++ project
- command_discovery_path: CMake preset | direct MSBuild | default CMake/MSVC x64 Debug | no C/C++ project
## Command Log Summary
| order | command | exit_code | duration | stdout_stderr_tail |
| --- | --- | --- | --- | --- |
| 1 | uv run --with pytest python -m pytest -v -rs (when applicable) | <code or skipped> | <duration> | <tail summary> |
| 2 | <config-resolved configure/build commands> | <code> | <duration> | <tail summary> |
| 3 | <feature-specific test command when applicable> | <code or skipped> | <duration> | <tail summary> |
| 4 | <config-resolved test discovery/full test commands> | <code> | <duration> | <tail summary> |
## Validation Results
| validation_stage | result | evidence |
| --- | --- | --- |
| harness self-test | pass | fail | skipped | <summary> |
| configure | pass | fail | skipped | <summary> |
| build | pass | fail | skipped | <summary> |
| CTest | pass | fail | skipped | <summary> |
| feature-specific tests | pass | fail | skipped | <summary> |
## Failure Classification
- classification: configure | compile | link | test | reference-comparison | harness | environment | upstream-contract | N/A
- primary_failure: <short reason>
- first_failed_command: <command or N/A>
- evidence_tail: <short excerpt or summary>
## Failed Test Inventory
| test_name | label | command | failure_summary |
| --- | --- | --- | --- |
| <test name> | <label or N/A> | <command> | <summary> |
## Handoff Recommendation
| target_agent | reason | required_input |
| --- | --- | --- |
| Implementation Agent | <when implementation-owned failure is found> | <command log and failing test> |
| Correction Agent | <when focused repair/rollback is needed> | <failure classification and changed files from implementation report> |
| Reference Verification Agent | <when build/test passes and reference comparison report is next> | <passing command evidence> |
| Implementation Planning Agent | <when plan/test contract is incomplete> | <missing or contradictory plan item> |
## No-Change Assertion
- source_files_modified: false
- test_files_modified: false
- cmake_files_modified: false
- reference_artifacts_modified: false
- notes: <observed no-change evidence or exception>
## Open Issues
- <environment gap, missing CMake preset, missing reference artifact, repeated failure, or upstream-contract issue>
```
## 상태 값
- `pass-for-reference-verification`: build/test 검증이 통과해 Reference Verification Agent로 넘길 수 있다.
- `needs-correction`: compile, link, ordinary test, implementation-owned failure가 있어 Correction Agent 또는 Implementation Agent 작업이 필요하다.
- `needs-environment-fix`: MSVC, CMake generator, Python, path, permission 등 로컬 환경 문제로 검증이 막혔다.
- `needs-upstream-decision`: implementation plan, requirements, formulation, I/O, reference artifact, tolerance policy가 불완전하거나 충돌한다.
- `blocked`: 반복 실패 또는 외부 조건 때문에 사용자나 Coordinator Agent 결정 없이는 진행할 수 없다.
## 품질 기준
- 모든 실행 명령과 exit code를 기록해야 한다.
- 실패 로그는 전체 원문을 복제하지 않고 마지막 핵심 구간과 실패 원인을 요약한다.
- configure, compile, link, test, reference-comparison, harness, environment, upstream-contract 실패를 구분한다.
- C/C++와 build metadata가 모두 없는 상황만 `no C/C++ project` 성공으로 기록한다. C/C++ 파일이 있는데 build metadata가 없으면 `environment` 또는 `configure` 실패로 기록한다.
- 성공 판정은 build/test 통과까지만 의미한다.
- reference tolerance, physics validation, release readiness는 판정하지 않는다.
- upstream 계약 문제는 Implementation Agent에 임의 수정으로 넘기지 않고 적절한 upstream agent로 handoff한다.
-190
View File
@@ -1,190 +0,0 @@
# Coordination Report 문서 작성 가이드
이 디렉터리는 Coordinator Agent가 작성하거나 제안하는 기능별 workflow coordination report를 보관하는 위치다.
Coordinator Agent는 FESA solver 기능 개발의 전체 lifecycle에서 gate evidence, handoff, rework loop, blocker, user decision을 관리한다. 이 Agent는 specialist agent의 기술 판정을 대체하지 않고, 다음 agent가 어떤 입력으로 무엇을 산출해야 하는지 명확히 기록한다.
기본 문서명은 `docs/coordination/<feature-id>-coordination.md` 형식을 사용한다.
## Coordinator Agent 역할
수행한다:
- feature request를 `feature_id`, target capability, initial priority, expected first agent로 분류한다.
- existing docs/reports/artifacts를 읽고 workflow state를 audit한다.
- gate별 source evidence, missing evidence, contradictory evidence를 inventory로 만든다.
- 다음 agent handoff package를 작성한다.
- repeated failure와 blocker를 추적하고 escalation target을 정한다.
- final workflow closure를 기록한다.
수행하지 않는다:
- source code를 수정하지 않는다.
- tests를 수정하지 않는다.
- CMake files 또는 build configuration을 수정하지 않는다.
- build/test validation을 실행하지 않는다.
- reference comparison을 실행하지 않는다.
- physics evaluation을 실행하지 않는다.
- requirements, formulations, I/O contracts, numerical review reports를 수정하지 않는다.
- reference artifacts 또는 tolerance policies를 수정하지 않는다.
- Abaqus, Nastran 또는 reference solver를 실행하지 않는다.
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
- subagents를 자동 spawn하지 않는다.
- release readiness를 독립적으로 승인하지 않는다.
## 실행 순서
Coordinator Agent는 다음 순서를 따른다.
```text
INTAKE -> STATE AUDIT -> GATE DECISION -> HANDOFF PACKAGE -> STATUS REPORT
```
`STATE AUDIT`에서는 다음 evidence를 확인한다.
- Requirement Agent output
- Research Agent output
- Formulation Agent output
- Numerical Review Agent output
- I/O Definition Agent output
- Reference Model Agent output
- Implementation Planning Agent output
- Implementation Agent report
- Build/Test Executor Agent report
- Correction Agent report
- Reference Verification Agent report
- Physics Evaluation Agent report
- Release Agent report
- Build/Test report의 `.harness/config.json` 또는 자동 감지 기반 MSVC build/test command evidence
## 문서 템플릿
```markdown
# <feature title> Coordination Report
## Metadata
- feature_id: <feature-id>
- status: intake | needs-requirements | needs-research | needs-formulation | needs-numerical-review | needs-io-definition | needs-reference-model | needs-implementation-plan | ready-for-implementation | needs-build-test | needs-correction | needs-reference-verification | needs-physics-evaluation | needs-release | ready-for-release | completed | needs-user-decision | blocked
- owner_agent: coordinator-agent
- date: <YYYY-MM-DD>
- source_docs: <docs/reports used>
## Feature Request Summary
- requested_feature: <short summary>
- current_goal: <current coordination goal>
- included_scope: <included scope>
- excluded_scope: <excluded scope>
- priority: <initial priority>
## Current Workflow State
| item | value | notes |
| --- | --- | --- |
| current_gate | <gate> | <notes> |
| completed_outputs | <outputs> | <notes> |
| missing_outputs | <outputs> | <notes> |
| active_blockers | <blockers> | <notes> |
| next_eligible_gate | <gate> | <notes> |
## Gate Evidence Inventory
| gate | owning_agent | expected_evidence | observed_evidence | status | notes |
| --- | --- | --- | --- | --- | --- |
| requirements | Requirement Agent | docs/requirements/<feature-id>.md | <path/status> | pass | fail | missing | <notes> |
| research | Research Agent | docs/research/<feature-id>-research.md | <path/status> | pass | fail | missing | <notes> |
| formulation | Formulation Agent | docs/formulations/<feature-id>-formulation.md | <path/status> | pass | fail | missing | <notes> |
| numerical_review | Numerical Review Agent | docs/numerical-reviews/<feature-id>-review.md | <path/status> | pass | fail | missing | <notes> |
| io_definition | I/O Definition Agent | docs/io-definitions/<feature-id>-io.md | <path/status> | pass | fail | missing | <notes> |
| reference_model | Reference Model Agent | docs/reference-models/<feature-id>-reference-models.md | <path/status> | pass | fail | missing | <notes> |
| implementation_planning | Implementation Planning Agent | docs/implementation-plans/<feature-id>-implementation-plan.md | <path/status> | pass | fail | missing | <notes> |
| implementation | Implementation Agent | implementation report | <path/status> | pass | fail | missing | <notes> |
| build_test | Build/Test Executor Agent | pass-for-reference-verification | <path/status> | pass | fail | missing | <notes> |
| correction | Correction Agent | correction report when needed | <path/status> | pass | fail | missing | <notes> |
| reference_verification | Reference Verification Agent | pass-for-physics-evaluation | <path/status> | pass | fail | missing | <notes> |
| physics_evaluation | Physics Evaluation Agent | pass-for-release-agent | <path/status> | pass | fail | missing | <notes> |
| release | Release Agent | ready-for-release | <path/status> | pass | fail | missing | <notes> |
## Decision Log
| date | decision_type | decision | source_evidence | rationale |
| --- | --- | --- | --- | --- |
| <YYYY-MM-DD> | gate transition | blocker | user decision | rework decision | <decision> | <path/status> | <reason> |
## Next Agent Handoff
| field | value |
| --- | --- |
| target_agent | <agent name> |
| reason | <why this agent is next> |
| required_inputs | <docs/reports/artifacts> |
| expected_output | <expected report or artifact contract> |
| acceptance_gate | <status or gate required after handoff> |
| stop_condition | <when the agent should stop and hand back> |
| missing_evidence | <missing inputs or decisions> |
## Traceability Snapshot
| requirement_id | gate | report | artifact | status | current_disposition |
| --- | --- | --- | --- | --- | --- |
| <req-id> | <gate> | <report path> | <artifact path> | <status> | <released | deferred | blocked | pending> |
## Risk and Blocker Register
| risk_or_blocker | category | owner | status | next_action |
| --- | --- | --- | --- | --- |
| <issue> | upstream ambiguity | repeated failure | reference artifact gap | environment blocker | <agent/user> | open | mitigated | blocked | <action> |
## Rework Loop Control
| failure_classification | correction_attempt_count | escalation_target | stop_condition | notes |
| --- | --- | --- | --- | --- |
| <classification> | <count> | <agent/user> | <condition> | <notes> |
## No-Change Assertion
- source_files_modified: false
- test_files_modified: false
- cmake_files_modified: false
- reference_artifacts_modified: false
- tolerance_policies_modified: false
- notes: <observed no-change evidence or exception>
## Open Issues
- <unresolved user decision, missing evidence, contradictory report, or blocked transition>
```
## 상태 값
- `intake`: 기능 요청은 들어왔지만 첫 handoff가 완료되지 않았다.
- `needs-requirements`: Requirement Agent가 요구조건을 정의하거나 수정해야 한다.
- `needs-research`: Research Agent가 source-backed research evidence를 제공하거나 수정해야 한다.
- `needs-formulation`: Formulation Agent가 FEM 정식화를 작성하거나 수정해야 한다.
- `needs-numerical-review`: Numerical Review Agent가 정식화를 검토하거나 재검토해야 한다.
- `needs-io-definition`: I/O Definition Agent가 Abaqus input/output 계약을 정의하거나 수정해야 한다.
- `needs-reference-model`: Reference Model Agent가 lightweight reference-case inventory,
required input/CSV presence, source-ID/component matching 또는 tolerance를 정의해야 한다.
- `needs-implementation-plan`: Implementation Planning Agent가 TDD implementation plan을 작성하거나 수정해야 한다.
- `ready-for-implementation`: implementation plan이 준비되었고 downstream 구현을 막는 upstream gate가 없다.
- `needs-build-test`: 구현 이후 독립 Build/Test Executor 검증이 필요하다.
- `needs-correction`: implementation-owned failure가 있어 Correction Agent가 필요하다.
- `needs-reference-verification`: Build/Test evidence가 `pass-for-reference-verification`이다.
- `needs-physics-evaluation`: Reference Verification report가 `pass-for-physics-evaluation`이다.
- `needs-release`: Physics Evaluation report가 `pass-for-release-agent`이다.
- `ready-for-release`: Release Agent report가 `ready-for-release`이고 final closure 기록이 필요하다.
- `completed`: Release Agent report가 `ready-for-release`이고 Coordinator가 final workflow closure를 기록했다.
- `needs-user-decision`: 사용자 또는 project decision 없이는 안전하게 진행할 수 없다.
- `blocked`: 사용자 결정, 환경 변경, upstream correction 없이는 진행할 수 없다.
## Handoff 원칙
- 다음 단계 handoff는 source evidence, missing evidence, expected output, acceptance gate, stop condition을 포함해야 한다.
- specialist agent가 소유한 기술 판정을 Coordinator가 대체하지 않는다.
- `ready-for-implementation`은 Implementation Planning report가 `ready-for-implementation`일 때만 가능하다.
- `needs-reference-verification`은 Build/Test evidence가 `pass-for-reference-verification`일 때만 가능하다.
- `needs-physics-evaluation`은 Reference Verification report가 `pass-for-physics-evaluation`일 때만 가능하다.
- `needs-release`는 Physics Evaluation report가 `pass-for-release-agent`일 때만 가능하다.
- `completed`는 Release Agent report가 `ready-for-release`이고 final workflow closure가 기록된 경우에만 가능하다.
- 동일 failure classification이 두 번 이상 반복되거나 upstream 계약 변경이 필요하면 `needs-user-decision` 또는 `blocked`로 전환한다.
## 검증 기준
- Coordinator Agent config와 문서 템플릿에 자동화된 Python 검증이 있으면 `uv run --with pytest python -m pytest -v -rs`로 실행한다.
- C++ build/test evidence는 `.harness/config.json` 또는 Harness 자동 감지 기본값에 따른 Build/Test report에서 확인한다.
- C/C++ 파일과 build metadata가 모두 없을 때만 `no C/C++ project` 성공을 허용한다. C/C++ 파일만 있고 build metadata가 없으면 통과 evidence로 사용하지 않는다.
-158
View File
@@ -1,158 +0,0 @@
# Correction Report 문서 작성 가이드
이 디렉터리는 Correction Agent가 작성하거나 제안하는 기능별 correction report를 보관하는 위치다.
Correction Agent는 Build/Test Executor Agent, Reference Verification Agent, Physics Evaluation Agent가 전달한 실패를 triage하고, implementation-owned failure만 최소 수정으로 복구한다. 이 agent는 source, header, test, CMake 수정은 수행할 수 있지만 requirements, formulations, I/O contracts, reference artifacts, tolerance policies는 수정하지 않는다.
기본 문서명은 `docs/corrections/<feature-id>-correction.md` 형식을 사용한다.
## Correction Agent 역할
수행한다:
- 실패 로그와 implementation report를 읽고 failure classification을 먼저 확정한다.
- configure, compile, link, test, reference-comparison, harness, environment, upstream-contract 실패를 구분한다.
- implementation-owned failure에 한해 source/header/test/CMake를 최소 수정한다.
- 수정 후 targeted command를 먼저 실행하고 `.harness/config.json` 또는 자동 감지 기본값에 따른 전체 MSVC build/test를 실행한다.
- Harness Python, Hook, agent config 관련 수정에서는 `uv run --with pytest python -m pytest -v -rs`도 실행한다.
- 반복 실패 또는 upstream 계약 문제를 Coordinator Agent나 관련 upstream agent로 handoff한다.
수행하지 않는다:
- requirements를 수정하지 않는다.
- formulations를 수정하지 않는다.
- I/O contracts를 수정하지 않는다.
- numerical review reports를 수정하지 않는다.
- reference artifacts를 수정하지 않는다.
- tolerance policies를 수정하지 않는다.
- Abaqus, Nastran 또는 reference solver를 실행하지 않는다.
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
- release readiness, reference tolerance success, physics validation success를 승인하지 않는다.
- 최종 reference verification report 또는 physics validation report를 작성하지 않는다.
## 실행 순서
Correction Agent는 항상 다음 순서를 따른다.
```text
TRIAGE -> MINIMAL FIX -> VERIFY -> REPORT
```
기본 검증 명령은 다음과 같다.
```powershell
<targeted command that reproduced the failure>
cmake -S . -B .harness/build -A x64
cmake --build .harness/build --config Debug
ctest --test-dir .harness/build -C Debug --show-only=json-v1
ctest --test-dir .harness/build -C Debug --output-on-failure
```
Preset 또는 직접 MSBuild 프로젝트는 `.harness/config.json`의 설정을 따른다. Harness
Python, Hook, agent config, Python validation behavior가 correction 범위에 포함될 때는
`uv run --with pytest python -m pytest -v -rs`도 실행한다. Stop 검증은 응답 종료 전에
같은 전체 프로젝트 검증을 다시 수행한다.
## Failure Classification
- `configure`: CMake configure, preset, generator, cache setup 실패
- `compile`: C++ compilation 실패
- `link`: linker, symbol resolution, target dependency 실패
- `test`: CTest, unit, integration, parser/I/O, ordinary regression test 실패
- `reference-comparison`: 저장된 reference artifact와 deterministic comparison 실패
- `harness`: Python Harness test, PreToolUse/Stop Hook, config loading, discovery, adapter validation 실패
- `environment`: MSVC, CMake, Python, path, permission, generator, local dependency 문제
- `upstream-contract`: requirements, formulation, I/O, reference artifact, tolerance, implementation plan 불일치 또는 누락
## 문서 템플릿
```markdown
# <feature title> Correction Report
## Metadata
- feature_id: <feature-id>
- source_failure_report: docs/build-test-reports/<feature-id>-build-test.md | <reference/physics report path>
- source_implementation_report: <path or N/A>
- source_implementation_plan: docs/implementation-plans/<feature-id>-implementation-plan.md
- status: corrected-for-build-test | corrected-for-reference-verification | needs-build-test-rerun | needs-environment-fix | needs-upstream-decision | blocked
- owner_agent: correction-agent
- date: <YYYY-MM-DD>
## Failure Triage
- classification: configure | compile | link | test | reference-comparison | harness | environment | upstream-contract
- first_failed_command: <command>
- failed_target_or_test: <target, test, label, or N/A>
- evidence_tail: <short relevant tail, not full log>
- triage_decision: implementation-owned | environment-owned | upstream-owned | blocked
## Root Cause Summary
- root_cause_type: implementation defect | test defect | CMake registration issue | environment issue | upstream-contract issue
- summary: <short explanation>
- why_minimal_fix_is_allowed: <contract or failure evidence>
## Correction Scope
| file | change_type | reason | in_scope |
| --- | --- | --- | --- |
| include/fesa/<module>/<file>.hpp | source/header | <reason> | true |
| src/<module>/<file>.cpp | source | <reason> | true |
| tests/<module>/<file>_test.cpp | test | <reason> | true |
| CMakeLists.txt | CMake | <reason> | true |
Excluded files:
- requirements: unchanged
- formulations: unchanged
- I/O contracts: unchanged
- reference artifacts: unchanged
- tolerance policies: unchanged
## Verification Evidence
| order | command | exit_code | result | evidence |
| --- | --- | --- | --- | --- |
| 1 | <targeted command> | <code> | pass | fail | <summary> |
| 2 | <config-resolved full MSVC build/test commands> | <code> | pass | fail | <summary> |
| 3 | uv run --with pytest python -m pytest -v -rs | <code or skipped> | pass | fail | skipped | <summary> |
## Traceability
| requirement_id | task_id | test_id | failing_command | corrected_file | acceptance_criterion |
| --- | --- | --- | --- | --- | --- |
| <req-id or N/A> | <task-id or N/A> | <test-id or N/A> | <command> | <file> | <criterion> |
## Handoff Recommendation
| target_agent | reason | required_input |
| --- | --- | --- |
| Build/Test Executor Agent | <independent full validation required> | <commands and correction summary> |
| Reference Verification Agent | <reference comparison rerun required> | <corrected-for-reference-verification evidence> |
| Physics Evaluation Agent | <physics sanity rerun required> | <corrected solver behavior evidence> |
| Implementation Agent | <new implementation task required> | <unfixed implementation gap> |
| upstream agent | <contract issue> | <required upstream decision> |
| Coordinator Agent | <repeated failure or blocked state> | <classification history and stop condition> |
## Stop Condition
- repeated_failure: true | false
- upstream_ambiguity: true | false
- reference_artifact_gap: true | false
- environment_blocker: true | false
- next_required_decision: <decision or N/A>
```
## 상태 값
- `corrected-for-build-test`: correction이 Build/Test Executor Agent 재실행 단계로 넘어갈 수 있다.
- `corrected-for-reference-verification`: correction이 Reference Verification Agent 재실행 단계로 넘어갈 수 있다.
- `needs-build-test-rerun`: targeted correction은 통과했지만 독립 build/test 재실행이 필요하다.
- `needs-environment-fix`: 로컬 toolchain, generator, Python, path, permission 문제가 correction 또는 verification을 막는다.
- `needs-upstream-decision`: upstream contract, reference artifact, tolerance, formulation ambiguity가 안전한 수정을 막는다.
- `blocked`: 사용자 또는 Coordinator Agent 결정 없이는 안전하게 진행할 수 없다.
## 품질 기준
- 수정 전 failure classification을 기록해야 한다.
- 모든 변경은 실패 로그 또는 implementation plan acceptance criterion에 trace되어야 한다.
- production C++ 수정에는 관련 테스트 또는 기존 실패 테스트가 있어야 한다.
- requirements, formulations, I/O contracts, reference artifacts, tolerance policies는 수정하지 않는다.
- 실패 로그는 전체 원문을 복제하지 않고 핵심 tail과 원인 요약만 기록한다.
- 동일 classification이 두 번 반복되면 Coordinator Agent 또는 관련 upstream agent로 handoff한다.
- 성공 판정은 correction verification까지만 의미한다.
- release readiness, reference tolerance success, physics validation success는 판정하지 않는다.
-148
View File
@@ -1,148 +0,0 @@
# 정식화 문서 작성 가이드
이 디렉터리는 Formulation Agent가 작성하거나 제안한 기능별 유한요소 정식화 문서를 보관하는 위치다.
기본 파일명은 `docs/formulations/<feature-id>-formulation.md` 형식을 사용한다. 각 문서는 Requirement Agent의 요구조건과 Research Agent의 연구 브리프를 입력으로 받아 Implementation Planning Agent와 Implementation Agent가 사용할 수 있는 수학/알고리즘 계약을 제공해야 한다.
## Formulation Agent 역할
Formulation Agent는 구현 가능한 FEM 정식화 문서를 작성한다.
수행한다:
- strong form, weak form, discretization을 정리한다.
- shape functions, `B` matrix 또는 kinematic operator를 정의한다.
- constitutive contract, element residual/internal force, stiffness/tangent matrix를 정리한다.
- numerical integration, mapping, Jacobian 규칙을 명시한다.
- output recovery, algorithm pseudocode, edge case, numerical risk를 정리한다.
- Numerical Review Agent가 검토할 handoff 항목을 남긴다.
수행하지 않는다:
- C++ 코드를 구현하지 않는다.
- C++ API나 파일 구조를 설계하지 않는다.
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
- release readiness를 승인하지 않는다.
- Numerical Review Agent 검토 전 정식화를 최종 승인하지 않는다.
## 문서 템플릿
```markdown
# <feature title> Formulation
## Metadata
- feature_id: <feature-id>
- source_requirement: docs/requirements/<feature-id>.md
- source_research: docs/research/<feature-id>-research.md
- status: draft | needs-research | ready-for-numerical-review
- owner_agent: formulation-agent
- date: <YYYY-MM-DD>
## Scope and Assumptions
- analysis_type: linear static | nonlinear static | modal | dynamic | other
- element_type: <target element>
- deformation: small | large | TBD
- linearity: linear | nonlinear | TBD
- material_model_boundary: <scope>
- coordinate_system: <global/local coordinates>
- units: <unit system>
## Primary Variables and DOFs
- nodal_variables: <variables>
- dof_ordering: <ordering>
- sign_convention: <convention>
- constrained_free_dof_assumptions: <assumptions>
## Strong Form and Boundary Conditions
- governing_equation: <equation>
- dirichlet_boundary: <essential BC>
- neumann_boundary: <natural BC>
- natural_boundary_terms: <terms>
## Weak or Variational Form
- test_functions: <definition>
- integration_by_parts: <steps>
- internal_virtual_work: <expression>
- external_virtual_work: <expression>
## Discretization
- interpolation: <field interpolation>
- shape_functions: <shape functions>
- partition_of_unity_check: <expected check>
- kronecker_delta_check: <expected check>
- nodal_layout: <layout>
## Kinematics
- strain_displacement_relation: <relation>
- B_matrix_or_kinematic_operator: <definition>
- deformation_gradient: <definition or N/A>
- strain_measure: <definition or N/A>
## Constitutive Contract
- elasticity_matrix_or_stress_update: <contract>
- material_state_variables: <variables or N/A>
- assumptions_and_constraints: <assumptions>
## Element Equations
- internal_force_or_residual: <expression>
- external_force: <expression>
- stiffness_or_tangent_matrix: <expression>
- mass_or_damping: <required expression or N/A>
- vector_matrix_dimensions: <dimensions>
## Mapping and Numerical Integration
- reference_coordinates: <coordinates>
- isoparametric_mapping: <mapping>
- jacobian: <definition>
- determinant_checks: <validity checks>
- gauss_points_and_weights: <rule>
- integration_policy: full | reduced | selective | analytical | TBD
## Output Recovery
- displacement: <location and convention>
- reaction: <calculation>
- element_force: <calculation>
- strain: <location and recovery>
- stress: <location and recovery>
- nodal_extrapolation: <policy or N/A>
## Algorithm Pseudocode
```text
math-level element routine and assembly flow only
no C++ signatures, class names, or file paths
```
## Numerical Risks
- rigid_body_modes: <risk/check>
- patch_test: <expected test>
- symmetry: <expected property>
- positive_definiteness: <expected property>
- hourglass: <risk or N/A>
- shear_locking: <risk or N/A>
- volumetric_locking: <risk or N/A>
- distortion: <risk/check>
- singular_jacobian: <risk/check>
## Open Issues and Downstream Handoff
### Numerical Review Agent
- <derivations, assumptions, numerical risks, open issues>
### I/O Definition Agent
- <required inputs, outputs, units, coordinate conventions, output locations>
### Reference Model Agent
- <benchmarkable quantities, patch test needs, expected invariants, edge cases>
### Implementation Planning Agent
- <math-level pseudocode, acceptance-relevant quantities, tests to write first>
```
## 품질 기준
- 요구조건과 연구 브리프에 없는 값을 임의로 확정하지 않는다.
- strong form, weak form, discretization, kinematics, constitutive contract, element equations를 구분한다.
- shape functions는 가능한 경우 partition of unity와 Kronecker delta 검사를 포함한다.
- numerical integration은 integration point, weight, 적분 대상, full/reduced/selective 정책을 포함한다.
- mapping은 reference coordinates, Jacobian, determinant validity check를 포함한다.
- output recovery는 nodal, element-level, integration-point 위치를 구분한다.
- numerical risk는 rigid body modes, patch test, hourglass, locking, Jacobian 문제를 명시한다.
-192
View File
@@ -1,192 +0,0 @@
# Implementation Plan 문서 작성 가이드
이 디렉터리는 Implementation Planning Agent가 작성하거나 제안한 기능별 구현계획 문서를 보관하는 위치다.
Implementation Planning Agent는 승인된 요구조건, 연구 브리프, 정식화, 수치 리뷰, I/O
정의와 lightweight reference-case inventory를 C++/MSVC 구현 전 TDD 작업계획으로
변환한다. Project-local `$harness`를 사용해 multi-Step 초안을 먼저 제시하고 사용자가
승인한 뒤에만 `phases/` planning files를 생성한다. 계획과 구현 전에
`docs/HARNESS.md``docs/HARNESS_WORKFLOW.md`를 읽는다.
## Harness 실행 handoff
Planning Agent는 draft -> explicit user approval -> planning files만 수행하며 Step을
선택하거나 실행하지 않는다. 별도의 명시적 사용자 요청이 있어야 Executor
(`scripts/execute.py`)가 branch, pending Step, retry, timestamps, commits, advancement와 phase
status를 소유한다.
Implementation Agent는 approved plan, materialized phase indexes, Executor-selected current
`stepN.md` 하나만 사용한다. current Step에서 `RED -> observed failure -> minimal GREEN ->
focused/full VERIFY`를 완료하고 다음 Step을 시작하지 않는다. Agent는 current Step의 `status`
`summary`, `error_message`, `blocked_reason` payload만 쓴다. `.codex/hooks.json`
PreToolUse와 Stop은 자동으로 실행되며 hook entry point를 수동 실행해 대체하지 않는다.
기본 파일명은 `docs/implementation-plans/<feature-id>-implementation-plan.md` 형식을 사용한다. 각 문서는 Implementation Agent가 먼저 작성해야 할 실패 테스트, 최소 구현 순서, CMake/CTest 등록 계획, acceptance traceability를 제공해야 한다.
## Implementation Planning Agent 역할
수행한다:
- upstream 문서가 구현 계획에 충분한지 Readiness Check를 수행한다.
- 요구조건과 정식화를 작은 Work Breakdown task로 나눈다.
- unit, integration, parser/I/O, reference-comparison 테스트를 TDD 순서로 정렬한다.
- CMake/CTest target, `add_test`, label, `ctest -C Debug` 검증 계획을 정의한다.
- candidate source/header/test/CMake 파일과 ownership boundary를 제안한다.
- requirement, task, test, reference model, acceptance criterion을 Acceptance Traceability Matrix로 연결한다.
- `.harness/config.json` 또는 자동 감지 기본값에서 해석되는 MSVC build/test 명령과 feature-specific command를 명시한다.
- 한 Step을 하나의 layer/module로 제한하고 prerequisite files, RED/GREEN/VERIFY, exact
acceptance commands와 구체적 금지사항을 포함한다.
- 사용자 승인 전에는 `phases/` 파일을 만들지 않고, 승인 뒤에도 planning files만
materialize한다. 별도 요청 없이는 `scripts/execute.py`를 실행하지 않으며 Step을
선택하거나 실행하지 않는다.
수행하지 않는다:
- C++ 코드를 구현하지 않는다.
- 테스트 파일을 작성하지 않는다.
- CMake 파일을 수정하지 않는다.
- CMake/CTest를 실행하지 않는다.
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
- solver 결과를 비교하지 않는다.
- release readiness를 승인하지 않는다.
- C++ API, class name, storage layout, file ownership을 확정하지 않는다.
## 문서 템플릿
```markdown
# <feature title> Implementation Plan
## Metadata
- feature_id: <feature-id>
- source_requirement: docs/requirements/<feature-id>.md
- source_research: docs/research/<feature-id>-research.md
- source_formulation: docs/formulations/<feature-id>-formulation.md
- source_numerical_review: docs/numerical-reviews/<feature-id>-review.md
- source_io_definition: docs/io-definitions/<feature-id>-io.md
- source_reference_models: docs/reference-models/<feature-id>-reference-models.md
- status: draft | needs-upstream-decision | ready-for-implementation | blocked
- owner_agent: implementation-planning-agent
- date: <YYYY-MM-DD>
## Readiness Check
| input | required_status | observed_status | decision |
| --- | --- | --- | --- |
| requirement | approved or sufficient draft | <status> | proceed | needs-upstream-decision | blocked |
| formulation | pass-for-implementation-planning or sufficient draft | <status> | proceed | needs-upstream-decision | blocked |
| numerical_review | pass-for-implementation-planning | <status> | proceed | needs-upstream-decision | blocked |
| io_definition | ready-for-implementation-planning or sufficient draft | <status> | proceed | needs-upstream-decision | blocked |
| reference_models | ready-for-implementation-planning or planned artifacts | <status> | proceed | needs-upstream-decision | blocked |
## Implementation Scope
- included_behavior: <behavior to implement>
- excluded_behavior: <behavior explicitly out of scope>
- non_goals: <items not to design or implement in this phase>
## Work Breakdown
| task_id | order | purpose | upstream_trace | depends_on | expected_test_first |
| --- | --- | --- | --- | --- | --- |
| TASK-001 | 1 | <small implementation task> | <requirement/formulation/io/reference id> | none | TEST-001 |
## TDD Test Plan
| test_id | order | test_type | red_condition | green_condition | linked_task | command |
| --- | --- | --- | --- | --- | --- | --- |
| TEST-001 | 1 | unit | test fails because behavior is missing | test passes after minimal implementation | TASK-001 | ctest -C Debug -R <test-name> |
| TEST-002 | 2 | integration | integrated path fails before implementation | integrated path passes | TASK-002 | ctest -C Debug -R <test-name> |
| TEST-003 | 3 | parser/I/O | Abaqus .inp case is not accepted or mapped | input maps to expected semantic model | TASK-003 | ctest -C Debug -R <test-name> |
| TEST-004 | 4 | reference-comparison | solver HDF5/CSV view comparison fails before implementation | comparison is within planned tolerance | TASK-004 | ctest -C Debug -R <test-name> |
## CMake/CTest Plan
- target_candidates: <library/test executable targets>
- add_test_needs: <CTest registration needs>
- labels: unit | integration | reference | parser | io
- msvc_config: Debug
- expected_feature_command: ctest --test-dir .harness/build -C Debug -R <feature-or-label> --output-on-failure
- full_validation_source: .harness/config.json | Harness auto detection
## Candidate Files and Ownership
| file_candidate | purpose | owner_boundary | notes |
| --- | --- | --- | --- |
| include/fesa/<module>/<candidate>.hpp | <candidate public header role> | candidate only, not final API | <notes> |
| src/<module>/<candidate>.cpp | <candidate implementation role> | candidate only, not final API | <notes> |
| tests/<module>/<candidate>_test.cpp | <test role> | required before production change | <notes> |
| CMakeLists.txt | <target/test registration role> | candidate only | <notes> |
## Data Flow Contract
1. Abaqus `.inp` input follows docs/io-definitions/<feature-id>-io.md.
2. Parser/I/O path maps model data and history data into the internal semantic model.
3. Solver path produces authoritative `results.h5` with displacement, reaction, internal force, stress, or feature-specific result datasets.
4. Reference inputs and required CSV files use exact existing paths declared by the feature.
5. Reference comparison tests compare only blocking/warning quantities by source ID/component.
## Acceptance Traceability Matrix
| requirement_id | task_id | test_id | reference_model_id | acceptance_criterion | status |
| --- | --- | --- | --- | --- | --- |
| <req-id> | TASK-001 | TEST-001 | <model-id or N/A> | <criterion> | draft |
## Validation Commands
```powershell
cmake -S . -B .harness/build -A x64
cmake --build .harness/build --config Debug
ctest --test-dir .harness/build -C Debug -R <feature-or-label> --output-on-failure
ctest --test-dir .harness/build -C Debug --output-on-failure
```
Preset 또는 직접 MSBuild 프로젝트는 `.harness/config.json`에 해석 가능한 명령을 적는다.
Harness Python, Hook, agent config 변경이 계획 범위에 포함되면
`uv run --with pytest python -m pytest -v -rs`도 추가한다. Stop 검증은 Step 종료 전 전체
MSVC build/test를 다시 확인하며, 구현 보고서의 RED 실패 증거를 대체하지 않는다.
## Risks and Downstream Handoff
### Implementation Agent
- <task order, tests to write first, candidate files, acceptance criteria>
### Build/Test Executor Agent
- <validation commands, expected CTest labels, feature-specific commands>
### Correction Agent
- <likely failure classifications and upstream rollback guidance>
### Reference Verification Agent
- <planned HDF5/CSV comparison tests, exact case paths, tolerance mapping, source-ID/component matching>
## Harness Step Draft
| step | name | owned layer/module | prerequisite files | RED/GREEN/VERIFY | acceptance commands | stop condition |
| ---: | --- | --- | --- | --- | --- | --- |
| 0 | <kebab-case> | <one scope> | <exact paths> | <test-first sequence> | <exact commands> | <condition> |
User approval is required before materializing this draft under `phases/`.
## Executor Handoff
- Executor authorization: separate explicit user request for `scripts/execute.py`.
- implementation input: approved plan, materialized phase indexes, and Executor-selected current
`stepN.md`.
- implementation recipe: `RED -> observed failure -> minimal GREEN -> focused/full VERIFY`.
- metadata ownership: Implementation Agent records only the current Step `status` plus `summary`,
`error_message`, or `blocked_reason`; Executor records branch, pending-Step selection, retry,
timestamps, commits, advancement, and phase status.
- hooks: `.codex/hooks.json` automatically invokes PreToolUse and Stop; never manually run hook
entry points as substitutes.
## Open Issues
- <requirement, formulation, I/O, required comparison file/mapping, tolerance, or architecture issue>
```
## 품질 기준
- 모든 `must` requirement는 최소 하나의 task와 test에 연결되어야 한다.
- C++ production 변경마다 선행 테스트 파일 또는 테스트 추가 계획이 있어야 한다.
- reference comparison이 필요한 기능은 exact existing input/required CSV path와 FESA
HDF5-to-reference-CSV source-ID/component mapping test 계획을 가져야 한다.
- Implementation Planning Agent는 Harness Step 초안을 사용자에게 승인받은 뒤에만 phase
index와 step files를 생성하며 executor는 자동 실행하지 않는다.
- CMake/CTest 계획은 MSVC x64 Debug 검증 경로와 호환되어야 한다.
- 구현 계획은 테스트 작성, 실패 확인, 최소 구현, validation 순서를 명시해야 한다.
- upstream 문서가 불완전하면 값을 임의로 채우지 않고 `needs-upstream-decision` 또는 `blocked`로 표시한다.
- release 완료나 reference tolerance 통과 판정은 하지 않는다.
-179
View File
@@ -1,179 +0,0 @@
# I/O 정의 문서 작성 가이드
이 디렉터리는 I/O Definition Agent가 작성하거나 제안한 기능별 입출력 정의 문서를 보관하는 위치다.
FESA 솔버의 입력 파일은 Abaqus input file이다. 다만 초기 FESA는 Abaqus 전체 문법 호환을 목표로 하지 않고, 기능별로 지원할 Abaqus keyword subset과 내부 모델 매핑을 명확히 정의한다.
기본 파일명은 `docs/io-definitions/<feature-id>-io.md` 형식을 사용한다. 각 문서는 Requirement Agent, Formulation Agent, Numerical Review Agent의 산출물을 입력으로 받아 Abaqus `.inp` 입력 계약, authoritative HDF5 result schema, FESA HDF5 to Reference CSV comparison schema를 정의해야 한다.
## I/O Definition Agent 역할
I/O Definition Agent는 Abaqus input file subset, 내부 solver model mapping, output request mapping, HDF5 result schema, reference CSV comparison row schema를 정의한다.
수행한다:
- 기능별 supported Abaqus keyword subset을 정의한다.
- unsupported, ignored-with-warning, requires-user-decision keyword 정책을 정의한다.
- model data와 history data를 내부 solver 개념으로 매핑한다.
- node, element, set, material, section, boundary condition, load, step, output request의 의미 계약을 정의한다.
- `results.h5`의 authoritative HDF5 schema를 정의한다.
- 기능이 선언한 existing Abaqus CSV와 비교하기 위한 최소 source-ID/component mapping을 정의한다.
수행하지 않는다:
- parser를 구현하지 않는다.
- C++ API나 파일 구조를 설계하지 않는다.
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
- solver 결과와 reference 결과를 비교하지 않는다.
- release readiness를 승인하지 않는다.
- 명시적으로 정의되지 않은 Abaqus full compatibility를 주장하지 않는다.
## 문서 템플릿
```markdown
# <feature title> I/O Definition
## Metadata
- feature_id: <feature-id>
- source_requirement: docs/requirements/<feature-id>.md
- source_formulation: docs/formulations/<feature-id>-formulation.md
- source_numerical_review: docs/numerical-reviews/<feature-id>-review.md
- source_research: docs/research/<feature-id>-research.md
- status: draft | needs-user-decision | ready-for-implementation-planning
- owner_agent: io-definition-agent
- date: <YYYY-MM-DD>
## Abaqus Input Scope
- input_format: Abaqus input file (`.inp`)
- abaqus_documentation_source: <version/source URL>
- compatibility_disclaimer: FESA supports only the keyword subset defined in this document.
| keyword | support_status | level | required_parameters | mapped_internal_concept | notes |
| --- | --- | --- | --- | --- | --- |
| *HEADING | supported | model | N/A | model title | optional |
| *INCLUDE | supported | model/history | INPUT | include file | path policy required |
| *NODE | supported | model | N/A | node label and coordinates | |
| *NSET | supported | model | NSET | node set | sorted/unsorted policy required |
| *ELEMENT | supported | model | TYPE | element label, type, connectivity | |
| *ELSET | supported | model | ELSET | element set | |
| *MATERIAL | supported | model | NAME | material | |
| *ELASTIC | supported | model | N/A or TYPE | elastic material data | |
| <section keyword> | supported | model | ELSET, MATERIAL | section assignment | e.g. *SOLID SECTION |
| *BOUNDARY | supported | model/history | N/A | boundary condition | |
| *CLOAD | supported | history | N/A | concentrated load | feature-dependent |
| *DLOAD | supported | history | N/A | distributed load | feature-dependent |
| *STEP | supported | history | N/A | analysis step | |
| <procedure keyword> | supported | history | N/A | analysis procedure | e.g. *STATIC |
| *OUTPUT | supported | history | N/A | output request root | |
| *NODE OUTPUT | supported | history | N/A | nodal output request | |
| *ELEMENT OUTPUT | supported | history | N/A | element output request | |
## Syntax Policy
- case_insensitivity: <policy>
- comma_separated_fields: <policy>
- comment_lines: lines beginning with `**`
- keyword_continuation: <policy>
- include_files: <relative path policy>
- labels: <case/quote/name policy>
- line_length_limit: <policy>
- ascii_assumption: <policy>
- empty_data_fields: <policy>
## Model Data Mapping
- nodes: <node label, coordinate dimension, coordinate system>
- elements: <element label, element type, connectivity>
- node_sets: <set name, sorted/unsorted, expansion rules>
- element_sets: <set name, expansion rules>
- material: <material name and data>
- section: <section assignment>
- coordinates: <global/local coordinate conventions>
- units: <unit system policy>
## History Data Mapping
- steps: <step naming and order>
- procedure: <analysis procedure keyword mapping>
- boundary_conditions: <boundary condition mapping>
- loads: <load keyword mapping>
- output_requests: <node/element output mapping>
## Internal Model Contract
- node_label: <semantic contract>
- element_label: <semantic contract>
- element_type: <semantic contract>
- connectivity: <semantic contract>
- set_membership: <semantic contract>
- material: <semantic contract>
- section: <semantic contract>
- boundary_condition: <semantic contract>
- load: <semantic contract>
- step: <semantic contract>
- output_request: <semantic contract>
## Output HDF5 Schema
- authoritative_file: `results.h5`
- schema_version: <version>
- root_attributes: units, coordinate_system, solver_version, feature_id, model_id
- step_frame_identity: <step/frame naming and ordering>
- row_identity_policy: <node_id | element_id | integration_point | component mapping>
| quantity | dataset_path | shape | dtype | required_attributes | location | notes |
| --- | --- | --- | --- | --- | --- | --- |
| displacement | /steps/<step>/frames/<frame>/field_outputs/U | <nnode, ndim> | float64 | component_names, units | nodal | |
| reaction | /steps/<step>/frames/<frame>/field_outputs/RF | <nnode, ndim> | float64 | component_names, units | nodal | |
| element_force | /steps/<step>/frames/<frame>/field_outputs/element_forces | <nrow, ncomp> | float64 | component_names, element_ids, location | element | feature-dependent |
| stress | /steps/<step>/frames/<frame>/field_outputs/S | <nrow, ncomp> | float64 | component_names, element_ids, integration_points | integration_point | feature-dependent |
## FESA HDF5 to Reference CSV Comparison Mapping
FESA solver output은 `results.h5`이다. 기능이 blocking 또는 warning-only로 선언한
quantity에 대해서만 existing CSV path와 다음 mapping을 정의한다.
| field | contract |
| --- | --- |
| reference_input | exact existing `.inp` path |
| reference_csv | exact existing required CSV path |
| hdf5_dataset | authoritative FESA dataset path |
| source_identity | node/element source label used for exact matching |
| components | required CSV columns and corresponding HDF5 components |
| row_precheck | missing/extra/duplicate/nonfinite required rows fail before tolerance |
| behavior | blocking or warning-only |
| tolerance | upstream-approved formula |
Row order alone으로 대응하지 않는다. Canonical filename, reference CSV schema version,
README, metadata, provenance 또는 single-step/final-frame case의 duplicated unit/coordinate/
step-frame columns를 요구하지 않는다.
## Validation Rules
- required_fields: <required input fields>
- duplicate_labels: <policy>
- missing_references: <policy>
- unsupported_keywords: unsupported | ignored-with-warning | requires-user-decision
- set_expansion: <policy>
- coordinate_conventions: <policy>
- output_quantity_availability: <policy>
- hdf5_schema_validation: <required datasets and attributes>
- reference_csv_validation: <stable ordering and required columns>
## Open Issues and Downstream Handoff
### Reference Model Agent
- <Abaqus input examples and reference artifact schema needs>
### Implementation Planning Agent
- <parser acceptance cases, unsupported keyword diagnostics, HDF5 writer tests, comparison row mapping tests>
### Reference Verification Agent
- <HDF5 dataset paths, reference CSV row schemas, ID matching rules, units, coordinate conventions, tolerance-relevant fields>
```
## 품질 기준
- 입력 파일은 Abaqus `.inp`임을 명시해야 한다.
- Abaqus full compatibility를 주장하지 않고 기능별 supported keyword subset을 명시해야 한다.
- model data와 history data의 매핑을 구분해야 한다.
- unsupported keyword 처리 정책을 명확히 해야 한다.
- 내부 모델 계약은 semantic fields로 작성하고 C++ class/function/API를 확정하지 않는다.
- `results.h5`가 authoritative solver output임을 명시해야 한다.
- HDF5 schema는 dataset path, dtype/shape, required attributes, ID field, component naming, coordinate system, units, step/frame identity, quantity location을 포함해야 한다.
- Reference CSV comparison mapping은 exact path, source-ID column, required component columns,
HDF5 projection, row prechecks와 tolerance를 포함해야 한다.
@@ -0,0 +1,41 @@
# Linear Static 3D Euler Beam Coordination Report
## Metadata
- feature_id: linear-static-3d-euler-beam
- status: completed
- owner_agent: coordinator-agent
- date: 2026-08-15
- migration_note: Existing evidence was relocated without rerunning workflow gates.
## Worklist
| stage | owner | status | evidence |
| --- | --- | --- | --- |
| 1. requirements | requirement-agent | passed | `requirements.md` |
| 2. research | research-agent | passed | `research.md` |
| 3. formulation | formulation-agent | passed | `formulation.md` |
| 4. numerical and reference | numerical-review-agent | passed | `numerical-review.md`; `reference-model.md` |
| 5. I/O | io-definition-agent | passed | `io.md` |
| 6. implementation and verification | implementation-planning-agent; implementation-agent | passed | `implementation-plan.md`; `implementation-report.md`; `build-test.md`; `reference-comparison.md` |
| 7. physics | physics-evaluation-agent | passed | `physics-evaluation.md` |
| 8. release | release-agent | passed | `release.md` |
## Current Progress
- active_sub_agent: none
- next_handoff: none
- closure_evidence: `release.md` status `ready-for-release`
- workflow_disposition: completed
## Decision Log
| date | decision | evidence | rationale |
| --- | --- | --- | --- |
| 2026-08-15 | Record migrated workflow as completed | `release.md` | Preserve the existing release verdict without retroactive gate execution. |
## Blockers and Rework
- active_blockers: none
- correction_attempt_count: 0
- needs_user_decision: false
@@ -0,0 +1,42 @@
# Linear Static MITC4 Shell Coordination Report
## Metadata
- feature_id: linear-static-mitc4-shell
- status: completed
- owner_agent: coordinator-agent
- date: 2026-08-15
- migration_note: Existing evidence was relocated without rerunning workflow gates.
## Worklist
| stage | owner | status | evidence |
| --- | --- | --- | --- |
| 1. requirements | requirement-agent | passed | `requirements.md` |
| 2. research | research-agent | passed | `research.md` |
| 3. formulation | formulation-agent | passed | `formulation.md` |
| 4. numerical and reference | numerical-review-agent | passed | `numerical-review.md`; `reference-model.md` |
| 5. I/O | io-definition-agent | passed | `io.md` |
| 6. implementation and verification | implementation-planning-agent; implementation-agent | passed | `implementation-plan.md`; `build-test.md`; `reference-comparison.md` |
| 7. physics | physics-evaluation-agent | passed | `physics-evaluation.md` |
| 8. release | release-agent | passed | `release.md` |
## Current Progress
- active_sub_agent: none
- next_handoff: none
- closure_evidence: `release.md` status `ready-for-release`
- workflow_disposition: completed
- historical_gap: No standalone `implementation-report.md` existed before migration; no replacement was fabricated.
## Decision Log
| date | decision | evidence | rationale |
| --- | --- | --- | --- |
| 2026-08-15 | Record migrated workflow as completed | `release.md` | Preserve the existing release verdict without retroactive gate execution. |
## Blockers and Rework
- active_blockers: none
- correction_attempt_count: 0
- needs_user_decision: false
-104
View File
@@ -1,104 +0,0 @@
# 수치 검토 리포트 작성 가이드
이 디렉터리는 Numerical Review Agent가 작성하거나 제안한 기능별 수치 검토 리포트를 보관하는 위치다.
기본 파일명은 `docs/numerical-reviews/<feature-id>-review.md` 형식을 사용한다. 각 리포트는 Formulation Agent의 정식화 문서를 독립 검토해, 구현 계획 단계로 넘겨도 되는지 판단한다.
## Numerical Review Agent 역할
Numerical Review Agent는 정식화의 수학적 일관성, 수치 안정성 위험, 검증 준비 상태를 검토한다.
수행한다:
- 수식의 차원, 부호, 좌표 변환, 적분 규칙을 검토한다.
- `B` matrix 또는 kinematic operator, constitutive contract, element equation을 검토한다.
- rigid body modes, patch test, symmetry, positive definiteness를 확인한다.
- hourglass, shear locking, volumetric locking, distortion, singular Jacobian, conditioning 위험을 식별한다.
- 구현 계획 전에 필요한 정식화 수정, 연구 보강, reference model 요구사항을 작성한다.
수행하지 않는다:
- C++ 코드를 구현하지 않는다.
- 정식화 문서를 직접 수정하지 않는다.
- C++ API나 파일 구조를 설계하지 않는다.
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
- release readiness를 승인하지 않는다.
- 레퍼런스 결과와 구현 솔버 결과의 일치 여부를 판정하지 않는다.
## 문서 템플릿
```markdown
# <feature title> Numerical Review
## Metadata
- feature_id: <feature-id>
- source_formulation: docs/formulations/<feature-id>-formulation.md
- status: pass-for-implementation-planning | needs-formulation-revision | needs-research | blocked
- owner_agent: numerical-review-agent
- date: <YYYY-MM-DD>
## Review Verdict
- verdict: pass-for-implementation-planning | needs-formulation-revision | needs-research | blocked
- reason: <판정 이유>
## Critical Findings
- <구현 전 반드시 수정할 수식 또는 수치 결함>
## Numerical Risk Assessment
- rigid_body_modes: <check/risk>
- patch_test: <check/risk>
- symmetry: <check/risk>
- positive_definiteness: <check/risk>
- hourglass: <check/risk or N/A>
- shear_locking: <check/risk or N/A>
- volumetric_locking: <check/risk or N/A>
- distortion: <check/risk>
- singular_jacobian: <check/risk>
- conditioning: <check/risk>
- convergence: <check/risk or N/A>
## Consistency Checks
- units: <pass/fail/TBD>
- dimensions: <pass/fail/TBD>
- signs: <pass/fail/TBD>
- dof_ordering: <pass/fail/TBD>
- coordinate_transforms: <pass/fail/TBD>
- matrix_vector_dimensions: <pass/fail/TBD>
- integration_weights: <pass/fail/TBD>
- output_locations: <pass/fail/TBD>
## Verification Readiness
- unit_tests: <필요한 단위 테스트>
- patch_tests: <필요한 patch test>
- mms_or_mes: <MMS/MES 후보 또는 N/A>
- benchmark_reference_comparison: <필요한 benchmark/reference 비교>
- missing_evidence: <누락된 검증 근거>
## Required Revisions
### Formulation Agent
- <정식화 수정 지시>
### Research Agent
- <연구 보강 지시>
### Reference Model Agent
- <optional downstream test note; not a formulation blocker>
## Downstream Handoff
### Implementation Planning Agent
- <테스트와 acceptance criteria로 변환할 항목>
### Reference Model Agent
- <테스트 모델로 변환할 항목>
```
## 품질 기준
- 확인된 결함, 위험, open question을 구분해야 한다.
- `pass-for-implementation-planning`은 구현 계획으로 넘겨도 된다는 뜻이며 기능 완료나 release 승인이 아니다.
- 정식화 문서를 직접 수정하지 않고 필요한 수정을 명확히 지시해야 한다.
- 모든 검토는 dimension, sign, DOF ordering, coordinate transform, Jacobian, integration weight, element equation, output recovery를 포함해야 한다.
- numerical risk는 approved feature scope가 요구하는 항목만 포함한다. 이후 Reference Model
문서, canonical naming, README, metadata, provenance, expanded portfolio 또는 아직 없는
comparison result는 formulation verdict의 blocker가 아니다.
-170
View File
@@ -1,170 +0,0 @@
# Physics Evaluation Report 문서 작성 가이드
이 디렉터리는 Physics Evaluation Agent가 작성하거나 제안하는 기능별 physics evaluation report를 보관하는 위치다.
Physics Evaluation Agent는 Reference Verification Agent가 `pass-for-physics-evaluation`로 넘긴 결과에 대해 물리적 타당성을 검토한다. 이 agent는 reference tolerance를 다시 판정하지 않고, FESA `results.h5`, Abaqus reference CSV files, optional FESA debug CSV view를 읽기 전용 evidence로 사용해 평형, 반력 부호, 변위 방향, 대칭성, 요소내력/응력 위치, rigid body mode 징후, energy/residual sanity, 테스트 모델 coverage를 검토한다.
기본 문서명은 `docs/physics-evaluations/<feature-id>-physics-evaluation.md` 형식을 사용한다.
## Physics Evaluation Agent 역할
수행한다:
- Reference Verification report가 `pass-for-physics-evaluation`인지 확인한다.
- documented physical expectation이 있는 항목만 pass/fail로 판정한다.
- global equilibrium, reaction consistency, displacement direction, symmetry, element force balance, stress/strain sanity, rigid body mode, energy/residual, model coverage를 검토한다.
- 물리 검토 실패를 equilibrium-failure, reaction-inconsistency, displacement-direction-failure, symmetry-failure, stress-location-failure, element-force-inconsistency, rigid-body-mode-suspected, nonfinite-result, model-coverage-gap, upstream-contract, environment로 분류한다.
- 실패 원인에 따라 Correction Agent, Reference Model Agent, Formulation Agent, I/O Definition Agent, Coordinator Agent로 handoff한다.
- 모든 물리 검토가 문서화된 기대값을 만족하면 Release Agent로 handoff한다.
수행하지 않는다:
- source code를 수정하지 않는다.
- tests를 수정하지 않는다.
- CMake files를 수정하지 않는다.
- requirements, formulations, I/O contracts, reference model contracts를 수정하지 않는다.
- reference artifacts 또는 tolerance policies를 수정하지 않는다.
- Abaqus, Nastran 또는 reference solver를 실행하지 않는다.
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
- reference tolerance를 다시 판정하지 않는다.
- release readiness를 승인하지 않는다.
- release notes 또는 final release checklist를 작성하지 않는다.
## 실행 순서
Physics Evaluation Agent는 다음 순서를 따른다.
```text
EVIDENCE CHECK -> PHYSICS CHECKS -> CLASSIFY -> REPORT
```
`EVIDENCE CHECK`에서 다음 항목을 확인한다.
- Reference Verification report status가 `pass-for-physics-evaluation`인지 여부
- checked solver HDF5 file: `<solver output directory>/results.h5`
- checked feature-declared Abaqus reference CSV files
- optional FESA deterministic CSV view derived from `results.h5` for review only
- compared quantities
- model purpose
- documented physical expectations
- sign convention
- units and coordinate system
- output location and component naming
## Physics Checks
- `global equilibrium`: 적용 하중, 반력, sign convention이 문서화된 경우 전체 힘/모멘트 평형을 검토한다.
- `reaction consistency`: constrained DOF와 reaction component가 경계조건과 일관적인지 검토한다.
- `displacement direction`: 하중 방향, 구속조건, 예상 변형 모드와 변위 부호/방향이 맞는지 검토한다.
- `symmetry`: symmetry, antisymmetry, expected zero component가 모델 목적과 일치하는지 검토한다.
- `element force balance`: element internal force가 외력/반력 균형 또는 부호 일관성을 만족하는지 검토한다.
- `stress/strain`: stress/strain 부호, component, coordinate system, output location이 모델 expectation과 일치하는지 검토한다.
- `rigid body mode`: 불완전 구속, 비정상적으로 큰 변위, near-zero stiffness 징후를 검토한다.
- `energy/residual`: `csv/energy_or_residual.csv` 또는 residual output이 있을 때 energy balance, residual trend, convergence sanity를 검토한다.
- `model coverage`: reference model이 claimed feature를 충분히 검증하는지 검토한다.
## Failure Classification
- `equilibrium-failure`: 전체 하중-반력 또는 모멘트 평형이 기대와 다르다.
- `reaction-inconsistency`: constrained DOF reaction이 boundary condition 또는 load path와 일관되지 않는다.
- `displacement-direction-failure`: 변위 방향 또는 부호가 하중/구속조건과 물리적으로 맞지 않는다.
- `symmetry-failure`: expected symmetry, antisymmetry, zero component가 깨졌다.
- `stress-location-failure`: stress/strain output location 또는 component 해석이 물리 expectation과 맞지 않는다.
- `element-force-inconsistency`: element internal force balance 또는 sign이 일관되지 않는다.
- `rigid-body-mode-suspected`: rigid body mode 또는 under-constrained model 징후가 있다.
- `nonfinite-result`: NaN 또는 infinite value가 있다.
- `model-coverage-gap`: reference model이 기능을 충분히 검증하지 못한다.
- `upstream-contract`: physical expectation, sign convention, unit, coordinate, output location 계약이 누락 또는 충돌한다.
- `environment`: 로컬 실행/읽기 환경 문제로 평가가 불가능하다.
## 문서 템플릿
```markdown
# <feature title> Physics Evaluation Report
## Metadata
- feature_id: <feature-id>
- source_reference_verification_report: docs/reference-verifications/<feature-id>-reference-verification.md
- source_reference_model: docs/reference-models/<feature-id>-reference-models.md
- source_requirement: docs/requirements/<feature-id>.md
- source_formulation: docs/formulations/<feature-id>-formulation.md
- status: pass-for-release-agent | needs-correction | needs-reference-model | needs-formulation-review | needs-io-decision | needs-upstream-decision | blocked
- owner_agent: physics-evaluation-agent
- date: <YYYY-MM-DD>
## Input Evidence
| evidence | path_or_source | status | notes |
| --- | --- | --- | --- |
| reference_verification | docs/reference-verifications/<feature-id>-reference-verification.md | pass-for-physics-evaluation | <summary> |
| solver_hdf5 | <solver output directory>/results.h5 | present | missing | <summary> |
| solver_csv_views | <solver output directory>/csv/ | present | missing | <summary or N/A> |
| declared_reference_csv | <exact feature-declared path> | present | missing | <blocking/warning quantity summary> |
| model_purpose | docs/reference-models/<feature-id>-reference-models.md | documented | missing | <summary> |
| physical_expectations | <source docs> | documented | missing | <summary> |
## Physics Checks
| check | documented_expectation | observed_evidence | verdict | classification |
| --- | --- | --- | --- | --- |
| global equilibrium | <expected force/moment balance> | <observed> | pass | fail | skipped | equilibrium-failure |
| reaction consistency | <expected reaction behavior> | <observed> | pass | fail | skipped | reaction-inconsistency |
| displacement direction | <expected direction/sign> | <observed> | pass | fail | skipped | displacement-direction-failure |
| symmetry | <expected symmetry/zero components> | <observed> | pass | fail | skipped | symmetry-failure |
| element force balance | <expected element force relation> | <observed> | pass | fail | skipped | element-force-inconsistency |
| stress/strain sanity | <expected sign/location/component> | <observed> | pass | fail | skipped | stress-location-failure |
| rigid body mode | <expected constrained behavior> | <observed> | pass | fail | skipped | rigid-body-mode-suspected |
| energy/residual | <expected energy/residual sanity> | <observed> | pass | fail | skipped | upstream-contract |
| model coverage | <claimed feature coverage> | <observed> | pass | fail | skipped | model-coverage-gap |
## Failure Classification
- classification: equilibrium-failure | reaction-inconsistency | displacement-direction-failure | symmetry-failure | stress-location-failure | element-force-inconsistency | rigid-body-mode-suspected | nonfinite-result | model-coverage-gap | upstream-contract | environment | N/A
- primary_failure: <short summary>
- evidence: <short relevant evidence>
## Evaluation Verdict
- verdict: pass-for-release-agent | needs-correction | needs-reference-model | needs-formulation-review | needs-io-decision | needs-upstream-decision | blocked
- reason: <short reason>
## Handoff Recommendation
| target_agent | reason | required_input |
| --- | --- | --- |
| Correction Agent | <implementation-owned physical failure> | <failed check and evidence> |
| Reference Model Agent | <model coverage or missing physical expectation issue> | <coverage gap> |
| Formulation Agent | <formulation or sign convention issue> | <failed physics check> |
| I/O Definition Agent | <output location/component/unit/coordinate ambiguity> | <contract gap> |
| Coordinator Agent | <blocked or repeated ambiguity> | <classification and open issue> |
| Release Agent | <all documented physics checks passed> | <evaluation report> |
## No-Change Assertion
- source_files_modified: false
- test_files_modified: false
- cmake_files_modified: false
- reference_artifacts_modified: false
- tolerance_policies_modified: false
- notes: <observed no-change evidence or exception>
## Open Issues
- <missing physical expectation, incomplete model coverage, contradictory sign convention, or unavailable energy/residual evidence>
```
## 상태 값
- `pass-for-release-agent`: documented physics checks가 통과했고 Release Agent가 release readiness를 평가할 수 있다.
- `needs-correction`: implementation-owned physical failure가 있어 Correction Agent가 필요하다.
- `needs-reference-model`: feature-required case 또는 명시적으로 요구된 physical expectation이 누락됐다.
- `needs-formulation-review`: formulation 또는 numerical review 재검토가 필요하다.
- `needs-io-decision`: output location, component naming, sign convention, unit, coordinate mapping이 evaluation을 막는다.
- `needs-upstream-decision`: physical expectation, sign convention, model purpose, acceptance criterion이 누락 또는 충돌한다.
- `blocked`: 사용자 또는 Coordinator Agent 결정 없이는 안전하게 진행할 수 없다.
## 품질 기준
- Reference Verification report가 `pass-for-physics-evaluation`이 아니면 physics pass를 판정하지 않는다.
- documented expectation이 없는 항목은 `skipped`로 두며 expanded portfolio나 calibration을
새 gate로 만들지 않는다. Feature-required expectation 자체가 누락된 경우에만
`needs-upstream-decision` 또는 `needs-reference-model`을 사용한다.
- 평형 검토는 적용 하중, 반력, element/internal force sign convention이 문서화된 경우에만 수행한다.
- stress/strain 검토는 output location, component naming, coordinate system, units가 정의된 경우에만 수행한다.
- FESA `results.h5`, Abaqus reference CSV files, optional FESA debug CSV view는 읽기 전용 evidence로만 사용한다.
- pass는 Release Agent로 넘길 수 있다는 뜻이며 release readiness 승인이 아니다.
- reference artifacts와 tolerance policies는 수정하지 않는다.
-91
View File
@@ -1,91 +0,0 @@
# Reference Case 문서 작성 가이드
이 디렉터리는 Reference Model Agent가 작성하는 기능별 lightweight reference-case
inventory를 보관한다. Abaqus는 외부 수치 reference이며 FESA의 formulation 또는 내부
동작 계약이 아니다.
기본 파일명은 `docs/reference-models/<feature-id>-reference-models.md`다. Agent는 Abaqus
또는 다른 reference solver를 실행하지 않고 `reference/` 파일을 생성, 수정, rename,
repair 또는 normalize하지 않는다.
## 필수 내용
기능이 실제로 비교하는 case마다 다음만 기록한다.
- case id와 목적
- existing `.inp` exact path
- blocking 또는 warning-only quantity의 existing CSV exact path
- FESA HDF5 dataset
- source identity와 component mapping
- missing/extra/duplicate/nonfinite row precheck
- approved tolerance
- artifact presence/readability status
다음은 기본 readiness 조건이 아니다.
- canonical directory/file naming 또는 legacy-alias 승인
- bundle `README.md` 또는 `metadata.json`
- Abaqus version/generation provenance
- duplicated units, coordinates, model, step/frame, material, section, thickness, element type
- reference CSV schema version
- 비교하지 않는 quantity CSV
- 요구조건이 요청하지 않은 benchmark portfolio
단일 static step/final frame 기능은 input/CSV pair로 result state를 식별한다. Material,
section, loads, constraints와 source element type은 `.inp`에서 읽는다.
## 문서 템플릿
```markdown
# <Feature Title> Reference Cases
## Metadata
- feature_id: <feature-id>
- status: draft | needs-user-decision | needs-reference-artifacts | ready-for-implementation-planning | blocked
- owner_agent: reference-model-agent
- date: <YYYY-MM-DD>
## Reference Acceptance Scope
- blocking_quantities: [<quantity/components>]
- warning_only_quantities: [<quantity/components>]
- excluded_quantities: [<quantity/reason>]
## Reference Case Inventory
| case_id | purpose | input | required_csv | quantity | behavior | status |
| --- | --- | --- | --- | --- | --- | --- |
| <case> | <purpose> | reference/<dir>/<file>.inp | reference/<dir>/<file>.csv | <components> | blocking | warning-only | present | missing |
## HDF5-to-CSV Comparison Mapping
| case_id | hdf5_dataset | source_id | csv_id_column | components | row_precheck |
| --- | --- | --- | --- | --- | --- |
| <case> | <path> | <node/element source id> | <column> | <components> | exact set; unique; finite |
## Tolerance and Blocking/Warning Policy
- reference_scale: <formula>
- row_tolerance: <formula>
- zero_policy: no clamp
- blocking_behavior: <rule>
- warning_behavior: <rule>
## Readiness Checklist
- declared input exists and is readable
- every required CSV exists and is readable
- source identity and required components are deterministic
- row-set/nonfinite prechecks are defined
- tolerance and blocking/warning behavior are approved
## Open Issues and Downstream Handoff
- <only missing required files, matching, tolerance, or feature-owned decisions>
```
## 상태 규칙
- `ready-for-implementation-planning`: required input/CSV files, mapping, and tolerance are complete.
- `needs-reference-artifacts`: a declared input or required comparison CSV is missing.
- `needs-user-decision`: required quantity, mapping, or tolerance is undefined.
- `blocked`: no safe progress is possible without an external decision or state change.
Canonical naming, README, metadata, provenance, and unrequested portfolio coverage do not select
any failure status.
-107
View File
@@ -1,107 +0,0 @@
# Reference Verification Report 작성 가이드
Reference Verification Agent는 Build/Test 통과 뒤 FESA `results.h5`와 기능이 선언한
Abaqus CSV quantity를 비교한다. 비교 대상은 observable value이며 Abaqus 내부 formulation
동등성이 아니다.
기본 문서명은 `docs/reference-verifications/<feature-id>-reference-verification.md`다.
## 실행 순서
```text
ARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORT
```
`ARTIFACT CHECK`는 다음만 요구한다.
- declared `.inp`
- generated FESA `results.h5`
- every feature-required Abaqus CSV
- HDF5 dataset projection
- source-ID/component mapping
- blocking/warning behavior
- approved tolerance
Canonical naming, README, metadata, Abaqus version/provenance, duplicated units/coordinates/
step-frame fields와 reference CSV schema version은 기본 gate가 아니다.
Missing, extra, duplicate 또는 nonfinite required row는 tolerance 전에 실패한다. Row order
alone으로 대응하지 않는다. FESA/Reference 값을 zero-clamp하거나 tolerance에 맞게 보정하지
않는다.
## 보고 항목
각 blocking 또는 warning-only quantity에 대해 다음을 보고한다.
- exact input and CSV path
- FESA HDF5 dataset
- source ID/component mapping
- compared, missing, extra, duplicate, nonfinite row counts
- max absolute and relative error
- RMS and norm error when required
- worst source ID/component
- pass, fail, or warning
## Failure Classification
- `missing-reference-artifact`: declared input or required CSV missing
- `missing-solver-output`: `results.h5` or comparison command missing
- `schema-mismatch`: required source ID/component columns unavailable
- `id-mismatch`: required source row sets do not match
- `tolerance-failure`: blocking value exceeds approved tolerance
- `nonfinite-result`: required FESA or reference value is not finite
- `upstream-contract`: quantity, HDF5 projection, mapping, or tolerance missing/contradictory
- `environment`: local comparison cannot run
## 문서 템플릿
```markdown
# <Feature Title> Reference Verification Report
## Metadata
- feature_id: <feature-id>
- status: pass-for-physics-evaluation | needs-correction | needs-reference-artifacts | needs-solver-results | needs-upstream-decision | blocked
- owner_agent: reference-verification-agent
- date: <YYYY-MM-DD>
## Artifact Inventory
| item | path | status | notes |
| --- | --- | --- | --- |
| input | <exact path> | present | missing | <summary> |
| required_csv | <exact path> | present | missing | <summary> |
| solver_hdf5 | <path>/results.h5 | present | missing | <summary> |
## Comparison Contract
- hdf5_dataset: <path>
- source_id_mapping: <rule>
- components: <blocking/warning inventory>
- row_precheck: exact set; unique; finite
- tolerance_source: <path/requirement>
- tolerance_policy: <formula>
## Quantity Results
| quantity | components | behavior | compared | missing | extra | max_abs | max_rel | rms | norm | worst_id/component | result |
| --- | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- | --- |
| <quantity> | <components> | blocking | warning-only | <values> |
## Failure Classification
- classification: <value or N/A>
- evidence: <summary>
## Handoff Recommendation
- <target and exact evidence>
## No-Change Assertion
- source_files_modified: false
- test_files_modified: false
- cmake_files_modified: false
- reference_artifacts_modified: false
- tolerance_policies_modified: false
## Open Issues
- <only actual comparison blockers>
```
`pass-for-physics-evaluation`은 required blocking comparison 통과만 의미한다. Warning-only
quantity는 경고를 남기되 verdict를 바꾸지 않는다. Physics validation과 release readiness는
각 후속 agent가 판정한다.
-173
View File
@@ -1,173 +0,0 @@
# Release Report 문서 작성 가이드
이 디렉터리는 Release Agent가 작성하거나 제안하는 기능별 release readiness report를 보관하는 위치다.
Release Agent는 Physics Evaluation Agent가 `pass-for-release-agent`로 넘긴 기능에 대해 최종 gate evidence를 감사한다. 이 Agent는 source code, tests, CMake, upstream 계약, reference artifacts, tolerance policies를 수정하지 않는다. 또한 Abaqus/Nastran 실행, Abaqus reference CSV 생성 또는 수정, 외부 publish/deploy/package/tag/commit 작업을 수행하지 않는다.
기본 문서명은 `docs/releases/<feature-id>-release.md` 형식을 사용한다.
## Release Agent 역할
수행한다:
- upstream gate report가 같은 `feature_id`를 대상으로 하는지 확인한다.
- Build/Test report의 `pass-for-reference-verification` 상태를 확인한다.
- Reference Verification report의 `pass-for-physics-evaluation` 상태를 확인한다.
- Physics Evaluation report의 `pass-for-release-agent` 상태를 확인한다.
- 모든 `must` requirement가 acceptance criterion, test/reference evidence, release scope에 trace되는지 확인한다.
- known limitations, deferred issues, unsupported Abaqus keyword, accepted risks를 release note에 기록한다.
- release checklist와 Release Notes Draft를 작성한다.
수행하지 않는다:
- source code를 수정하지 않는다.
- tests를 수정하지 않는다.
- CMake files 또는 build configuration을 수정하지 않는다.
- requirements, formulations, I/O contracts, numerical review reports, reference verification reports, physics evaluation reports를 수정하지 않는다.
- reference artifacts 또는 tolerance policies를 수정하지 않는다.
- Abaqus, Nastran 또는 reference solver를 실행하지 않는다.
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
- 실패하거나 누락된 upstream gate를 우회하지 않는다.
- 사용자 명시 요청 없이 publish, deploy, package, tag, commit, external release를 수행하지 않는다.
## 실행 순서
Release Agent는 다음 순서를 따른다.
```text
GATE AUDIT -> TRACEABILITY CHECK -> RELEASE DOCUMENTATION -> RELEASE VERDICT
```
`GATE AUDIT`에서는 다음 evidence를 확인한다.
- Physics Evaluation report status: `pass-for-release-agent`
- Reference Verification report status: `pass-for-physics-evaluation`
- Build/Test report status: `pass-for-reference-verification`
- Implementation report와 implementation plan의 feature scope 일치
- requirements, formulations, numerical reviews, I/O definitions, reference models 문서의 feature scope 일치
- Build/Test report의 `.harness/config.json` 또는 자동 감지 기반 MSVC build/test command evidence
## 문서 템플릿
```markdown
# <feature title> Release Report
## Metadata
- feature_id: <feature-id>
- source_requirement: docs/requirements/<feature-id>.md
- source_formulation: docs/formulations/<feature-id>-formulation.md
- source_numerical_review: docs/numerical-reviews/<feature-id>-review.md
- source_io_definition: docs/io-definitions/<feature-id>-io.md
- source_reference_model: docs/reference-models/<feature-id>-reference-models.md
- source_implementation_plan: docs/implementation-plans/<feature-id>-implementation-plan.md
- source_build_test_report: docs/build-test-reports/<feature-id>-build-test.md
- source_reference_verification_report: docs/reference-verifications/<feature-id>-reference-verification.md
- source_physics_evaluation_report: docs/physics-evaluations/<feature-id>-physics-evaluation.md
- status: ready-for-release | needs-correction | needs-reference-verification | needs-physics-evaluation | needs-documentation | needs-upstream-decision | blocked
- owner_agent: release-agent
- date: <YYYY-MM-DD>
## Release Scope
| item | included | excluded | notes |
| --- | --- | --- | --- |
| analysis_type | <supported analysis> | <unsupported analysis> | <notes> |
| element_type | <supported elements> | <unsupported elements> | <notes> |
| material_model | <supported materials> | <unsupported materials> | <notes> |
| Abaqus input subset | <supported keywords> | <unsupported keywords> | <notes> |
| output_quantities | <supported outputs> | <unsupported outputs> | <notes> |
## Gate Evidence Inventory
| gate | source | expected_status | observed_status | verdict |
| --- | --- | --- | --- | --- |
| requirements | docs/requirements/<feature-id>.md | approved or release-ready | <status> | pass | fail | missing |
| formulation | docs/formulations/<feature-id>-formulation.md | reviewed | <status> | pass | fail | missing |
| numerical_review | docs/numerical-reviews/<feature-id>-review.md | pass-for-implementation-planning | <status> | pass | fail | missing |
| io_definition | docs/io-definitions/<feature-id>-io.md | ready | <status> | pass | fail | missing |
| reference_model | docs/reference-models/<feature-id>-reference-models.md | ready or artifacts present | <status> | pass | fail | missing |
| implementation | <implementation report> | implemented | <status> | pass | fail | missing |
| build_test | docs/build-test-reports/<feature-id>-build-test.md | pass-for-reference-verification | <status> | pass | fail | missing |
| reference_verification | docs/reference-verifications/<feature-id>-reference-verification.md | pass-for-physics-evaluation | <status> | pass | fail | missing |
| physics_evaluation | docs/physics-evaluations/<feature-id>-physics-evaluation.md | pass-for-release-agent | <status> | pass | fail | missing |
## Acceptance Traceability
| requirement_id | acceptance_criterion | test_id | reference_model_id | verification_report | release_disposition |
| --- | --- | --- | --- | --- | --- |
| <req-id> | <criterion> | <test-id> | <model-id> | <report path> | released | deferred | blocked |
## Validation Evidence
| command_or_report | expected | observed | notes |
| --- | --- | --- | --- |
| Build/Test report의 config-resolved CMake/MSVC/CTest | pass | <result> | <summary> |
| Harness Python pytest (when applicable) | pass or N/A | <result> | <summary> |
| reference verification | pass-for-physics-evaluation | <status> | <summary> |
| physics evaluation | pass-for-release-agent | <status> | <summary> |
## Known Limitations
| limitation | category | user_impact | disposition |
| --- | --- | --- | --- |
| <unsupported Abaqus keyword or solver scope limit> | input | physics | numerical | output | <impact> | documented | deferred | blocker |
## Release Notes Draft
### Feature Summary
- <user-facing summary>
### Verification Scope
- <validated analysis, element, material, I/O, reference model scope>
### Main Limitations
- <known limitation>
### Artifacts
- <release report, reference bundle, verification report paths>
## Release Verdict
- verdict: ready-for-release | needs-correction | needs-reference-verification | needs-physics-evaluation | needs-documentation | needs-upstream-decision | blocked
- reason: <short reason>
## Handoff Recommendation
| target_agent | reason | required_input |
| --- | --- | --- |
| Coordinator Agent | <release decision or blocked issue> | <summary> |
| Correction Agent | <implementation-owned release blocker> | <failure evidence> |
| Reference Verification Agent | <missing or failed reference comparison> | <artifact and report gap> |
| Physics Evaluation Agent | <missing or failed physics evaluation> | <reference verification evidence> |
| Requirement Agent | <requirement or acceptance gap> | <open decision> |
| I/O Definition Agent | <I/O scope or Abaqus keyword limitation gap> | <contract gap> |
| Reference Model Agent | <missing required input/CSV or comparison mapping> | <exact gap> |
## No-Change Assertion
- source_files_modified: false
- test_files_modified: false
- cmake_files_modified: false
- reference_artifacts_modified: false
- tolerance_policies_modified: false
- notes: <observed no-change evidence or exception>
## Open Issues
- <missing evidence, contradictory upstream report, unresolved defect, missing required comparison file/mapping, or documentation gap>
```
## 상태 값
- `ready-for-release`: required gate가 모두 통과했고, 모든 `must` requirement traceability와 known limitations 문서화가 완료되었다.
- `needs-correction`: implementation-owned defect 또는 unresolved test/build/reference/physics issue가 있어 Correction Agent가 필요하다.
- `needs-reference-verification`: reference verification report가 없거나 `pass-for-physics-evaluation`이 아니다.
- `needs-physics-evaluation`: physics evaluation report가 없거나 `pass-for-release-agent`가 아니다.
- `needs-documentation`: gate evidence는 통과했지만 release scope, known limitations, release notes, traceability 문서가 불완전하다.
- `needs-upstream-decision`: requirement, tolerance, required comparison file/mapping, I/O, acceptance evidence가 누락되었거나 상충한다.
- `blocked`: 사용자 또는 Coordinator Agent 결정 없이는 안전하게 진행할 수 없다.
## 품질 기준
- `ready-for-release`는 Build/Test, Reference Verification, Physics Evaluation gate evidence가 모두 present and passing일 때만 사용할 수 있다.
- 모든 `must` requirement는 acceptance criterion, test/reference evidence, release scope에 trace되어야 한다.
- known limitations와 deferred/open issue는 Release Notes Draft에 명확히 기록되어야 한다.
- missing evidence, contradictory upstream reports, unresolved defects, missing declared comparison
files는 적절한 `needs-*` 상태로 분류한다. Canonical naming, README, metadata, provenance와
unrequested portfolio는 blocker가 아니다.
- 이 문서는 FESA 내부 feature release readiness 판정을 위한 것이며, 외부 publish/deploy/package/tag/commit 자동화는 포함하지 않는다.
-123
View File
@@ -1,123 +0,0 @@
# 요구조건 문서 작성 가이드
이 디렉터리는 Requirement Agent가 작성하거나 제안한 기능별 요구조건 문서를 보관하는 위치다.
기본 파일명은 `docs/requirements/<feature-id>.md` 형식을 사용한다. 각 문서는 구현 전에 작성되며, Formulation Agent, I/O Definition Agent, Reference Model Agent, Implementation Planning Agent가 이어받을 수 있는 검증 가능한 baseline이어야 한다.
## Requirement Agent 역할
Requirement Agent는 솔버 기능 요청을 검증 가능한 요구조건으로 바꾼다.
수행한다:
- 기능 범위, 제외 범위, 입력, 출력, 제약조건을 정의한다.
- 해석 타입, 대상 요소, 자유도, 재료 모델, 경계조건, 하중 조건을 명확히 한다.
- 절점 변위, 반력, 요소 내력, 응력 등 검증 물리량을 정한다.
- tolerance와 reference artifact 요구사항을 기록한다.
- Requirement Verification Matrix를 작성한다.
수행하지 않는다:
- C++ 코드를 구현하지 않는다.
- 유한요소 정식화를 확정하지 않는다.
- C++ API나 파일 구조를 설계하지 않는다.
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
- 기능 완료 여부를 승인하지 않는다.
## 문서 템플릿
```markdown
# <feature title> Requirements
## Metadata
- feature_id: <feature-id>
- title: <title>
- status: draft | needs-user-decision | approved
- owner_agent: requirement-agent
- date: <YYYY-MM-DD>
## Purpose
<기능 목적과 사용자/개발자 관점의 기대 동작>
## In Scope
- <포함 범위>
## Out Of Scope
- <제외 범위>
## Analysis Definition
- analysis_type: linear static | nonlinear static | modal | other
- elements: <대상 요소>
- dofs: <자유도>
- material_model: <재료 모델>
- boundary_conditions: <경계조건>
- loads: <하중 조건>
- coordinate_system: <좌표계>
- units: <단위계>
## Input Requirements
- <입력 요구조건>
## Output Requirements
- <출력 요구조건>
## Verification Quantities
- nodal_displacement: required | not-applicable
- reaction: required | not-applicable
- element_internal_force: required | not-applicable
- stress: required | not-applicable
- strain: required | not-applicable
- energy_or_residual: required | not-applicable
## Tolerance Policy
- absolute_tolerance: <value or TBD>
- relative_tolerance: <value or TBD>
- norm_based_tolerance: <value or TBD>
## Reference Case Requirements
- input_path: <exact existing `.inp` path or N/A>
- required_csv_paths: <only blocking/warning quantity CSV paths or N/A>
- blocking_quantities: <components or N/A>
- warning_only_quantities: <components or N/A>
- hdf5_projection: <dataset or N/A>
- source_id_component_matching: <rule or N/A>
- row_precheck: missing/extra/duplicate/nonfinite fail before tolerance
- tolerance: <approved formula or N/A>
Canonical naming, README, metadata, provenance, duplicated units/coordinates/step-frame fields,
CSV schema versions와 비교하지 않는 quantity CSV는 기본 요구조건이 아니다.
## Requirement Verification Matrix
| id | statement | category | rationale | source | priority | verification_method | acceptance_criteria | tolerance | downstream_agents | status |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| FESA-REQ-<FEATURE>-001 | The FESA solver shall ... | functional | ... | user | must | reference-comparison | ... | ... | Reference Model Agent; Implementation Planning Agent | draft |
## Open Questions
- <미확정 값 또는 사용자 결정 필요 사항>
## Downstream Handoff
### Research Agent
- <조사할 이론, 논문, benchmark, 표준>
### Formulation Agent
- <정식화 단계에 넘길 해석 타입, 요소, 재료, 자유도, 출력 물리량 계약>
### I/O Definition Agent
- <입력/출력 schema 요구조건>
### Reference Model Agent
- <exact input/required CSV paths, blocking/warning quantities, matching, tolerance>
### Implementation Planning Agent
- <먼저 작성할 테스트와 acceptance criteria>
```
## 품질 기준
- 모든 `must` 요구조건은 검증 방법과 acceptance criteria를 가져야 한다.
- 모든 수치 요구조건은 단위, 좌표계, tolerance 또는 `TBD with owner`를 가져야 한다.
- reference 비교가 필요한 요구조건은 필요한 CSV artifact를 명시해야 한다.
- "빠르게", "정확하게", "Abaqus처럼" 같은 문장은 검증 가능한 기준으로 바꾸거나 open question으로 남겨야 한다.
- 구현 방법, 정식화 세부식, C++ API는 이 문서에서 확정하지 않는다.
-108
View File
@@ -1,108 +0,0 @@
# 연구 브리프 작성 가이드
이 디렉터리는 Research Agent가 작성하거나 제안한 기능별 연구 브리프를 보관하는 위치다.
기본 파일명은 `docs/research/<feature-id>-research.md` 형식을 사용한다. 각 브리프는 Requirement Agent의 요구조건을 입력으로 받아 Formulation Agent, Numerical Review Agent, Reference Model Agent, Implementation Planning Agent가 사용할 수 있는 근거 자료를 제공해야 한다.
## Research Agent 역할
Research Agent는 FEM 이론, benchmark, verification reference, solver manual, 논문 자료를 조사한다.
수행한다:
- 기능 요구조건과 관련된 이론 자료를 조사한다.
- 요소별 benchmark, patch test, MMS, MES, convergence study 후보를 찾는다.
- Abaqus/Nastran 결과와 비교 가능한 공개 benchmark 또는 문헌 해를 정리한다.
- 자료의 신뢰도, 적용 범위, 한계, 상충 여부를 평가한다.
- downstream agent가 사용할 수 있도록 출처와 근거를 추적 가능하게 남긴다.
수행하지 않는다:
- C++ 코드를 구현하지 않는다.
- 유한요소 정식화를 확정하지 않는다.
- C++ API나 파일 구조를 설계하지 않는다.
- Abaqus, Nastran 또는 레퍼런스 솔버를 직접 실행하지 않는다.
- Abaqus reference CSV 파일을 생성하거나 수정하지 않는다.
- 기능 완료 여부를 승인하지 않는다.
## Source Reliability Tier
| tier | source type | examples | use |
| --- | --- | --- | --- |
| Tier 1 | 공식 표준, 공식 solver manual, 공식 benchmark, 공공기관 자료 | ASME V&V 10, Abaqus Verification Guide, Abaqus Benchmarks Guide, NAFEMS benchmarks, NASA FEMCI, official solver manuals | 우선 근거 |
| Tier 2 | peer-reviewed paper, reproducible arXiv preprint, textbook | MMS/MES 논문, finite element textbook | 이론/검증 후보 |
| Tier 3 | vendor example, university course note, technical blog | 공개 강의노트, 기술 블로그 | 보조 근거 |
| Reject | forum answer, LLM summary, unsourced page, illegal PDF mirror, citation 없는 wiki성 문서 | forum, mirror PDF, 출처 없는 요약 | primary evidence로 사용 금지 |
## 문서 템플릿
```markdown
# <feature title> Research Brief
## Metadata
- feature_id: <feature-id>
- source_requirement: docs/requirements/<feature-id>.md
- status: draft | needs-user-decision | ready-for-formulation
- owner_agent: research-agent
- date: <YYYY-MM-DD>
## Research Questions
- <Requirement Agent 또는 사용자가 넘긴 조사 질문>
## Source Inventory
| source_type | title | author_or_org | URL_or_DOI | access_date | reliability_tier | notes |
| --- | --- | --- | --- | --- | --- | --- |
| standard | ASME V&V 10 | ASME | <URL> | <YYYY-MM-DD> | Tier 1 | VVUQ framework |
## Extracted Facts
- <정식화에 필요한 사실, benchmark 조건, 검증 물리량, 재료/좌표/단위 가정>
## Candidate Benchmarks
| benchmark_id | source | benchmark_type | physics | target_quantities | artifact_needs | applicability |
| --- | --- | --- | --- | --- | --- | --- |
| <id> | <source title> | analytical \| NAFEMS \| Abaqus Verification/Benchmark \| NASA/FEMCI \| paper-derived | <physics> | <targets> | <needed artifacts> | <limits> |
## Verification Relevance
- code_verification: <관련성>
- solution_verification: <관련성>
- validation: <관련성>
- reference_comparison: <관련성>
## Applicability Limits
- linear_or_nonlinear: <scope>
- deformation: small | large | TBD
- element_type: <scope>
- material_model: <scope>
- geometry: <scope>
- boundary_conditions: <scope>
- loads: <scope>
- coordinate_system: <scope>
- units: <scope>
## Open Issues
- <근거 부족, 상충 자료, 유료/비공개 자료, 사용자 결정 필요 사항>
## Downstream Handoff
### Formulation Agent
- <이론 사실, governing assumptions, candidate equations, unresolved formulation questions>
### Numerical Review Agent
- <수치 위험, convergence expectations, patch test/MMS/MES evidence, source disagreements>
### Reference Model Agent
- <benchmark candidates, required reference artifacts, target quantities, source limitations>
### Implementation Planning Agent
- <verification scenarios and testable acceptance evidence>
```
## 품질 기준
- 모든 외부 근거는 source metadata와 reliability tier를 가져야 한다.
- verified fact와 inference를 구분해야 한다.
- benchmark 후보는 target quantity와 applicability limit을 가져야 한다.
- Abaqus Benchmarks Guide와 Abaqus Verification Guide의 용도를 구분해야 한다.
- NAFEMS benchmark는 independent standard test와 target value 후보로 기록해야 한다.
- MMS/MES 자료는 code verification 후보로 기록하되 정식화 확정으로 취급하지 않는다.
- 사용 불가능하거나 유료/비공개인 자료는 Open Issues에 남겨야 한다.