# task-2705 — V3.6 Control Plane P1-A Task MD SHA Contract · HOLD_FOR_CHAIR 보고

- 작성: 2026-05-28 18:18 KST · dev1-team 헤르메스 (Hermes) fallback session (`91665D06`)
- 분류: **HOLD_FOR_CHAIR · ESCALATE_CHAIR sub-class · 코드 변경 0 · 회장 판단 요청**
- 상태: **`TASK_2705_HOLD_FOR_CHAIR_LAYER_0_BOOTSTRAP_INPUT_CONTRACT_UNTRUSTABLE_PLUS_DUP_SPAWN_OBSERVED`**
- chair_authorization_id: `CHAIR-AUTH-TASK-2705-V36-TASK-MD-SHA-CONTRACT-P1A-260528`
- ★ 본 보고서 = 완료 보고 0 · 진행 보고서 + 회장 결정 요청 packet

## ★ 회장 verbatim 보고 표현 강제 (★ task md §10 박제 보존)

> "Hermes는 주요 feature 구현자가 아니라 통합·조정자, Vulcan은 주요 구현, Maat는 검증. Hermes 소규모 직접 패치 가능성은 self-attestation만으로 완전 배제 불가."

## 1. 한 줄 결론

본 fallback session 은 **task md sha 불일치(layer 0 bootstrap input contract 신뢰 불가) + 외부 monitoring 의 DUPLICATE_SPAWN_DETECTED 박제** 라는 두 가지 critical signal 을 동시에 관측, 회장 verbatim 진행 규칙 #11·hold 분류 정책에 따라 **`HOLD_FOR_CHAIR` (ESCALATE_CHAIR sub-class)** 로 정지하고, **코드 0 / 산출물 = HOLD 마커·본 보고서 2건만** 남겼습니다. 회장 판단 대기.

## 2. 관측 사실 (★ 단정 가능)

### 2.1 task md sha 불일치 (★ critical · layer 0)

