---
title: "[2026-06-05] Maester v5.2 ActionItem 수명주기(감쇠+휴면) LIVE 배포"
from: claude-code
to: ["jadong"]
project: "maester"
date: 2026-06-05T17:49:47.974024+09:00
status: sent
type: report
---

# Maester v5.2 — ActionItem 수명주기 (감쇠+휴면) LIVE 배포

## BLUF
보드/recall이 **지나간·완료된 액션을 today/critical로 잘못 리마인드**하던 문제를 근본 해결. 액션에 직교 수명주기 축(`active`/`dormant`) + freshness 반감기(14일) 도입. 오래된(>~24일 무접촉) `open` 액션을 **되돌릴 수 있는 `dormant`**로 내림(삭제·작업상태 변경 0). 레거시 1회 청소로 stale **2,294건 휴면** → 보드 후보 **2,514→262**, overdue **2→0**, today=신선한 실제 업무 3건만. main 머지(`311061f`)+서비스 재시작+야간 타이머(05:07 KST) 배포 완료. 어제 v5.1(추출 정밀화)의 나머지 절반.

## 변경 (커밋 311061f, main)
- `tools/action_lifecycle.py` — 순수함수(freshness/decay/supersession/plan_sweep) + 19 유닛테스트
- `graph/neo4j_client.py` — `lifecycle_state` 인덱스/ON CREATE 기본값, 보드+recall 3쿼리에 `active` 술어(list_action_board_candidates, find_action_items_for_docs, search_action_items), set_/bulk_set_/revive/list_dormant/docs_referencing/backfill
- `tools/daily_board.py` + `weekly_execution.py` — board_score_v2 freshness 항
- `scripts/action_lifecycle_sweep.py` — dry-run 기본 CLI (apply/legacy/revive/list-dormant/migrate-baseline)
- `systemd/maester-action-lifecycle.{service,timer}` — 매일 05:07 KST 자동 스윕

## 검증 (증거)
- 유닛 19/19 통과, v5.1 회귀 통과
- 라이브 API 보드: overdue **0**, today **3**(전부 f≥0.84 신선: 삼성 스카우트 미팅/키퍼 실사 등), 5/11 stale "아웃바운드 대시보드" P0 → `dormant`(f=0.29)
- 되돌리기: `scripts/action_lifecycle_sweep.py revive <action_id>`

## 안전 / 롤백
- 데이터 삭제 0, 휴면=가역, 전 전이 audit(`data/action_lifecycle_audit.jsonl` + dormant_at/reason/by props) 기록
- 롤백 = `git reset f1c4044` + 서비스 재시작 + `revive` (상태 가역)

## 한계 / 후속
- **대체감지(supersession)**: Neo4j 노드 `content_md` 미적재(clen=0)라 현재 inert → **freshness 감쇠가 주 메커니즘**. 노드 content 채워지면 자동 활성.
- `blocked`(40)/`waiting`(10)/`snoozed`는 **의도적 보존**(정밀 우선, 임의 폐기 방지) — 원하면 긴 반감기로 확장 가능.
- 설계 스펙: `docs/superpowers/specs/2026-06-05-action-lifecycle-design.md`
