---
schema_version: 2
session_id: 20260617-162536
resumed_from: null
started_at: 2026-06-17T16:25:36+09:00
ended_at: 2026-06-17T17:16:00+09:00
user_request: |
  고도화를 위해 세션을 나눴었는데, 기능 관련 계획은 나뉜 것 같다.
  그러나 각각 "왜 쓰고 무엇을 위해 존재하는지"(목적 축)는 명확하게 안 나뉜 것 같아
  하나씩 짚어보려 한다. 제공했던 메모가 모두 게임잼을 위해 존재했던 것은 아니다.
  → 직전 세션(20260617-150635)이 메모 24항목을 전부 "게임잼 플랫폼 고도화" 프레임으로
     묶은 데 대한 목적 축 재분류 요청.
---

# Summary
직전 150635 세션 산출 로드맵(S1~S7)을 "목적(존재 이유)" 축으로 재검토하는 분석 세션.
150635 는 기능 의존성(공유 자원 §2.7) 축으로는 잘 쪼갰으나, 모든 항목을 "게임잼" 목적
프레임 아래 배치 → 사이트 전반용 기능(RBAC/포스팅/태그/리뷰·댓글/Unity업로드/메인)과
게임잼 전용 기능(잼 엔티티/심사/인기투표/시상)이 목적상 섞여 보이는 framing gap.
사용자 요청 = 항목별 "게임잼 전용 vs 사이트 플랫폼 vs 공유" 목적 재분류 후 하나씩 확정.

# Advisor Invocation Decision Log
- advisor: requirements-advisor
  decision: pending
  rationale: '본질이 목적 축 재분류 + 사용자와 1:1 대화형 확정. advisor 는 AskUserQuestion 불가 → orchestrator 직접 대화로 의미 확정 선행. 필요 시 확정 후 로드맵 재작성을 documentation-advisor 로 위임.'
  checked_at: 2026-06-17T16:26:00+09:00
- advisor: graphify-lookup / research-advisor
  decision: skip
  rationale: '코드 신규 조사 불요 — 기존 엔티티(games/game_comments/game_likes/recruit_posts)는 150635·110836 세션에서 확인됨. 본 세션은 기존 산출물(로드맵+decisions) 해석.'
  checked_at: 2026-06-17T16:26:00+09:00
- advisor: requirements-advisor
  decision: skip(완료)
  rationale: '목적축 의미확정을 orchestrator 가 사용자 1:1 배치질의(S1~S7 + 플래그)로 완료. advisor 재분해 불요 — 산출 결정이 이미 확정적.'
  checked_at: 2026-06-17T16:55:00+09:00
- advisor: documentation-advisor
  decision: call
  rationale: '확정된 W1~W4 목적 워크스트림을 로드맵 doc 에 W중심 전면 재구조로 반영. docs 카테고리/index/guidelines 준수는 advisor 책임. 사용자 "W중심 전면 재구조" 선택.'
  checked_at: 2026-06-17T16:55:00+09:00

# Invocations
- id: inv-001
  layer: orchestrator
  name: orchestrator
  started_at: 2026-06-17T16:25:36+09:00
  input_digest: '150635 로드맵 + report decisions + notes parse 수집'
  output_digest: '목적 축 재분류표 작성, 사용자 확정 대기'
  model_choice:
    phase: analyze
    dispatch_size: direct
    tier: large
    effort: medium
    resolved_model: inherit
    capped: false
    rationale: '프레이밍·목적 판정은 다항목 교차 추론(§5.4 axis4) → orchestrator 직접 보유. 코드 변경 0.'

# Decisions
- by: user
  at: 2026-06-17T16:30:00+09:00
  decision: '진행 방식 = S1부터 하나씩 목적 확정 → 종료 시 로드맵 doc 에 목적 축 반영.'
