# Implementation Report: 60 · 연혁 + 폐기 정본 — 마일스톤 1

**Plan**: `.claude/plans/insuniverse-docs-60-history-deprecated-m1.plan.md`
**Branch**: `60-history-deprecated` · **Base**: `b674f52` (== `origin/main`)
**Notes (구현 단계 리뷰 정본)**: `.claude/notes/insuniverse-docs-60-history-deprecated-m1.md`

## Summary

`13-relation-contract` 가 남긴 회부 2건(R-4 폐기 문서 프론트매터 · R-8 등급 O 기록 자리)을 수용하고,
문서 7종을 `.claude/meta/05-final-spec.md` §4 트리와 `docs/00-index.md` 사본 양쪽에 반영한 뒤
`verify.sh --update` 로 golden 을 재동결했다. 실 문서는 만들지 않았다 — M1 이 세운 것은 자리와
계약이고 값은 M2~M6 소관이다.

`verify.sh` 의 절 범위가 `ownership.md` §개정 위임 · §회부 인계 를 읽지 않고(G6·G7) `verify.sh`
편집이 위임 사유 밖이라(G12), 그 축은 계획서 전용 하네스
`.claude/plans/insuniverse-docs-60-history-deprecated-m1.gates.mjs` (1,095행, Node 표준 모듈만 —
INV1)가 진다.

## Assessment vs Reality

| Metric | Predicted (Plan) | Actual |
|---|---|---|
| Complexity | Medium | Medium — 문서 편집은 작고 하네스가 대부분 |
| Files Changed | 8 (§Files to Change) | 8 + mccp 워크플로 산출물 3 (INV3 대상 밖) |
| 검사 수 | `#1`~`#11` (하네스 10 + 셸 `#8`) | 동일. `check-all` 집계는 `#12` 로 별도 표기 |
| Codex 라운드 | plan 4 (dedupe 적용) | plan 4 + **post-EXECUTE 1** (하네스 산출 후 재호출) |

## Tasks Completed

| # | Task | Status | Notes |
|---|---|---|---|
| 0 | 서브모듈 상태 확인 · 하네스 · 기준선 커밋 | [done] | 서브모듈 3종 초기화·SHA 일치·porcelain 공집합 셋 다 참이라 `update --init` 건너뜀(INV2). 기준선 커밋 `34baeab` 은 하네스 한 경로만 담는다 |
| 1 | `ownership.md` §개정 위임 5행 · 재검토 문단 | [done] | 6열 스키마 · `없으면` 열 미탑재 · 도입부에 G15 재검토 결과(승격 보류 + 사유) 기록 |
| 2 | 트리 2행 (정본 + 사본 한 창) | [done] | 정본 §4 에 2행 삽입 후 그 펜스 본문을 사본에 **복사**. 68행 → 70행 |
| 3 | §회부 인계 R-4 · R-8 수용 표기 | [done] | R-4 는 발신 계약/수용 형태 분리(G23), R-8 은 `자리 확정`(문서는 M6). 절 도입부에 `수용 시점` 열 규약 1문장 추가 |
| 4 | R-4 4필드 계약을 하네스로 고정 | [done] | `check5`(수용: 양성 1 · 음성 2) · `check10`(강제: fixture 정상 1 · 변이 6 · id 소멸 축) |
| 5 | golden 이동 편집 집약 + `--update` 로 닫기 | [done] | findings 개설 → backlog 이월 → `--update` → 변동 키 정확 대조 → `--check` → PRD 갱신 → `check-all` |

## Validation Results

이 저장소에는 별도 테스트 프레임워크·`package.json` 이 없다. 검증 수단은 게이트 스크립트다
(계획서 §Patterns to Mirror `Tests` 행).

| Level | 대응 | Status |
|---|---|---|
| Static Analysis | `lint-docs.mjs` (verify.sh 내부 lint 게이트) · `bash -n` (Validation 블록 추출본) | [done] Pass |
| Unit Tests | 하네스 검사 10종 + fixture 음성 케이스 (`check5` 2 · `check10` 6) | [done] Pass |
| Build | 해당 없음 (문서 저장소) | N/A |
| Integration | `bash docs/_meta/verify/verify.sh --check --bootstrap` rc 0 · `--selftest` rc 0 | [done] Pass |
| Edge Cases | 계획서 §Validation 블록 원문 실행 (`set -euo pipefail`, `#8` 양성/음성 포함) rc 0 | [done] Pass |

