# task-2706+1 — task-2706 P1-B 외부 layer 독립 횡단 검증 (Maat read-only)

**task_id**: task-2706+1 (★ v2 정합 sub-id · task-2707 numeric 자동 발의 0)
**task_semantic_name**: task-2706-independent-verification (★ 본 task 의 본질 = task-2706 의 Maat 횡단 read-only 검증)
**parent_task**: task-2706 (★ provisional ACCEPT_WITH_KNOWN_CAVEATS · 검증 대상)
**parent_chain**: P1-A ACCEPT_WITH_KNOWN_CAVEATS ← task-2706 (provisional · P1-B external layer 구현) ← task-2706+1 (Maat 독립 횡단 검증)
**chair_authorization_id**: CHAIR-AUTH-TASK-2706PLUS1-MAAT-VERIFICATION-READONLY-260529
**level**: 4 (verifier · 횡단 검증)
**mode**: read_only (★ 회장 verbatim 강제)
**actor_role**: verifier (★ P1-C 설계 §1.1 정합 · 구현자 ≠ 검증자)
**executor**: dev2 오딘 (★ Sonnet 4.6 횡단 · executor dev1 헤르메스 분리 강제)
**model**: claude-sonnet-4-6

## allowed_resources (본 task 의 capability)

```yaml
allowed_resources:
  paths:
    - "memory/reports/task-2706+1.md"
    - "memory/events/task-2706+1.*"
  forbidden_paths:
    - "scripts/**"
    - "dispatch/**"
    - "scripts/finish-task.sh"
    - "scripts/session-watchdog.sh"
    - "scripts/task-scope-guard.sh"
    - "scripts/harness/**"
    - "memory/tasks/**"
    - "memory/events/task-2705.*"
    - "memory/events/task-2705+1.*"
    - "memory/events/task-2705+2.*"
    - "memory/events/task-2705+3.*"
    - "memory/events/task-2705+4.*"
    - "memory/events/task-2706.*"
    - "memory/specs/**"
    - "memory/plans/**"
    - "memory/capabilities/**"
    - "settings.json"
    - "dispatch/__init__.py"
    - ".github/**"
    - "tests/**"
  commands:
    - "pytest"
    - "sha256sum"
    - "git log"
    - "git blame"
    - "git diff"
    - "git status"
    - "ls"
    - "cat"
    - "grep"
    - "python3 -m py_compile"
  merge_policy: "manual"
  ttl_hours: 6
```

★ verifier read-only · 산출물 = report.md + decision.json + callback envelope 만.
★ 코드 수정 0 · finish-task.sh 실행 0 · .done 수동 생성 0 · PR/머지 0.

---

## 0. 본 task 의 본질 (★ 회장 verbatim 정합)

회장 verbatim:
- task-2706 봇 self-report = "ACCEPT_WITH_KNOWN_CAVEATS 후보" (★ 회장 직접 분류)
- 회장 verbatim 7 evidence 박제: "신규 파일만 생성 / 기존 파일 edit 0 / pytest 408 PASS / forbidden file sha 변화 0 / finish-task.sh no-touch / dispatch.py no-touch / GitHub write 0"
- 회장 verbatim "scope-guard 35 violations는 task-2705+3에서 확인된 prior lineage dirty 재현으로 분류"
- 회장 verbatim "FULL_ACCEPT 승격 금지 · P1-B accepted 확정 금지 · ANU 자체 승격 금지"
- 본 task = **독립 횡단 검증** · executor dev1 헤르메스 ≠ verifier dev2 오딘 분리 강제

**Maat 역할 정의** (★ P1-C §1.1·§5.3 + 회장 verbatim "검증자는 구현자가 아니다"):
- declared role: `verifier`
- evidence_level 우선: L3 commit_trailer / L4 runtime_event / L5 tool_call_trace
- self-verification 금지 (★ executor dev1 헤르메스와 별도 봇 dev2 오딘)

---

## 1. 검증 10 항목 (★ 회장 verbatim — 항목 가감 금지)

각 항목별 PASS/FAIL/PARTIAL + evidence_level + verbatim 근거 인용 필수.

### 항목 1: 신규 파일만 사용했는지

- task-2706 산출물 = task md 명시 신규 모듈 4 + 신규 tests 4 + 신규 fixtures N + 신규 marker/report 만인지 검증
- 기존 file edit 0 (★ allowed_resources.edits_existing: []) 정합 확인
- git diff 로 신규 vs edit 분리 박제

### 항목 2: finish-task.sh no-touch