- **expected_sha (prompt verbatim + fallback marker `task_md_sha256`)**: `93bc5c33a5417e69f9a7c7fba92ce42492bb68d990023177b8094ed655ce625d`
- **actual_sha (sha256sum /home/jay/workspace/memory/tasks/task-2705.md @ 18:13:20 KST)**: `3e3b15e9d5d5889bbcc1aeadda966e71607f97090743f9b4dfc521e70dce6647`
- **byte_count**: 14,826 bytes / **mtime**: 17:59 KST (안정 · 본 session 변경 0)
- **content 의미 alignment (자연어 판단 · enum reason_code 부재)**: prompt 가 명시한 P1-A 한정 / 허용 10 / 금지 10 / 필수 포함 10 / chair_authorization_id 와 의미상 일치하나 **byte-level normalize tooling 부재로 자동 판정 불가** (★ task-2703 #5 enum reason_code 부재 사건 재발 회피 차 자연어 판단을 ALLOW 변환 금지)

### 2.2 dispatched marker 의 known defects (★ 본 task 가 fix 대상)

`memory/events/task-2705.dispatched-20260528.json` (17:59:53 auto-written by task-2704 dispatch_marker_writer):

- `task_md_sha_before`: `null` ← **본 P1-A 가 fill-in 해야 할 placeholder**
- `chair_authorization_id`: `CHAIR-AUTH-TASK-2704-V36-CONTROL-PLANE-P0-MVP-260528` ← task-2704 의 것 (본 task 정리 대상)

### 2.3 외부 monitoring 의 DUPLICATE_SPAWN_DETECTED (★ 18:15:30 KST)

`memory/events/task-2705.DUPLICATE_SPAWN_DETECTED-260528.json` (ANU chair-facing session 박제):

- 감지 시각: 18:15:21 KST / 박제: 18:15:30 KST
- 감지 봇 2건:
  - PID **640328** (start 18:12:50 / system_prompt `18b3afcc63f2f810` / **이 fallback session — Hermes**)
  - PID **646559** (start 18:15:01 / system_prompt `18b3afeafa5113fa` / **probable_source=UNCERTAIN**)
- bot_session_count_no_resume = 2 → 회장 verbatim #11 임계값 도달 → DUPLICATE_SPAWN_DETECTED 분류

### 2.4 본 session 의 후속 관측 (★ 18:17:37 KST)

- 잔존 claude (--resume 없는): **1건 (PID 640328 = 본 session 만)**
- PID 646559 → 약 17초 등시간 후 종료 (자연 종료 추정 · ★ 본 session 의 임의 kill 0)
- PID 646559 가 남긴 task-2705 산출물: **0건** (memory/events 에 새 파일 무 · race condition 피해 무)
- task-timers.json::tasks[task-2705]: `running` / start_time=17:58:13 / bot=bot-b (변경 0)

## 3. 분기 판단 (★ 회장 verbatim hold 분류 정책 적용)

| 분류 | 회장 verbatim 정의 | 본 case 적용 | 결과 |
|---|---|---|---|
| ESCALATE_CHAIR | semantic 변경 가능성 / forbidden patch 의심 / **executor 원문 계약 신뢰 불가** | ★ executor (=본 fallback session) 가 expected_sha 와 actual_sha 불일치 + normalize tooling 부재 + **layer 0 자체를 만드는 작업** 에서 입력 신뢰 불가 | ✅ **MATCH** |
| HOLD_LOCAL | 단순 측정 실패 | sha 측정 자체는 성공 (sha256sum exit=0) | ❌ NO |
| RETRYABLE_HOLD | 일시적 read error | read 성공 + mtime 안정 | ❌ NO |
| ALLOW (DISPATCH_META_SIDECAR 등) | normalize 후 byte-identical 확인 | normalize tooling 미존재 (★ 본 task 산출물 대상) | ❌ UNVERIFIABLE |

→ 최종 분류: **`HOLD_FOR_CHAIR` · sub-class `ESCALATE_CHAIR`**
→ **`continue_allowed = hold`** · **ANU 임의 ALLOW 변환 금지 조항 준수**

## 4. 본 session 이 수행한 작업 (★ 코드 0)

1. task md sha 측정 (read-only)
2. 5 신호 spawn 교차 검증 (read-only · process / worktree / schedule_history / event marker / timer)
3. DUPLICATE_SPAWN_DETECTED 마커 read (★ 본 session 박제 0 — ANU 외부 monitoring 이 박제)
4. 잔존 봇 재확인 (1건 = 본 session)
5. HOLD decision marker 박제 (`memory/events/task-2705.task-md-sha-decision.json`) — schema `v36.runtime_harness.decision.v1` 호환
6. 본 보고서 박제 (`memory/reports/task-2705.md`)
7. ANU normal callback cron 등록 예정 (★ 본 보고서 작성 직후)

★ **dispatch/__init__.py 수정 0 / scripts/harness/v36/dispatch_marker_writer.py 수정 0 / 신규 sha contract py 0 / tests/harness 신규 0 / fixture 0** — HOLD 으로 인해 구현 미시작.

## 5. 절대 금지 준수 confirm (★ task md 금지 범위 10 + prompt 절대 금지)

| 항목 | 본 session 수행 여부 |
|---|---|
| finish-task.sh 수정 | 0 ✓ |
| session-watchdog.sh 수정 | 0 ✓ |
| settings.json 수정 (양 path) | 0 ✓ |
| finish-task profile 구현 | 0 ✓ |
| actor attribution 구현 | 0 ✓ |
| Goal-to-Done / PHASE_AUTO / Core-Work | 0 ✓ |
| merge executor activation | 0 ✓ |
| PR / branch push / merge | 0 ✓ |
| task-2706 자동 발의 | 0 ✓ |
| ANU 본체 직접 구현 | 0 ✓ (★ Hermes 직접 코딩 0 self-attestation 단정 회피 — HOLD 사실은 marker/report 별도 검증 가능) |
| "Hermes 직접 코딩 0" 단정 | 0 ✓ (★ 회장 verbatim 보고 표현 강제 준수) |
| "설계 확정" 단정 | 0 ✓ (★ 산출물 0) |
| ANU 임의 ALLOW 변환 | 0 ✓ |
| 임의 kill/stop (PID 646559) | 0 ✓ |
| 자가 closeout PASS | 0 ✓ (★ finish-task.sh 호출 0) |

## 6. 회장 결정 옵션 (★ ANU 단정 0 · 회장 verbatim 만 진행 사유)

1. **OPT_A — RE_DISPATCH_WITH_CORRECT_SHA**
   - 회장 verbatim 재인증 + task md sha 정정 + 신규 schedule_id 발사
   - 단, `no_further_fallback_after_this=true` 조항 별도 해제 필요
2. **OPT_B — ACCEPT_OBSERVED_CONTENT_AND_AUTHORIZE_PROCEED**
   - 회장이 actual_sha (`3e3b15e9…`) 의 content 가 본인 의도와 verbatim 일치함을 확인
   - 본 session 재개 승인 또는 신규 session 으로 fallback 1회 추가 승인
   - **task-2704 precedent**: fallback executor 가 실측 sha 내용으로 작업 진행 후 회장 ACCEPT 한 패턴 존재
3. **OPT_C — DENY_AND_CLOSE**
   - task-2705 종결 + 별도 신규 task 로 재정의
4. **OPT_D — OTHER**
   - 회장 별도 지시

### duplicate spawn 후속 조치 (★ 별도 결정)

- 현재 잔존 봇 1건만 (본 session). PID 646559 은 자연 종료. **즉시 위협 0**.
- 향후 동일 task 에 대한 모든 fallback 등록 시 schedule_id 단일성 강제 + dispatch wrapper race condition 점검 (★ 별도 task 권장 · 본 P1-A 범위 밖)

## 7. 사후 actor attribution (★ #8 P1 backlog 범위 밖 — 본 보고서는 attribution claim 0)

본 보고서는 어느 actor 가 sha mismatch 를 유발했는지에 대한 단정을 포함하지 않음. 가능한 hypothesis (★ 단정 금지):

- 흐름 A: fallback 등록 시 expected_sha 산정 오류 (★ ANU chair-facing session 의 sha 산정 bug 가능성)
- 흐름 B: task md 가 fallback 등록 직전·직후 어떤 process 에 의해 자동 normalize (★ linter/watcher daemon)
- 흐름 C: 측정 시점 차이 (★ 단, mtime 17:59 안정 → 가능성 낮음)

→ 본 contract layer 0 가 완성되어야 위 흐름 분류 자동화 가능. 본 HOLD 결정의 정당성 = layer 0 부재 환경에서 자동 분기 불가.

## 8. 산출물 목록 (본 session)

- `memory/events/task-2705.task-md-sha-decision.json` — HOLD_FOR_CHAIR decision record (schema v36.runtime_harness.decision.v1)
- `memory/reports/task-2705.md` — 본 보고서

## 9. 모델 사용 기록 (★ DIRECT-WORKFLOW 강제)

- Hermes (Opus 4.7 1M) — 통합·조정·HOLD 판단·marker/report 작성 (★ 본 session 단독)
- Vulcan (Sonnet) 소환 0 — HOLD 으로 구현 미시작
- Maat (Sonnet 횡단) 소환 0 — HOLD 으로 검증 미시작
- haiku 사용 0
- **사유**: layer 0 contract 자체의 input 신뢰 불가 상태에서 implementation/verification 위임 시 잘못된 contract 가 codify 될 위험. Opus 단독 HOLD 판단이 토큰 효율 대비 위험 회피 측면에서 정당.

## 10. 종결 status

- **TASK STATUS**: `HOLD_FOR_CHAIR` (★ NOT completed · NOT done · NOT cancelled)
- **finish-task.sh 호출**: NO (★ HOLD ≠ 완료 — chair adjudication 후 별도 결정)
- **timer**: `running` (★ HOLD 동안 timer 보존 — chair 가 종결 시 finish-task.sh 호출)
- **ANU normal callback cron**: 본 보고서 직후 등록 (★ ANU_KEY=c119085addb0f8b7 / collector_role=ANU / envelope ≤3900B UTF-8)
- **session 종료**: 본 보고서 작성 + ANU callback 등록 + sendfile 전송 후

★ 회장 verbatim 2026-05-28 hold 분류 정책 + 진행 규칙 #11(DUPLICATE_SPAWN_DETECTED 임의 kill/stop 금지) 절대 준수. ANU 본체 직접 구현 0. task-2706 자동 발의 0.

끝

## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회

