# task-2705+2 — task-2705+1 Maat 횡단 검증 세션 (read-only)

**task_id**: task-2705+2 (★ v2 포맷 정합 sub-id · task-2706 numeric 발행 0 · 회장 verbatim 정합)
**task_semantic_name**: task-2705+2 (★ 본 task 의 본질 = task-2705+1 의 Maat 횡단 검증)
**parent_task**: task-2705+1 (PROVISIONAL_ACCEPT_PENDING_MAAT_VERIFICATION)

## allowed_resources (본 task의 capability)

```yaml
allowed_resources:
  paths:
    - "memory/reports/task-2705+2.md"
    - "memory/events/task-2705+2.decision.json"
    - "memory/events/task-2705+2.*"
  forbidden_paths:
    - "scripts/**"
    - "dispatch/**"
    - "scripts/finish-task.sh"
    - "scripts/session-watchdog.sh"
    - "scripts/harness/**"
    - "memory/tasks/**"
    - "memory/events/task-2705.*"
    - "memory/events/task-2705+1.*"
    - "memory/specs/**"
    - "memory/plans/**"
    - "memory/capabilities/**"
    - "settings.json"
    - ".github/**"
    - "tests/**"
  commands:
    - "pytest"
    - "sha256sum"
    - "git log"
    - "git blame"
    - "git diff"
    - "ls"
    - "cat"
    - "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.
**chair_authorization_id**: CHAIR-AUTH-TASK-2705PLUS1-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 헤르메스 분리)
**duration_budget**: ~3 시간 (★ read-only 검증만)

---

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

회장 verbatim 야간 위임 결과 판정 5 항목 박제:
1. task-2705 = VALID_HOLD lineage 보존
2. task-2705+1 ≠ FAIL
3. task-2705+1 = P1-A 핵심 기능 상당 부분 회복
4. 즉시 FULL_ACCEPT 처리 X
5. 현재 분류 = PROVISIONAL_ACCEPT_PENDING_MAAT_VERIFICATION

**본 task 의 목적**: task-2705+1 산출물이 P1-A `ACCEPTED` 로 승격 가능한지 **독립 횡단 검증** 수행.

**Maat 역할 정의** (★ P1-C 설계 §1.1·§5.3):
- declared role: `verifier` (★ executor 와 분리)
- evidence_level 우선: L3 commit_trailer / L4 runtime_event / L5 tool_call_trace
- self-verification 금지 (★ 본 봇 = executor 아닌 횡단 봇 필수)

---

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

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

### 항목 1: task-2705+1 decision marker 검증
- 파일: `memory/events/task-2705+1.task-md-sha-decision.json`
- 검증: schema 정합성 · ALLOW decision_class · WHITESPACE_NORMALIZATION patch_type · content_verbatim_match=true · continue_allowed=true
- evidence_level 목표: L4 (file content read)

### 항목 2: task-2705+1 report 검증
- 파일: `memory/reports/task-2705+1.md`
- 검증: 12,174 bytes · 회장 verbatim 표현 강제 박제 · 9 PASS + 2 PASS_PARTIAL 보고 정합
- evidence_level 목표: L4

### 항목 3: dispatch_pre_sha / dispatch_post_sha / executor_observed_sha 3단계 기록 검증
- 검증: decision marker JSON 내 3 sha 필드 존재 + 값 확인
- 예상값: pre `b787cf2e…` (16,567B) · post `7b51a94d…` (16,566B) · observed `7b51a94d…` (16,566B)
- evidence_level 목표: L4 (★ JSON 직접 read · sha256 명령으로 cross-verify 가능)

### 항목 4: WHITESPACE_NORMALIZATION ALLOW 판정 정합성 검증
- 검증: scripts/harness/v36/task_md_sha_normalize.py · task_md_sha_contract.py 의 판정 로직 read
- 1 byte trailing newline (`.strip()` 효과) 제거가 ALLOW 분기로 분류되는지 코드 read 확인
- evidence_level 목표: L4

### 항목 5: semantic change DENY fixture 존재 여부 검증
- 검증: tests/harness/test_v36_task_md_sha_contract.py 내 fixture-6 / fixture-7 DENY 분기 fixture 존재 확인
- parametrize 검증 코드 read
- evidence_level 목표: L4

### 항목 6: unverifiable HOLD fixture 존재 여부 검증
- 검증: tests/harness/test_v36_task_md_sha_contract.py 내 fixture-5 HOLD unverifiable 분기 fixture 존재 확인
- evidence_level 목표: L4

### 항목 7: task_md_sha_before=null 결함 해소 여부 검증
- 검증: dispatch/__init__.py 내 `_safe_compute_task_md_sha` helper 존재 + caller 2 site 에서 호출 여부
- 기존 결함: task_md_sha_before=null 박제 (task-2704 incident)
- evidence_level 목표: L4

### 항목 8: dispatch_marker_writer chair_authorization_id 하드코딩 제거 여부 검증
- 검증: scripts/harness/v36/dispatch_marker_writer.py 의 모듈 상수 CHAIR_AUTHORIZATION_ID 제거 + 함수 signature 에 chair_authorization_id arg 추가 여부
- evidence_level 목표: L4

### 항목 9: caller 에서 chair_authorization_id 전달이 실제 구현됐는지 검증 (★ 회장 verbatim 핵심 항목)
- 검증: dispatch/__init__.py L2992 · L4029 의 caller 2 site 에서 chair_authorization_id 값 전달 실태
- ANU 자체 보고: `chair_authorization_id=None` 임시 결선 (PASS_PARTIAL #8)
- ★ 본 항목이 회장 verbatim "원래 PASS 조건 중 하나" → FULL_ACCEPT 승격 판정의 핵심 변수
- evidence_level 목표: L4 (★ dispatch.py 코드 read · None vs 실제 값 명시 확인)

### 항목 10: task-2703 / 2704 회귀 유지 여부 검증
- 검증: pytest 278/278 PASS 보고 정합성 + task-2703 / 2704 관련 테스트 PASS 확인
- evidence_level 목표: L4 (★ pytest 재실행 OR test result artifact read)
- ★ 코드 수정 0 · pytest read-only 실행 허용

### 항목 11: forbidden write 0 검증 (★ 회장 verbatim 핵심 항목)
- 검증 대상:
  - settings.json 변경 0
  - finish-task.sh 변경 0
  - session-watchdog.sh 변경 0
  - task-2705 lineage 산출물 변경 0 (★ task-2705.md sha 3e3b15e9 · task-2705 task-md-sha-decision sha 0cc87f00 · reports/task-2705.md sha d3c1b10f)
  - .done 수동 생성 0
  - PR / branch push / merge 0
  - task-2706 자동 발의 0
- evidence_level 목표: L4 (★ git log · sha256 cross-verify · ls 확인)

### 항목 12: Hermes 직접 구현 caveat 가 P1-A validity 에 미치는 영향 검증
- 검증: report §10·§133 verbatim 박제 + schedule_history A17B3E6D.log spawn signature 확인
- Hermes lead_integrator + implementer overlap role 인정 가능 여부
- L5 tool_call_trace 부재 영향 평가
- evidence_level 목표: L4+ (★ schedule_history read · transcript JSONL 가능 시 L5 cross-verify)

---

## 2. 결과 분류 5 enum (★ 회장 verbatim — 정확히 5 옵션 중 1 선택)

Maat 가 12 항목 종합 평가 후 다음 5 분류 중 정확히 1 개 선택:

1. **FULL_ACCEPT**: 12 항목 모두 L4+ PASS · caveat 전부 해소 또는 무영향
2. **ACCEPT_WITH_KNOWN_CAVEATS**: 12 항목 핵심 PASS · 알려진 caveat 유지 가능 (★ task-2704 분류 정합)
3. **PARTIAL_ACCEPT_NEEDS_FOLLOWUP**: 12 항목 중 일부 PASS_PARTIAL · 후속 task 필요 (★ ANU 자체 PASS_WITH_CAVEATS 와 유사)
4. **HOLD_FOR_CHAIR**: Maat 판정 모호 · 회장 closeout 결정 필수
5. **REJECT**: 12 항목 중 핵심 FAIL · P1-A 승격 불가

**선택 근거**: 12 항목 평가표 + 항목 9 (caller chair_auth_id) + 항목 11 (forbidden write 0) + 항목 12 (Hermes caveat) 가중 평가.

---

## 3. 8 금지 항목 (★ 회장 verbatim — 절대 위반 0)

1. **코드 수정 금지** (★ read-only 강제)
2. **finish-task.sh 실행 금지** (★ verifier 는 closeout 권한 0)
3. **.done 생성 금지** (★ verifier 는 task closeout 권한 0)
4. **task-2706 발의 금지** (★ 신규 numeric task ID 발행 0)
5. **PR / branch push / merge 금지**
6. **GitHub write 금지** (★ gh CLI write 동작 0)
7. **P1-B / P1-C 구현 금지** (★ 설계 초안 보존만)
8. **ANU 자체 FULL_ACCEPT 판정 금지** (★ Maat 결과 분류 후 ANU 는 회장에게 relay 만)

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

---

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

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

### 4.2 Maat decision marker
- 경로: `memory/events/task-2705+2.decision.json`
- schema:
  - marker_version: v1
  - marker_type: task_2705plus1_maat_verification_decision
  - task_id: task-2705+2
  - parent_task_id: task-2705+1
  - chair_authorization_id: CHAIR-AUTH-TASK-2705PLUS1-MAAT-VERIFICATION-READONLY-260529
  - 12_scope_evaluation: array of 12 items (each: scope_number / scope_name / result / evidence_level / verbatim_evidence / notes)
  - final_classification: enum 5 (FULL_ACCEPT / ACCEPT_WITH_KNOWN_CAVEATS / PARTIAL_ACCEPT_NEEDS_FOLLOWUP / HOLD_FOR_CHAIR / REJECT)
  - selection_rationale: text
  - 8_prohibitions_compliance: object of 8 (each: prohibition / violated: bool)
  - maat_role_self_attestation: object
  - linked_markers: array

### 4.3 ANU callback envelope (★ 본 task 완료 시)
- collector_key: c119085addb0f8b7 (ANU)
- one-line summary: classification + 12_scope summary
- envelope size: ≤ 3900 bytes hard limit (★ UTF-8 byte 측정)

---

## 5. 검증 진행 순서 권고

1. **Phase 1** (~30분): 본 task md read + 12 항목 spec 숙지 + 8 금지 박제
2. **Phase 2** (~60분): 항목 1~6 검증 (decision marker + report + 3 sha + WHITESPACE_NORMALIZATION + fixture 5/6/7)
3. **Phase 3** (~60분): 항목 7~9 검증 (dispatch.py code read · task_md_sha_before null fix + chair_auth_id hardcode 제거 + caller None 결선 실태)
4. **Phase 4** (~30분): 항목 10~12 검증 (회귀 pytest read-only + forbidden write 0 + Hermes caveat 영향)
5. **Phase 5** (~30분): 5 분류 결정 + 보고서 + decision marker + ANU callback envelope
6. **Phase 6** (~10분): 산출물 sanity check + 8 금지 준수 self-audit

---

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

| 항목 | 최저 evidence_level | 권고 |
|------|---------------------|------|
| 1~3 (marker / report / 3 sha) | L4 | L4+L5 (transcript JSONL 가능 시) |
| 4 (WHITESPACE_NORMALIZATION) | L4 | L4 (코드 read) |
| 5~6 (fixture) | L4 | L4 (테스트 파일 read) |
| 7~8 (sha_before null fix / hardcode 제거) | L4 | L4 (코드 read) |
| 9 (caller chair_auth_id 전달) | **L4 필수** | L4+L5 (git blame 가능 시) |
| 10 (회귀) | L4 | L4 (pytest read-only) |
| 11 (forbidden write 0) | **L4 필수** | L4+L5 (git log + ls + sha256) |
| 12 (Hermes caveat) | L4+ | L5 권고 (transcript JSONL · A17B3E6D.log) |

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

---

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

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

```
## Maat 역할 보고

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