- `git diff HEAD scripts/finish-task.sh` = EMPTY 검증 (★ byte-identical)
- `sha256sum scripts/finish-task.sh` 본 task 시작 sha = 종료 sha 정합 검증
- mtime 본 task 진입 시각 이전 확인

### 항목 3: dispatch.py no-touch

- `git diff HEAD dispatch/__init__.py` = EMPTY 검증
- `sha256sum dispatch/__init__.py` 본 task 시작 sha = 종료 sha
- mtime 본 task 진입 시각 이전 확인

### 항목 4: session-watchdog.sh no-touch

- `git diff HEAD scripts/session-watchdog.sh` = EMPTY 검증
- sha256 정합 확인

### 항목 5: settings.json no-touch

- `git diff HEAD settings.json` = EMPTY 검증
- sha256 정합 확인
- task-2706 task md forbidden_paths 명시 박제 확인

### 항목 6: regression claim 검증

- task-2706 봇 self-report 의 regression claim 정합 검증
- task-2703 / task-2704 / task-2705+3 replay fixture 정합 동작 확인
- 신규 fixture 가 prior task 회귀 영향 0 검증

### 항목 7: pytest 408 PASS claim 검증

- 본 verifier read-only pytest 재현: `pytest tests/harness/ -q`
- 봇 self-report 408 PASS 와 현재 disk 정합 확인
- 신규 tests (★ test_v36_finish_task_profile_*) 정합 검증

### 항목 8: scope-guard 35 violation root cause 검증

- task-2706 scope-violation.json 35 violations 분류 검증 (★ A unrelated existing dirty vs B task-induced vs C UNKNOWN)
- 회장 verbatim "prior lineage dirty 재현" 정합 확인
- task-2569 main..HEAD misfire 패턴 재현 정합 확인

### 항목 9: external layer 방식 유지 여부

- task-2706 신규 4 모듈 (★ classifier + judge + preflight + schema) 가 외부 layer 분리 정합 확인
- finish-task.sh 호출 결선 부재 확인 (★ NO TOUCH 정합 + 외부 모듈만 추가)
- dispatch.py 호출 결선 부재 확인

### 항목 10: forbidden action 0 여부