최종 실행 출력:

```
#1  ok  00-index·ownership 게이트 통과 · fixtask 트리 행 raw 대조 70행 == 정본 §4 펜스 70행
#2  ok  PRD 7 == 정본 7 == 사본 7
#3  ok  위임 표 13행 · 60 앞 5행 · 6열 · 경로 집합 일치 · 사유 셀 일치 (기준선 34baeab)
#4  ok  회부 8행 · 기록 2행(R-4 R-8) · 미기록 6행 · #·수신 열 정본 일치 · R-4 발신/수용 분리 · R-8 자리확정 문면
#5  ok  4필드 양성 위반 0 · rename rc1 · superseded_by rc1
#6  ok  실 파일 0건 ⊆ 트리 7 · deferred_ref_targets 2원소 불변 · 전이 A=rc0 · 전이 B=rc1
#7  note backlog 파일은 편집됐는데 투영 집합은 불변이다 — 이월분이 cohort 동결 밖이다
#7  ok  기준선 34baeab · 변동 6키 == 기대 6키 (backlog 투영 불변 → 구조 6키만)
#9  ok  M1 status=complete plan=<계획서 경로> (실재)
#10 ok  fixture 정상 2 통과 · 변이 4 거부 · 추가 변이 2 거부 · 실 대상 0파일 0건 검사 · 발행 id 기준선 0 ⊆ 현재 0
#11 ok  M2 행이 check10 인수 조건을 담는다 · 하네스 경로 실재
#12 ok  check-all 10/10 통과 · verify.sh --check --bootstrap rc 0 (#8 은 계획서 셸 블록 소관)
```

### Design Grounding

N/A (no design trigger). `impeccable-detect --mode implement` 가 `design_signal=false`
`silent_skip=true` (`reason=no-signal`) — 렌더링 표면이 없다. Phase 2.5.5c 캡처 미발생이라
Phase 3.6 · 3.7 은 no-op 이고 receipt 에 `impeccable_silent_skip` 을 forward 했다.

### Design Finish

해당 없음 — 3.6.1 트리거 미충족.

## Files Changed

| File | Action | Lines |
|---|---|---|
| `.claude/plans/insuniverse-docs-60-history-deprecated-m1.gates.mjs` | CREATED | +1095 |
| `docs/_meta/findings/60-history-deprecated.md` | CREATED | +110 |
| `docs/_meta/ownership.md` | UPDATED | +26 / -4 |
| `.claude/meta/05-final-spec.md` | UPDATED | +2 |
| `docs/00-index.md` | UPDATED | +2 |
| `.claude/plans/codex-findings-backlog.md` | UPDATED | +15 |
| `docs/_meta/verify/golden.txt` | UPDATED | +6 / -6 |
| `.claude/prds/insuniverse-docs-60-history-deprecated.prd.md` | UPDATED | +6 / -5 |

표 밖 3건은 mccp 워크플로 산출물이다 — `.claude/plans/…m1.plan.md` ·
`.claude/reviews/plan-review-…md` · `.claude/notes/…m1.md`. INV3 이 PRD §배타 소유 경로의
대상에서 뺀 부류이며 `origin/main` 선례 77건이 있다.

## Deviations from Plan

계획서 본문은 `plan_hash` 로 plan-codex receipt 에 결박돼 있어 고치지 않았다. 이탈 4건의 WHAT·WHY 는
notes §이 창의 계획서 이탈에 표로 있다. 요약:

1. **`#7` 의 cohort 조건** — 계획서의 `git diff --name-only` 대리 변수가 실측에서 틀렸다. cohort 키의
   실제 입력은 평문 행 파서라, 표 형식 이월분은 파일이 편집돼도 투영을 움직이지 않는다. 조건을
   투영 변화로 바꾸고 발산은 `note` 로 드러낸다.
2. **기준선 커밋 앞에 선행 커밋 1건** — `#3` 이 기준선 커밋의 PRD blob 에서 위임 표를 유도하는데
   착수 시점 PRD 가 미커밋(문서 6종판)이었다. 기준선 커밋 자체는 계획서대로 하네스 한 경로만 담는다.
3. **`treePaths` 가 여러 조각 디렉터리 행을 받는다** — PRD §Scope 펜스 형태. 상류 트리 판정 불변.
4. **`check-all` 집계 표제가 `#12`** — `#8` 은 하네스 자신의 프로브라 하네스 안에서 못 돈다.
   소관을 출력에 명시해 미실행분을 통과로 세지 않게 했다.

