# 구현 환경·실행시간·evidence 운영 계획 - Feature ID: `mitc4-shell-feast-eigen` - Owner: `implementation-planning-agent` - Input contract revision: `r2` - 기본 보고서: [implementation-plan](implementation-plan.md) ## E1. 실제 backend와 preflight [현재 환경 evidence](coordination.md#후속-실행-준비-관찰)를 적용한다. 이 계획 단계에서는 Harness, CMake/CTest, C++ 또는 FEAST를 실행하지 않는다. Root의 과거 관찰은 신규 gate 성공이 아니다. | 선택 | 실제 값 | | --- | --- | | Repository | linked worktree, `C:/Users/baram/orca/workspaces/FESADev/Eigen`; Git top-level과 Harness ROOT 동일 | | Baseline | I/O checkpoint `1d4f5ac`; 사용자 branch `Eigen`에서 계획 작성 | | Harness config | `.harness/config.json` 없음; autodetect CMake | | Build | Visual Studio 18 2026 / MSVC / x64 / Debug / `.harness/build` | | GoogleTest | `C:/git/googletest` | | MKL_DIR | `C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/lib/cmake/mkl` | | TBB_DIR | `C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/lib/cmake/tbb` | | HDF5_DIR | `C:/Program Files/HDF_Group/HDF5/2.1.1/cmake` | | Observed MKL configuration | 2026.1 / dynamic / intel_ilp64 / intel_thread; 실제 FEAST 실행에서 version/ABI를 다시 기록 | | Python / CLI | Python3.11.15; python/uv/cmake/ctest/codex resolved. Codex transport/login은 아직 실행 검증 전 | | Executor role | `.codex/agents/implementation-agent.toml`, gpt-5.6-terra / xhigh / workspace-write | 개인 설치 경로를 C++/CMake source에 고정하지 않는다. 아래는 이 workstation의 local cache 구성 명령이며 이미 Root가 exit0으로 확인했다. 실제 실행 전 cache의 경로/compilers/platform을 다시 읽고 stale/missing이면 동일 환경 준비 명령을 실행한다. ```powershell cmake -S . -B .harness/build -A x64 "-DFESA_GTEST_SOURCE_DIR=C:/git/googletest" "-DMKL_DIR=C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/lib/cmake/mkl" "-DTBB_DIR=C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/lib/cmake/tbb" "-DHDF5_DIR=C:/Program Files/HDF_Group/HDF5/2.1.1/cmake" ``` 다음부터는 Step의 unadorned configure/build/CTest 명령을 사용한다. Preset은 dependency 환경변수4개를 참조하므로 현재 미설정된 부모 환경에서 preset을 호출하는 계획은 선택하지 않는다. VS generator는 CMake가 MSVC를 선택하고 `--config Debug`/`-C Debug`로 검증한다. 필수는 CMake/MSVC/x64/Debug이며 Ninja 예시 자체가 필수는 아니다. Hook도 같은 absent-config autodetect를 사용한다. Subprocess 환경을 부모 Stop에 전파했다고 가정하지 않는다. ## E2. 최소 deadline 변경과 근거 Actual code의 다음 모두가 유한 제한을 적용한다. 지원되는 CLI/config timeout option은 없다. | 경계 | 현재 | prep 후 | | --- | ---: | ---: | | StepExecutor Codex wrapper | 1800 | 14400 | | 등록 Stop outer | 1800 | 7500 | | Stop discovery/configure/build/discovery/CTest shared | 1800 | 7200 | | CommandSpec default per-command | 1800 | 7200 | | execute_plan의 명시 deadline 없는 default shared | 1800 | 7200 | 전체 regression duration의 기존 합산 추정은1672.67초(약27.9분)다. 이는 여러 run의 값이며 단일 full suite wall time/pass가 아니다. 추가 eigensolver tests와 fresh reference 비용은 미측정이다. 7200초는 기존 약28분 검증에 초기 실행/신규 numerical tests 여유를 두되 유한하게 중단하는 운영 상한이다. Registered7500은 shared7200 종료/진단을 위한300초 여유, wrapper14400은 coding·RED/GREEN·focused·수동 full VERIFY와 등록 Stop을 함께 감싼다. 상한을 더한 값을 실제 소요 시간이라고 보고하지 않는다. Main은8개 Step이다. 각 Step은 하나의 완결된 API/data boundary를 담당하고 동일 session에서 작은 behavior별 RED/GREEN을 반복한다. 통상 coding/focused 약2시간 안, 수동 full과 Stop 각 약30~45분을 고려한 분해다. 이는 실행 예산 설계이며 소요 보장이나 시험 결과가 아니다. 예상보다 늦거나 failure이면 terminal evidence를 남기고 Coordinator가 원인을 분류한다. Timeout을 무한대로 만들거나 test/Hook를 생략하지 않는다. 14개 초기 소단위를8개로 합쳐 불필요한 전체 검증 반복6회를 줄였다. Model+parser는 같은 frequency/density 정의, consistent+lumped+assembly는 같은 moment snapshot, call+search는 하나의 FEAST result/history, validation+procedure는 한 candidate, writer+CLI는 한 transaction, comparator+fresh execution은 한 source matching 결과를 완성한다. Stabilization과 reduction은 각각 기존 static 영향과 analytic positive/null 경계라 독립 Step으로 유지한다. ## E3. One-time bootstrap와 새 process activation 일반1800초 invocation은 prep 중 source self-edit로 이미 시작된 wrapper의 timeout을 늘리지 못한다. Pressure 일부는 same-binary HDF5 cache를 사용하지만 `RunFesaApplicationOnCopiedInput()`은 nonlinear reference solver를 매번 직접 호출한다. 따라서 full VERIFY+registered Stop을 모두 cached/빠르다고 가정하지 않는다. Root와 Coordinator가 사용자 승인된 가역적 운영 준비로 해석한 **one-time module invocation**을 prep에만 사용한다. 기존 CLI option이 아니다. 실제 module을 import하고 한 유한 class timeout만 설정한 뒤 unchanged `main()`을 호출하므로 기존 argparse/preflight/branch/ownership/sandbox/ terminal result/transport retry/commit/finalization 경로를 그대로 실행한다. ```powershell python -B -c "from scripts import execute; execute.StepExecutor.CODEX_TIMEOUT_SECONDS = 14400; execute.main()" mitc4-shell-feast-eigen-execution-prep ``` Bootstrap은 Hook state/reentry flag/execution method를 override하지 않는다. Prep에서 `.codex/hooks.json`을 수정해도 이미 launch된 Codex의 registered Stop outer1800이 유지될 수 있다. 그 세션에 새7500이 반영됐다고 단정하지 않는다. Prep의 actual manual full/registered Stop/Codex exit와 source/control commits를 확인해야 한다. Stop이 실제 cap을 넘거나 실패하면 원시 log와 terminal 상태를 보존한 채 환경 분류로 반환한다. 성공으로 덮어쓰기/즉시 재실행하지 않는다. Prep Executor가 **정상 종료하고 Step0 completed·Codex exit0·등록 Stop 성공·정확 경로 commits· clean 및 Coordinator의 사후 감사 완료**를 확인한 뒤 새 process에서 정상 main invocation을 실행한다. ```powershell python scripts/execute.py mitc4-shell-feast-eigen ``` 새 Executor는 source14400을 새로 읽고 새 Codex session은 변경된 등록7500/Stop7200/command7200 구성으로 시작한다. Source상 cap과 실제 검증 evidence를 함께 기록한다. Prep/main은 `feat-mitc4-shell-feast-eigen-execution-prep`와 `feat-mitc4-shell-feast-eigen` branch를 Executor가 차례로 소유한다. Main branch는 prep 완료 HEAD를 포함해야 한다. ## E4. Git와 활성 실행의 경계 1. Coordinator가 계획 gate를 감사한 뒤 Root가 완료 Feature 문서/계획 및 두 phase 제어 파일의 정확 목록을 checkpoint한다. 두 phase를 만들었으므로 선택되지 않은 phase files까지 미리 commit해 selected-phase allowlist 밖 dirty 파일이 없게 한다. 기존 unrelated pending beam phase/history는 보존하며 invocation 대상으로 삼지 않는다. 2. 실행 직전 `git rev-parse --show-toplevel`, `git status --porcelain=v1 --untracked-files=all`, actual role/config를 읽는다. Linked worktree와 Harness ROOT 동일성을 확인한다. 3. Active Executor 동안 Root/Coordinator/다른 specialist는 non-owned edits/commits를 멈춘다. Implementation은 선택 Step paths와 해당 Step result fields만 수정한다. Commit/branch/ timestamp/attempt_history/phase 진전은 Executor 소유다. 4. Terminal failure는 raw payload·history·logs를 보존한다. Coordinator의 assigned recovery가 없으면 pending reset/재시작하지 않는다. Correction budget과 transport retry는 별개다. 5. Default workspace-write를 사용한다. Danger-full-access는 같은 native command의 실제 실패, 해당 실행 직전 사용자 명시 승인, clean linked worktree, 승인 flag를 모두 요구한다. 이번 timeout 준비는 sandbox 확대 권한이 아니다. Remote push/tag/publish/deploy/package는 없다. ## E5. 실제 실행 evidence 보존 각 Step raw evidence root는 ignored `.harness/build/mitc4-eigen-evidence/stepN/`, prep은 `.../prep/`다. `New-Item -ItemType Directory -Force`와 `Copy-Item -LiteralPath`는 해당 resolved workspace 하위 generated 경로만 대상으로 한다. Recursive delete/move는 계획하지 않는다. 긴 command는 managed process/session으로 실제 exit까지 관찰하며 약60초마다 Coordinator에 의미 있는 진행을 보낸다. Detached/unobserved execution으로 deadline을 피하지 않는다. RED/focused/full command stdout/stderr·actual exit·wall time·CTest discovery JSON·LastTest.log를 각각 고유 이름으로 보존한다. Tee/pipeline 사용 시 `$LASTEXITCODE`를 즉시 보존한다. CTest observer shell exit0을 CTest exit0으로 기록하지 않는다. Hook state를 조작하거나 수동 hook 실행으로 evidence를 만들지 않는다. 등록 Stop 이후의 실제 실패는 manual full pass로 덮어쓰지 않는다. Implementation 보고 시점의 실제 manual evidence와 마지막 Stop/exit 확인 대기를 구분하며 미래 성공을 보고서에 쓰지 않는다. Executor 종료 뒤 Coordinator가 raw output·등록 Hook evidence·actual exit를 management 문서에서 감사한다. Coordinator는 specialist 보고서 본문을 대신 수정하지 않는다. Prep→main activation은 이 사후 감사까지 완료된 뒤에만 가능하다. C++ source 변경 없는 prep의 same-binary 회귀와 새 binary의 fresh eigen/static 비교는 다른 evidence다. Final Step7는 직접 solver invocation·unique generated directory·원본 bytes/hash· binary/lib hash·result/log mtime/hash·call count를 남겨 freshness를 증명한다. 기존 helper가 파일 존재/mtime로 cache를 사용한 사실만으로 fresh라고 주장하지 않는다.