# 주간 회고 실행 보고 — 2026-W34 (8/17~8/23)

작성: 라(Ra) / 개발8팀 · 실행시각 2026-08-24 09:00 (서버시각 확인됨)
대상 스크립트: `/home/jay/workspace/scripts/weekly-retro.py` (→ `scripts/weekly_retro.py`, 447줄)

## S — 상황
정기 주간 회고 cron 실행 요청. 스크립트는 정상 동작(exit 0)했으나,
**기본 실행 결과가 빈 리포트**였고 원인 추적 과정에서 계측 결함 3건을 확인함.

## C — 복잡성
`weekly-retro.py`는 인자 없이 실행하면 `get_current_week()` = **현재 주**를 분석한다.
cron은 매주 월요일 09:00에 발사되므로, 분석 대상 주는 **방금 시작한 주**다.
즉 구조적으로 항상 "월요일 0시~9시" 9시간치만 집계된다.

### 실증
| 구분 | week-2026-34 스냅샷 | 총 작업 수 |
|---|---|---|
| 기존(8/17 09:01 생성, 주 시작일) | dev2-team 1건뿐 | **1건** |
| 금일 재생성(주 종료 후) | 7개 팀 | **38건** |

→ 기존 스냅샷은 실제의 **1/38로 과소계상**. 그 위에서 돌아간 이상치 탐지가
`생산성 급감: dev2-team (12건 → 1건, 91.7% 감소)` 라는 **허위 경보**를 냈다.
실제 dev2-team은 11건으로 정상 가동 중이었다.

## Q — 확인된 결함 3건

### 결함 1 — cron 타이밍 ↔ 분석 대상 주 불일치 (P1)
증상: 매주 스냅샷이 day-1 데이터로 고정. 과거 week-14/26/28/31 = 385바이트(빈 teams)도 동일 원인으로 보임.
조치안: cron 프롬프트에 `--week` 로 **직전 주**를 지정하거나, `main()`에서 인자 없을 때 기본값을 `get_prev_week(get_current_week())`로 변경.
비고: 8/17 09:01에 week-33과 week-34가 동시 생성된 이력이 있음 → 과거에도 누군가 같은 문제를 인지하고 수동으로 직전 주를 돌린 정황.

### 결함 2 — `commits.total`이 전 주차 0 (P2, 스크립트 버그 아님)
전수 확인 결과 **모든** 스냅샷에서 `commits.total = 0`.
`fetch_git_log()`는 정상 동작하며, 원인은 대상 저장소에 있다:
워크스페이스 루트 repo의 **최종 커밋이 2026-07-05(`244e0d9c`)** 로, 7월 초 이후 휴면.
실제 사업 코드(InsuRo/InsuWiki)는 **별개 외부 repo**라 이 git 트리에 잡히지 않는다.

파급: `fix_pct`가 항상 0.0 → `detect_anomalies()`의 `fix_pct > 30%` 분기는
**구조적으로 발화 불가능한 죽은 코드**. 품질 지표가 계측되지 않고 있다.

### 결함 3 — 트렌드 지표의 이상치 취약성 (P2)
`compute_trend()`는 "팀 평균들의 평균"을 쓴다. 단일 이상치에 지표 부호가 뒤집힌다.

- W33 팀별 평균(분): `[62, 50, 79, 40, 1881]` → 평균 422.4분
- W34 팀별 평균(분): `[119, 25, 146, 63, 36, 290, 41]` → 평균 103.1분
- 보고된 변화율: **-75.6%**
- W33의 dev5-team 단일 **31시간(1881분)** 건 제외 시: **+78.5%** ← **부호 반전**

해당 31시간 건은 실제 작업이라기보다 **task-timer end 누락**일 개연성이 높다.
권고: 평균 대신 중앙값 사용, 또는 팀 가중 평균 + 이상치 상한 클리핑.

## A — 실제 W34 성과 (재생성 기준, 총 38건)

| 팀 | 작업 수 | 평균 소요 | deep / medium / micro |
|---|---|---|---|
| dev2-team | 11 | 119.1분 | 11 / 0 / 0 |
| dev3-team | 9 | 146.5분 | 7 / 2 / 0 |
| dev1-team | 5 | 63.4분 | 4 / 1 / 0 |
| dev5-team | 5 | 36.1분 | 3 / 2 / 0 |
| unknown | 4 | 25.3분 | 1 / 1 / 2 |
| dev4-team | 3 | 41.4분 | 3 / 0 / 0 |
| dev7-team | 1 | 290.1분 | 1 / 0 / 0 |

관찰:
- **deep 세션 비중 30/38 (78.9%)** — 파편화 없이 몰입 작업이 주류. 건강한 패턴.
- **dev8-team 0건** — 본 팀 W34 계상 실적 없음. dev6는 기존 방침대로 사용중지 상태.
- **`unknown` 4건** — `team_id` 미기입으로 귀속 실패. 이상치 경보
  `생산성 급감: unknown (10건 → 4건)`은 미귀속 버킷끼리의 비교라 **신호 가치 없음**.
  team_id 주입 지점 점검 필요.

## 수정 파일별 검증 상태

| 파일 | 변경 | 상태 |
|---|---|---|
| `/home/jay/workspace/memory/whisper/retro-snapshots/week-2026-34.json` | 재생성(1건→38건) | verified |
| `/home/jay/workspace/memory/whisper/retro-snapshots/week-2026-35.json` | 생성(현재 주, 빈 값 정상) | verified |
| `/tmp/week-2026-34.stale.bak.json` | 기존 스냅샷 백업 | verified |
| `/home/jay/workspace/scripts/weekly_retro.py` | **무변경** (코드 수정 없음) | verified |

## 레벨: 코드 수정 없음
본 작업은 스크립트 실행 및 산출물 검증 전용. 소스 코드 변경 0줄.
결함 1~3의 코드 수정은 회장님 승인 후 별도 위임 예정(GLM 팀원 구현 원칙 준수).

## 회장님 판단 요청 2건
1. **결함 1 수정 방식** — cron 프롬프트에 `--week` 추가(무침습) vs `main()` 기본값 변경(근본).
2. **결함 2 대응 범위** — 커밋 분석 대상을 외부 repo(InsuRo/InsuWiki)까지 확장할지,
   아니면 `fix_pct` 지표 자체를 폐기할지.