**`plan-conflict-detector.js` 의 `conflict:true` 는 기각했다.** 그 15건 "unplanned" 에 §Files to
Change **1행**인 `…-m1.gates.mjs` 가 들어 있다 — 표를 한 행도 매칭하지 못하고 diff 전건을 센 것이다
(상류 결함). 손 대조는 표 8행 전건 변경 · 표 밖 3건(전부 INV3 대상 밖)이다.

## Issues Encountered

| # | 문제 | 해소 |
|---|---|---|
| 1 | evidence-claim 이 `/clear` 이전 세션(같은 OS 프로세스, session `c53fb906`)에 잡혀 receipt write 가 exit 1 | 홀더 세션이 죽었고 PID 가 이 프로세스라 TTL 이 만료될 수 없다. 문서화된 비파괴 경로 `MCCP_EVIDENCE_CONFLICT_GUARD=warn` 사용 — 클레임 파일은 지우지 않았다 |
| 2 | `check-all` 이 `9/10` — 자식 프로세스가 시작 시 `TMPROOT` 를 통째로 비워 부모의 stderr 파일을 지웠다 | 실행마다 런 루트 + 자기 것만 삭제 (Codex F6 이 같은 자리를 더 넓게 지적해 함께 흡수) |
| 3 | 스크래치 복제본이 CRLF (`core.autocrlf=true`) 라 문면 치환이 무동작 | 모든 판독을 `norm()` 으로 LF 정규화. 무동작 치환은 실패로 받는다(`patch()`) |
| 4 | Codex 리뷰 1라운드에서 하네스 결함 6건 (HIGH 3 · MEDIUM 3) | 전건 흡수 + 건별 반사실 검증. notes §Post-EXECUTE Codex Review |

## Tests Written

| Test | 건수 | 커버 |
|---|---|---|
| `check5` 음성 fixture | 2 | id rename · `superseded_by` 역방향 필드 |
| `check10` fixture | 1 정상 + 6 변이 | `at`·`sha` 결손/형식 · `reason` 빈 값 · 불가능 날짜 |
| `check6` 전이 프로브 | 2 | A(대상 존재 + 유예 제거)=rc0 · B(스테이징 재현 + 유예 제거)=rc1 |
| 흡수 반사실 프로브 | 6 | Codex F1~F6 각각 수정 전/후 결과 반전 확인 |

## 잔여 (숨기지 않는다)

| 잔여 | 상태 | 기록처 |
|---|---|---|
| findings 파일의 **내용 동일성**(G16·G17)을 보는 검사가 없다 — `verify.sh` 는 표제 수와 6항목 구조만 본다. 계획서 Acceptance 가 그 항목을 `(미검증)` 으로 적지 않은 것이 실제 결함 | 이월 | backlog `id=27024676-adj` · 인수처 이 PRD 의 M2 |
| 이 창의 backlog 이월분이 `fixtask.cohort_*` 동결 밖이다 — 표 형식 행은 `parseBacklogRow` 에 안 보인다. 나중에 지워도 어떤 게이트도 안 붉어진다 | 이월 | backlog `id=60m1-cohort-blind` · `#7 note` 로 상시 노출 |
| `#3`·`#7` 의 기준선 앵커가 변경 창 안에 있다 — CI·보호 ref 부재로 이력 재작성 우회 가능 | 구조적 미해소 | backlog `id=60m1-anchor` · 계획서 `(미검증)` Acceptance 2행 |
| R-4 4필드 강제가 `verify.sh` 상시 층이 아니라 계획서 하네스에 있다 | 설계 판정 | 계획서 §NOT Building · PRD §Open Questions · 검사 `#11` 이 M2 인수를 문면에 박음 |
| 유예 원소 해소 경로 둘이 모두 위임 밖 — 사용자 판정 필요 | 열린 질문 | PRD §Open Questions 최상단 (2026-08-24 개설, severity HIGH) |

## Next Steps

- [ ] `/mccp:pr` — `codex_verdict=divergent` 라 cross-gate dedupe 가 fail-closed 로 PR-Codex 를 실행한다 (의도한 상태)
- [ ] 사용자 판정: PRD §Open Questions 의 유예 원소 해소 경로 (a) `verify.sh` 스테이징 확장 (b) doc-kit 예시 참조 변경
