---
task_id: task-3032
scope: task
team: dev8
title: update-system-spec.py 정기 실행 (7회차)
date: 2026-08-27
result: success
---

# task-3032 — 시스템 스펙 문서 자동 갱신 (정기)

## 결론

정상 실행. **문서 변경은 `task_stats` 3줄뿐**이며, `AUTO:cron` 블록은 보존됐다.
exit code 1 은 알려진 `ANU_CHAT` 미설정 건으로 **데이터 손실 없음 = Critical 7 아님**.
제이회장님 알림 대상 아님.

## 실행

```
python3 /home/jay/workspace/scripts/update-system-spec.py
  [FAIL] cron: ANU_CHAT 환경변수가 설정되지 않았습니다.
  [OK] skills / services / projects / scripts / task_stats
  변경 감지: ['cron', 'task_stats']
  문서 업데이트 완료 · changelog 기록 완료
EXIT CODE: 1
```

## 검증 — 실행 전 스냅샷 대조 (전문 diff)

PRE-RUN 스냅샷: `memory/reports/task-3032-evidence/anu-system-spec.PRE-RUN.md`
(md5 `eadc58cc467c827196860e09162ca893`, 06:15:39 시점)

전문 diff **10줄, 단일 hunk**:

```diff
@@ -1165,10 +1165,10 @@  <!-- AUTO:task_stats:START -->
-| 총 작업 수 | 2273 |
-| 완료된 작업 | 2210 |
+| 총 작업 수 | 2274 |
+| 완료된 작업 | 2211 |
-| 평균 소요시간 | 1시간 10분 30초 |
+| 평균 소요시간 | 1시간 10분 29초 |
```

증가분 +1 은 **본 task-3032 자신**(06:15:39 타이머 start)이다. 자기참조.

## `[cron] 데이터 변경` — 7회 연속 거짓 양성 확정

| 항목 | 값 |
|---|---|
| cron 블록 md5 (마커 포함 구간) BEFORE | `af7090faa1da20f713b9f6e31ae7eb8c` |
| cron 블록 md5 AFTER | `af7090faa1da20f713b9f6e31ae7eb8c` |
| 판정 | **동일 실행 내 before == after → 보존됨** |
| 블록 `created_at` | `2026-04-16 11:16:10` (7회 모두 동결) |

changelog 의 `- [cron] cron 데이터 변경` 은 수집 실패(`new=None`) 가
`old != new` 로 계산된 결과일 뿐, 문서 갱신 루프는 `if section not in new_state:
continue` 로 건너뛴다. **로그만 찍히고 문서는 그대로.**
누적 `[cron]` 항목 253건.

재발 이력: t3015 · t3020 · t3022 · t3027 · t3030 · t3031 · **t3032** — 7회 연속.

## services — 변경 감지 목록에 없음 (2회 연속)

- 스펙 기재 **18개** = 실측 `systemctl --user list-units --state=running --type=service` **18개** 일치
- 플래핑 후보 3종(`at-spi-dbus-bus` · `dbus` · `gpg-agent`) **여전히 present**
- 3030(재등장) → 3031(유지) → 3032(유지) = 18개로 3회 연속

★ **판정 유지 — "안정화"로 승격하지 않는다.** 무변화 3회는 세션이 안 끊겼다는
것 이상을 증명하지 못한다. 지속 신호로 인정되는 건 여전히 `insuro-preview.service`
하나뿐이고, 왕복 3종은 플래핑 후보로 남긴다.

## 백업 스케줄러 — 12:00 결번 1회성 확정 (3회 연속 정상)

| 버킷 | mtime |
|---|---|
| 2026-08-26_06 | 06:00:17 |
| **2026-08-26_12** | **부재 (기지의 1회성 결번)** |
| 2026-08-26_18 | 18:00:25 |
| 2026-08-27_00 | 00:00:49 |
| 2026-08-27_06 | 06:00:38 |

08-26 18:00 이후 **3회 연속 정상 발화** → 러너 생존, 영구 고장 아님.
누락 버킷은 사후 임의 생성하지 않았다(의미 뒤집힘 방지). 대신 PRE-RUN `cp`
스냅샷을 증거로 남김.

⚠ 관측 — 초 오프셋이 `:1x` 규칙에서 `00:49` · `06:38` 로 **드리프트 중**.
결번은 아니나 다음 회차에서 계속 볼 것.

## 미해결 (ANU 몫, 범위 밖)

1. `ANU_CHAT`/`ANU_KEY` 크론 주입 — 또는 `detect_changes()` 가 수집 실패 섹션을
   변경으로 계산하지 않도록 수정. 둘 중 하나 없이는 8회차도 동일.
   ★ **dev8 봇 키로 대체 수집 금지** — `--cron-list` 는 key 스코프라
   부분집합으로 덮어써져 문서가 퇴행한다. 현재의 "실패 → 기존 블록 보존"이 더 안전.
2. `backup-spec.sh` 스케줄 소유자 확인 (타 키 소유 추정, 팀 봇 키로 조회 불가).
