# 시스템 스펙 자동 업데이트 (2026-08-12 12:15)

## 개요
- 스크립트: `python3 /home/jay/workspace/scripts/update-system-spec.py`
- 실행 시각: 2026-08-12 12:15 (server time)
- 종료 코드: **1** (원인: cron 섹션 `ANU_CHAT` 미설정 — 알려진 비파괴 상태, 회장 승인 대기 / 재조사 금지)
- 트리거: 예약 작업 (Telegram scheduled run)
- 원문 로그: `/tmp/uss_260812_1215.log`

## 수집 결과 (섹션별)
- `[FAIL]` cron — `ANU_CHAT 환경변수 미설정` (기존 알려진 이슈, escalation 대상 아님)
- `[OK]` skills
- `[OK]` services
- `[OK]` projects
- `[OK]` scripts
- `[OK]` task_stats

## 변경 감지 및 반영
스크립트 감지 결과: `['cron', 'services']`

- `memory/specs/anu-system-spec.md` 업데이트 완료
- `memory/specs/anu-system-spec-changelog.md` 기록 완료
- 백업 생성 확인: `memory/backups/system-spec/2026-08-12_12/`

### changelog 신규 엔트리
```
## [2026-08-12 12:15] 변경 내역
- [cron] `cron` 데이터 변경
- [services] `running_services` 삭제: `activity-watcher.service`
```

### 스펙 문서 diff (vs 마지막 커밋, 누적 반영분 포함)
`39 insertions / 11 deletions`

- **services**: 13개 → 12개. `activity-watcher.service` 이탈. (커밋 기준 누적: `at-spi-dbus-bus`/`dbus`/`gpg-agent` 제거, `github-runner`/`insuro-preview` 반영)
- **projects**: 7개 → 9개 (`InsuRo-worktrees`, `insuwiki-worktrees` 신규 반영)
- **scripts**: 142개 → 168개 (메타인프라 아크 산출물 26개 반영: `merge_group_evidence_auditor.py`, `merge_group_pr_resolver.py`, `escalation_marker.py`, `correction_budget.py`, `ci_watch_handoff_runner.py`, `gemini_cli_gate_check.py`, `pre_dispatch_divergence_guard.sh` 등)
- **cron**: 출력 스키마 `kind: "cron_list"` 필드 추가

## 부수 발견 (신규) — activity-watcher.service 크래시 루프

changelog에서 `activity-watcher.service`가 6시간 주기로 추가/삭제를 반복(플래핑)하는 패턴이 관측되어 확인함.

```
Active: activating (auto-restart) (Result: exit-code)
Process: ExecStart=/usr/bin/python3 .../activity-watcher.py (code=exited, status=1/FAILURE)
```

**직접 재현 결과** (`python3 scripts/activity-watcher.py`):
```
[FATAL] ANU_BOT_TOKEN 환경변수가 설정되지 않았습니다.
해결: 'source /home/jay/workspace/.env.keys'를 실행하거나 start-activity-watcher.sh를 사용하세요.
```

**근본 원인**: systemd user unit이 `EnvironmentFile=/home/jay/workspace/.env.keys`를 읽지만, 해당 파일이 셸 문법(`export KEY=VALUE`)이라 systemd가 전 항목을 파싱 실패로 무시함
(journal: `Ignoring invalid environment assignment 'export ...'`).
→ `ANU_BOT_TOKEN` 미주입 → 즉시 exit 1 → auto-restart 무한 루프.
→ 스펙 수집 시점에 `active`/`activating`이 갈려 services 목록이 매 실행 플래핑.

**cron 섹션 `ANU_CHAT` 상시 실패와 동일 원인 계열**(.env.keys 환경변수 미주입)로 판단됨.

**조치 안 함**: 기존 메모리 지침(`비파괴·재조사 금지, 회장 승인 대기`)에 따라 수정하지 않고 보고만 함.

**위생 참고사항** (사고 아님): 위 파싱 실패 로그가 journald에 `.env.keys` 값 전문을 그대로 남기고 있음. 자격증명이 시스템 로그에 평문 축적 중.

## 판정
- 스크립트 **정상 동작**. 실제 시스템 상태 변화가 스펙 문서 + changelog에 정상 반영됨.
- 종료 코드 1은 **cron `ANU_CHAT` 단독 실패**로 인한 것이며 기존 알려진 상태 → 회장 알림(escalation) 대상 아님.
- 신규 발견(activity-watcher 크래시 루프)은 Critical Escalation 7종에 해당하지 않아 보고서 기록으로 처리.
