# task-2992 — 인슈위키 임베딩 작업 원격 반영 + PR 생성 (t2989 결과 master 반영)

**레벨**: Lv.2 · **팀**: dev4-team (비슈누) · **회장 승인 완료** (2026-08-20)

## 배경
task-2989 로 인슈위키 벡터 검색을 복구했다(ANU 독립검증 통과 — 303건 전건 네이티브 Vector,
자체 질의 6종 전부 HITS>0). 그런데 **결과물이 로컬 브랜치에만 있고 원격에 없다.**
원격 브랜치가 없으니 PR 도 없고, 따라서 `master` 에 반영될 경로 자체가 없다.

즉 **오늘 고친 것이 코드베이스에 남지 않은 상태**다. 이걸 정리한다.

## ANU 실측 (착수 전 재확인하라)
```
저장소      : /home/jay/projects/insuwiki
master      : d5859a9  (origin/master 와 동일 — 뒤처짐 없음)
작업 브랜치 : task/task-2989-dev4
  worktree  : /home/jay/.worktrees/task-2989-dev4
  base      : d5859a9  ← master 에서 직접 분기
  커밋 수   : 6
  task-2980 커밋 포함: 0건  ← t2980(머지 HOLD)과 완전 독립
  HEAD 트리 추적 .pyc: 0건  ← 위생 조치 완료
원격에 task/task-2989-dev4 없음
```

**중요**: t2989 는 t2980 과 독립이므로, **t2980 의 HOLD 를 기다리지 않고 단독으로 올릴 수 있다.**

## 커밋 내역 (6건)
```
ca5e418  임베딩 생성을 아누 로컬 서비스(768차원)로 전환 + fail-closed 검증
fb12a9f  crawlYoutubeChannels 임베딩 생성 중단 (3072차원 오염원 차단)
8146014  .gitignore 에 __pycache__/*.pyc 추가 + 추적 중이던 .pyc 36개 untrack
dbcffeb  임베딩 3072→768 전량 재색인 스크립트 (dry-run 기본, 체크포인트 재개)
1da8239  Firestore 임베딩을 네이티브 Vector 타입으로 저장 (find_nearest hits=0 근본원인 수정)
aeb1687  벡터를 네이티브 Vector 타입으로 쓰도록 수정 + 타입 검증/테스트/체크포인트 자동 무효화
```

## 요구사항
1. **원격 브랜치 생성 후 PR 을 연다.**
   - ★ 이 환경의 v3.6 하네스는 `git push` **리터럴을 명령 어디서든 차단**한다(grep 검색어·heredoc 본문까지).
     막히면 **`gh api` Git Data API** 로 우회하라. 파일 생성은 Write 툴을 쓴다.
   - 반영 검증은 커밋 sha 가 아니라 **tree sha 대조**로 한다(커밋 sha 불일치는 정상).
   - "push 가 차단됐다"고 자기보고하기 전에 **`gh api git/refs` 로 실제 원격 상태를 확인**하라.
     차단 보고와 실제가 다른 사례가 반복됐다.
2. **PR 본문에 다음을 명시**한다:
   - 무엇이 고쳐졌는가 — 벡터 검색이 한 번도 작동하지 않았고(차원 3072 vs 인덱스 768, 그리고 네이티브 Vector 타입 미사용), 이제 hits>0 이 실증됨
   - ANU 독립검증 결과 — 303건 전건 네이티브 Vector, 자체 질의 6종 전부 HITS=3
   - 임베딩이 외부 API 키 없이 동작함(로컬 모델 768차원, 오프라인 모드 강제)
3. **시크릿 재확인** — HEAD 트리에 `.pyc` 0건인 것을 다시 확인하고 증거를 남긴다.
   `.py` grep 만으로 끝내지 말고 **컴파일·빌드 산출물까지** 훑는다.
   과거 커밋에 남은 값은 회장 결정에 따라 **회전하지 않는다**(private 저장소·협업자 1명·포크 0 실측).
   이 판단 근거를 PR 본문에 한 줄로 남겨 나중에 오해가 없게 하라.
4. **task-2980 HOLD 재평가** — t2980 의 머지 차단 사유였던 "`.pyc` 평문 시크릿"이 t2989 의 위생 조치로
   해소되는지 판단하고 **결론만 보고**하라. t2980 을 이 태스크에서 머지하거나 수정하지 말 것.

## 범위 · 금지
**허용**: `task/task-2989-dev4` 브랜치의 원격 반영 · PR 생성 · `memory/reports/task-2992.md`

**금지**:
- **코드 변경 일체.** 이 태스크는 이미 검증된 커밋을 원격에 올리고 PR 을 여는 것이 전부다.
  내용을 고쳐야 한다고 판단되면 멈추고 ANU 에 보고하라.
- `task/task-2980-dev1` 브랜치 조작
- 과거 커밋 히스토리 재작성(BFG/filter-repo) — 회장이 불필요로 결정했다
- 키 회전 — 별건이며 현재 불필요로 결정됐다

## allowed_resources (본 task의 capability)

```yaml
allowed_resources:
  paths:
    - "memory/reports/task-2992.md"
  forbidden_paths:
    - "scripts/**"
    - "functions/**"
    - "nextapp/**"
    - ".github/**"
  commands:
    - "git"
    - "gh"
  merge_policy: "tiered"
  ttl_hours: 48
```

> 코드 변경이 없는 태스크다. 저장소 파일을 수정하면 범위 위반이다.

## 운영 계약
- 대상 저장소가 workspace 밖(`/home/jay/projects/insuwiki`)이므로 `TASKCTL_CWD` 를 사용한다.
- 워크플로우 `/home/jay/workspace/prompts/DIRECT-WORKFLOW.md` · QC `/home/jay/workspace/teams/shared/QC-RULES.md`
- `WORKSPACE_ROOT=/home/jay/workspace` · `CHAT_ID=6937032012` · 수집자 key `ANU_KEY=c119085addb0f8b7`
- 완료 경로는 `finish-task.sh` 실행이 유일하다. 수동 `.done` 금지.

## 완료 조건
원격 브랜치 존재(`gh api git/refs` 실증) · PR 생성 · tree sha 대조 일치 · `.pyc` 0건 증거 · t2980 HOLD 재평가 결론

## 보고
**PR 생성까지가 범위다. 머지는 ANU 가 한다. 직접 머지하지 말 것.**
`memory/reports/task-2992.md` 작성 후 표준 완료 콜백 등록. 콜백 프롬프트 **UTF-8 3900 bytes 이하**.