- task-2706 forbidden_files_strict 박제 list (★ scripts/finish-task.sh / scripts/session-watchdog.sh / scripts/task-scope-guard.sh / settings.json / dispatch/__init__.py / .github/** / memory/events/task-2705.* / memory/tasks/task-2705*.md / memory/reports/task-2705*.md / scripts/harness/v36/dispatch_marker_writer.py / scripts/harness/v36/task_md_sha_*.py / scripts/harness/v36/spawn_detector.py / scripts/harness/v36/watchdog_suppression_gate.py / scripts/harness/v36/closeout_marker_watcher.py / memory/capabilities/**) 의 모든 파일 sha 변화 0 검증
- gh CLI 호출 0 박제 (★ schedule_history transcript grep)
- git push / PR 생성 / branch push / merge 0 박제

---

## 2. 결과 분류 5 enum (★ 회장 verbatim STEP 3 final classification 정합)

Maat 가 10 검증 종합 평가 후 5 분류 중 정확히 1 선택:

1. **FULL_ACCEPT**: 10 항목 모두 PASS L4+ · caveat 전부 해소 또는 무영향
2. **ACCEPT_WITH_KNOWN_CAVEATS**: 10 항목 핵심 PASS · known caveat 유지 가능 (★ scope-guard 35 dirty 재현 caveat / Hermes 직접 패치 caveat 등)
3. **PARTIAL_ACCEPT_NEEDS_FOLLOWUP**: 일부 PASS_PARTIAL · 후속 task 필요
4. **HOLD_FOR_CHAIR**: Maat 판정 모호 · 회장 closeout 결정 필수
5. **REJECT**: 핵심 FAIL · P1-B 승격 불가

**선택 근거**: 10 항목 + 회장 verbatim 7 evidence 정합 + ANU 박제 evidence 평가.

---

## 3. 금지 (★ 회장 verbatim 정합)

### 3.1 회장 verbatim 야간 위임 13 금지 항목 (★ 전체 유지)

1. finish-task.sh 실행 금지
2. finish-task.sh 수정 금지
3. settings.json 수정 금지
4. session-watchdog.sh 수정 금지
5. GitHub write 금지
6. PR 생성 금지
7. branch push 금지
8. merge 금지
9. task-2707 자동 발의 금지
10. task-2708 자동 발의 금지
11. Goal-to-Done 구현 금지
12. PHASE_AUTO 구현 금지
13. Core/Work 이원화 구현 금지

### 3.2 추가 verifier 강제 금지 8

14. 코드 수정 금지 (★ verifier read-only)
15. .done 수동 생성 금지 (★ system 자동 finalize 외)
16. ANU 자체 FULL_ACCEPT 판정 금지 (★ 본 verifier 봇은 ANU 가 아니나 self-report FULL_ACCEPT 권고 0)
17. P1-B accepted marker 작성 금지 (★ ANU 회수 후 회장 결재 영역)
18. lineage rewrite 금지 (★ task-2705/2705+1/2705+2/2705+3/2705+4/2706 lineage 산출물 변경 0)
19. dispatch.py 수정 금지
20. external layer 자체 수정 금지 (★ task-2706 산출물 read-only 검증만)
21. P1-C actor attribution 구현 금지

**위반 시**: 즉시 task 중단 + violation report 박제 + ANU callback 발사.

---

## 4. 산출물 표준 (★ 필수 출력)

### 4.1 Maat verification report
- 경로: `memory/reports/task-2706+1.md`
- 내용:
  - 10 항목 evaluation 표 (PASS/FAIL/PARTIAL + evidence_level + verbatim 근거)
  - 5 분류 중 선택 + 선택 근거
  - 21 금지 준수 확인
  - Maat 역할 self-attestation (★ P1-C §5.3 verifier 보고 템플릿 정합)
  - linked markers

### 4.2 Maat decision marker
- 경로: `memory/events/task-2706+1.decision.json`
- schema:
  - marker_version: v1
  - marker_type: task_2706plus1_maat_verification_decision
  - task_id: task-2706+1
  - parent_task_id: task-2706
  - chair_authorization_id: CHAIR-AUTH-TASK-2706PLUS1-MAAT-VERIFICATION-READONLY-260529
  - 10_scope_evaluation: array of 10 items
  - final_classification: enum 5
  - selection_rationale: text
  - 21_prohibitions_compliance: object of 21
  - maat_role_self_attestation: object
  - linked_markers: array

### 4.3 ANU normal callback envelope
- collector_key: `c119085addb0f8b7` (ANU)
- envelope size: ≤ 3,900 bytes hard limit (★ UTF-8 byte 측정)
- envelope-only: 상세는 report.md / decision.json 위임
- ANU 보고 형식 5 (★ confirmed_fact / caveat / blocker / verdict / recommendation)

---

## 5. ANU 박제 evidence (★ verifier 참고)

본 verifier 는 ANU 가 박제한 evidence 를 read-only 참고할 수 있다. 단, **independent 횡단 재검증** 강제:

- `memory/events/task-2706.provisional-accept-with-known-caveats-pending-maat-verification-260529.json` (★ 회장 verdict + ANU 박제)
- `memory/events/task-2706.dispatched-spawn-verified-260529.json` (★ dispatch + SPAWN_VERIFIED)
- `memory/events/anu_new_step_2_scope_guard_false_positive_root_cause_260529.json` (★ scope-guard root_cause)

**verifier 의 독립 검증 책무**:
- ANU 박제 evidence 가 verifier 독립 재현 시 동일한지 검증
- 항목 8 scope-guard 35 violations 분류 (★ A/B/C) 독립 재현
- 회장 verbatim 7 evidence 독립 검증

---

## 6. evidence_level 요구 등급 (★ P1-C §2.1 정합)

| 항목 | 최저 evidence_level | 권고 |
|------|---------------------|------|
| 1 (신규 파일만) | L4 (git diff) | L4+ (★ ls + git diff 교차) |
| 2 (finish-task.sh no-touch) | **L4 필수** | L4 (★ git diff HEAD + sha256) |
| 3 (dispatch.py no-touch) | **L4 필수** | L4 |
| 4 (session-watchdog.sh no-touch) | **L4 필수** | L4 |
| 5 (settings.json no-touch) | **L4 필수** | L4 |
| 6 (regression claim) | L4 | L4 (★ pytest 재현) |
| 7 (pytest 408 PASS) | **L4 필수** | L4 (★ pytest read-only 재현) |
| 8 (scope-guard 35 root_cause) | L4 | L4+ (★ git status + scope-violation.json read) |
| 9 (external layer 방식) | L4 | L4 (★ ls + grep) |
| 10 (forbidden action 0) | **L4 필수** | L4+ (★ git log + ls + sha256 + grep) |

★ L1 self_attestation 단독 항목 0 (★ verifier 역할의 본질 · P1-C §2.3 정합).

---

## 7. Maat 역할 self-attestation 표준 (★ P1-C §5.3 정합)

본 task 완료 시 보고서에 다음 박제 강제:

```
## Maat 역할 보고

### declared
- 선언 role: verifier (★ 횡단 검증 · independent)
- 선언 시점: <dispatch timestamp>
- 모델: claude-sonnet-4-6 (★ executor dev1 헤르메스 와 봇/세션 분리)

### observed roles
- verifier (★ 독립 재검증)
  - L4 evidence: 본 보고서 작성 session = dev2 오딘 봇 (executor dev1 헤르메스 봇과 별도 chat·세션)
  - L4 evidence: 모든 측정 명령 read-only
  - 검증 범위: 10 항목 + 5 분류 + 21 금지 준수

### caveat
- (★ Maat self-attestation 한계 인정 · executor 와 분리됐다는 점만 L4 보장)
```

---

## 8. 회장 결재 대기 항목 (★ Maat 보고 시 명시)

Maat 결과 분류 후 회장 결재 사항 명시:
- FULL_ACCEPT 선택 시: P1-B accepted marker (★ ANU 작성 가능) · P1-B FULL_ACCEPT 가능
- ACCEPT_WITH_KNOWN_CAVEATS 선택 시: ★ P1-B accepted marker 작성 가능 (★ FULL_ACCEPT 아님)
- PARTIAL_ACCEPT_NEEDS_FOLLOWUP 선택 시: 후속 task 후보 박제 + 회장 발의 결재
- HOLD_FOR_CHAIR 선택 시: 회장 직접 분석 위임
- REJECT 선택 시: task-2706+2 재시도 또는 회장 전략 재고

---

## 9. 본 task 의 ANU 자체 caveat

- ANU 가 task-2706 산출물에 대한 자체 평가 0 (★ 회장 verbatim "ANU 자체 승격 금지")
- 본 task = **독립 verifier 횡단 검증** (★ executor dev1 + ANU chair-facing session 모두 분리)
- ANU 자체 FULL_ACCEPT 판정 0 유지 (★ 회장 verbatim "자동 승격 금지")
- ★ "evidence 만 따라간다" doctrine 정합 — FULL_ACCEPT 결과를 원하는 방향으로 몰지 말 것

---

## 10. linked references

- `memory/tasks/task-2706.md` (★ 검증 대상)
- `memory/reports/task-2706.md` (★ 봇 self-report · 검증 대상)
- `memory/events/task-2706.dispatched-20260529.json` (★ dispatch marker · L4 production runtime evidence)
- `memory/events/task-2706.dispatched-spawn-verified-260529.json` (★ ANU dispatch 박제)
- `memory/events/task-2706.provisional-accept-with-known-caveats-pending-maat-verification-260529.json` (★ 회장 verdict + ANU 박제)
- `memory/events/anu_new_step_2_scope_guard_false_positive_root_cause_260529.json` (★ scope-guard root_cause)
- `memory/events/p1a_task_md_sha_contract_accepted_with_known_caveats_260529.json` (★ P1-A 정합)
- `memory/specs/v36_p1b_task_mode_pass_warn_fail_escalate_matrix_260529.md` (★ 192-cell matrix)
- `memory/specs/v36_p1c_evidence_level_l1_to_l5_refinement_matrix_260529.md` (★ P1-C 정합)
- `scripts/finish-task.sh` (★ read-only · L431-451 verbatim)
- `dispatch/__init__.py` (★ read-only · helper + caller)
- `scripts/session-watchdog.sh` (★ read-only)
- `settings.json` (★ read-only)
- `scripts/harness/v36/finish_task_profile_classifier.py` (★ 본 task 신규 모듈 검증 target)
- `scripts/harness/v36/finish_task_profile_judge.py` (★ 본 task 신규 모듈 검증 target)
- `scripts/harness/v36/finish_task_profile_preflight.py` (★ 본 task 신규 모듈 검증 target)
- `scripts/harness/v36/finish_task_profile_schema.py` (★ 본 task 신규 모듈 검증 target)
- `tests/harness/test_v36_finish_task_profile_*.py` (★ regression 검증 target)

---

**독립 횡단 검증 강제 doctrine 박제 완료. read-only · 코드 수정 0 · 21 금지 절대 준수.**

**callback prompt UTF-8 byte limit ≤ 3,900 bytes hard · envelope-only · 상세는 report.md / decision.json 위임.**

**Maat verdict → ANU 5 형식 보고 (★ confirmed_fact / caveat / blocker / verdict / recommendation).**