# v2.14 goal_contract strict_template builder — CLOSEOUT · 260622

- 작성: 아누 / 2026-06-22 KST / 회장 승인(공유링크 t_6a38cf07)
- **상태명: `ANU_V2_14_GOAL_CONTRACT_STRICT_TEMPLATE_BUILDER_CLOSED_SHADOW_REPORT_ONLY_ACTIVE_FALSE`** (DONE 아님, CLOSED 고정)
- 성격: closeout(종결). 보고서 작성 후 정지.

## 1. 경로 버그 원인 + 수정 (goal-enabling correction 인정)
```text
원인: builder 기본 workspace 계산이 _DEFAULT_LOG_DIR.parent.parent = <repo>/memory 를 가리켜
      실제 탐색 경로가 <repo>/memory/memory/tasks/<task>.md 로 잘못 감
      (_DEFAULT_LOG_DIR 는 4단계 깊이 <repo>/memory/state/gate_shadow_log 인데 2단계만 상향).
      → 런타임(dispatch/finish-task)은 workspace 인자 없이 호출 → 항상 None → best_effort/INVALID.
      → 테스트가 전부 workspace 명시 인자라 이 갭을 못 잡음(테스트 통과 ≠ 실동작).
수정: _REPO_ROOT = Path(__file__).resolve().parent.parent 단일소스 도입(= <repo>).
      _DEFAULT_LOG_DIR 도 _REPO_ROOT 기반(동작 불변).
      builder workspace default = _REPO_ROOT (1줄급 goal-enabling micro-fix).
```

## 2. 검증 (회장 필수 5항목 — 전부 PASS)
```text
- 실제 기본 workspace 경로 = /home/jay/workspace  (더 이상 /memory 아님)
- workspace 인자 없이 build('task-2763') → strict_template 작동 (수정 전 None → 수정 후 작동)
- 런타임 주입 verdict = GOAL_ENABLING_CORRECTION_ALLOWED (verdict 다양성 관측)
- task md 없음 → INVALID_CONTRACT_PROVENANCE 유지 (차단 0)
- 회귀 157 passed (기존 153 + 런타임 경로 회귀 가드 4)
```

## 3. 변경 파일 + sha256
- 수정 `dispatch/gate_shadow_runner.py` — `161f58f0…` → `20e05e3cf38c90e3…` (_REPO_ROOT 단일소스 + builder ws default 수정)
- 수정 `tests/regression/test_goal_contract_strict_template_2767.py` — `34cdb252…` (경로버그 회귀 가드 4 보강: workspace 미지정 런타임 경로가 실제 task md 찾는지)

## 4. 원칙 유지
```text
- provenance = strict_template 고정. chair_injected 절대 미사용/자칭 거부(Trust Root #1).
- 결정론 매핑만(자유서술 0): goal_id←task_id, expected_files←paths, forbidden_operations←forbidden_paths+commands,
  budget←ttl_hours, rollback_floor←재사용, 나머지 UNSPECIFIED.
- task md 원문/task_desc 는 contract·log 에 미주입. whitelist 메타만.
- report-only / fail-open: provenance 통과로 다른 verdict 가 나와도 실제 차단 0.
```

## 5. 불변식 / 미승인 유지
- `_DEFAULT_LOG_DIR` 불변(<repo>/memory/state/gate_shadow_log) · 호출부 무변경(dispatch/__init__.py e9f02b18, finish-task.sh 484274f7)
- 게이트 본체 v2_13_gate 무변경 · matrix `bfad1fbd` 불변 · fail-closed 0 · PreToolUse 실결선 0 · merge·push·credential 0
- p0b_inbox 3건 · anu-pickup.path inactive · ACTIVE=false · P0-B FROZEN
- **미승인(별도 Chair 승인 대기)**: S4 fail-closed 전환 · PreToolUse 실결선 · matrix delta

## 6. 현 단계 의미
```text
§31 게이트 shadow 가 이제 런타임에서 실제 verdict 다양성을 관측한다(GOAL_ENABLING_CORRECTION_ALLOWED 등).
단 여전히 report-only — 실제 차단(S4 fail-closed)은 별도 Chair 승인. shadow 로그 축적 후 다음 단계 판단.
```

**goal_contract strict_template builder CLOSED. 코드 추가 수정 0. ACTIVE=false · P0-B FROZEN 유지. 정지.**