- by: user
  at: 2026-06-17T16:34:00+09:00
  decision: |
    S1 "RBAC" 은 성격이 다른 3개가 한 카드에 뭉쳐 있었음 (150635 오분류):
    1. 관리자/부관리자 = 운영 중심 설계 = 진짜 RBAC (사이트 거버넌스, 잼 무관)
    2. 심사위원 = 게임잼 전용 역할 권한
    3. 리뷰어 = 권한 아님, 유저 '배지/평판' 개념 (업로드 게임 인증 리뷰어) → RBAC 도메인 분리 필요
    포스터/기술자 = 미확정 (후속 질의).
- by: user
  at: 2026-06-17T16:40:00+09:00
  decision: |
    S1 플래그 4종 최종 분해:
    - 포스터 = 운영 작성 권한(부관리자 토글) → S1 RBAC 흡수, 별도개념 아님
    - 심사위원 = 게임잼 전용 역할 권한 → 잼 도메인으로 이관
    - 리뷰어 = 유저 배지/평판 (업로드 게임 인증 리뷰어)
    - 기술자 = 유저 배지/평판 (개발정보 공유/적극 업로더 인정, 임시명칭)
    → "리뷰어+기술자" = 제3의 기능군 '유저 배지/평판 시스템'. 게임잼·RBAC 와 별개.
       150635 가 RBAC '인증유저 플래그' 로 통째 오분류 → 누락된 워크스트림 발굴.

# Emergent Categories (목적 축 재분류 결과 — 누적)
# 150635 의 게임잼-단일프레임을 목적별로 분해. 항목 확정될 때마다 갱신.
purpose_axes:
  site_governance_rbac:
    - 관리자/부관리자 권한모델 + 권한 토글(게임잼관리/포스팅작성 등) + 인터셉터 (구 S1)
  game_jam_only:
    - 심사위원 역할 권한 (구 S1 일부)
    - 게임잼 엔티티 + 라이프사이클 + 출품작 연결 + 상세페이지 (S2)
      # 속성: 회차 독립(다중 인스턴스). 통합지점: 출품작이 잼뷰 + 일반 게임노출 페이지 이중 노출(S6 로 흐름).
      # 운영표시필드(Discord/상금/후원) = operational, 표시만.
  user_badge_reputation:   # ★신규 발굴 — 150635 누락
    - 리뷰어 배지 (인증 리뷰어)
    - 기술자 배지 (기여 인정, 임시명칭)
  site_platform:
    - 태그 모델 + 검색 = 일반 게임 발견성 중심 (S3). 잼용도: 이전회차 검색 + 진행회차 강조(부수). 잼일정 분리 가능.
    - 댓글/리뷰 분리 (S4a) = 모든 게임 페이지 일반기능. 댓글 200자 / 리뷰 게시물당1회+평점.
      # 리뷰주체=아무나(게임당1회), 리뷰어 배지=평판인정(→ user_badge_reputation 연결).
      # 잼 게이트 없음. 잼 연결=시상(S4d)이 리뷰 평점을 단방향 집계. ★S4D 동결묶음에서 분리해야.
  game_jam_only_eval:
    - 심사위원 평가 (S4b) — 평가기간 게이트, S1 심사위원 역할 소비
    - 인기투표 (S4c) — 잼 1인1표 평가기간, game_likes 와 별개
    - 시상 집계 3트랙 (S4d) — 심사/유저평점/인기. 유저평점만 S4a 리뷰평점 단방향 집계
    # ★S4D 재프레임: 잼 평가스키마(심사/투표/시상) + S4a→S4d 집계계약만 동결. 댓글/리뷰 스키마는 일반(별도설계).
  site_platform_more:
    - 포스팅 보드 (S5) = 사이트 콘텐츠/마케팅(공지·블로그·외부링크). 포스터=S1 운영권한. 잼은 포스팅 주제 1개로 포함. 잼일정 완전분리.
    - 메인 = 게임 허브 노출 (S6) = 게임 + 잼출품작 모이는 공간. ★포스팅은 별도 메뉴(150635 "메인 통합" 교정).
    - Unity WebGL 업로드 자동화 (S7) = 일반 게임 호스팅 자동화(모든 제출). 현 수동 호스팅 대체. deferred(조사선행).