### observed roles
- verifier (★ 독립 재검증)
  - L4 evidence: 본 보고서 작성 session_id (executor 와 분리)
  - L5 evidence: tool_call_trace 독립 transcript
  - 검증 범위: 12 항목 + 5 분류 + 8 금지 준수

### verification matrix
- 항목 1: PASS/FAIL/PARTIAL + evidence_level + verbatim
- 항목 2~12: 동일 포맷

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

---

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

Maat 결과 분류 후 회장 결재 사항 명시:
- FULL_ACCEPT 선택 시: task-2705 closeout + P1-A ACCEPTED 승격 결재
- ACCEPT_WITH_KNOWN_CAVEATS 선택 시: caveat 명시 + 회장 closeout 결재
- PARTIAL_ACCEPT_NEEDS_FOLLOWUP 선택 시: 후속 task 후보 박제 + 회장 발의 결재
- HOLD_FOR_CHAIR 선택 시: 회장 직접 분석 위임
- REJECT 선택 시: task-2705+2 재시도 또는 회장 전략 재고

---

## 9. 본 task 의 ANU 자체 caveat

- ANU 자체 PASS_WITH_CAVEATS · P1-A ACCEPTED 판정 = 회장 verbatim 정정으로 회수
- ANU 야간 보고 자체가 self-attestation 한계 (★ P1-C 설계 §8.2 정합)
- Maat 횡단 검증으로만 진정한 verifier 인정 가능
- ★ 본 task 완료 후에도 ANU 는 자체 FULL_ACCEPT 판정 0 (★ 회장 verbatim 8 금지 #8)

---

## 10. linked references

- `memory/tasks/task-2705+1.md` (parent task)
- `memory/events/task-2705plus1.provisional-accept-pending-maat-verification-260529.json` (★ 회장 verdict)
- `memory/events/task-2705plus1.pass-with-caveats-night-delegation-260529.json` (★ ANU 야간 판정 · 회장 정정 대상)
- `memory/events/task-2705+1.task-md-sha-decision.json` (★ 검증 대상 1)
- `memory/reports/task-2705+1.md` (★ 검증 대상 2)
- `memory/specs/v36_task_md_sha_contract_design_draft_260528.md` (P1-A 설계)
- `memory/specs/v36_actor_attribution_contract_design_draft_260529.md` (★ verifier role 정의 정합)
- `memory/reports/anu_night_delegation_final_report_260529.md` (ANU 야간 보고)
- `scripts/harness/v36/task_md_sha_normalize.py` (★ 항목 4)
- `scripts/harness/v36/task_md_sha_contract.py` (★ 항목 4)
- `scripts/harness/v36/dispatch_marker_writer.py` (★ 항목 8)
- `dispatch/__init__.py` (★ 항목 7·9)
- `tests/harness/test_v36_task_md_sha_contract.py` (★ 항목 5·6)
- `tests/harness/test_v36_task_md_sha_normalize.py` (★ 항목 4)

---

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

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