docs: record shared hook timeout decision boundary
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
- 작성 목적: MITC4 질량행렬·FEAST 구현 준비 중 발생한 Windows 빌드 환경 오류와 조치 기록
|
||||
- Feature ID: `mitc4-shell-feast-eigen`
|
||||
- Owner: `Root` (사용자 요청 설명문서)
|
||||
- 입력 계약: `r2`, 구현 환경 `E8`
|
||||
- 입력 계약: `r2`, `E8` 실행 결과와 `E9` 미실행 환경 계획
|
||||
- 작성일: 2026-09-06
|
||||
- 상태: MSVC 컴파일·링크 및 후속 CTest 통과 확인. 최초 GoogleTest discovery 오류와 wrapper 비정상 종료로 전체 준비 검증 미완료
|
||||
|
||||
@@ -46,7 +46,7 @@ Microsoft.Build.Utilities.FileTracker..cctor()
|
||||
- 기존 reference helper가 실제 library의 수정 시각을 확인할 수 있도록 `CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG`를 새 build의 `src/fesa/Debug`로 지정한다. Library를 복사하거나 수정 시각을 조작하지 않는다.
|
||||
- 환경 변수는 해당 process에서만 설정하고 `finally`에서 복원한다. 정확한 설정·복원과 실행 순서는 [구현 환경 문서 E8](implementation-environment.md#e8-attempt3-후의-정상-backend-대안)에 있다.
|
||||
|
||||
환경을 적용한 shell에서 핵심 검증 명령은 다음과 같다.
|
||||
아래는 `E8`에서 사용한 핵심 검증 명령이다. 후속 재검증은 아직 실행하지 않은 [E9 계획](implementation-environment.md#e9-attempt4-후의-직렬-ninja-검증)의 병렬도 설정과 진입 조건을 함께 따른다.
|
||||
|
||||
```powershell
|
||||
$mfeArchive = (Join-Path (Get-Location).Path '.harness/build-ninja-msvc-debug/src/fesa/Debug').Replace('\', '/')
|
||||
@@ -83,7 +83,30 @@ Root의 configure 성공이나 후속 CTest 통과는 최초 manual build 실패
|
||||
- 세 스크립트가 같은 디렉터리의 `cmake_test_discovery_e3b0c44298.json`을 삭제·생성·읽는 구조다.
|
||||
- 동일 integration binary의 단독 목록 생성은 34개 테스트를 반환했고, 생성된 discovery 스크립트도 단독 실행에서는 통과했다.
|
||||
|
||||
이 관찰은 병렬 POST_BUILD discovery의 공유 파일 경쟁을 뒷받침한다. 정확한 최초 경쟁 순서를 재현한 것은 아니며, 단독 진단의 성공으로 최초 전체 빌드 실패를 통과 처리하지 않았다. 설치된 모듈·생성된 JSON·테스트 소스를 고치거나 discovery를 끄지 않고 정상적인 빌드 병렬도 설정을 후속 환경 조치로 검토한다.
|
||||
이 관찰은 병렬 POST_BUILD discovery의 공유 파일 경쟁을 뒷받침한다. 정확한 최초 경쟁 순서를 재현한 것은 아니며, 단독 진단의 성공으로 최초 전체 빌드 실패를 통과 처리하지 않았다. 후속 `E9` 계획은 `CMAKE_BUILD_PARALLEL_LEVEL=1`과 한 번의 `--clean-first --verbose` 빌드로 세 discovery의 실제 직렬 실행을 검증한다. 설치된 모듈·생성된 JSON·테스트 소스와 discovery guard는 그대로이며, 이 후속 계획은 아직 미실행이다.
|
||||
|
||||
## 자동 검증의 별도 제한 시간 문제와 승인 대상
|
||||
|
||||
설치된 Codex CLI `0.153.2`의 `hooks/list`·`config/read`를 모델 실행 없이 조회했다. 현재 worktree의 project config는 읽지만, 실제 enabled/trusted Stop Hook은 원본 checkout의 `C:\git\FESADev\.codex\hooks.json`에서 `1800`초로 선택됐다. 현재 worktree 파일의 `7500`초는 실제 Hook 선택에 반영되지 않았다. 공식 지원 `project_root_markers`를 해당 조회에만 지정해도 결과는 같았다.
|
||||
|
||||
이번 native raw에는 Hook 설정 출처 이벤트가 없으므로, 현재 resolver 결과와 당시 외부 PowerShell wrapper가 약 1802초 뒤 exit 1인 관찰을 대조한 진단이다. Python/CTest의 후속 exit 0과 wrapper exit 1은 계속 별도로 보존한다.
|
||||
|
||||
검토할 최소 변경은 다음 한 값이다. **아직 적용하거나 승인받지 않았다.**
|
||||
|
||||
```text
|
||||
대상: C:\git\FESADev\.codex\hooks.json
|
||||
필드: hooks.Stop[0].hooks[0].timeout
|
||||
변경: 1800 -> 7500 (초)
|
||||
```
|
||||
|
||||
- 현재 파일 SHA-256: `0ab23dad4643f45238f4a60402083e32d8801f5c41fd6ba12b68ef6a9fc5fc28`
|
||||
- 나머지 bytes를 보존하고 한 번 치환한 제안 파일 SHA-256: `c8065e7b60882da5db3f90d57b265da25b3c25980bf669d0b1da863e621871ca`
|
||||
- 영향: 이 원본 Hook을 선택하는 다른 worktree에도 제한 시간 변경이 적용된다. Hook 명령, 검증 범위, assertion과 sandbox 권한은 그대로다.
|
||||
- 승인 경계: 현재 feature worktree 밖의 공유 설정이다. 기존 단일 `E6` 실행 승인을 이 파일 수정 권한으로 확대하지 않는다. 변경된 Hook 정의의 재신뢰도 별도로 처리해야 한다.
|
||||
|
||||
공식 문서는 여러 Hook source를 함께 로드하며 상위 layer가 기존 Hook을 대체하지 않는다고 설명한다. 또한 정의가 바뀌면 새 hash에 대한 신뢰 검토가 필요하다. 따라서 inline Hook 추가나 trust 상태의 임의 수정으로 해결하지 않는다. [공식 Hook 문서](https://learn.chatgpt.com/docs/hooks)
|
||||
|
||||
조회 근거는 [기본 설정 해석](../../.harness/build/mitc4-eigen-evidence/prep/attempt4/root-hook-config-resolution.json), [정상 root marker 지정 조회](../../.harness/build/mitc4-eigen-evidence/prep/attempt4/root-hook-root-marker-observation.json), [두 파일의 읽기 전용 감사](../../.harness/build/mitc4-eigen-evidence/prep/attempt4/root-hook-source-audit.json)에 있다. Hook 실행·canonical 설정 변경·trust 상태 변경은 수행하지 않았다.
|
||||
|
||||
## 근거 기록
|
||||
|
||||
|
||||
Reference in New Issue
Block a user