# V3.6 Runtime Harness — P1-C Actor Attribution Contract 설계 초안

**문서 종류**: 설계 초안 (DRAFT) · 구현 dispatch 0 · 회장 결재 대기 read-only
**작성자**: ANU (chair-facing session) — 회장 야간 위임 [2/3]+[3/3] 인가 범위 내 자체 판단
**작성 시각**: 2026-05-29 02:35 KST
**위치**: `/home/jay/workspace/memory/specs/v36_actor_attribution_contract_design_draft_260529.md`
**상위 문서**:
- `memory/specs/v36_runtime_harness_control_plane.md` (P0 마스터 설계)
- `memory/specs/v36_finish_task_profile_contract_design_draft_260529.md` (P1-B 설계 초안)
- `memory/specs/v36_task_md_sha_contract_design_draft_260528.md` (P1-A 설계 초안 · ACCEPTED)
- `memory/reports/meta_infra_phase1_closeout_260528.md` (META_INFRA Phase1 종결)

**범위 한정 (★ 회장 verbatim 야간 위임 [3/3] 정합)**:
- 본 문서 = **설계 초안만**. 구현 dispatch 0. 코드 변경 0. PR/머지 0.
- task-2706 자동 발의 0 (★ 회장 verbatim 야간 위임 12 금지 #6)
- ANU 본체 직접 구현 0 (★ 회장 verbatim "메타 인프라 신규 코드 구현 금지")
- 회장 별도 결재 시에만 후속 task 발의 가능

---

## 0. 배경 — 왜 actor attribution contract 가 필요한가

### 0.1 task-2703~2705+1 박제된 attribution 사고 패턴

**8 incident 중 actor attribution 관련 3건** (control plane incidents map 참조):
1. **task-2703 Hermes 직접 구현 attribution 모호**
   - report에 "Hermes는 통합·조정자, Vulcan은 구현, Maat는 검증" 명시
   - 그러나 fallback session (workspace A17B3E6D · 비-git 위치) 에서 worktree 격리 위임 실패 → Hermes 가 직접 패치 수행
   - "Hermes 직접 코딩 0" 표현이 self-attestation 만으로 강제될 수 없음 (★ 회장 verbatim)
2. **task-2704 "직접 코딩 0" 단정 verbatim 표현 강제**
   - 회장 verbatim: "Hermes 소규모 직접 패치 가능성은 self-attestation만으로 완전 배제 불가"
   - report verbatim 박제 표현 강제 → "직접 패치 가능성 명시 박제 + 별도 검증 세션 요청"
3. **task-2705+1 caveat 1 verbatim 표현 강제 정합**
   - 회장 verbatim 표현 강제 인정 + Maat Sonnet 횡단 별도 검증 세션 요청

**공통 근본 문제**:
- actor 역할 분리 doctrine (Hermes 통합·Vulcan 구현·Maat 검증) 가 **자가신고만으로 강제 불능**
- "직접 코딩 0" 단정 표현이 actor self-attestation 한계 (확인 불가) 와 충돌
- attribution 증거 등급 (self / report / commit trailer / runtime event / tool call trace) 가 미정의

### 0.2 회장 verbatim 야간 위임 [3/3] P1-C 지시 verbatim 박제

회장 verbatim (재구성 — chair-facing session 수신본):
> P1-C actor attribution contract 설계 초안:
> - actor_role enum: lead_integrator / implementer / verifier / reviewer / collector
> - evidence_level enum: L1 self_attestation / L2 report_marker / L3 commit_trailer / L4 runtime_event / L5 tool_call_trace
> - "직접 코딩 0" 단정 금지 — 표현 강제 doctrine
> - allowed / forbidden 표현 예시 박제
> - Hermes / Vulcan / Maat 역할 보고 템플릿
> - task-2703 / 2704 / 2705 incident 연결
> - 향후 구현 마커 schema
> - task-2706 자동 발의 0

**ANU 정합 해석**:
- 본 P1-C 는 **외부 contract layer** — finish-task.sh / 봇 self-attestation 자체 수정 0.
- actor_role + evidence_level 만 **schema 정의** + 표현 강제 doctrine 박제.
- 향후 구현은 회장 결재 후 별도 task 후보.

---

## 1. actor_role enum 정의 (★ 회장 verbatim)

### 1.1 5 actor_role enum

| enum | 한국어 | 모델 디폴트 | 권한 범위 | 산출물 책임 |
|------|--------|------------|----------|------------|
| `lead_integrator` | 선도 통합자 | Opus | 통합 조정 · 소규모 fallback patch (★ 가능성 명시 인정) | 통합 보고서 · 분기 결정 · escalate 트리거 |
| `implementer` | 구현자 | Sonnet | 주 코드 작성 · 신규 모듈 · 테스트 작성 | 코드 · 테스트 · 마이그레이션 |
| `verifier` | 검증자 | Sonnet 횡단 | 독립 재검증 · 회귀 측정 · evidence audit | 검증 보고 · gap 박제 |
| `reviewer` | 리뷰어 | (사람·외부 AI) | PR 코멘트 · spec compliance · gemini external trigger | 리뷰 코멘트 · approve/request_changes |
| `collector` | 수집자 | (ANU 또는 dev key) | callback 회수 · result envelope 수집 · ledger 등록 | callback envelope · adjudication marker |

### 1.2 actor_role 매핑 example (★ 실제 dev1~8 운영 매핑)

| actor 이름 | 봇 ID | 기본 role | 운영 history |
|-----------|------|----------|--------------|
| Hermes (헤르메스) | dev1 | `lead_integrator` | task-2703 / task-2704 / task-2705+1 통합 |
| Odin (오딘) | dev2 | `implementer` | task-2702 daemon flapping fix |
| Dagda (다그다) | dev3 | `implementer` / `verifier` | task-2569 chain resolver |
| Vishnu (비슈누) | dev4 | `implementer` | (다양) |
| Marduk (마르둑) | dev5 | `implementer` | task-2582 dispatch-gate |
| Perun (페룬) | dev6 | `implementer` | task-2634 normal callback 사고 |
| Ishana (이참나) | dev7 | `implementer` / `reviewer` | dev7 watcher / PR #156 사고 |
| Ra (라) | dev8 | `implementer` (GLM) | GLM 코딩 전용 |
| Vulcan | (가상) | `implementer` (Sonnet) | V3.6 control plane 가상 구현자 |
| Maat | (가상) | `verifier` (Sonnet 횡단) | V3.6 control plane 가상 검증자 |
| ANU | (chair-facing) | `collector` · `lead_integrator` 보조 | dispatch · callback 회수 · 보고 |

### 1.3 actor_role overlap 정책 (★ 단일 actor 다중 role 인정)

**doctrine**: 한 actor 가 동시에 여러 role 을 수행할 수 있음 (★ 현실 운영 정합)
- 예: Hermes 가 task-2705+1 에서 `lead_integrator` + `implementer` (fallback 직접 패치) 동시 수행
- 예: ANU 가 `collector` + `lead_integrator` 보조 동시 수행 (chair-facing session)

**필수 강제**:
- role overlap 시 **각 role 별로 evidence_level 분리 기록** (다음 §2)
- "직접 코딩 0" 단정 금지 (★ 회장 verbatim — §4 표현 강제 doctrine)
- self-attestation 만으로 role 단정 금지 — L2+ evidence 필요

---

## 2. evidence_level enum 정의 (★ 회장 verbatim L1~L5)

### 2.1 5 evidence_level 위계

| level | 약칭 | 출처 | 강도 | 검증 가능성 |
|-------|------|------|------|-----------|
| **L1** | self_attestation | actor 자신의 보고 텍스트 | LOWEST | 본인 신고만 — 독립 검증 0 |
| **L2** | report_marker | report.md · marker JSON | LOW | 출력 시점 박제됐으나 actor 자가작성 |
| **L3** | commit_trailer | git commit 의 `Co-Authored-By` / `Implemented-By` trailer | MEDIUM | git history immutable · 사실관계 검증 가능 |
| **L4** | runtime_event | hook event / dispatch marker / spawn signal | HIGH | 시스템 timestamp + 자동 박제 |
| **L5** | tool_call_trace | actor 의 실제 tool 호출 trace (Bash · Edit · Write 등) | HIGHEST | 봇 세션 transcript 직접 인용 |

### 2.2 evidence_level 별 strength matrix

| 주장 | L1 self | L2 report | L3 trailer | L4 runtime | L5 trace | 인정 |
|------|---------|-----------|-----------|-----------|----------|------|
| "Hermes 가 통합만 수행" | 단독 ❌ | 단독 ❌ | ⚠ (commit 0건 확인 시 보강) | ✅ (Bash/Edit tool call 0건 확인) | ✅ (transcript 직접 인용) | L4+ 필수 |
| "Vulcan 이 주 구현" | ❌ | ⚠ | ✅ (commit trailer) | ✅ (hook event) | ✅ | L3+ 인정 |
| "Maat 가 횡단 검증" | ❌ | ⚠ | (commit 없을 수 있음) | ✅ (별도 session id) | ✅ | L4+ 필수 |
| "callback 회수 완료" | ❌ | ⚠ | N/A | ✅ (envelope JSON) | ✅ (Read tool result) | L4+ 필수 |
| "PR open 완료" | ❌ | ⚠ | N/A | ✅ (gh api PR #) | ✅ | L4+ 필수 |

### 2.3 evidence_level 운영 doctrine

**L1 self_attestation 단독 인정 금지** (★ 회장 verbatim 표현 강제):
- "직접 코딩 0" / "fallback 0" / "수정 0" 류 negative 주장은 **L4+ runtime event 검증 필수**
- L1 단독 시 분류 = `ATTRIBUTION_UNVERIFIED` (보고서 caveat 필수)

**L2 report_marker 표준 schema**:
```json
{
  "actor_id": "Hermes",
  "actor_role": ["lead_integrator", "implementer"],
  "self_attestation_l1": "fallback session 에서 직접 패치 수행 1건",
  "evidence_l2_report": "memory/reports/task-2705+1.md §10 verbatim",
  "evidence_l3_trailer": "git log --grep='Implemented-By: Hermes' (0건 — fallback workspace 비-git)",
  "evidence_l4_runtime": "schedule_history A17B3E6D.log spawn signature",
  "evidence_l5_trace": "(부재 — 본 incident 사유)",
  "verified_evidence_max_level": "L4",
  "attribution_caveat": "L5 trace 부재 → 별도 검증 세션 (Maat Sonnet) 권고"
}
```

**L5 tool_call_trace 보존 정책**:
- 봇 세션 transcript JSONL 보존 (이미 cokacdir 자동 보존 — `~/.claude/projects/<workspace>/<session_id>.jsonl`)
- attribution 검증 시 transcript 직접 인용 가능
- ANU 가 직접 transcript 읽기 가능 (read-only)

---

## 3. attribution marker schema 정의

### 3.1 task 별 attribution marker 표준 schema

**파일 위치**: `memory/events/<task_id>.attribution.json` (★ 신규 제안 · 구현 아님)
**lifecycle**: dispatch 시 actor_role 선언 + 작업 중 evidence 누적 + closeout 시 final 박제

```json
{
  "marker_version": "v1",
  "marker_type": "task_attribution_marker",
  "task_id": "task-2705+1",
  "recorded_at": "2026-05-29T02:30:00+09:00",
  "recorded_by": "ANU_chair_facing_session",

  "declared_actors": [
    {
      "actor_id": "Hermes",
      "declared_role": "lead_integrator",
      "declared_at_dispatch": "2026-05-28T22:00:00+09:00",
      "model": "claude-opus-4-7"
    }
  ],

  "observed_actors": [
    {
      "actor_id": "Hermes",
      "observed_role": ["lead_integrator", "implementer"],
      "observation_method": "L2_report + L4_runtime",
      "observed_evidence": {
        "l2_report_marker": "memory/reports/task-2705+1.md §10·§133",
        "l4_runtime_signature": "schedule_history A17B3E6D.log spawn 18:12:50 KST",
        "l5_tool_call_trace_available": false
      },
      "role_overlap_reason": "fallback workspace 비-git 위치 → Vulcan/Maat 위임 불가 → Hermes 직접 패치"
    }
  ],

  "attribution_verified_level": "L4",
  "attribution_caveat": "L5 trace 부재 — 별도 Maat 횡단 검증 세션 권고",
  "attribution_doctrine_compliance": "PASS_WITH_CAVEAT (★ 회장 verbatim 표현 강제 인정)",

  "linked_markers": [
    "memory/events/task-2705+1.task-md-sha-decision.json",
    "memory/reports/task-2705+1.md",
    "memory/events/task-2705plus1.pass-with-caveats-night-delegation-260529.json"
  ]
}
```

### 3.2 attribution marker 강제 시점

| 시점 | 박제 강제 | 작성 주체 | 비고 |
|------|----------|----------|------|
| dispatch 시 | `declared_actors` 작성 | ANU | task md `actor_role` 필드 또는 dispatch prompt |
| 작업 중 | evidence 누적 (선택) | 봇 | hook event 자동 박제 |
| finish-task 시 | `observed_actors` 1차 작성 | 봇 self | L1+L2 |
| ANU closeout 시 | `observed_actors` 보강 + `attribution_verified_level` | ANU | L3+L4 검증 |
| HOLD 시 | `attribution_caveat` 박제 | ANU | L5 trace 부재 명시 |

### 3.3 attribution marker 외부 contract layer 원칙

**doctrine** (★ P1-B finish-task profile contract 와 동일 원칙):
- finish-task.sh 수정 0
- 봇 self-attestation 수정 0
- ANU collector 측에서 외부 박제 + 회장 보고 시 caveat 명시

**이유**:
- finish-task.sh = production critical · 수정 위험 큼
- 봇 self-attestation = L1 한계 변경 불가 (★ 본질적 한계)
- 외부 contract layer 만이 안전한 진화 경로

---

## 4. "직접 코딩 0" 단정 금지 — 표현 강제 doctrine (★ 회장 verbatim)

### 4.1 회장 verbatim 표현 강제 박제

회장 verbatim (task-2703 / task-2704 / task-2705+1 보고서 박제됨):
> "Hermes 는 주요 feature 구현자가 아니라 통합·조정자, Vulcan 은 주요 구현, Maat 는 검증.
> Hermes 소규모 직접 패치 가능성은 self-attestation 만으로 완전 배제 불가."

**ANU 정합 해석**:
- "Hermes 직접 코딩 0" / "fallback 0" / "수정 0" 류 negative absolute 단정 **금지**
- 대신 "직접 패치 가능성 명시 박제 + 별도 검증 세션 요청" verbatim 표현 강제

### 4.2 FORBIDDEN 표현 list (★ ANU 보고 시 사용 금지)

| 금지 표현 | 사유 | 대체 표현 |
|-----------|------|----------|
| "Hermes 직접 코딩 0 완료" | L1 self-attestation 단독 단정 | "Hermes 직접 코딩 0 self-attestation 박제 · L5 trace 부재 caveat" |
| "fallback 0건 확인" | L4 runtime event 미확인 시 | "fallback 0건 self-report · schedule_history 교차검증 권고" |
| "수정 0 검증 완료" | L4+ 미확인 시 | "수정 0 report 박제 · git diff 교차검증 권고" |
| "ANU 본체 직접 구현 0" | (★ 본 표현 ANU 자신은 verifiable — tool call trace 자체 검증 가능) | (★ 본 표현은 허용 — ANU 가 자신의 tool call 직접 검증) |
| "task-2706 자동 발의 0" | (★ ANU 자신 tool call) | (★ 허용) |
| "Vulcan / Maat 분리 위임 완료" | fallback 시 실패 가능 | "Vulcan / Maat 분리 위임 시도 · fallback 시 Hermes 직접 패치로 폴백" |

### 4.3 ALLOWED 표현 list (★ ANU 보고 시 사용 권장)

| 허용 표현 | 근거 | level |
|----------|------|-------|
| "Hermes 직접 패치 가능성 명시 박제" | 회장 verbatim | L1 자가신고 caveat 인정 |
| "Hermes 직접 패치 1건 self-report + L4 schedule_history 교차검증" | L4 evidence 확보 | L4 |
| "Maat 횡단 검증 세션 별도 요청" | 회장 verbatim future_resolution | 후속 action |
| "직접 코딩 self-attestation = 자가신고이며 L5 trace 부재 caveat" | L1 한계 명시 | 정직한 표현 |
| "git commit trailer 검증 N/A (fallback 비-git workspace)" | L3 evidence 부재 사유 | 정직한 표현 |
| "tool call trace 보존 = ~/.claude/projects/<workspace>/<session_id>.jsonl" | L5 evidence 위치 | reference |

### 4.4 표현 강제 doctrine 의 핵심 원칙

1. **negative absolute 단정 금지**: "X 가 Y 안 했다" 류 부정 단정은 L4+ 필수
2. **caveat 명시 강제**: L1 단독 시 "self-attestation 박제 + 독립 검증 권고" 명시
3. **role overlap 인정**: 한 actor 가 declared role 외 추가 role 수행 시 verbatim 표현 강제 박제
4. **verifiable 표현 우선**: ANU 자신의 tool call · git history · marker JSON · transcript 인용 우선

---

## 5. Hermes / Vulcan / Maat 역할 보고 템플릿 (★ 회장 verbatim)

### 5.1 Hermes (lead_integrator) 보고 템플릿

```markdown
## Hermes 역할 보고

### declared
- 선언 role: lead_integrator
- 선언 시점: <dispatch timestamp>
- 모델: claude-opus-4-7

### observed roles (★ L4+ verified)
- lead_integrator (★ 주 role · declared 일치)
  - L2 evidence: report.md §<번호> verbatim
  - L4 evidence: schedule_history <session_id>.log spawn signature
- implementer (★ 추가 role · 단, fallback 시 한정)
  - L1 self-attestation: "fallback session 에서 직접 패치 N건 수행"
  - L4 evidence: 동일 schedule_history workspace + dispatch_marker
  - L5 evidence: ★ tool_call_trace 부재 시 caveat 명시

### caveat
- ★ "Hermes 직접 코딩 0" 단정 금지 (★ 회장 verbatim 표현 강제)
- 직접 패치 가능성 명시 박제 + Maat 횡단 검증 세션 권고
- task-2705+1 case: fallback workspace 비-git → Vulcan/Maat 분리 위임 불가 사유
```

### 5.2 Vulcan (implementer) 보고 템플릿

```markdown
## Vulcan 역할 보고

### declared
- 선언 role: implementer
- 선언 시점: <dispatch timestamp>
- 모델: claude-sonnet-4-6

### observed roles (★ L3+ verified)
- implementer (★ 주 role)
  - L2 evidence: report.md §<번호>
  - L3 evidence: git commit trailer "Implemented-By: Vulcan"
  - L4 evidence: hook event spawn signature
  - L5 evidence: tool_call_trace JSONL session

### deliverables (★ L4 강제)
- 코드 파일: <list> (git log --grep='Vulcan' 교차검증)
- 테스트 파일: <list>
- 마이그레이션: <list 또는 N/A>

### caveat
- (★ Vulcan 분리 위임 실패 시 Hermes 폴백 한정 명시)
```

### 5.3 Maat (verifier) 보고 템플릿

```markdown
## Maat 역할 보고

### declared
- 선언 role: verifier (★ 횡단 검증 · 별도 session)
- 선언 시점: <verification dispatch timestamp>
- 모델: claude-sonnet-4-6 (횡단 조직 분리)

### observed roles
- verifier (★ 독립 재검증)
  - L4 evidence: 별도 session_id (executor 와 분리)
  - L5 evidence: tool_call_trace 독립 transcript
  - 검증 범위: DoD 항목별 PASS/FAIL + 회귀 측정 + dispatch self-validation 마커

### verification matrix (★ L4 강제)
- DoD #1: PASS / FAIL + evidence
- DoD #2: PASS / FAIL + evidence
- ...

### caveat
- ★ Maat 횡단 검증 세션 부재 시 "self-attestation 만" 분류 강제
- 본 보고가 self-verification 인 경우 verifier role 인정 0 (★ 회장 verbatim doctrine 정합)
```

---

## 6. task-2703 / 2704 / 2705 incident 연결

### 6.1 task-2703 V3.6 Runtime Harness MVP

**actor attribution 사고 패턴**:
- declared: Hermes (lead_integrator)
- observed: Hermes (lead_integrator + implementer · 직접 구현 비율 0 아님)
- evidence_level achieved: L1 (self-attestation 만)
- caveat: "직접 구현 attribution 모호" — incident #8 박제

**P1-C 정합 처치**:
- attribution marker schema 적용 시 `attribution_verified_level: L1` + `attribution_caveat: L2+ verification 권고`
- ACCEPT_WITH_CONTROL_PLANE_GAPS 분류와 정합 (★ self-attestation 한계 인정)

### 6.2 task-2704 Control Plane P0 MVP

**actor attribution 사고 패턴**:
- declared: dev1 헤르메스 (lead_integrator)
- observed: Hermes (lead_integrator + implementer)
- evidence_level achieved: L2 (report marker 박제)
- caveat: "직접 코딩 0" 단정 verbatim 표현 강제 (★ 회장 직접 정정)

**P1-C 정합 처치**:
- 표현 강제 doctrine 적용 — "Hermes 직접 코딩 0" → "직접 패치 가능성 명시 박제 + 별도 검증 권고"
- ACCEPT_WITH_KNOWN_CAVEATS 분류와 정합

### 6.3 task-2705+1 Bootstrap Recovery

**actor attribution 사고 패턴** (★ 가장 명시적 박제):
- declared: dev1 헤르메스 (lead_integrator)
- observed: Hermes (lead_integrator + implementer · fallback workspace 비-git → Vulcan/Maat 분리 위임 불가)
- evidence_level achieved: L4 (schedule_history + report marker)
- L5 evidence: 부재 (★ caveat 1 명시)

**P1-C 정합 처치**:
- caveat 1 = attribution marker schema §3.1 의 정확한 적용 예시
- "L5 trace 부재 → Maat 횡단 검증 세션 권고" verbatim 표현 강제
- PASS_WITH_CAVEATS 분류와 정합 (★ 9/10 PASS + 2 caveat 박제)

### 6.4 incident map 갱신 후보

| incident # | 명칭 | task | attribution level | P1-C 처치 |
|-----------|------|------|------------------|----------|
| #8 (기존) | Hermes 직접 코딩 0 attribution 모호 | task-2703 | L1 only | marker schema · 표현 강제 |
| (신규) | task-2704 직접 코딩 표현 verbatim 강제 | task-2704 | L2 | ALLOWED/FORBIDDEN list |
| (신규) | task-2705+1 fallback workspace 비-git | task-2705+1 | L4 (L5 부재 caveat) | role overlap 인정 |
| (잠재) | Maat 횡단 검증 부재 일반화 | (전체) | self-verification 한계 | 별도 verifier session 권고 |

---

## 7. 향후 구현 마커 schema (★ 구현 아님 · 회장 결재 대기)

### 7.1 attribution marker 자동 생성 후보 hook 지점

(★ 본 §7 = 구현 아님 · 향후 설계 후보 박제)

| hook 지점 | 추가될 자동 박제 | actor | evidence_level |
|----------|----------------|------|---------------|
| dispatch.py 진입 | `declared_actors` block 자동 생성 | ANU | L4 (runtime) |
| 봇 spawn 시 | `observed_actors[].actor_id` 자동 박제 (session_id 기반) | 시스템 | L4 |
| finish-task 진입 | `observed_actors[].l1_self_attestation` block | 봇 self | L1 |
| ANU closeout | `observed_actors[].l2..l5` 보강 + `attribution_verified_level` | ANU | L2~L5 |
| HOLD 시 | `attribution_caveat` 강제 박제 | ANU | meta |

### 7.2 attribution marker 검증 규칙 후보

| 규칙 ID | 조건 | 분류 | action |
|--------|------|------|--------|
| ATTR-001 | L1 only + negative absolute claim | `ATTRIBUTION_UNVERIFIED` | caveat 강제 |
| ATTR-002 | declared role ≠ observed roles | `ROLE_OVERLAP_DETECTED` | 보고서 명시 |
| ATTR-003 | fallback workspace 비-git | `L3_TRAILER_UNAVAILABLE` | L4 우선 |
| ATTR-004 | self-verification only (verifier=executor) | `INDEPENDENT_VERIFICATION_MISSING` | 별도 session 권고 |
| ATTR-005 | L5 trace 부재 | `L5_TRACE_MISSING` | caveat 명시 |

### 7.3 ★ 후속 구현 task 후보 (★ 회장 결재 시에만 발의)

| 후보 task | 범위 | 위험도 | 회장 결재 트리거 |
|----------|------|--------|----------------|
| `task-2707+attribution_marker_writer` | attribution.json writer + dispatch.py 결선 | MEDIUM (dispatch.py 추가 수정) | 회장 명시 |
| `task-2708+attribution_evidence_collector` | L1~L5 evidence 자동 수집 helper | LOW (외부 collector) | 회장 명시 |
| `task-2709+attribution_caveat_enforcer` | ATTR-001~005 규칙 실시간 enforce | MEDIUM (보고 차단 가능성) | 회장 명시 |

**★ ANU 자동 task 발의 0 강제** (★ 회장 verbatim 야간 위임 12 금지 #6).

---

## 8. ANU 측 외부 contract layer 적용 정책

### 8.1 ANU 보고 시 attribution 박제 강제 5 항목

ANU 가 회장 보고 시 attribution 관련 항목 박제 강제:
1. **declared_actors**: dispatch 시 actor_role 명시 박제
2. **observed_actors**: closeout 시 실제 수행 role 박제 (overlap 인정)
3. **attribution_verified_level**: L1~L5 중 최대 achieved level 명시
4. **attribution_caveat**: L4 미만 시 caveat verbatim 박제
5. **표현 강제 준수**: §4 FORBIDDEN/ALLOWED list 정합 검증

### 8.2 ANU self-limitation acknowledgments

- ANU 는 chair-facing session collector 역할 → `verifier` role 0 (★ self-verification 한계)
- ANU 가 ANU 자신의 attribution 검증 = `INDEPENDENT_VERIFICATION_MISSING`
- L5 trace 검증은 transcript JSONL read 시 가능하나 read 자체는 actor verification 아님
- 진정한 verifier = 별도 횡단 조직 session (Maat Sonnet 또는 외부 reviewer)

### 8.3 향후 actor 분리 운영 전환 후보

(★ 본 §8.3 = 후보 박제 · 구현 아님)
- chair-facing ANU = `collector` + `lead_integrator (보조)` 만
- 신규 `chair-facing-verifier` session 분리 (★ Maat 역할)
- task md 검증 / report 검증 / attribution 검증 = chair-facing-verifier 단독 권한

---

## 9. 회장 결재 대기 항목 (★ 본 P1-C 설계 적용 시 결재 필요)

1. **attribution marker schema 코드화 결재** (구현 시 dispatch.py 추가 수정 필요)
2. **표현 강제 doctrine 보고 강제 적용 결재** (★ 의무화 시 ANU 보고 형식 변경)
3. **FORBIDDEN/ALLOWED 표현 list 확장 결재** (★ 추가 표현 박제 시)
4. **Maat 횡단 검증 session 운영 도입 결재** (★ 신규 verifier role 운영)
5. **chair-facing-verifier session 분리 결재** (★ ANU verifier 한계 해소)
6. **attribution_verified_level L4 미만 시 보고 차단 결재** (★ enforcer 활성화)
7. **incident map 갱신 결재** (★ task-2704 / task-2705+1 신규 incident 추가)
8. **후속 task-2707/2708/2709 발의 결재** (★ 자동 발의 0 유지)

---

## 10. 본 P1-C 설계 초안 자체 caveat

### 10.1 ANU self-attestation 한계 (★ 정직한 박제)

- 본 문서 = ANU chair-facing session 자체 작성
- ANU 의 actor_role = `collector` + `lead_integrator (보조)` — `verifier` 아님
- ★ 본 문서의 attribution 정합성 자체가 ANU self-attestation (L1) 한계
- 회장 결재 / 외부 verifier 검증 시에만 L4+ 인정

### 10.2 evidence_level 위계 검증 미완

- L1~L5 위계 = 회장 verbatim 정합 ANU 정의안
- 실제 운영 시 추가 level (예: L0=undeclared / L6=cryptographic signature) 필요 가능
- 운영 1~2 task 적용 후 회장 verbatim 정합 검증 권고

### 10.3 attribution marker writer 부재

- 본 문서 = schema 정의만
- 실제 writer (dispatch.py 결선 또는 외부 collector) 구현 0
- 본 schema 가 운영되려면 후속 task 회장 결재 필요

---

## 11. linked markers

- `memory/specs/v36_runtime_harness_control_plane.md` (P0 마스터)
- `memory/specs/v36_runtime_harness_state_machine.md` (state machine)
- `memory/specs/v36_task_md_sha_contract_design_draft_260528.md` (P1-A ACCEPTED)
- `memory/specs/v36_finish_task_profile_contract_design_draft_260529.md` (P1-B)
- `memory/events/task-2705plus1.pass-with-caveats-night-delegation-260529.json` (P1-A production verified)
- `memory/reports/task-2705+1.md` (Hermes 직접 패치 caveat verbatim 박제)
- `memory/reports/task-2704.md` (task-2704 ACCEPT_WITH_KNOWN_CAVEATS · 직접 코딩 표현 강제)
- `memory/reports/task-2703.md` (task-2703 ACCEPT_WITH_CONTROL_PLANE_GAPS · incident #8 박제)
- `memory/reports/meta_infra_phase1_closeout_260528.md` (META_INFRA Phase1 종결)

---

**문서 끝**.

**ANU mutating action count**: 0
**ANU forbidden action count**: 0
**자동 발의 0**: 본 P1-C 설계 초안 작성 후 회장 결재 없이 추가 task 발의 0 (★ 회장 verbatim 야간 위임 12 금지 #6 준수)