# 목적 축 종합 (전 항목 확정)
# 150635 단일 "게임잼" 프레임 → 4개 목적 워크스트림 + 운영으로 분해.
final_workstreams:
  W1_거버넌스_RBAC:
    - 관리자/부관리자 권한모델 + 권한토글(게임잼관리/포스터=포스팅작성) + 인터셉터 (구 S1)
  W2_게임잼:
    - 게임잼 엔티티/라이프사이클/출품작연결/상세 (S2)
    - 심사위원 역할 권한 (구 S1 일부)
    - S4D 잼평가 통합설계(심사/투표/시상 스키마 + S4a→S4d 집계계약 동결)
    - 심사위원평가(S4b) / 인기투표(S4c) / 시상집계(S4d)
  W3_사이트플랫폼:
    - 태그+검색 일반 게임 발견성 (S3)
    - 댓글/리뷰 분리 일반 게임기능 (S4a)
    - 포스팅 보드 별도 메뉴 (S5)
    - 메인 게임 허브 노출 (S6)
    - Unity 업로드 자동화 (S7, deferred)
  W4_유저배지평판:   # ★신규 — 150635 누락
    - 리뷰어 배지(S4a 리뷰활동 기반) / 기술자 배지(기여인정, 임시명칭)
  operational_표시만:
    - Discord/뒤끝/상금·후원 (코드 외, 표시 필드만)
key_reframes_vs_150635:
  - 댓글/리뷰(S4a) = 일반기능 → 잼 S4D 동결묶음에서 분리(시상은 단방향 집계만)
  - 포스팅(S5) = 별도 메뉴, 메인(S6) 통합 아님
  - 태그/검색(S3)·Unity(S7) = 사이트 일반 인프라(잼은 소비자)
  - 유저 배지/평판(W4) = 누락된 신규 워크스트림 발굴
  - S4D 동결 범위 = 잼 평가만으로 축소
  - 의존성 그래프(빌드순서)는 유효 — 목적 축은 "왜/독립출시여부"를 추가로 분리

# Regression (§2.6)
- surfaced_at_stage: '본 세션 목적축 재검 (S1)'
  source_stage: '150635 requirements/notes-parse'
  defect: '"기능별 인증유저 플래그(리뷰어/포스터/심사위원/기술자)" 를 전부 RBAC 권한으로 동질 취급 → 리뷰어=배지(평판) 오분류'
  full_set_recheck: true
  downstream_rerun: ['로드맵 S1 카드 목적 재서술', '잔여 플래그(포스터·기술자) 전수 재확인']
  resolved_at: null

# Open Items
- 항목별 목적 축(게임잼전용/사이트플랫폼/공유) 사용자 확정
- 로드맵 doc 재프레이밍 여부 결정 (게임잼 = 워크스트림 1개 vs 전체 프레임)

# ── 세션 종료 (§9) ──

# Conflicts
- (없음) — 단일 documentation-advisor, advisor 간 충돌 없음.

# verified_by_me
- L1/L2: n/a — 코드 변경 0줄(docs 전용 재구조 세션).
- 문서 검증(직접 Read): roadmap doc 본문에 W1~W4 + 운영 + 의존성 그래프(ASCII) + S→W 매핑표(구 S1~S7 전체) + 교정 5건 보존 확인. frontmatter title/description/restructured_by 갱신 확인. work-log/index.md 링크 설명문 W중심으로 갱신 확인.

# needs_user_verification
- (없음) — 계획 문서 재구조만. 런타임/배포 대상 없음.

# graph_refresh
- skip: no-scope-change (§3.2) — src/·pom.xml diff 0, docs/ + work-session 전용. fresh 취급.

# project_gate
- skip: no-project-gate — 코드 변경 0.

