docs: align eigen implementation steps with validated Ninja preset
This commit is contained in:
@@ -53,16 +53,16 @@ Reference artifact와 공통 정책은 수정하지 않는다. 외부 solver 실
|
|||||||
| [io-schema.md](io-schema.md) | io-definition-agent | r2 | 기존 static 보존·eigen discriminant·N vectors/all-c evidence·self-check |
|
| [io-schema.md](io-schema.md) | io-definition-agent | r2 | 기존 static 보존·eigen discriminant·N vectors/all-c evidence·self-check |
|
||||||
| [io-mapping.md](io-mapping.md) | io-definition-agent | r2 | 책임·candidate 보존·TXT Value-only·27개 요구/11개 I/O 검증 obligation |
|
| [io-mapping.md](io-mapping.md) | io-definition-agent | r2 | 책임·candidate 보존·TXT Value-only·27개 요구/11개 I/O 검증 obligation |
|
||||||
| [implementation-plan.md](implementation-plan.md) | implementation-planning-agent | r2 | Prep 1/main 8개 step 및 실행 계획 gate pass |
|
| [implementation-plan.md](implementation-plan.md) | implementation-planning-agent | r2 | Prep 1/main 8개 step 및 실행 계획 gate pass |
|
||||||
| [implementation-environment.md](implementation-environment.md) | implementation-planning-agent | r2 | E10 local 복구·E11 정상 invocation 감사 완료; canonical7500/trusted 실제 확인, R11 뒤 prep 재개 |
|
| [implementation-environment.md](implementation-environment.md) | implementation-planning-agent | r2 | E10 local 복구·E11 invocation 및 canonical7500/trusted 확인; attempt5 수동 명령 미준수와 registered 실제 결과는 coordination |
|
||||||
| [implementation-recovery.md](implementation-recovery.md) | implementation-planning-agent | r2 | R10 보존 완료; actual E10 hash/선행 ignore commit 반영·R11 status-only 반환 수용, control checkpoint 미실행 |
|
| [implementation-recovery.md](implementation-recovery.md) | implementation-planning-agent | r2 | R11 완료·R13 attempt5 WIP 보존/별도 status-only/control 계획 감사 완료; 실제 R13 미실행 |
|
||||||
| [implementation-interfaces.md](implementation-interfaces.md) | implementation-planning-agent | r2 | 기존 확장점·API/source-test·vendor/state/transaction 책임 |
|
| [implementation-interfaces.md](implementation-interfaces.md) | implementation-planning-agent | r2 | 기존 확장점·API/source-test·vendor/state/transaction 책임 |
|
||||||
| [implementation-verification.md](implementation-verification.md) | implementation-planning-agent | r2 | 요구27/NR27/I/O11·신규 test40·독립 oracle·fresh evidence·실제 validator |
|
| [implementation-verification.md](implementation-verification.md) | implementation-planning-agent | r2 | 요구27/NR27/I/O11·신규 test40·독립 oracle·fresh evidence·실제 validator |
|
||||||
| [implementation-prep-evidence.md](implementation-prep-evidence.md) | implementation-agent | r2 | attempt4 classifier37/focused136 pass·manual Ninja discovery failure; 전체 gate 미통과 및 raw/registered 경계는 coordination 참조 |
|
| [implementation-prep-evidence.md](implementation-prep-evidence.md) | implementation-agent | r2 | attempt5 수동 과거 VS 명령 실패·manual full 미충족; actual focused3회/registered362·Stop0 및 owner 표기 차이는 coordination 참조 |
|
||||||
| [msvc-build-access-error.md](msvc-build-access-error.md) | Root (사용자 요청 설명문서) | r2 | 접근 오류·E10 local 복구·canonical exact1 commit 및 공식 API7500/trusted 실제 근거; native 검증은 별도 |
|
| [msvc-build-access-error.md](msvc-build-access-error.md) | Root (사용자 요청 설명문서) | r2 | 접근 오류·E10 local 복구·canonical exact1 commit 및 공식 API7500/trusted 실제 근거; native 검증은 별도 |
|
||||||
| [corrections.md](corrections.md) | correction-agent | r2 | source echo 최소 교정1회·RED/GREEN37 확인; full Python Hook1실패와 manual build 환경 차단 보존, registered Stop362 pass는 coordination 후속 evidence |
|
| [corrections.md](corrections.md) | correction-agent | r2 | source echo 최소 교정1회·RED/GREEN37 확인; full Python Hook1실패와 manual build 환경 차단 보존, registered Stop362 pass는 coordination 후속 evidence |
|
||||||
| [phases/index.json](../../phases/index.json) | implementation-planning-agent(정의), Executor(진행) | r2 | 기존5개 보존; prep error/main pending |
|
| [phases/index.json](../../phases/index.json) | implementation-planning-agent(정의), Executor(진행) | r2 | 기존5개 보존; prep blocked/main pending |
|
||||||
| [prep index](../../phases/mitc4-shell-feast-eigen-execution-prep/index.json) | implementation-planning-agent(정의), Executor(진행) | r2 | actual history4 보존·R11 status-only pending 반환 수용; 실제 checkpoint/재개 원본은 coordination |
|
| [prep index](../../phases/mitc4-shell-feast-eigen-execution-prep/index.json) | implementation-planning-agent(정의), Executor(진행) | r2 | actual attempt5 blocked/history5; 이전 history4 보존·수동 명령 정합 owner 반환 |
|
||||||
| [prep step0](../../phases/mitc4-shell-feast-eigen-execution-prep/step0.md) | implementation-planning-agent | r2 | 유한 deadline 및 재현 classifier 오탐의 최소 TDD/full VERIFY; 별도 Correction 후 재개 |
|
| [prep step0](../../phases/mitc4-shell-feast-eigen-execution-prep/step0.md) | implementation-planning-agent | r2 | 현재 local preset·직렬 clean-first·세 discovery·전체 검증/종료 poll 직접 명시; 기존 RED/GREEN 보존 |
|
||||||
| [main index](../../phases/mitc4-shell-feast-eigen/index.json) | implementation-planning-agent(정의), Executor(진행) | r2 | Step0~7 pending; exact owned paths 검증 |
|
| [main index](../../phases/mitc4-shell-feast-eigen/index.json) | implementation-planning-agent(정의), Executor(진행) | r2 | Step0~7 pending; exact owned paths 검증 |
|
||||||
| [main step0](../../phases/mitc4-shell-feast-eigen/step0.md) | implementation-planning-agent | r2 | Frequency model/parser |
|
| [main step0](../../phases/mitc4-shell-feast-eigen/step0.md) | implementation-planning-agent | r2 | Frequency model/parser |
|
||||||
| [main step1](../../phases/mitc4-shell-feast-eigen/step1.md) | implementation-planning-agent | r2 | 공변 stabilization/static 회귀 |
|
| [main step1](../../phases/mitc4-shell-feast-eigen/step1.md) | implementation-planning-agent | r2 | 공변 stabilization/static 회귀 |
|
||||||
|
|||||||
@@ -3,15 +3,15 @@
|
|||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Owner: `coordinator-agent`
|
- Owner: `coordinator-agent`
|
||||||
- Contract revision: `r2` (사용자 승인 stabilization 개선·영향받는 정적/eigen 재검증 범위)
|
- Contract revision: `r2` (사용자 승인 stabilization 개선·영향받는 정적/eigen 재검증 범위)
|
||||||
- Stage: `implementation` (MFE-OQ-004 실제 활성화 후 R11/E11 재개)
|
- Stage: `implementation` (E11 attempt5 보존 및 정합된 Step 재개)
|
||||||
- Outcome: `retry`
|
- Outcome: `retry`
|
||||||
- Next owner: `implementation-agent` (R11 unchanged Executor control checkpoint 성공·clean 확인 후 E11 prep 한 번)
|
- Next owner: `implementation-agent` (R13 WIP 보존·별도 Planning status-only/control checkpoint·clean 확인 후 정상 E11)
|
||||||
- Attempt: `4` (actual history4 보존; 다음 E11 실행을 attempt5로 할당, 아직 미실행)
|
- Attempt: `5` (actual Step0 blocked/history5; 이전 history4 보존)
|
||||||
- Completion: 미완료
|
- Completion: 미완료
|
||||||
- Failure classification: `environment`
|
- Failure classification: `environment`
|
||||||
- Retry key: `mitc4-shell-feast-eigen|implementation|environment|r2`
|
- Retry key: `mitc4-shell-feast-eigen|implementation|environment|r2`
|
||||||
- Escalation class: `null`
|
- Escalation class: `null`
|
||||||
- Blocker: `null` (실행 전 R11 control commit·clean preflight는 필수이며 prep 검증 통과는 아직 아니다.)
|
- Blocker: `null` (실패 보존·status-only/control checkpoint는 실행 전 필수이고 manual full VERIFY는 여전히 미충족이다.)
|
||||||
|
|
||||||
기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [프로젝트 ADR](../ADR.md),
|
기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [프로젝트 ADR](../ADR.md),
|
||||||
[SOLVER_AGENT_DESIGN](../SOLVER_AGENT_DESIGN.md), [FEATURE_DOCUMENTATION](../FEATURE_DOCUMENTATION.md).
|
[SOLVER_AGENT_DESIGN](../SOLVER_AGENT_DESIGN.md), [FEATURE_DOCUMENTATION](../FEATURE_DOCUMENTATION.md).
|
||||||
@@ -45,6 +45,14 @@ Root의 intake 시작 Git 조사에서는 worktree clean을 확인했다. 당시
|
|||||||
|
|
||||||
## 현재 bounded dispatch
|
## 현재 bounded dispatch
|
||||||
|
|
||||||
|
Planning의 정확11개 반환을 수용했다. Prep/main9개 Step의 active CMake/CTest 명령68개를 local preset으로 직접 정합했고, 세 실제 discovery 파일과 긴 tool session의 종료 poll을 본문에 명시했다. Owner 정적 감사는 regex16·pytest 대상·owned_path128회 보존, local links500 누락0, PowerShell32 오류0/Python AST11, 보호12hash·canonical/history5/이전 Recovery 이력 불변 및 diff-check exit0이다. Coordinator는 실제 Step 명령과 [R13 보존·재개 blocks](implementation-recovery.md#r13-attempt5-명령-정합과-실패-보존)의 current hashes/정확 경로/unchanged Executor/분리 commit·상태 보존을 대조했다. 정확13개 관리/Planning/Step checkpoint 뒤 R13 첫 block(report1/controls2 WIP), 별도 할당된 Planning의 status1값 복구, R13 두 번째 control checkpoint, clean 확인과 E11 기본 workspace-write 한 번을 순서대로 실행한다. 실제 WIP/복구/native 결과는 아직 미실행이며 이후 원시 evidence로 감사한다. Source Correction budget과 r2 수치·schema·tolerance는 바뀌지 않았다.
|
||||||
|
|
||||||
|
E11 attempt5는 native exit2/`2325.465`초, raw Codex exit0/transportFailure=null, Step blocked/history5로 종료됐다. [terminal archive](../../.harness/build/mitc4-eigen-evidence/prep/attempt5/terminal-archive.json), [실제 native 결과](../../.harness/build/mitc4-eigen-evidence/prep/attempt5/e11-result.json), [Coordinator 감사](../../.harness/build/mitc4-eigen-evidence/prep/attempt5/coordinator-terminal-audit.json), [수동 command events](../../.harness/build/mitc4-eigen-evidence/prep/attempt5/manual-command-events-observation.json)를 보존했다. 직전 R11 control1 commit은 `c051adc9c3feb4ff85758eeaf06ae08be277b097`이며 terminal HEAD도 같다. Report1/control2만 변경됐고 다른 tracked bytes와 이전 history4는 그대로다.
|
||||||
|
|
||||||
|
Owner는 E11 대체 명령 대신 `cmake -S . -B .harness/build -A x64`(exit0), `cmake --build .harness/build --config Debug`(exit1 FileTracker)를 실행했다. 이는 현재 local Ninja backend의 실패 증거가 아니다. Actual classifier37/deadline4는 exit0이며 focused136은 raw completed events에서 세 실행 모두 exit0으로 확인됐다. 보고서의 summary 미관찰·attempt2 표기는 실제 attempt5/raw 결과와 구분한다. Manual CTest와 full pytest는 미실행이다. 이후 실제 local preset registered CTest는362 pass/0 fail/End testing과 exit0, Stop Python2개/wrapper도 actual exit0으로 종료됐다. Wrapper 수명 약1954초는 이전1800초를 넘었다. [Root observer](../../.harness/build/mitc4-eigen-evidence/prep/attempt5/root-process-observations-resumed.jsonl)의 중단 구간 build exit는 미관찰이고 PID 재사용/command-null row는 판정에서 제외한다. 기존 Executor argv의 `--dangerously-bypass-hook-trust`는 변경하지 않았으며 [적용 Hook10개 상태](../../.harness/build/mitc4-eigen-evidence/prep/attempt5/root-all-hook-trust-observation.json)는 모두 enabled/trusted였다.
|
||||||
|
|
||||||
|
다음 bounded Planning은 prep Step0와 main8 Step의 active 명령을 실제 `mfe-workspace-msvc-ninja-debug`로 직접 정합하고 session 결과는 poll로 수집하도록 명시한다. 기존 exact owned_paths/TDD 대상/전체 검증/physics·schema·tolerance를 유지한다. 새 source Correction이나 사용자 승인 요청 없이 실제 실패 report/control 보존 → 별도 owner status-only → unchanged Executor checkpoint → 정상 E11 재개를 구체화한다. 현재는 status를 바꾸거나 새 native를 시작하지 않는다. 아래 기존 승인/재개 문단은 attempt5 이전 이력이며 현재 결과는 이 문단과 terminal evidence가 우선한다.
|
||||||
|
|
||||||
Root는 승인된 canonical Stop `1800 -> 7500` 한 값만 적용하고 exact1 commit `42a4847da54b525ab62a746bee06525ad28aab4b`로 보존했다. [공식 API 신뢰 검토 결과](../../.harness/build/mitc4-eigen-evidence/prep/hook-timeout-activation/trust-review-official-api.json)는 native exit0, exact Stop `trusted_hash` 한 필드의 변경 및 `hooks/list`의 canonical source/timeout7500/enabled=true/trustStatus=trusted를 확인한다. File SHA-256은 `c8065e7b60882da5db3f90d57b265da25b3c25980bf669d0b1da863e621871ca`, definition hash는 `sha256:a6bfcf3553d81e134065da4e66e8124e245d302c11e90b09ecdf07ff79b034a8`이다. MFE-OQ-004 승인·설정 확인 조건은 해소됐으며 이 설정 조회는 registered Hook 실행/통과 증거가 아니다.
|
Root는 승인된 canonical Stop `1800 -> 7500` 한 값만 적용하고 exact1 commit `42a4847da54b525ab62a746bee06525ad28aab4b`로 보존했다. [공식 API 신뢰 검토 결과](../../.harness/build/mitc4-eigen-evidence/prep/hook-timeout-activation/trust-review-official-api.json)는 native exit0, exact Stop `trusted_hash` 한 필드의 변경 및 `hooks/list`의 canonical source/timeout7500/enabled=true/trustStatus=trusted를 확인한다. File SHA-256은 `c8065e7b60882da5db3f90d57b265da25b3c25980bf669d0b1da863e621871ca`, definition hash는 `sha256:a6bfcf3553d81e134065da4e66e8124e245d302c11e90b09ecdf07ff79b034a8`이다. MFE-OQ-004 승인·설정 확인 조건은 해소됐으며 이 설정 조회는 registered Hook 실행/통과 증거가 아니다.
|
||||||
|
|
||||||
Planning의 별도 status-only 반환을 audit했다. Step0 `error -> pending`만 변경했고 history4/나머지 JSON·bytes/보호11hash·HEAD를 보존했다. Index SHA-256은 `389fa3d16015187903a7b194bd68f59629a63ee897738fd1233dd2ff2f8bc047`, owner 정적 검사와 diff-check exit0이다. Coordinator는 이 bounded 반환을 수용한다. 다음 순서는 관리문서 checkpoint 뒤 [R11](implementation-recovery.md#r11-r10-뒤의-별도-status-only-복구)의 unchanged Executor `_commit_paths`로 control1만 실제 commit하고 clean/protected-byte 조건을 확인한 다음, [E11](implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation) 첫 block의 기본 `workspace-write` prep1회 실행이다. Actual R11/E11 결과는 별도 ignored evidence에 보존하며 성공을 미리 기록하지 않는다. Source Correction budget은 그대로이고 실패 history를 지우거나 강한 sandbox/remote 권한을 추가하지 않는다. Active Executor 동안 Root/Coordinator/Planning의 비소유 tracked 편집과 Git은 동결한다. Prep gate가 실제 통과한 뒤 같은 E11의 승인된 main8 steps 및 stages8~9를 계속한다.
|
Planning의 별도 status-only 반환을 audit했다. Step0 `error -> pending`만 변경했고 history4/나머지 JSON·bytes/보호11hash·HEAD를 보존했다. Index SHA-256은 `389fa3d16015187903a7b194bd68f59629a63ee897738fd1233dd2ff2f8bc047`, owner 정적 검사와 diff-check exit0이다. Coordinator는 이 bounded 반환을 수용한다. 다음 순서는 관리문서 checkpoint 뒤 [R11](implementation-recovery.md#r11-r10-뒤의-별도-status-only-복구)의 unchanged Executor `_commit_paths`로 control1만 실제 commit하고 clean/protected-byte 조건을 확인한 다음, [E11](implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation) 첫 block의 기본 `workspace-write` prep1회 실행이다. Actual R11/E11 결과는 별도 ignored evidence에 보존하며 성공을 미리 기록하지 않는다. Source Correction budget은 그대로이고 실패 history를 지우거나 강한 sandbox/remote 권한을 추가하지 않는다. Active Executor 동안 Root/Coordinator/Planning의 비소유 tracked 편집과 Git은 동결한다. Prep gate가 실제 통과한 뒤 같은 E11의 승인된 main8 steps 및 stages8~9를 계속한다.
|
||||||
|
|||||||
@@ -52,6 +52,11 @@ hash를 반영했고 [E11](implementation-environment.md#e11-실제-local-설정
|
|||||||
local preset preflight/정상 invocation을 고정한다. MFE-OQ-004는 사용자 후속 응답으로
|
local preset preflight/정상 invocation을 고정한다. MFE-OQ-004는 사용자 후속 응답으로
|
||||||
Root가 승인 해석했으며, actual canonical7500/enabled/trusted 확인 전 native는 시작하지 않는다.
|
Root가 승인 해석했으며, actual canonical7500/enabled/trusted 확인 전 native는 시작하지 않는다.
|
||||||
|
|
||||||
|
현재 attempt5는 과거 VS 수동 명령 실행으로 blocked/history5다. Prep와 main8의 Step 본문을
|
||||||
|
local preset 명령으로 직접 정합했고 [R13](implementation-recovery.md#r13-attempt5-명령-정합과-실패-보존)에
|
||||||
|
report1/controls2 보존과 별도 status-only 복구를 고정했다. 첫4 history·현재 raw는 보존하며
|
||||||
|
registered local 성공을 미완료 manual full VERIFY로 대체하지 않는다. 이번 delta는 계획/정적 확인뿐이다.
|
||||||
|
|
||||||
[FEATURED_AGENTS](FEATURED_AGENTS.md), [PRD](PRD.md), [ADR](ADR.md)와
|
[FEATURED_AGENTS](FEATURED_AGENTS.md), [PRD](PRD.md), [ADR](ADR.md)와
|
||||||
[coordination](coordination.md), 승인된 [requirements](requirements.md), [research](research.md),
|
[coordination](coordination.md), 승인된 [requirements](requirements.md), [research](research.md),
|
||||||
[formulation](formulation.md), [NR](numerical-review.md), [I/O](io.md) 및 각 상세 r2를 적용한다.
|
[formulation](formulation.md), [NR](numerical-review.md), [I/O](io.md) 및 각 상세 r2를 적용한다.
|
||||||
|
|||||||
@@ -903,3 +903,171 @@ Root의 **actual canonical7500/enabled/trusted** evidence가 확인되기 전에
|
|||||||
새 native를 할당하지 않는다. 새 DFA/remote 권한은 없다. 현재 정상 invocation은
|
새 native를 할당하지 않는다. 새 DFA/remote 권한은 없다. 현재 정상 invocation은
|
||||||
[E11](implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)을 따른다.
|
[E11](implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)을 따른다.
|
||||||
이번 task는 Planning3문서뿐이며 phase/status/Git/설정/실행 권한이 아니다.
|
이번 task는 Planning3문서뿐이며 phase/status/Git/설정/실행 권한이 아니다.
|
||||||
|
|
||||||
|
## R13. Attempt5 명령 정합과 실패 보존
|
||||||
|
|
||||||
|
[실제 결과](../../.harness/build/mitc4-eigen-evidence/prep/attempt5/e11-result.json)와
|
||||||
|
[terminal audit](../../.harness/build/mitc4-eigen-evidence/prep/attempt5/coordinator-terminal-audit.json)는
|
||||||
|
native2/Codex0·blocked/history5를 보존한다. Manual37/4와 focused136 세 실행은 통과했지만
|
||||||
|
과거 VS configure/build를 실행해 build1이었다. Manual CTest/full pytest는 미실행이다.
|
||||||
|
Registered local Ninja의 full362/CTest·Stop Python·wrapper0은 별도 자동 결과이며
|
||||||
|
registered build exit의 관찰 공백도 남긴다. 이는 새 local Ninja 실패나 source Correction이 아니다.
|
||||||
|
[명령 원시 관찰](../../.harness/build/mitc4-eigen-evidence/prep/attempt5/manual-command-events-observation.json)을
|
||||||
|
유지하고 r.output-only 표시 때문에 결과가 보이지 않았던 실행을 미실행으로 바꾸지 않는다.
|
||||||
|
|
||||||
|
현재 prep/main9 Step 본문의 active CMake/CTest를 local preset으로 직접 고쳤다.
|
||||||
|
Root가 frozen 관리/Planning/9 Step definitions/사용자 설명문서를 먼저 exact checkpoint한 뒤,
|
||||||
|
Coordinator가 아래 unchanged Executor로 report1 WIP와 controls2 blocked metadata를 분리 commit한다.
|
||||||
|
Source/config/reference/Hook, current history5/첫4 history 및 raw는 보존하고
|
||||||
|
`_commit_step`, 완료 판정·reset·guard override는 하지 않는다.
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
if (-not (Test-Path -LiteralPath $mfePython -PathType Leaf)) { throw 'Named Python missing' }
|
||||||
|
@'
|
||||||
|
import ast,hashlib,json
|
||||||
|
from pathlib import Path
|
||||||
|
from scripts import execute
|
||||||
|
phase="mitc4-shell-feast-eigen-execution-prep"
|
||||||
|
origin="c051adc9c3feb4ff85758eeaf06ae08be277b097"
|
||||||
|
ex=execute.StepExecutor(phase); root=Path(ex._root)
|
||||||
|
assert Path.cwd().resolve()==root
|
||||||
|
assert Path(ex._run_git_checked("rev-parse","--show-toplevel").stdout.strip()).resolve()==root
|
||||||
|
assert ex._is_isolated_worktree() and ex._codex_sandbox_mode()=="workspace-write"
|
||||||
|
assert ex._implementation_agent_settings()==("gpt-5.6-terra","xhigh")
|
||||||
|
branch,head=ex._git_execution_identity()
|
||||||
|
assert branch=="refs/heads/feat-"+phase
|
||||||
|
ex._run_git_checked("merge-base","--is-ancestor",origin,"HEAD")
|
||||||
|
docs={"docs/mitc4-shell-feast-eigen/"+n for n in ("FEATURED_AGENTS.md","PRD.md","ADR.md","coordination.md","msvc-build-access-error.md","implementation-plan.md","implementation-environment.md","implementation-recovery.md")}
|
||||||
|
definitions={"phases/"+phase+"/step0.md"}|{"phases/mitc4-shell-feast-eigen/step"+str(i)+".md" for i in range(8)}
|
||||||
|
assert set(ex._run_git_checked("diff","--name-only","--no-renames",origin,"HEAD").stdout.splitlines())<=docs|definitions
|
||||||
|
assert not ex._run_git_checked("diff","--cached","--name-only").stdout.strip()
|
||||||
|
expected={".codex/hooks.json":"e7e5d3c0c4fcd1e33b60680122ea7c42298d5cbde78a7f87d9e0007bf60a0fa4",
|
||||||
|
"docs/mitc4-shell-feast-eigen/implementation-prep-evidence.md":"7789386f17c416fb21cd82514e71f1504e6ee8998bc9e886931d55bb76eeec62",
|
||||||
|
"phases/index.json":"b291eebdf5782763bcad37d7c22de91c813c44922c76b8cbdd0b019f71b3b612",
|
||||||
|
"phases/"+phase+"/index.json":"6d4ba8f2960bf55169b1ffac740151014bf5d8a47673ecdec5c557c65629cf0e",
|
||||||
|
"phases/"+phase+"/step0-output.json":"915c56af488d477cbff46b24d1744e46305d50cac71d77466a8fcf49508302c9",
|
||||||
|
"scripts/execute.py":"64f5165fc544b3b17904c633ef3b222de79b52a0960e254c5b5c4eb99e79c2d0",
|
||||||
|
"tests/test_execute.py":"0eb0c1ca0f25199e00686b7e3ab57672b1390437d09da218a929added0346dd6"}
|
||||||
|
expected.update({
|
||||||
|
".gitignore":"e9a67c202173c7b049429bb3eddc6dd921a4a76e7a5d248604fa8bdfb2ecdd68",
|
||||||
|
"CMakeUserPresets.json":"c4665b004be903c4beb913967143c0b0ac4da7e7d857a8c2f09e48754e865e9c",
|
||||||
|
".harness/config.json":"47ea5f1da7f6c0312429ead5a3d6d1c71fa884c49e511c1608e7fcccd90d796d",
|
||||||
|
".harness/build-ninja-msvc-debug/CMakeCache.txt":"f58c337fc09fccd29c088b2a65859f6c925322dfc8eb7bea9d1509518a2b3d87",
|
||||||
|
".harness/build/CMakeCache.txt":"d880104fdc3f1411119ce787c0ddb9a63db23de3f571ba2fedce1c56cb91085b"})
|
||||||
|
for p,h in expected.items():assert hashlib.sha256((root/p).read_bytes()).hexdigest()==h,p
|
||||||
|
assert ast.dump(ast.parse((root/"scripts/execute.py").read_text(encoding="utf-8")))==ast.dump(ast.parse(ex._run_git_checked("show",origin+":scripts/execute.py").stdout))
|
||||||
|
old_hook=json.loads(ex._run_git_checked("show",origin+":.codex/hooks.json").stdout)
|
||||||
|
assert json.loads((root/".codex/hooks.json").read_bytes())==old_hook
|
||||||
|
canonical=Path("C:/git/FESADev/.codex/hooks.json")
|
||||||
|
canonical_bytes=canonical.read_bytes()
|
||||||
|
assert hashlib.sha256(canonical_bytes).hexdigest()=="c8065e7b60882da5db3f90d57b265da25b3c25980bf669d0b1da863e621871ca"
|
||||||
|
idx=ex._read_phase_index();top=ex._read_top_index()
|
||||||
|
assert idx["steps"][0]["status"]=="blocked" and len(idx["steps"][0]["attempt_history"])==5
|
||||||
|
assert next(p for p in top["phases"] if p["dir"]==phase)["status"]=="blocked"
|
||||||
|
owned=ex._step_owned_paths(idx["steps"][0]);assert len(owned)==9
|
||||||
|
code=["docs/mitc4-shell-feast-eigen/implementation-prep-evidence.md"]
|
||||||
|
control=["phases/index.json","phases/"+phase+"/index.json"]
|
||||||
|
assert set(ex._assert_step_scope(owned))==set(code+control)
|
||||||
|
frozen={p:(root/p).read_bytes() for p in list(owned)+list(expected)+list(definitions)+["phases/mitc4-shell-feast-eigen/index.json","docs/mitc4-shell-feast-eigen/msvc-build-access-error.md"]}
|
||||||
|
for paths,message in (
|
||||||
|
(code,"chore(mitc4-shell-feast-eigen-execution-prep): WIP prep report with manual backend mismatch"),
|
||||||
|
(control,"chore(mitc4-shell-feast-eigen-execution-prep): preserve attempt 5 blocked metadata")):
|
||||||
|
assert all((root/p).read_bytes()==v for p,v in frozen.items())
|
||||||
|
assert ex._git_execution_identity()==(branch,head)
|
||||||
|
assert ex._commit_paths(paths,message,owned_paths=owned)
|
||||||
|
new_branch,new_head=ex._git_execution_identity()
|
||||||
|
assert new_branch==branch and new_head!=head
|
||||||
|
actual=ex._run_git_checked("diff-tree","--no-commit-id","--name-only","--no-renames","-r",new_head).stdout.splitlines()
|
||||||
|
assert set(actual)==set(paths)
|
||||||
|
assert all((root/p).read_bytes()==v for p,v in frozen.items())
|
||||||
|
assert ex._read_phase_index()==idx and ex._read_top_index()==top
|
||||||
|
assert canonical.read_bytes()==canonical_bytes
|
||||||
|
print(json.dumps({"commit":new_head,"paths":actual,"status":"blocked","history_count":5}))
|
||||||
|
head=new_head
|
||||||
|
assert not ex._worktree_paths()
|
||||||
|
ex._preflight_repository()
|
||||||
|
print(json.dumps({"head":head,"branch":branch,"clean":True}))
|
||||||
|
'@ | & $mfePython -B -X utf8 -
|
||||||
|
$mfeWipExit = $LASTEXITCODE
|
||||||
|
if ($null -eq $mfeWipExit) { throw 'Native exit unavailable' }
|
||||||
|
exit $mfeWipExit
|
||||||
|
```
|
||||||
|
|
||||||
|
실제 두 commit/clean 감사 뒤 **별도 Planning 할당**에서 Step0.status의
|
||||||
|
`blocked -> pending` 한 값만 바꾼다. 다른 bytes/JSON·timestamp·blocked fields·owned_paths·
|
||||||
|
history5·top/raw를 보존한다. 그 한 값 diff를 감사한 Coordinator만 아래 control checkpoint를 실행한다.
|
||||||
|
이번 Planning은 status를 바꾸거나 어느 명령도 실행하지 않았다.
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
if (-not (Test-Path -LiteralPath $mfePython -PathType Leaf)) { throw 'Named Python missing' }
|
||||||
|
@'
|
||||||
|
import hashlib,json
|
||||||
|
from pathlib import Path
|
||||||
|
from scripts import execute
|
||||||
|
phase="mitc4-shell-feast-eigen-execution-prep"
|
||||||
|
ex=execute.StepExecutor(phase);root=Path(ex._root)
|
||||||
|
assert Path.cwd().resolve()==root
|
||||||
|
assert Path(ex._run_git_checked("rev-parse","--show-toplevel").stdout.strip()).resolve()==root
|
||||||
|
assert ex._is_isolated_worktree() and ex._codex_sandbox_mode()=="workspace-write"
|
||||||
|
branch,head=ex._git_execution_identity();assert branch=="refs/heads/feat-"+phase
|
||||||
|
origin="c051adc9c3feb4ff85758eeaf06ae08be277b097"
|
||||||
|
ex._run_git_checked("merge-base","--is-ancestor",origin,"HEAD")
|
||||||
|
report="docs/mitc4-shell-feast-eigen/implementation-prep-evidence.md"
|
||||||
|
controls={"phases/index.json","phases/"+phase+"/index.json"}
|
||||||
|
docs={"docs/mitc4-shell-feast-eigen/"+n for n in ("FEATURED_AGENTS.md","PRD.md","ADR.md",
|
||||||
|
"coordination.md","msvc-build-access-error.md","implementation-plan.md","implementation-environment.md","implementation-recovery.md")}
|
||||||
|
definitions={"phases/"+phase+"/step0.md"}|{"phases/mitc4-shell-feast-eigen/step"+str(i)+".md" for i in range(8)}
|
||||||
|
assert set(ex._run_git_checked("diff","--name-only","--no-renames",origin,"HEAD").stdout.splitlines())<=docs|definitions|controls|{report}
|
||||||
|
for paths,probe in ((controls,"phases/"+phase+"/index.json"),({report},report)):
|
||||||
|
commit=ex._run_git_checked("log","-1","--format=%H","--",probe).stdout.strip()
|
||||||
|
actual=set(ex._run_git_checked("diff-tree","--no-commit-id","--name-only","--no-renames","-r",commit).stdout.splitlines())
|
||||||
|
assert actual==paths
|
||||||
|
protected={".codex/hooks.json":"e7e5d3c0c4fcd1e33b60680122ea7c42298d5cbde78a7f87d9e0007bf60a0fa4",
|
||||||
|
"scripts/execute.py":"64f5165fc544b3b17904c633ef3b222de79b52a0960e254c5b5c4eb99e79c2d0",
|
||||||
|
"tests/test_execute.py":"0eb0c1ca0f25199e00686b7e3ab57672b1390437d09da218a929added0346dd6",
|
||||||
|
report:"7789386f17c416fb21cd82514e71f1504e6ee8998bc9e886931d55bb76eeec62",
|
||||||
|
"phases/index.json":"b291eebdf5782763bcad37d7c22de91c813c44922c76b8cbdd0b019f71b3b612",
|
||||||
|
"phases/"+phase+"/step0-output.json":"915c56af488d477cbff46b24d1744e46305d50cac71d77466a8fcf49508302c9",
|
||||||
|
".gitignore":"e9a67c202173c7b049429bb3eddc6dd921a4a76e7a5d248604fa8bdfb2ecdd68",
|
||||||
|
"CMakeUserPresets.json":"c4665b004be903c4beb913967143c0b0ac4da7e7d857a8c2f09e48754e865e9c",
|
||||||
|
".harness/config.json":"47ea5f1da7f6c0312429ead5a3d6d1c71fa884c49e511c1608e7fcccd90d796d",
|
||||||
|
".harness/build-ninja-msvc-debug/CMakeCache.txt":"f58c337fc09fccd29c088b2a65859f6c925322dfc8eb7bea9d1509518a2b3d87",
|
||||||
|
".harness/build/CMakeCache.txt":"d880104fdc3f1411119ce787c0ddb9a63db23de3f571ba2fedce1c56cb91085b"}
|
||||||
|
for p,h in protected.items():assert hashlib.sha256((root/p).read_bytes()).hexdigest()==h,p
|
||||||
|
canonical=Path("C:/git/FESADev/.codex/hooks.json")
|
||||||
|
canonical_bytes=canonical.read_bytes()
|
||||||
|
assert hashlib.sha256(canonical_bytes).hexdigest()=="c8065e7b60882da5db3f90d57b265da25b3c25980bf669d0b1da863e621871ca"
|
||||||
|
path="phases/"+phase+"/index.json"
|
||||||
|
before=json.loads(ex._run_git_checked("show","HEAD:"+path).stdout)
|
||||||
|
assert before["steps"][0]["status"]=="blocked" and len(before["steps"][0]["attempt_history"])==5
|
||||||
|
expected=json.loads(json.dumps(before));expected["steps"][0]["status"]="pending"
|
||||||
|
assert ex._read_phase_index()==expected
|
||||||
|
assert set(ex._assert_step_scope(()))=={path}
|
||||||
|
assert not ex._run_git_checked("diff","--cached","--name-only").stdout.strip()
|
||||||
|
frozen={p:(root/p).read_bytes() for p in [path,*protected,*definitions]}
|
||||||
|
assert ex._commit_paths([path],"chore(mitc4-shell-feast-eigen-execution-prep): queue aligned local preset verification")
|
||||||
|
new_branch,new_head=ex._git_execution_identity()
|
||||||
|
assert new_branch==branch and new_head!=head
|
||||||
|
assert ex._run_git_checked("diff-tree","--no-commit-id","--name-only","-r",new_head).stdout.splitlines()==[path]
|
||||||
|
assert all((root/p).read_bytes()==v for p,v in frozen.items())
|
||||||
|
assert ex._read_phase_index()==expected and not ex._worktree_paths()
|
||||||
|
assert canonical.read_bytes()==canonical_bytes
|
||||||
|
ex._preflight_repository()
|
||||||
|
print(json.dumps({"commit":new_head,"status":"pending","history_count":5,"clean":True}))
|
||||||
|
'@ | & $mfePython -B -X utf8 -
|
||||||
|
$mfeStatusExit = $LASTEXITCODE
|
||||||
|
if ($null -eq $mfeStatusExit) { throw 'Native exit unavailable' }
|
||||||
|
exit $mfeStatusExit
|
||||||
|
```
|
||||||
|
|
||||||
|
Root/Coordinator는 actual invocation 동안 non-owned 편집·commit을 멈춘다.
|
||||||
|
WIP나 checkpoint 실패 시 이미 만든 commit과 dirty bytes/원시 evidence를 보존하고 반환한다.
|
||||||
|
이후 같은 [E11](implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)의
|
||||||
|
workspace-write/terra/xhigh/유한14400 새 process를 별도 할당한다. Step에 직접 적힌
|
||||||
|
local preset·직렬 clean-first·세 discovery·모든 Python/full CTest·fresh manual/reference·
|
||||||
|
registered actual evidence를 완료해야 하며 자동 결과로 manual 실패를 대체하지 않는다.
|
||||||
|
새 source key/DFA/policy/runner 변경이나 자동 재시도는 없다.
|
||||||
|
|||||||
@@ -1,5 +1,17 @@
|
|||||||
# Step 0: 유한 실행시간 조정과 정상 검증 경로 보존
|
# Step 0: 유한 실행시간 조정과 정상 검증 경로 보존
|
||||||
|
|
||||||
|
> **현재 실행 계약(r2):** 모든 configure/build/CTest는 `mfe-workspace-msvc-ninja-debug`를 사용한다.
|
||||||
|
> MSVC x64 Debug, 동일 Ninja graph의 manual/registered 검증과 `CMAKE_BUILD_PARALLEL_LEVEL=1`을 유지한다.
|
||||||
|
> 과거 `.harness/build` VS 명령과 public preset 명령은 이 Step의 실행 명령을 대체하지 않는다.
|
||||||
|
> Targets/regex/필수 test identity·owned_paths·수치 계약은 그대로다. [E10.2/E11](../../docs/mitc4-shell-feast-eigen/implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)을 적용한다.
|
||||||
|
> 긴 도구 호출은 **결과 전체**를 전달한다. `session_id`가 있으면 `write_stdin`으로 종료까지 이어받고,
|
||||||
|
> functions가 running cell을 반환했을 때만 해당 `cell_id`로 `functions.wait`를 사용한다.
|
||||||
|
> `r.output`만 비었다고 같은 명령을 다시 실행하지 않는다. 통과한 focused 검증은 새 변경/실패 없이 반복하지 않는다.
|
||||||
|
> Executor가 이미 만든 top/current control dirty 상태는 보호 snapshot이며 구현 소유권 위반으로 단정하지 않는다.
|
||||||
|
> 선택 Step의 result fields만 반환하고 timestamps/history/다른 metadata는 변경하지 않는다.
|
||||||
|
> 현재 prep는 이미 GREEN인 runtime/classifier의 재검증이다. 아래 초기 RED/GREEN 절차는 보존된 증거와 대조하며
|
||||||
|
> RED를 만들기 위해 source를 되돌리지 않는다. 새 source Correction 없이 현재 manual full 검증을 완료한다.
|
||||||
|
|
||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Plan owner: `implementation-planning-agent`
|
- Plan owner: `implementation-planning-agent`
|
||||||
- Execution owner: `implementation-agent`
|
- Execution owner: `implementation-agent`
|
||||||
@@ -109,7 +121,11 @@ Feature 폴더 `docs/mitc4-shell-feast-eigen/`와 다음 management/approved bun
|
|||||||
이 positive regression들은 최초부터 pass할 수 있으므로 새 RED로 주장하지 않는다.
|
이 positive regression들은 최초부터 pass할 수 있으므로 새 RED로 주장하지 않는다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
uv run --with pytest python -B -m pytest -v -rs tests/test_execute.py -k 'environment_classifier or successful_source_echo'
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase" tests/test_execute.py -k 'environment_classifier or successful_source_echo'
|
||||||
```
|
```
|
||||||
|
|
||||||
Case3개의 collection inventory/parameter 전개와 actual failure를 기록한다. 무관 import/setup
|
Case3개의 collection inventory/parameter 전개와 actual failure를 기록한다. 무관 import/setup
|
||||||
@@ -117,7 +133,11 @@ Case3개의 collection inventory/parameter 전개와 actual failure를 기록한
|
|||||||
기존 focused 명령으로 실제 재확인하고 원 보고서도 Implementation owner가 수정한다.
|
기존 focused 명령으로 실제 재확인하고 원 보고서도 Implementation owner가 수정한다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
uv run --with pytest python -B -m pytest -v -rs tests/test_harness_timeouts.py
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase" tests/test_harness_timeouts.py
|
||||||
```
|
```
|
||||||
|
|
||||||
Actual nonzero exit와 기존1800 기본값 때문에 실패한 assertions를 기록한다. Import/setup/인증 오류는 RED가 아니다.
|
Actual nonzero exit와 기존1800 기본값 때문에 실패한 assertions를 기록한다. Import/setup/인증 오류는 RED가 아니다.
|
||||||
@@ -151,7 +171,11 @@ sandbox·transport/Coordinator retry·Hook scope/active flags·ownership/Git/API
|
|||||||
## Focused VERIFY
|
## Focused VERIFY
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
uv run --with pytest python -B -m pytest -v -rs tests/test_harness_timeouts.py tests/test_execute.py tests/test_execute_ownership.py tests/test_hook_validation_scope.py tests/test_harness_preset_contract.py
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase" tests/test_harness_timeouts.py tests/test_execute.py tests/test_execute_ownership.py tests/test_hook_validation_scope.py tests/test_harness_preset_contract.py
|
||||||
```
|
```
|
||||||
|
|
||||||
Exit0, failures0, 현재 sandbox/terminal/ownership regressions 보존을 확인한다. PreToolUse/Stop unit tests는 mock 테스트이고 실제 등록 Stop 통과 evidence가 아니다.
|
Exit0, failures0, 현재 sandbox/terminal/ownership regressions 보존을 확인한다. PreToolUse/Stop unit tests는 mock 테스트이고 실제 등록 Stop 통과 evidence가 아니다.
|
||||||
@@ -159,28 +183,48 @@ Exit0, failures0, 현재 sandbox/terminal/ownership regressions 보존을 확인
|
|||||||
위 신규 classifier test3개의 실제 collection 이름과 parameter case 존재도 확인한다.
|
위 신규 classifier test3개의 실제 collection 이름과 parameter case 존재도 확인한다.
|
||||||
등록된 기존 suite만 실행되었다고 새로운 behavior가 검증됐다고 보고하지 않는다.
|
등록된 기존 suite만 실행되었다고 새로운 behavior가 검증됐다고 보고하지 않는다.
|
||||||
|
|
||||||
|
이미 GREEN인 timeout/classifier source는 기존 [Correction evidence](../../docs/mitc4-shell-feast-eigen/corrections.md)와
|
||||||
|
보존된 RED/GREEN을 읽고 재검증한다. RED를 다시 만들려고 source를 되돌리지 않는다.
|
||||||
|
현재 classifier37/timeout4/focused136과 전체 pytest를 실제 확인한다.
|
||||||
|
|
||||||
## Full VERIFY
|
## Full VERIFY
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
||||||
cmake --build .harness/build --config Debug
|
cmake --build --preset mfe-workspace-msvc-ninja-debug --clean-first --verbose
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --show-only=json-v1
|
ctest --preset mfe-workspace-msvc-ninja-debug --show-only=json-v1
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug --output-on-failure
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
||||||
uv run --with pytest python -B -m pytest -v -rs
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase"
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
이 clean-first/verbose는 새 Ninja graph의 실제 세 executable link/POST_BUILD discovery를 직렬로 실행한다.
|
||||||
|
`fesa_unit_tests_576e7e9d_discovery.cmake`, `fesa_integration_tests_d537bc73_discovery.cmake`,
|
||||||
|
`fesa_reference_tests_ac7cf2f0_discovery.cmake`의 실제 호출과 대응 executable/등록 identity를 raw에 남긴다.
|
||||||
|
unit289/integration34/reference39의 실제 호출·등록 identity와 전체362 discovery를 확인하고,
|
||||||
|
새 Debug library/executable hash·mtime 및 fresh manual solve를 남긴다.
|
||||||
|
No-op build/기존 자동 결과만으로 manual 성공을 주장하지 않는다.
|
||||||
|
|
||||||
C++는 수정하지 않는다. 기존 same-binary cache를 쓰는 helper와 항상 fresh solver를 호출하는 nonlinear helper를 구별한다. 모든 full CTest를 실제 실행하고 완결 count/exit/duration을 기록한다. Cached outputs를 이번 eigen 신규 검증이라고 부르지 않는다. 등록 Stop도 정상 수행하며 full VERIFY를 생략/분할 성공으로 대체하지 않는다.
|
C++는 수정하지 않는다. 기존 same-binary cache를 쓰는 helper와 항상 fresh solver를 호출하는 nonlinear helper를 구별한다. 모든 full CTest를 실제 실행하고 완결 count/exit/duration을 기록한다. Cached outputs를 이번 eigen 신규 검증이라고 부르지 않는다. 등록 Stop도 정상 수행하며 full VERIFY를 생략/분할 성공으로 대체하지 않는다.
|
||||||
|
|
||||||
현재 prep Executor와 Codex의 activation 경계는 [environment](../../docs/mitc4-shell-feast-eigen/implementation-environment.md)대로다. 이미 실행 중인 Executor timeout self-edit는 활성화되지 않으며 launch-time Stop outer1800이 유지될 수 있다. 성공을 가정하지 말고 actual registered Stop·Codex exit0을 gate로 확인한다. 등록 Stop 초과/실패 시 정상 terminal evidence와 원시 로그를 보존해 Coordinator에 반환한다. Hook 직접 실행, 재진입 flag/state 조작, 거짓 Markdown-only skip으로 우회하지 않는다.
|
현재 prep Executor와 Codex는 E11의 local preset/유한14400과 실제 승인·신뢰된 등록 Stop7500/shared7200을 사용한다. 실제 등록 Stop 초과/실패 시 정상 terminal evidence와 원시 로그를 보존해 Coordinator에 반환한다. Hook 직접 실행, 재진입 flag/state 조작, 거짓 Markdown-only skip으로 우회하지 않는다.
|
||||||
|
|
||||||
|
보고서는 현재 attempt의 actual manual과 registered 결과, 과거 wording을 구분한다.
|
||||||
|
기존 full CTest는 static reference를 읽고 비교한다. 원본 직접 수정 없음과 새 eigen comparison
|
||||||
|
미실행을 그 사실과 구분하며 당시 실패/미실행 기록을 보존한다.
|
||||||
|
|
||||||
## Evidence / result
|
## Evidence / result
|
||||||
|
|
||||||
`docs/mitc4-shell-feast-eigen/implementation-prep-evidence.md`에 feature/owner/r2, 각 RED/GREEN command/exit/duration, 전체 pytest/CTest counts, cap before/after, 실제 code diff 범위, current loaded wrapper14400과 등록 Stop launch1800 가능성, 그 시점에 관찰된 Stop/Codex exit 또는 아직 확인 대기인 항목을 기록한다. Raw logs는 ignored `.harness/build/mitc4-eigen-evidence/prep/`다. CTest log는 즉시 복사 보존한다.
|
`docs/mitc4-shell-feast-eigen/implementation-prep-evidence.md`에 feature/owner/r2, 각 RED/GREEN command/exit/duration, 전체 pytest/CTest counts, cap before/after, 실제 code diff 범위, current loaded wrapper14400과 실제 등록 Stop7500/shared7200, 그 시점에 관찰된 Stop/Codex exit 또는 아직 확인 대기인 항목을 기록한다. Raw logs는 ignored `.harness/build/mitc4-eigen-evidence/prep/`다. CTest log는 즉시 복사 보존한다.
|
||||||
|
|
||||||
|
|
||||||
보고서 작성 시점에는 마지막 registered Stop/Codex exit가 아직 발생하지 않을 수 있다. Implementation은 실제 완료된 manual 검증과 미관찰 Stop을 구분하고 미래 성공을 선기록하지 않는다. `completed` payload는 그 자체로 Stop 성공 증거가 아니다. Executor 종료 뒤 Coordinator가 raw output·등록 Hook evidence·actual exit를 management 문서에서 사후 감사한다. Specialist 보고서 본문은 Coordinator가 대신 수정하지 않는다.
|
보고서 작성 시점에는 마지막 registered Stop/Codex exit가 아직 발생하지 않을 수 있다. Implementation은 실제 완료된 manual 검증과 미관찰 Stop을 구분하고 미래 성공을 선기록하지 않는다. `completed` payload는 그 자체로 Stop 성공 증거가 아니다. Executor 종료 뒤 Coordinator가 raw output·등록 Hook evidence·actual exit를 management 문서에서 사후 감사한다. Specialist 보고서 본문은 Coordinator가 대신 수정하지 않는다.
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
# Step 0: Frequency semantic model과 exact 입력 subset
|
# Step 0: Frequency semantic model과 exact 입력 subset
|
||||||
|
|
||||||
|
> **현재 실행 계약(r2):** 모든 configure/build/CTest는 `mfe-workspace-msvc-ninja-debug`를 사용한다.
|
||||||
|
> MSVC x64 Debug, 동일 Ninja graph의 manual/registered 검증과 `CMAKE_BUILD_PARALLEL_LEVEL=1`을 유지한다.
|
||||||
|
> 과거 `.harness/build` VS 명령과 public preset 명령은 이 Step의 실행 명령을 대체하지 않는다.
|
||||||
|
> Targets/regex/필수 test identity·owned_paths·수치 계약은 그대로다. [E10.2/E11](../../docs/mitc4-shell-feast-eigen/implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)을 적용한다.
|
||||||
|
> 긴 도구 호출은 **결과 전체**를 전달한다. `session_id`가 있으면 `write_stdin`으로 종료까지 이어받고,
|
||||||
|
> functions가 running cell을 반환했을 때만 해당 `cell_id`로 `functions.wait`를 사용한다.
|
||||||
|
> `r.output`만 비었다고 같은 명령을 다시 실행하지 않는다. 통과한 focused 검증은 새 변경/실패 없이 반복하지 않는다.
|
||||||
|
> Executor가 이미 만든 top/current control dirty 상태는 보호 snapshot이며 구현 소유권 위반으로 단정하지 않는다.
|
||||||
|
> 선택 Step의 result fields만 반환하고 timestamps/history/다른 metadata는 변경하지 않는다.
|
||||||
|
> 이미 GREEN인 source를 RED를 만들기 위해 되돌리지 않는다. 새로운 production 변경에는 원래 test-first 계약을 적용한다.
|
||||||
|
|
||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Plan owner: `implementation-planning-agent`
|
- Plan owner: `implementation-planning-agent`
|
||||||
- Execution owner: `implementation-agent`
|
- Execution owner: `implementation-agent`
|
||||||
@@ -117,10 +128,11 @@ Symbols: `DataLine::original_line; AbaqusInputReader::Read; DomainMappingContext
|
|||||||
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
cmake --build .harness/build --config Debug --target fesa_tests
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(ModelTypes|FrequencyStep|Domain|AnalysisModel|DofManager|InputSyntax|InputReader|DomainMappingContext|FrequencyDomain|DomainMapper|ShellSurfacePressureDomain)\.' --show-only=json-v1
|
cmake --build --preset mfe-workspace-msvc-ninja-debug --target fesa_tests
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(ModelTypes|FrequencyStep|Domain|AnalysisModel|DofManager|InputSyntax|InputReader|DomainMappingContext|FrequencyDomain|DomainMapper|ShellSurfacePressureDomain)\.' --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(ModelTypes|FrequencyStep|Domain|AnalysisModel|DofManager|InputSyntax|InputReader|DomainMappingContext|FrequencyDomain|DomainMapper|ShellSurfacePressureDomain)\.' --show-only=json-v1
|
||||||
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(ModelTypes|FrequencyStep|Domain|AnalysisModel|DofManager|InputSyntax|InputReader|DomainMappingContext|FrequencyDomain|DomainMapper|ShellSurfacePressureDomain)\.' --output-on-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
||||||
@@ -136,18 +148,23 @@ Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, disc
|
|||||||
|
|
||||||
## Full VERIFY
|
## Full VERIFY
|
||||||
|
|
||||||
현재 실제 backend는 config absent→CMake/Visual Studio 18 2026/x64/`.harness/build`/Debug다. Dependency cache 준비는 [environment](../../docs/mitc4-shell-feast-eigen/implementation-environment.md)의 정확한 명령과 preflight를 따른다. Generator 변경이나 preset fallback을 임의로 하지 않는다.
|
현재 backend는 local user preset `mfe-workspace-msvc-ninja-debug`/MSVC x64 Debug다. 이 Step의 명령을 직접 실행하며 local config/preset과 다른 graph로 fallback하지 않는다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
||||||
cmake --build .harness/build --config Debug
|
cmake --build --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --show-only=json-v1
|
ctest --preset mfe-workspace-msvc-ninja-debug --show-only=json-v1
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug --output-on-failure
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
||||||
uv run --with pytest python -B -m pytest -v -rs
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase"
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
# Step 1: 공변 drilling scale과 정적 회귀
|
# Step 1: 공변 drilling scale과 정적 회귀
|
||||||
|
|
||||||
|
> **현재 실행 계약(r2):** 모든 configure/build/CTest는 `mfe-workspace-msvc-ninja-debug`를 사용한다.
|
||||||
|
> MSVC x64 Debug, 동일 Ninja graph의 manual/registered 검증과 `CMAKE_BUILD_PARALLEL_LEVEL=1`을 유지한다.
|
||||||
|
> 과거 `.harness/build` VS 명령과 public preset 명령은 이 Step의 실행 명령을 대체하지 않는다.
|
||||||
|
> Targets/regex/필수 test identity·owned_paths·수치 계약은 그대로다. [E10.2/E11](../../docs/mitc4-shell-feast-eigen/implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)을 적용한다.
|
||||||
|
> 긴 도구 호출은 **결과 전체**를 전달한다. `session_id`가 있으면 `write_stdin`으로 종료까지 이어받고,
|
||||||
|
> functions가 running cell을 반환했을 때만 해당 `cell_id`로 `functions.wait`를 사용한다.
|
||||||
|
> `r.output`만 비었다고 같은 명령을 다시 실행하지 않는다. 통과한 focused 검증은 새 변경/실패 없이 반복하지 않는다.
|
||||||
|
> Executor가 이미 만든 top/current control dirty 상태는 보호 snapshot이며 구현 소유권 위반으로 단정하지 않는다.
|
||||||
|
> 선택 Step의 result fields만 반환하고 timestamps/history/다른 metadata는 변경하지 않는다.
|
||||||
|
> 이미 GREEN인 source를 RED를 만들기 위해 되돌리지 않는다. 새로운 production 변경에는 원래 test-first 계약을 적용한다.
|
||||||
|
|
||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Plan owner: `implementation-planning-agent`
|
- Plan owner: `implementation-planning-agent`
|
||||||
- Execution owner: `implementation-agent`
|
- Execution owner: `implementation-agent`
|
||||||
@@ -94,10 +105,11 @@ Symbols: `mitc4_internal::ComputeDrillingScale; Mitc4Shell::Stiffness; existing
|
|||||||
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
cmake --build .harness/build --config Debug --target fesa_tests
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(Mitc4DrillingScale|Mitc4Shell[^.]*|Mitc4Covariance|NonlinearMitc4[^.]*|NonlinearStaticProcedure|LinearStaticAnalysis)\.' --show-only=json-v1
|
cmake --build --preset mfe-workspace-msvc-ninja-debug --target fesa_tests
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(Mitc4DrillingScale|Mitc4Shell[^.]*|Mitc4Covariance|NonlinearMitc4[^.]*|NonlinearStaticProcedure|LinearStaticAnalysis)\.' --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(Mitc4DrillingScale|Mitc4Shell[^.]*|Mitc4Covariance|NonlinearMitc4[^.]*|NonlinearStaticProcedure|LinearStaticAnalysis)\.' --show-only=json-v1
|
||||||
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(Mitc4DrillingScale|Mitc4Shell[^.]*|Mitc4Covariance|NonlinearMitc4[^.]*|NonlinearStaticProcedure|LinearStaticAnalysis)\.' --output-on-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
||||||
@@ -114,18 +126,23 @@ Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, disc
|
|||||||
|
|
||||||
## Full VERIFY
|
## Full VERIFY
|
||||||
|
|
||||||
현재 실제 backend는 config absent→CMake/Visual Studio 18 2026/x64/`.harness/build`/Debug다. Dependency cache 준비는 [environment](../../docs/mitc4-shell-feast-eigen/implementation-environment.md)의 정확한 명령과 preflight를 따른다. Generator 변경이나 preset fallback을 임의로 하지 않는다.
|
현재 backend는 local user preset `mfe-workspace-msvc-ninja-debug`/MSVC x64 Debug다. 이 Step의 명령을 직접 실행하며 local config/preset과 다른 graph로 fallback하지 않는다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
||||||
cmake --build .harness/build --config Debug
|
cmake --build --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --show-only=json-v1
|
ctest --preset mfe-workspace-msvc-ninja-debug --show-only=json-v1
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug --output-on-failure
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
||||||
uv run --with pytest python -B -m pytest -v -rs
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase"
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
# Step 2: Consistent→lumped 질량과 deterministic 조립
|
# Step 2: Consistent→lumped 질량과 deterministic 조립
|
||||||
|
|
||||||
|
> **현재 실행 계약(r2):** 모든 configure/build/CTest는 `mfe-workspace-msvc-ninja-debug`를 사용한다.
|
||||||
|
> MSVC x64 Debug, 동일 Ninja graph의 manual/registered 검증과 `CMAKE_BUILD_PARALLEL_LEVEL=1`을 유지한다.
|
||||||
|
> 과거 `.harness/build` VS 명령과 public preset 명령은 이 Step의 실행 명령을 대체하지 않는다.
|
||||||
|
> Targets/regex/필수 test identity·owned_paths·수치 계약은 그대로다. [E10.2/E11](../../docs/mitc4-shell-feast-eigen/implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)을 적용한다.
|
||||||
|
> 긴 도구 호출은 **결과 전체**를 전달한다. `session_id`가 있으면 `write_stdin`으로 종료까지 이어받고,
|
||||||
|
> functions가 running cell을 반환했을 때만 해당 `cell_id`로 `functions.wait`를 사용한다.
|
||||||
|
> `r.output`만 비었다고 같은 명령을 다시 실행하지 않는다. 통과한 focused 검증은 새 변경/실패 없이 반복하지 않는다.
|
||||||
|
> Executor가 이미 만든 top/current control dirty 상태는 보호 snapshot이며 구현 소유권 위반으로 단정하지 않는다.
|
||||||
|
> 선택 Step의 result fields만 반환하고 timestamps/history/다른 metadata는 변경하지 않는다.
|
||||||
|
> 이미 GREEN인 source를 RED를 만들기 위해 되돌리지 않는다. 새로운 production 변경에는 원래 test-first 계약을 적용한다.
|
||||||
|
|
||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Plan owner: `implementation-planning-agent`
|
- Plan owner: `implementation-planning-agent`
|
||||||
- Execution owner: `implementation-agent`
|
- Execution owner: `implementation-agent`
|
||||||
@@ -106,10 +117,11 @@ Symbols: `Mitc4LumpedMass; DeriveLumpedMass(consistent snapshot, directors); Ele
|
|||||||
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
cmake --build .harness/build --config Debug --target fesa_tests
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(Mitc4ShellMass|Mitc4ShellKinematics|Mitc4ShellKernel|ElementFactory|ShellMassAssembler|SparseAssembler)\.' --show-only=json-v1
|
cmake --build --preset mfe-workspace-msvc-ninja-debug --target fesa_tests
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(Mitc4ShellMass|Mitc4ShellKinematics|Mitc4ShellKernel|ElementFactory|ShellMassAssembler|SparseAssembler)\.' --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(Mitc4ShellMass|Mitc4ShellKinematics|Mitc4ShellKernel|ElementFactory|ShellMassAssembler|SparseAssembler)\.' --show-only=json-v1
|
||||||
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(Mitc4ShellMass|Mitc4ShellKinematics|Mitc4ShellKernel|ElementFactory|ShellMassAssembler|SparseAssembler)\.' --output-on-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
||||||
@@ -129,18 +141,23 @@ Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, disc
|
|||||||
|
|
||||||
## Full VERIFY
|
## Full VERIFY
|
||||||
|
|
||||||
현재 실제 backend는 config absent→CMake/Visual Studio 18 2026/x64/`.harness/build`/Debug다. Dependency cache 준비는 [environment](../../docs/mitc4-shell-feast-eigen/implementation-environment.md)의 정확한 명령과 preflight를 따른다. Generator 변경이나 preset fallback을 임의로 하지 않는다.
|
현재 backend는 local user preset `mfe-workspace-msvc-ninja-debug`/MSVC x64 Debug다. 이 Step의 명령을 직접 실행하며 local config/preset과 다른 graph로 fallback하지 않는다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
||||||
cmake --build .harness/build --config Debug
|
cmake --build --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --show-only=json-v1
|
ctest --preset mfe-workspace-msvc-ninja-debug --show-only=json-v1
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug --output-on-failure
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
||||||
uv run --with pytest python -B -m pytest -v -rs
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase"
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
# Step 3: 실제 제약의 null 공간과 sparse whitening
|
# Step 3: 실제 제약의 null 공간과 sparse whitening
|
||||||
|
|
||||||
|
> **현재 실행 계약(r2):** 모든 configure/build/CTest는 `mfe-workspace-msvc-ninja-debug`를 사용한다.
|
||||||
|
> MSVC x64 Debug, 동일 Ninja graph의 manual/registered 검증과 `CMAKE_BUILD_PARALLEL_LEVEL=1`을 유지한다.
|
||||||
|
> 과거 `.harness/build` VS 명령과 public preset 명령은 이 Step의 실행 명령을 대체하지 않는다.
|
||||||
|
> Targets/regex/필수 test identity·owned_paths·수치 계약은 그대로다. [E10.2/E11](../../docs/mitc4-shell-feast-eigen/implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)을 적용한다.
|
||||||
|
> 긴 도구 호출은 **결과 전체**를 전달한다. `session_id`가 있으면 `write_stdin`으로 종료까지 이어받고,
|
||||||
|
> functions가 running cell을 반환했을 때만 해당 `cell_id`로 `functions.wait`를 사용한다.
|
||||||
|
> `r.output`만 비었다고 같은 명령을 다시 실행하지 않는다. 통과한 focused 검증은 새 변경/실패 없이 반복하지 않는다.
|
||||||
|
> Executor가 이미 만든 top/current control dirty 상태는 보호 snapshot이며 구현 소유권 위반으로 단정하지 않는다.
|
||||||
|
> 선택 Step의 result fields만 반환하고 timestamps/history/다른 metadata는 변경하지 않는다.
|
||||||
|
> 이미 GREEN인 source를 RED를 만들기 위해 되돌리지 않는다. 새로운 production 변경에는 원래 test-first 계약을 적용한다.
|
||||||
|
|
||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Plan owner: `implementation-planning-agent`
|
- Plan owner: `implementation-planning-agent`
|
||||||
- Execution owner: `implementation-agent`
|
- Execution owner: `implementation-agent`
|
||||||
@@ -92,10 +103,11 @@ Symbols: `DofManager::BuildEigenLayout/EigenSparsePattern; eigen_internal::Reduc
|
|||||||
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
cmake --build .harness/build --config Debug --target fesa_tests
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(EigenReduction|DofManager|ShellMassAssembler|Mitc4Covariance)\.' --show-only=json-v1
|
cmake --build --preset mfe-workspace-msvc-ninja-debug --target fesa_tests
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(EigenReduction|DofManager|ShellMassAssembler|Mitc4Covariance)\.' --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(EigenReduction|DofManager|ShellMassAssembler|Mitc4Covariance)\.' --show-only=json-v1
|
||||||
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(EigenReduction|DofManager|ShellMassAssembler|Mitc4Covariance)\.' --output-on-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
||||||
@@ -112,18 +124,23 @@ Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, disc
|
|||||||
|
|
||||||
## Full VERIFY
|
## Full VERIFY
|
||||||
|
|
||||||
현재 실제 backend는 config absent→CMake/Visual Studio 18 2026/x64/`.harness/build`/Debug다. Dependency cache 준비는 [environment](../../docs/mitc4-shell-feast-eigen/implementation-environment.md)의 정확한 명령과 preflight를 따른다. Generator 변경이나 preset fallback을 임의로 하지 않는다.
|
현재 backend는 local user preset `mfe-workspace-msvc-ninja-debug`/MSVC x64 Debug다. 이 Step의 명령을 직접 실행하며 local config/preset과 다른 graph로 fallback하지 않는다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
||||||
cmake --build .harness/build --config Debug
|
cmake --build --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --show-only=json-v1
|
ctest --preset mfe-workspace-msvc-ninja-debug --show-only=json-v1
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug --output-on-failure
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
||||||
uv run --with pytest python -B -m pytest -v -rs
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase"
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
# Step 4: MKL FEAST adapter와 bounded lowest-N 검색
|
# Step 4: MKL FEAST adapter와 bounded lowest-N 검색
|
||||||
|
|
||||||
|
> **현재 실행 계약(r2):** 모든 configure/build/CTest는 `mfe-workspace-msvc-ninja-debug`를 사용한다.
|
||||||
|
> MSVC x64 Debug, 동일 Ninja graph의 manual/registered 검증과 `CMAKE_BUILD_PARALLEL_LEVEL=1`을 유지한다.
|
||||||
|
> 과거 `.harness/build` VS 명령과 public preset 명령은 이 Step의 실행 명령을 대체하지 않는다.
|
||||||
|
> Targets/regex/필수 test identity·owned_paths·수치 계약은 그대로다. [E10.2/E11](../../docs/mitc4-shell-feast-eigen/implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)을 적용한다.
|
||||||
|
> 긴 도구 호출은 **결과 전체**를 전달한다. `session_id`가 있으면 `write_stdin`으로 종료까지 이어받고,
|
||||||
|
> functions가 running cell을 반환했을 때만 해당 `cell_id`로 `functions.wait`를 사용한다.
|
||||||
|
> `r.output`만 비었다고 같은 명령을 다시 실행하지 않는다. 통과한 focused 검증은 새 변경/실패 없이 반복하지 않는다.
|
||||||
|
> Executor가 이미 만든 top/current control dirty 상태는 보호 snapshot이며 구현 소유권 위반으로 단정하지 않는다.
|
||||||
|
> 선택 Step의 result fields만 반환하고 timestamps/history/다른 metadata는 변경하지 않는다.
|
||||||
|
> 이미 GREEN인 source를 RED를 만들기 위해 되돌리지 않는다. 새로운 production 변경에는 원래 test-first 계약을 적용한다.
|
||||||
|
|
||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Plan owner: `implementation-planning-agent`
|
- Plan owner: `implementation-planning-agent`
|
||||||
- Execution owner: `implementation-agent`
|
- Execution owner: `implementation-agent`
|
||||||
@@ -110,10 +121,11 @@ Symbols: `EigenSolver::SolveLowest; MklFeastEigenSolver::SolveLowest; eigen_inte
|
|||||||
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
cmake --build .harness/build --config Debug --target fesa_tests
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(FeastBackend|FeastInitialSpace|MklPardisoSolver|EigenSolver|MklFeastEigenSolver|FeastSearch)\.' --show-only=json-v1
|
cmake --build --preset mfe-workspace-msvc-ninja-debug --target fesa_tests
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(FeastBackend|FeastInitialSpace|MklPardisoSolver|EigenSolver|MklFeastEigenSolver|FeastSearch)\.' --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(FeastBackend|FeastInitialSpace|MklPardisoSolver|EigenSolver|MklFeastEigenSolver|FeastSearch)\.' --show-only=json-v1
|
||||||
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(FeastBackend|FeastInitialSpace|MklPardisoSolver|EigenSolver|MklFeastEigenSolver|FeastSearch)\.' --output-on-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
||||||
@@ -132,18 +144,23 @@ Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, disc
|
|||||||
|
|
||||||
## Full VERIFY
|
## Full VERIFY
|
||||||
|
|
||||||
현재 실제 backend는 config absent→CMake/Visual Studio 18 2026/x64/`.harness/build`/Debug다. Dependency cache 준비는 [environment](../../docs/mitc4-shell-feast-eigen/implementation-environment.md)의 정확한 명령과 preflight를 따른다. Generator 변경이나 preset fallback을 임의로 하지 않는다.
|
현재 backend는 local user preset `mfe-workspace-msvc-ninja-debug`/MSVC x64 Debug다. 이 Step의 명령을 직접 실행하며 local config/preset과 다른 graph로 fallback하지 않는다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
||||||
cmake --build .harness/build --config Debug
|
cmake --build --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --show-only=json-v1
|
ctest --preset mfe-workspace-msvc-ninja-debug --show-only=json-v1
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug --output-on-failure
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
||||||
uv run --with pytest python -B -m pytest -v -rs
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase"
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
# Step 5: 전체 c 검증과 별도 frequency procedure
|
# Step 5: 전체 c 검증과 별도 frequency procedure
|
||||||
|
|
||||||
|
> **현재 실행 계약(r2):** 모든 configure/build/CTest는 `mfe-workspace-msvc-ninja-debug`를 사용한다.
|
||||||
|
> MSVC x64 Debug, 동일 Ninja graph의 manual/registered 검증과 `CMAKE_BUILD_PARALLEL_LEVEL=1`을 유지한다.
|
||||||
|
> 과거 `.harness/build` VS 명령과 public preset 명령은 이 Step의 실행 명령을 대체하지 않는다.
|
||||||
|
> Targets/regex/필수 test identity·owned_paths·수치 계약은 그대로다. [E10.2/E11](../../docs/mitc4-shell-feast-eigen/implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)을 적용한다.
|
||||||
|
> 긴 도구 호출은 **결과 전체**를 전달한다. `session_id`가 있으면 `write_stdin`으로 종료까지 이어받고,
|
||||||
|
> functions가 running cell을 반환했을 때만 해당 `cell_id`로 `functions.wait`를 사용한다.
|
||||||
|
> `r.output`만 비었다고 같은 명령을 다시 실행하지 않는다. 통과한 focused 검증은 새 변경/실패 없이 반복하지 않는다.
|
||||||
|
> Executor가 이미 만든 top/current control dirty 상태는 보호 snapshot이며 구현 소유권 위반으로 단정하지 않는다.
|
||||||
|
> 선택 Step의 result fields만 반환하고 timestamps/history/다른 metadata는 변경하지 않는다.
|
||||||
|
> 이미 GREEN인 source를 RED를 만들기 위해 되돌리지 않는다. 새로운 production 변경에는 원래 test-first 계약을 적용한다.
|
||||||
|
|
||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Plan owner: `implementation-planning-agent`
|
- Plan owner: `implementation-planning-agent`
|
||||||
- Execution owner: `implementation-agent`
|
- Execution owner: `implementation-agent`
|
||||||
@@ -105,10 +116,11 @@ Symbols: `LinearFrequencyProcedureExecutor::Execute; LinearFrequencyExecutionRes
|
|||||||
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
cmake --build .harness/build --config Debug --target fesa_tests
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(EigenAnalysisState|EigenValidation|MklFeastEigenSolver|EigenReduction|LinearFrequencyProcedure|FrequencyDomain|Mitc4Covariance)\.' --show-only=json-v1
|
cmake --build --preset mfe-workspace-msvc-ninja-debug --target fesa_tests
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(EigenAnalysisState|EigenValidation|MklFeastEigenSolver|EigenReduction|LinearFrequencyProcedure|FrequencyDomain|Mitc4Covariance)\.' --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(EigenAnalysisState|EigenValidation|MklFeastEigenSolver|EigenReduction|LinearFrequencyProcedure|FrequencyDomain|Mitc4Covariance)\.' --show-only=json-v1
|
||||||
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(EigenAnalysisState|EigenValidation|MklFeastEigenSolver|EigenReduction|LinearFrequencyProcedure|FrequencyDomain|Mitc4Covariance)\.' --output-on-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
||||||
@@ -128,18 +140,23 @@ Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, disc
|
|||||||
|
|
||||||
## Full VERIFY
|
## Full VERIFY
|
||||||
|
|
||||||
현재 실제 backend는 config absent→CMake/Visual Studio 18 2026/x64/`.harness/build`/Debug다. Dependency cache 준비는 [environment](../../docs/mitc4-shell-feast-eigen/implementation-environment.md)의 정확한 명령과 preflight를 따른다. Generator 변경이나 preset fallback을 임의로 하지 않는다.
|
현재 backend는 local user preset `mfe-workspace-msvc-ninja-debug`/MSVC x64 Debug다. 이 Step의 명령을 직접 실행하며 local config/preset과 다른 graph로 fallback하지 않는다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
||||||
cmake --build .harness/build --config Debug
|
cmake --build --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --show-only=json-v1
|
ctest --preset mfe-workspace-msvc-ninja-debug --show-only=json-v1
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug --output-on-failure
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
||||||
uv run --with pytest python -B -m pytest -v -rs
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase"
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
# Step 6: Additive HDF5와 CLI candidate transaction
|
# Step 6: Additive HDF5와 CLI candidate transaction
|
||||||
|
|
||||||
|
> **현재 실행 계약(r2):** 모든 configure/build/CTest는 `mfe-workspace-msvc-ninja-debug`를 사용한다.
|
||||||
|
> MSVC x64 Debug, 동일 Ninja graph의 manual/registered 검증과 `CMAKE_BUILD_PARALLEL_LEVEL=1`을 유지한다.
|
||||||
|
> 과거 `.harness/build` VS 명령과 public preset 명령은 이 Step의 실행 명령을 대체하지 않는다.
|
||||||
|
> Targets/regex/필수 test identity·owned_paths·수치 계약은 그대로다. [E10.2/E11](../../docs/mitc4-shell-feast-eigen/implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)을 적용한다.
|
||||||
|
> 긴 도구 호출은 **결과 전체**를 전달한다. `session_id`가 있으면 `write_stdin`으로 종료까지 이어받고,
|
||||||
|
> functions가 running cell을 반환했을 때만 해당 `cell_id`로 `functions.wait`를 사용한다.
|
||||||
|
> `r.output`만 비었다고 같은 명령을 다시 실행하지 않는다. 통과한 focused 검증은 새 변경/실패 없이 반복하지 않는다.
|
||||||
|
> Executor가 이미 만든 top/current control dirty 상태는 보호 snapshot이며 구현 소유권 위반으로 단정하지 않는다.
|
||||||
|
> 선택 Step의 result fields만 반환하고 timestamps/history/다른 metadata는 변경하지 않는다.
|
||||||
|
> 이미 GREEN인 source를 RED를 만들기 위해 되돌리지 않는다. 새로운 production 변경에는 원래 test-first 계약을 적용한다.
|
||||||
|
|
||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Plan owner: `implementation-planning-agent`
|
- Plan owner: `implementation-planning-agent`
|
||||||
- Execution owner: `implementation-agent`
|
- Execution owner: `implementation-agent`
|
||||||
@@ -114,10 +125,11 @@ Symbols: `PreparedAnalysisOutcome frequency variant; ExecutePreparedAnalysis/Fin
|
|||||||
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
cmake --build .harness/build --config Debug --target fesa_tests
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(EigenResultsWriter|EigenHdf5ResultsWriter|EigenHdf5Schema|Hdf5ModelWriter|Hdf5ResultsWriter|NonlinearHdf5ResultsWriter|Hdf5WriterComponents|PreparedAnalysis|FrequencyApplication|FesaApplication|LinearFrequencyProcedure|ShellSurfacePressureApplication)\.' --show-only=json-v1
|
cmake --build --preset mfe-workspace-msvc-ninja-debug --target fesa_tests
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(EigenResultsWriter|EigenHdf5ResultsWriter|EigenHdf5Schema|Hdf5ModelWriter|Hdf5ResultsWriter|NonlinearHdf5ResultsWriter|Hdf5WriterComponents|PreparedAnalysis|FrequencyApplication|FesaApplication|LinearFrequencyProcedure|ShellSurfacePressureApplication)\.' --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(EigenResultsWriter|EigenHdf5ResultsWriter|EigenHdf5Schema|Hdf5ModelWriter|Hdf5ResultsWriter|NonlinearHdf5ResultsWriter|Hdf5WriterComponents|PreparedAnalysis|FrequencyApplication|FesaApplication|LinearFrequencyProcedure|ShellSurfacePressureApplication)\.' --show-only=json-v1
|
||||||
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(EigenResultsWriter|EigenHdf5ResultsWriter|EigenHdf5Schema|Hdf5ModelWriter|Hdf5ResultsWriter|NonlinearHdf5ResultsWriter|Hdf5WriterComponents|PreparedAnalysis|FrequencyApplication|FesaApplication|LinearFrequencyProcedure|ShellSurfacePressureApplication)\.' --output-on-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
||||||
@@ -135,18 +147,23 @@ Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, disc
|
|||||||
|
|
||||||
## Full VERIFY
|
## Full VERIFY
|
||||||
|
|
||||||
현재 실제 backend는 config absent→CMake/Visual Studio 18 2026/x64/`.harness/build`/Debug다. Dependency cache 준비는 [environment](../../docs/mitc4-shell-feast-eigen/implementation-environment.md)의 정확한 명령과 preflight를 따른다. Generator 변경이나 preset fallback을 임의로 하지 않는다.
|
현재 backend는 local user preset `mfe-workspace-msvc-ninja-debug`/MSVC x64 Debug다. 이 Step의 명령을 직접 실행하며 local config/preset과 다른 graph로 fallback하지 않는다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
||||||
cmake --build .harness/build --config Debug
|
cmake --build --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --show-only=json-v1
|
ctest --preset mfe-workspace-msvc-ninja-debug --show-only=json-v1
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug --output-on-failure
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
||||||
uv run --with pytest python -B -m pytest -v -rs
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase"
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
# Step 7: Value-only comparator·fresh reference·구현 evidence
|
# Step 7: Value-only comparator·fresh reference·구현 evidence
|
||||||
|
|
||||||
|
> **현재 실행 계약(r2):** 모든 configure/build/CTest는 `mfe-workspace-msvc-ninja-debug`를 사용한다.
|
||||||
|
> MSVC x64 Debug, 동일 Ninja graph의 manual/registered 검증과 `CMAKE_BUILD_PARALLEL_LEVEL=1`을 유지한다.
|
||||||
|
> 과거 `.harness/build` VS 명령과 public preset 명령은 이 Step의 실행 명령을 대체하지 않는다.
|
||||||
|
> Targets/regex/필수 test identity·owned_paths·수치 계약은 그대로다. [E10.2/E11](../../docs/mitc4-shell-feast-eigen/implementation-environment.md#e11-실제-local-설정에-대한-정상-invocation)을 적용한다.
|
||||||
|
> 긴 도구 호출은 **결과 전체**를 전달한다. `session_id`가 있으면 `write_stdin`으로 종료까지 이어받고,
|
||||||
|
> functions가 running cell을 반환했을 때만 해당 `cell_id`로 `functions.wait`를 사용한다.
|
||||||
|
> `r.output`만 비었다고 같은 명령을 다시 실행하지 않는다. 통과한 focused 검증은 새 변경/실패 없이 반복하지 않는다.
|
||||||
|
> Executor가 이미 만든 top/current control dirty 상태는 보호 snapshot이며 구현 소유권 위반으로 단정하지 않는다.
|
||||||
|
> 선택 Step의 result fields만 반환하고 timestamps/history/다른 metadata는 변경하지 않는다.
|
||||||
|
> 이미 GREEN인 source를 RED를 만들기 위해 되돌리지 않는다. 새로운 production 변경에는 원래 test-first 계약을 적용한다.
|
||||||
|
|
||||||
- Feature ID: `mitc4-shell-feast-eigen`
|
- Feature ID: `mitc4-shell-feast-eigen`
|
||||||
- Plan owner: `implementation-planning-agent`
|
- Plan owner: `implementation-planning-agent`
|
||||||
- Execution owner: `implementation-agent`
|
- Execution owner: `implementation-agent`
|
||||||
@@ -110,10 +121,11 @@ Symbols: `EigenReferenceCases.FreshInputUsesTenBlockingValueFamilies; EigenRefer
|
|||||||
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
Workspace root의 PowerShell에서 실행한다. 초기 missing API RED라면 build의 expected failure를 기록하고 production 구현 후 같은 명령을 다시 실행한다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
cmake --build .harness/build --config Debug --target fesa_tests
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(EigenReferenceComparison|ReferenceTolerancePolicy|EigenReferenceCases|Mitc4EigenStaticRegression|Mitc4S4Reference|NonlinearStaticReference|ShellSurfacePressureReference)\.' --show-only=json-v1
|
cmake --build --preset mfe-workspace-msvc-ninja-debug --target fesa_tests
|
||||||
ctest --test-dir .harness/build -C Debug -R '^(EigenReferenceComparison|ReferenceTolerancePolicy|EigenReferenceCases|Mitc4EigenStaticRegression|Mitc4S4Reference|NonlinearStaticReference|ShellSurfacePressureReference)\.' --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(EigenReferenceComparison|ReferenceTolerancePolicy|EigenReferenceCases|Mitc4EigenStaticRegression|Mitc4S4Reference|NonlinearStaticReference|ShellSurfacePressureReference)\.' --show-only=json-v1
|
||||||
|
ctest --preset mfe-workspace-msvc-ninja-debug -R '^(EigenReferenceComparison|ReferenceTolerancePolicy|EigenReferenceCases|Mitc4EigenStaticRegression|Mitc4S4Reference|NonlinearStaticReference|ShellSurfacePressureReference)\.' --output-on-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, discovered selected tests>0, failures0이어야 한다. 각 호출의 `$LASTEXITCODE`를 즉시 기록하고 실패 뒤 후속 명령으로 덮어쓰지 않는다.
|
||||||
@@ -130,18 +142,23 @@ Configure exit는 항상0이어야 한다. GREEN에서는 위 모든 exit0, disc
|
|||||||
|
|
||||||
## Full VERIFY
|
## Full VERIFY
|
||||||
|
|
||||||
현재 실제 backend는 config absent→CMake/Visual Studio 18 2026/x64/`.harness/build`/Debug다. Dependency cache 준비는 [environment](../../docs/mitc4-shell-feast-eigen/implementation-environment.md)의 정확한 명령과 preflight를 따른다. Generator 변경이나 preset fallback을 임의로 하지 않는다.
|
현재 backend는 local user preset `mfe-workspace-msvc-ninja-debug`/MSVC x64 Debug다. 이 Step의 명령을 직접 실행하며 local config/preset과 다른 graph로 fallback하지 않는다.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cmake -S . -B .harness/build -A x64
|
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
|
||||||
|
cmake --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'configure failed' }
|
||||||
cmake --build .harness/build --config Debug
|
cmake --build --preset mfe-workspace-msvc-ninja-debug
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'build failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --show-only=json-v1
|
ctest --preset mfe-workspace-msvc-ninja-debug --show-only=json-v1
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'discovery failed' }
|
||||||
ctest --test-dir .harness/build -C Debug --output-on-failure
|
ctest --preset mfe-workspace-msvc-ninja-debug --output-on-failure
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full CTest failed' }
|
||||||
uv run --with pytest python -B -m pytest -v -rs
|
$mfePython = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-venv/Scripts/python.exe'
|
||||||
|
$mfePytestCache = Join-Path (Get-Location).Path '.harness/build/mitc4-eigen-evidence/prep/classifier-correction/pytest-cache'
|
||||||
|
$mfePytestBase = Join-Path (Get-Location).Path ('.harness/build/p-' + [guid]::NewGuid().ToString('N').Substring(0,8))
|
||||||
|
if ($mfePytestBase.Length -gt 80 -or (Test-Path -LiteralPath $mfePytestBase)) { throw 'Fresh short pytest basetemp required' }
|
||||||
|
& $mfePython -B -X utf8 -m pytest -v -rs -o "cache_dir=$mfePytestCache" "--basetemp=$mfePytestBase"
|
||||||
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
if ($LASTEXITCODE -ne 0) { throw 'full pytest failed' }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user