# Open Items / 미커밋 잔여 (§9.5)
# 이번 작업 단위 (162536):
- docs/work-log/2026-06-17-jam-platform-roadmap.md — 전면 재작성(W중심). 직전 150635 untracked 위에 갱신.
- docs/work-log/index.md (M) — 링크 설명문 갱신.
- .atp/work-session/20260617-162536/ — 본 세션 durable history(추적 기본, ADR-0010).
# 이번 단위 외 잔여 (이전 세션 — 본 세션 미관여):
- .serena/project.yml (M), .serena/memories/serena_tooling.md (??)
- .atp/work-session/{20260617-094450,143315,150635}/ (??)  ← 150635 roadmap 원본 포함
- docs/analysis/2026-06-16-project-analysis.md (M)
# 커밋 정책: harness "사용자 요청 시에만 커밋". 자동 커밋 안 함 → 사용자 결정 대기. 브랜치 feat/v2.

# User Signals
user_signals:
  positive:
    - quote_or_paraphrase: 'S1~S7 + 플래그 8건 배치질의에 모두 결단적·구체 답변(리뷰어=배지, 기술자=배지, 포스터=운영권한, S6 포스팅 별도메뉴 등), 목적축 재분류 1회 수락'
      about: '목적축 1:1 워크스루 → W중심 재구조 흐름'
  negative: []

# Regression (§2.6) — 마감
- surfaced_at_stage: '본 세션 목적축 재검 (S1~S7 전수)'
  source_stage: '150635 requirements/notes-parse (의존성축 분할 시 목적축 누락)'
  defect: '메모를 의존성/공유자원 축으로만 분할 → 단일 "게임잼" 목적 프레임이 비대상 기능(RBAC·태그·댓글리뷰·포스팅·메인·Unity)을 흡수. "인증유저 플래그"를 동질 취급해 리뷰어/기술자(배지) 오분류 → W4 워크스트림 누락.'
  full_set_recheck: true   # S1~S7 전수 목적 재확인
  downstream_rerun: ['로드맵 doc W중심 전면 재구조', 'index.md 링크 갱신']
  resolved_at: 2026-06-17T17:15:00+09:00

# Retrospective (inline — retrospective-advisor dispatch skip)
# skip 사유: 코드 변경 0 + 본 세션 마찰 negative 0. 단 150635 발원 구조결함 1건 표면화 → 재현성 교훈 존재 → memory_candidate 1건 제안.
- what_went_well:
    - 의존성축(150635) vs 목적축(본 세션) 2축 분리 인지 → 사용자 ground truth 로 항목별 "왜 존재" 1:1 확정
    - 다항목(플래그 4종) 한 항목 결함(리뷰어=배지) 발견 시 §2.6 전수 재검 → W4 누락 워크스트림 발굴
    - documentation-advisor self-contained 브리프로 W중심 재구조 1회 완결
  what_to_improve:
    - 기획/세션분할 세션에서 의존성축만으로 쪼개면 목적축(왜/누구를 위한가)이 단일 프레임에 묻힘 — 분할 시 두 축 병행 확인 필요
  memory_candidates:
    - name: planning-purpose-vs-dependency-axis
      type: feedback
      description: '기능 요청을 세션/단위로 분할할 때 의존성 축(빌드순서)과 목적 축(왜 존재/누구를 위한가)을 분리 확인. 한 축만으로 쪼개면 비대상 기능이 단일 프레임에 흡수되고, 묶음 라벨("인증유저 플래그" 등) 동질 취급이 도메인 오분류(권한 vs 배지/평판)를 부른다.'
      rationale_for_saving: '150635(의존성축 우수) → 목적축 누락으로 4개 워크스트림이 단일 게임잼 프레임에 흡수된 실증. 기획 세션 재발 가능.'
      signal_source: positive
      docs_sync_target: null   # 내부 기획 흐름 교훈 → MEMORY 단독. (프로토콜 §2.7/§4.2.2 와 인접하나 planning-split 특화)
  protocol_feedback: []
  applied_changes: []

# ended_at: 2026-06-17T17:16:00+09:00
