---
schema_version: 2
session_id: 20260623-104307
resumed_from: 20260622-180054
started_at: 2026-06-23T10:43:07+09:00
ended_at: 2026-06-23T12:22:00+09:00
user_request: |
  남은 W 워크스트림을 설계한다(구현 아님). "골자 먼저 → 미결질문 확정 → 풀설계" 단계.
  - 설계 대상: W1·W3-2 제외 전부 (W2-1~W2-6, W3-1/3-3/3-4/3-5, W4).
  - 골자 신규 작성 = W2(6개)·W4 (W3-* 는 골자 이미 존재 → 재작성 불필요, 풀설계 진입 시 grounding 갱신).
  - W3 skeletons "코드 현황" 절 stale 2건 명시: (1) Interceptor/권한게이트 이제 존재(security/PermissionGate·RbacInterceptor·PermissionKeys·config/InterceptorConfig) (2) game_reviews 리뷰테이블 이제 존재(+GameReviewStatsMapper).
  - 제약: 설계만, 코드 0줄, src/·pom.xml 수정 금지. 미결질문은 골자 단계에서 해소하지 않음(풀설계 진입 시 AskUserQuestion 확정). 보안 명시: W2-2 권한 / W3-3 SSRF(OG·유니티블로그 피드) / W3-5 zip-slip.
---

# Summary
설계 전용(코드 0줄) 세션. 직전 세션 20260622-180054(W1 RBAC 설계/구현)에서 이어짐. 단계: ① W2·W4 골자 카탈로그 신규 작성(W3 skeletons 포맷) + W3 stale 2건 명시 → ② 골자 합의 → ③ 각 W 미결질문 AskUserQuestion 확정 → ④ 풀설계(W1-design.md 깊이: DDL/파일영향맵/API계약/시퀀스/AC매핑). 현재 ①단계 진입 — 골자 정확도 위해 W2/W4 코드 surface grounding 선행.

# Advisor Invocation Decision Log
# 각 advisor 호출/스킵 판단 즉시 1줄 append
- advisor: requirements-advisor
  decision: skip
  rationale: '로드맵(jam-platform-roadmap.md)이 W2/W4 를 이미 기능 분해. 골자 카탈로그 포맷이 곧 요구 윤곽 — 별도 요구분해 불요. 미결질문은 골자 단계 비해소가 사용자 명시 제약.'
  checked_at: 2026-06-23T10:44:00+09:00
- advisor: research-advisor
  decision: call
  rationale: '골자 "결합/의존" 의 code-fact vs 해석 태깅 정확도가 세션 핵심. W1 RBAC·리뷰 인프라가 직전 세션에 착지(941f9fb 등) → graph/문서 stale 가능성. 코드 직접 grounding 필요. parallel-explorer 6버킷 팬아웃.'
  checked_at: 2026-06-23T10:44:00+09:00
- advisor: design-advisor
  decision: skip (골자 단계 한정)
  rationale: 'design-advisor 정체성 = "오픈질문 0 구현가능 설계도". 골자는 미결질문 *보존*이 목적(사용자 제약) → 권한 상충. 판단 핵심(grounding)은 research 로 위임 완료, 남은 건 고정 템플릿(W3 skeletons 포맷)에 grounded 사실 조립 + 미결 비해소. orchestrator 직접 작성이 적합(인플레이션 회피). 풀설계 단계(④)에서는 design-advisor 정식 호출.'
  checked_at: 2026-06-23T10:58:00+09:00
- advisor: design-advisor (풀설계 ×11)
  decision: call (Workflow 오케스트레이션)
  rationale: '사용자 "전체 설계 개입없이 직접·정석" → 11기능 풀설계. ultracode ON → Workflow 로 3-phase 의존순서 병렬(design-advisor agentType, opus/high). 백그라운드라 orchestrator 컨텍스트 오염 0 → §2 parallel-advisor 금지의 취지(오염) 충족. 미결질문은 orchestrator 가 정석 결정으로 닫아 주입(design 은 0 오픈질문 산출).'
  checked_at: 2026-06-23T11:14:00+09:00
- advisor: research-advisor (W3-5 선행)
  decision: call (Workflow PhaseA 내)
  rationale: '골자대로 W3-5 는 7항목 조사 선행 후 설계. 조사(PhaseA) → 설계(PhaseB) 파이프.'
  checked_at: 2026-06-23T11:14:00+09:00

# Invocations
- id: inv-001
  layer: orchestrator
  name: orchestrator
  parent_invocation_id: null
  started_at: 2026-06-23T10:43:07+09:00
  ended_at: 2026-06-23T10:44:00+09:00
  input_digest: '남은 W 설계(골자먼저) 요청 + docs-first grounding(로드맵/W3skeletons/W1-design 선례) + ★ stale 2건 파일레벨 확인'
  output_digest: 'init가드 pass, migrate 마커 없음(skip), 프로토콜 코어 로드, ★ RBAC/리뷰 인프라 파일 존재 확인(+GameReviewAxesMapper 발견), research-advisor 디스패치 결정'
  artifacts: [.atp/work-session/20260623-104307/report.md]
  concerns: []
- id: inv-002
  layer: advisor
  name: research-advisor
  agent_version: 2
  parent_invocation_id: inv-001
  started_at: 2026-06-23T10:45:00+09:00
  ended_at: 2026-06-23T10:53:00+09:00
  input_digest: 'W2/W4 골자 grounding 6버킷(RBAC소비/리뷰평점/games/game_likes/users+배지/관례·DDL) — code-fact vs 해석 태깅, ★STALE 2건 확정'
  output_digest: '★STALE1·2 둘 다 실재 확정. enforcement 갭(POST_WRITE/GAME_JAM_MANAGE 소비처0), 리뷰 하이브리드(overall+6축)+stats VIEW, W2-2 스코프 갭(전역 권한모델), jams/배지 전무, game_likes 1인1표 UNIQUE 추정(비권위)'
  artifacts: [.atp/work-session/20260623-104307/research/W2-W4-grounding.md]
  concerns:
    - 'game_likes UNIQUE 제약 비권위(운영 DB 검증 필요) → QG-W2-D'
    - 'W2-2 잼 스코프 권한 미수렴(전역 모델) → QG-W2-A, design 결정'
  model_choice:
    phase: analyze
    dispatch_size: parallel
    tier: large
    effort: high
    resolved_model: opus
    capped: false
    escalation_reason: '탐색적(worker 가 볼 대상 결정) + grounding 정확도가 세션 전체 전제 + W2-2 스코프갭 trade-off 발견'
    rationale: 'code-fact 태깅·갭 발견이 하류 설계의 토대. 6 explorer 병렬.'
  planned_workers: 6
  actual_workers: 6
- id: inv-003
  layer: orchestrator
  name: orchestrator
  parent_invocation_id: inv-001
  started_at: 2026-06-23T10:54:00+09:00
  ended_at: 2026-06-23T11:00:00+09:00
  input_digest: 'grounding + 로드맵 → W2(6)·W4 골자 카탈로그 직접 작성(design-advisor skip, 미결 비해소 보존)'
  output_digest: 'W2-W4 골자 카탈로그(stale정정 2건 + 코드현황 + 7기능 골자 + 결합표 + 착수순서 + QG-W2-A~D·W4-A) 작성. W3 skeletons 배너 + index 링크'
  artifacts:
    - docs/work-log/2026-06-23-w2-w4-feature-skeletons.md
    - docs/work-log/2026-06-17-w3-feature-skeletons.md
    - docs/work-log/index.md
  concerns: []
- id: inv-004
  layer: orchestrator
  name: orchestrator (Workflow w2-w4-full-design)
  parent_invocation_id: inv-001
  started_at: 2026-06-23T11:14:00+09:00
  ended_at: 2026-06-23T11:35:00+09:00
  input_digest: '11기능 풀설계 — 정석 결정 주입, 3-phase 의존순서(A:W2-1/W3-1/W3-3/W4/W3-5조사 → B:W2-3동결/W3-4/W3-5설계 → C:W2-2/4/5/6). Workflow run wf_9e1bd074-6ae'
  output_digest: '10/11 설계 완성(각 34-49KB, W1-design 깊이) + W3-5 조사 완료. W3-1 만 Stream idle timeout 실패. src/ 변경 0(설계전용 준수). 12 agent, ~1.32M tokens.'
  artifacts:
    - .atp/work-session/20260623-104307/implementation/W2-1-jam-entity-design.md
    - .atp/work-session/20260623-104307/implementation/W2-2-judge-role-design.md
    - .atp/work-session/20260623-104307/implementation/W2-3-eval-freeze-design.md
    - .atp/work-session/20260623-104307/implementation/W2-4-judge-scoring-design.md
    - .atp/work-session/20260623-104307/implementation/W2-5-popular-vote-design.md
    - .atp/work-session/20260623-104307/implementation/W2-6-award-aggregation-design.md
    - .atp/work-session/20260623-104307/implementation/W3-3-posting-board-design.md
    - .atp/work-session/20260623-104307/implementation/W3-4-main-hub-design.md
    - .atp/work-session/20260623-104307/implementation/W3-5-upload-design.md
    - .atp/work-session/20260623-104307/implementation/W4-badges-design.md
    - .atp/work-session/20260623-104307/research/W3-5-upload-research.md
  concerns:
    - 'W3-1 실패 → inv-005 재실행. W3-4 는 W3-1 을 라우팅 계약 앵커로 방어설계(부재 명시) → 재실행 불요'
    - 'QG-3 stale 추가 발견(W3-5 조사): /game/** 서빙은 GameAssetController(@GetMapping /game/{uuid}/**) 로 정상 동작 — 골자 "핸들러 미등록=서빙 미보장" 정정 필요(버그 아님)'
    - 'W3-5 조사: zip-slip 심링크 구멍·업로드 권한게이트 전무·포맷검증 index.html만 — W3-5 설계가 보강'
  model_choice:
    phase: design
    dispatch_size: parallel
    tier: large
    effort: high
    resolved_model: opus
    rationale: '풀설계 — trade-off 빈번 + 보안(W2-2/W3-3 SSRF/W3-5 zip-slip) + 정석 요구. 전 design 에이전트 opus/high.'
  planned_workers: 11
  actual_workers: 11
- id: inv-005
  layer: advisor
  name: design-advisor (W3-1 재실행 1 — 실패)
  agent_version: 1
  parent_invocation_id: inv-001
  started_at: 2026-06-23T11:36:00+09:00
  ended_at: 2026-06-23T11:42:00+09:00
  input_digest: 'W3-1 풀설계 단일 재실행(인접 Read 포함)'
  output_digest: 'Stream idle timeout 2회 연속(workflow 포함) → §2.1 분할 재시도 전환'
  artifacts: []
  concerns: ['design-advisor opus 대형 단일호출 + 다중 대형 Read 가 stream idle timeout 유발(2회). §2.1 분할로 회복.']
  model_choice: { phase: design, dispatch_size: direct, tier: large, effort: high, resolved_model: opus, fallback_reason: 'stream idle timeout 2회 → 분할', rationale: '실패 재실행' }
- id: inv-006
  layer: advisor
  name: design-advisor (W3-1 part1 §1-7)
  agent_version: 1
  parent_invocation_id: inv-001
  started_at: 2026-06-23T11:48:00+09:00
  ended_at: 2026-06-23T11:51:00+09:00
  input_digest: 'W3-1 §1-7, 필요 사실 전부 인라인 주입(Read 0) — idle timeout 회피'
  output_digest: 'frontmatter+§1-7 작성. tags/game_tags/jam_tags/game_views, 잼검색 라우트 GET /games/search?jam={slug} 확정'
  artifacts: [.atp/work-session/20260623-104307/implementation/W3-1-tags-search-design.md]
  concerns: []
- id: inv-007
  layer: advisor
  name: design-advisor (W3-1 part2 §8-13)
  agent_version: 1
  parent_invocation_id: inv-001
  started_at: 2026-06-23T11:54:00+09:00
  ended_at: 2026-06-23T11:57:00+09:00
  input_digest: 'W3-1 §8-13 append(part1 1회 Read)'
  output_digest: 'W3-1 완성 470줄, 오픈질문 0. 권한키 D4=CONTENT_MODERATE 재사용 확정'
  artifacts: [.atp/work-session/20260623-104307/implementation/W3-1-tags-search-design.md]
  concerns: []
- id: inv-008
  layer: advisor
  name: general-purpose (W2 클러스터 교차정합 감사)
  parent_invocation_id: inv-001
  started_at: 2026-06-23T12:00:00+09:00
  ended_at: 2026-06-23T12:04:00+09:00
  input_digest: '11설계 교차정합 — 평가단위·동결컬럼·게이트계약·중복DDL·권한키·보안 점검'
  output_digest: 'HIGH 1(W2-1 평가단위 표현 drift, DDL정합) + MED 0 + LOW 3(무해). 동결 단일권위 유지, 하류 정합 PASS. 컬럼/권한키/라우트/보안 clean'
  artifacts: [.atp/work-session/20260623-104307/implementation/_cross-consistency-audit.md]
  concerns: []
  model_choice: { phase: validation-런타임, dispatch_size: direct, tier: large, effort: high, resolved_model: opus, rationale: '교차정합은 주관적 판단 — large' }
- id: inv-009
  layer: orchestrator
  name: orchestrator (HIGH-1 정정 + 설계 인덱스)
  parent_invocation_id: inv-001
  started_at: 2026-06-23T12:05:00+09:00
  ended_at: 2026-06-23T12:12:00+09:00
  input_digest: '감사 HIGH-1(W2-1 평가단위 표현) 5개소 정정 + 통합 결정요약/설계 인덱스 작성 + work-log index'
  output_digest: 'W2-1 (jam_id,game_id) 자연키로 정정, summary 문서 + 인덱스 링크. 골자 stale 3건 정정'
  artifacts:
    - .atp/work-session/20260623-104307/implementation/W2-1-jam-entity-design.md
    - docs/work-log/2026-06-23-w2-w4-full-design-summary.md
    - docs/work-log/index.md
  concerns: []
- id: inv-010
  layer: advisor
  name: retrospective-advisor
  parent_invocation_id: inv-001
  started_at: 2026-06-23T12:14:00+09:00
  ended_at: 2026-06-23T12:18:00+09:00
  input_digest: 'report.md + user_signals → 회고'
  output_digest: 'what_went_well 5 / what_to_improve 2 / memory_candidates 4(전부 protocol-level) / protocol_feedback 3. Retrospective 섹션 기록'
  artifacts: [.atp/work-session/20260623-104307/report.md]
  concerns: []
  model_choice: { phase: docs-sync, dispatch_size: direct, tier: medium, effort: medium, resolved_model: sonnet, rationale: '회고 메타분석 bounded — medium' }

# Decisions
- by: orchestrator
  at: 2026-06-23T10:44:00+09:00
  decision: 'resumed_from 20260622-180054 기록(사용자 명시). 골자 단계 우선 — 합의 후 미결확정/풀설계.'
  rationale: '사용자 브리프가 단계적 진행 명시. 골자 = 합의 artifact.'
  related_invocations: [inv-001]
- by: user
  at: 2026-06-23T11:10:00+09:00
  decision: '전체 설계를 orchestrator 가 개입 없이 직접 결정·진행. 빠른길 아닌 "확실하고 정석적" 방법. AskUserQuestion 면제(명시 위임).'
  rationale: '사용자 발화 "전체 설계를 내 개입없이 직접해보고. 다만 빠르고 쉽게 끝낼수있는 방법이 아니라 확실하고 정석적인 방법으로". §명시적 비활성 경로 + §5.0 면제.'
  related_invocations: [inv-001]
- by: orchestrator
  at: 2026-06-23T11:12:00+09:00
  decision: '정석 기준 캐스케이드 결정 확정: (W2-A) 심사위원=별도 jam_judges 테이블. (W2-B) 유저평점=overall avg_rating(VIEW). (W2-C1) 잼연결=조인테이블 jam_entries. (W2-C2) 팀출품 1차포함. (W2-4) 잼별 jam_criteria 설정형. (W2-5) 1인1표 UNIQUE. (W2-6) 3트랙 개별+가중 GRAND. (W4) 자동임계+수동 하이브리드.'
  rationale: '정석/robust 우선 — 스코프 최소화 단축 대신 정규화·확장성·도메인 정합. 각 design 대안비교로 근거 보존.'
  related_invocations: [inv-004]
- by: orchestrator
  at: 2026-06-23T12:18:00+09:00
  decision: 'retro memory_candidates 4건 처리 = protocol_feedback 로 보존(report 기록). docs_sync_target=agent-team-protocol.md 가 플러그인 번들(~/.claude 전역) → §6 게이트로 orchestrator 임의 편집 금지(사용자 행동 영역). MEMORY opt-in 신호 없음 → 비기록. 교훈이 ATP 프로토콜 레벨이라 bibimbap 프로젝트 docs/ 편집 불요.'
  rationale: 'docs-first 이나 sink 가 전역 플러그인이라 §6. 사용자에게 protocol 개선 보류 고지.'
  related_invocations: [inv-010]

# Conflicts
- between: [W2-3-eval-freeze, W2-5-popular-vote]
  detected_at: 2026-06-23T11:59:00+09:00
  resolved_by: orchestrator
  outcome: '비충돌 확정 — jam_votes 가 양쪽 CREATE 로 등장하나 W2-5 본문이 명시적으로 "재정의 아님·신규 DDL 0·권위 W2-3" + 컬럼/UNIQUE 동일. W2-5 의 CREATE 는 참조용 인용. 동결 단일권위(W2-3) 유지.'

# Regression
- surfaced_at_stage: 교차정합 감사(inv-008)
  source_stage: 설계(W2-1)
  defect: 'W2-1 본문 5개소가 "평가 단위 = jam_entries.id" 로 표현 — W2-3 동결 권위((jam_id,game_id) 자연키)와 식별자 모순. W2-1 DDL 자체·하류 W2-4/5/6 은 정합(game_id), 순수 표현 drift'
  full_set_recheck: true
  downstream_rerun: ['W2-1 본문 5개소 정정(11/43/65/196/406). 하류 재실행 불요 — 감사가 W2-4/5/6 game_id 정합 확인']
  resolved_at: 2026-06-23T12:08:00+09:00

# Open Items
- 'graph-refresh-checker: skip — git diff 가 docs/ + .atp/work-session/ 뿐, src/ scope 변경 0(설계 전용). §3.2 no-scope-change → fresh 취급'
- 'game_likes 운영 DB UNIQUE 제약 미확인(추정, grounding concern) — W2-5 는 신규 jam_votes 로 무관하나 별도 운영 DB 확인 권장(QG-W2-D)'
- '구현 단계 점검 항목(각 설계 concerns): 신규 매퍼 @MockBean full-test §30, DB-방언 alias §33, 시그니처 inflate §11.2, W3-3 pom 의존(commonmark/jsoup)+@EnableScheduling, W4 의 W1 AC-T1 카운트 3→4 재측정, SSRF rebinding 단위테스트'
- '이 세션은 설계까지 — 구현(implementation-advisor)·L1/L2 검증은 착수 시 별도 세션'

# User Signals
user_signals:
  positive:
    - quote_or_paraphrase: '"전체 설계를 내 개입없이 직접해보고" — orchestrator 자율 진행 위임'
      about: '골자 합의 후 미결확정/풀설계 전 과정을 orchestrator 자율 결정에 위임(신뢰 시그널)'
  negative:
    - quote_or_paraphrase: '"확실하고 정석적인 방법으로" (빠른길 아닌) — AskUserQuestion 1차 옵션이 스코프 최소화(개인우선/jam_id컬럼/단일평점) 편향이었음을 사용자가 clarify 요청으로 교정 유도'
      about: 'AskUserQuestion Recommended 가 "빠르고 쉬운" 쪽으로 편향 → 사용자가 정석 지향 명시. 옵션 설계 시 정석/robust 축을 기본 Recommended 로 두지 않은 점'
      structural: false

Retrospective:
  signals:
    positive:
      - quote_or_paraphrase: '"전체 설계를 내 개입없이 직접해보고" — orchestrator 자율 진행 위임'
        about: '골자 합의 후 미결확정·풀설계 전 과정을 orchestrator 에 위임. 신뢰 시그널이자 AskUserQuestion 면제.'
      - quote_or_paraphrase: '(재호출·재지시 없이) 10/11 설계 완성 수락 — 품질 이의 없음'
        about: 'Workflow 3-phase 병렬 오케스트레이션(Workflow-within-atp) + 동결 단일권위(W2-3) phase-gate(§2.7) + 교차정합 감사로 HIGH drift 사전 포착 후 사용자 추가 수정 요청 없이 완료.'
    negative:
      - quote_or_paraphrase: '"확실하고 정석적인 방법으로" — 빠른길이 아닌 정석 지향 명시'
        about: 'AskUserQuestion 1차 옵션의 Recommended 가 스코프 최소화(개인우선/jam_id컬럼/단일평점) 편향이었음. 사용자가 clarify 로 교정 유도.'
        structural: false
  what_went_well:
    - 'Workflow-within-atp(백그라운드 에이전트): orchestrator 컨텍스트 오염 0 상태에서 11기능 병렬 설계 실행. §2 parallel-advisor 금지의 취지(컨텍스트 오염)를 충족하면서 대규모 팬아웃을 달성한 비자명 선택 — 사용자 재지시 없이 수락.'
    - '교차정합 감사(inv-008): 설계 단계 후 general-purpose 감사를 별도 호출로 수행해 W2-1 평가단위 표현 drift(HIGH-1)를 구현 착수 전에 포착·정정. 하류 재실행 없이 local fix 완료.'
    - '동결 단일권위 패턴(W2-3 phase-gate): W2-5 가 jam_votes DDL 을 참조 인용만 하고 W2-3 권위를 명시 보존 → Conflicts 섹션이 비충돌로 닫힘. §2.7 단일권위 설계의 효과 검증.'
    - 'W3-1 stream idle timeout 회복: 2회 연속 실패 후 §2.1 분할 + 필요 사실 인라인 주입(Read 0) + 2-part Write→Edit append 로 완성. 전체 설계 완성도(11/11)에 영향 없음.'
    - '설계 전용(코드 0줄) 제약 준수: src/·pom.xml 변경 0. 12 에이전트·~1.32M 토큰 규모 Workflow 실행 중에도 제약 위반 없음.'
  what_to_improve:
    - 'AskUserQuestion Recommended 편향: 정석/robust 축보다 스코프 최소화·빠른 완료 쪽을 Recommended 기본으로 설정했음. 사용자가 "정석적" 명시로 교정 → 모든 미결질문의 Recommended 는 "도메인 정합·확장성·보안 선호" 를 기본값으로 두어야 함.'
    - 'design-advisor 대형 단일호출 + 다중 대형 Read 조합이 stream idle timeout 유발(2회): W3-1 재실행 실패. 회복책(분할+인라인 주입)은 이미 §2.1 정신과 일치하나, Workflow 설계 시 사전에 분할 기준을 프롬프트에 명시하는 가드가 없었음.'
  memory_candidates:
    - name: design-advisor-large-read-idle-timeout-split
      type: feedback
      description: design-advisor opus 대형 단일호출에 다중 대형 Read 가 겹치면 stream idle timeout 이 발생한다. 사실 인라인 주입(Read 0) + 섹션 분할로 회피한다.
      body_draft: |
        design-advisor(opus/high) 를 단일 호출로 실행할 때, 컨텍스트 내 다수의 대형 Read(각 20KB+ 파일 복수)가 선행되면 stream idle timeout 이 발생한다(W3-1, 2회 연속 실패, 세션 20260623-104307).

        **Why:** 모델이 대형 컨텍스트를 처리하면서 장시간 idle 상태가 생기면 서버 측 스트림이 끊긴다. Read 0 조건에서는 이 문제가 재현되지 않았음.

        **How to apply:**
        - 대형 설계 단일호출 전에 파일 Read 를 에이전트 내부에서 수행하지 말고, orchestrator 가 필요 사실을 프롬프트에 **인라인 주입**한다(Read 0 원칙).
        - 예상 산출 >300줄 또는 기반 Read 파일 합계 >30KB 이상이면 섹션 분할 필수: 첫 호출=Write(frontmatter+§1~M), 이후=Edit append.
        - Workflow 에이전트 프롬프트에 "이번 호출은 §A~§B 만 작성. 외부 Read 금지 — 필요 사실은 이 프롬프트에 인라인 포함됨" 을 명시.
        - 2회 연속 timeout 시 즉시 분할 전환. 3회 이상 단일 재시도 금지.
      rationale_for_saving: 동일 패턴(opus 대형 단일호출 + 다중 Read)이 TTS-Bot 에서도 재발한 바 있음(large-advisor-socket-error.md). bibimbap 프로젝트 설계 세션에서도 재발. Read 0 + 인라인 주입이 유효한 회피책으로 검증됨. 코드/git 에서 유도 불가.
      signal_source: observation
      docs_sync_target: /Users/wemadeplay/workspace/stz/bibimbap/docs/development/agent-team-protocol.md
      memory_optional: true

    - name: askuser-recommended-defaults-to-robust
      type: feedback
      description: AskUserQuestion Recommended 는 스코프 최소화가 아닌 정석/robust/도메인정합 축을 기본값으로 설정해야 한다.
      body_draft: |
        orchestrator 가 미결질문에 옵션을 제시할 때 "빠르고 쉬운" 스코프 최소화 안을 Recommended 로 표시하면, 사용자가 도메인 정합·확장성 선호임에도 한 번 더 교정 발화를 해야 한다(세션 20260623-104307: "확실하고 정석적인 방법으로").

        **Why:** Recommended 편향이 사용자 선호와 정렬되지 않으면 교정 루프가 발생한다. 이 교정 루프는 사용자 발화 비용 + 결정 지연을 유발한다.

        **How to apply:**
        - 미결질문 옵션 기본 Recommended 는 다음 우선순위로 결정:
          1. 도메인 정합·정규화·보안이 더 강한 안
          2. 확장성이 더 높은 안(예: 조인테이블 > 단순 컬럼)
          3. 팀 이벤트 본질에 충실한 안(예: 팀 출품 포함)
        - "빠른 완료·스코프 최소화" 안이 Recommended 이 되려면 사용자가 명시적으로 "빠른 길"을 요청했거나, 데모·MVP 컨텍스트가 session 명시된 경우에 한한다.
        - 옵션 표에 각 안의 장기 확장 비용을 명시(symmetric tradeoff, `design-option-table-symmetric-tradeoff` 교훈과 연계).
      rationale_for_saving: 사용자가 "정석적" 명시로 교정한 직접 발화 있음. 재현성 있는 패턴(옵션 편향은 설계 세션마다 등장). 코드에서 유도 불가.
      signal_source: negative
      docs_sync_target: /Users/wemadeplay/workspace/stz/bibimbap/docs/development/agent-team-protocol.md
      memory_optional: true

    - name: workflow-within-atp-background-context-isolation
      type: feedback
      description: Workflow(백그라운드 에이전트)를 ATP 내부에서 사용하면 orchestrator 컨텍스트 오염 없이 대규모 병렬 설계가 가능하다.
      body_draft: |
        ATP §2 의 parallel-advisor 금지 취지는 "orchestrator 컨텍스트 오염"이다. Workflow(백그라운드 에이전트)는 orchestrator 컨텍스트를 공유하지 않으므로 취지를 충족한다(세션 20260623-104307: 11기능 병렬, 12에이전트, ~1.32M tokens, src/ 0 변경).

        **Why:** 대규모 팬아웃 설계를 orchestrator 직렬 호출로 처리하면 세션 토큰 폭발 + 컨텍스트 오염 위험이 크다. Workflow 격리는 이 두 문제를 모두 해결한다.

        **How to apply:**
        - 설계 대상이 5개 이상이거나 총 예상 산출이 150KB 이상이면 Workflow 분리를 우선 고려.
        - Workflow 내 각 에이전트는 정석 결정(미결질문 닫기)을 orchestrator 가 프롬프트에 주입한 후 실행.
        - 백그라운드 Workflow 결과는 artifacts 경로를 통해 orchestrator 가 수거(Read)하고, invocations 에 기록.
        - §2 parallel-advisor 금지 주석에 "Workflow 백그라운드 격리는 취지 충족 예외" 를 명시할 것을 protocol_feedback 으로 제안.
      rationale_for_saving: 11기능 풀설계를 1개 세션에서 완성한 비자명 선택. 사용자가 재지시 없이 전 결과를 수락. 코드에서 유도 불가, 재현성 있음.
      signal_source: positive
      docs_sync_target: /Users/wemadeplay/workspace/stz/bibimbap/docs/development/agent-team-protocol.md
      memory_optional: true

    - name: cross-consistency-audit-post-design-before-commit
      type: feedback
      description: 다수 설계 문서 완성 후 커밋 전 교차정합 감사(general-purpose 호출)를 삽입하면 표현 drift 를 구현 착수 전에 잡는다.
      body_draft: |
        11기능 풀설계 완료 후 교차정합 감사(inv-008)를 별도 single general-purpose 호출로 수행한 결과: HIGH-1(W2-1 평가단위 표현 drift)을 포착, 하류 5개 설계 문서 재실행 없이 W2-1 local fix 만으로 해소(세션 20260623-104307).

        **Why:** 다수 에이전트가 병렬 작성한 설계는 용어 통일성·FK 참조·DDL 중복이 에이전트별로 달라질 수 있다. 사후 감사 없이 커밋하면 구현 단계에서야 드러난다.

        **How to apply:**
        - 3개 이상의 설계 문서가 동시 생성될 때, 커밋 직전 교차정합 감사 스텝 삽입.
        - 감사 체크리스트: (a) 동결 단일권위 준수, (b) DDL 중복/모순, (c) 권한키 일관성, (d) API 라우트 중복, (e) 용어 표현 drift.
        - 감사 결과는 `_cross-consistency-audit.md` 로 커밋해 하류 세션이 참조 가능하도록 한다.
        - HIGH 이슈는 즉시 정정, MED/LOW 는 open item 으로 구현 단계 전달.
      rationale_for_saving: 비자명 선택(감사 단계 삽입)이 HIGH drift 조기 포착으로 검증됨. 다수 병렬 설계 세션에서 재현 가능. 기존 memory 미존재.
      signal_source: positive
      docs_sync_target: /Users/wemadeplay/workspace/stz/bibimbap/docs/development/agent-team-protocol.md
      memory_optional: true

  protocol_feedback:
    - target: agent-team-protocol.md §2 (parallel-advisor 금지 조항)
      severity: suggestion
      observation: '현재 §2 parallel-advisor 금지는 "orchestrator 컨텍스트 오염" 방지가 취지인데, Workflow(백그라운드 에이전트)는 컨텍스트를 공유하지 않으므로 금지 취지를 충족한다. 현행 조항이 이 예외를 명시하지 않아 해석 여지가 생김.'
      recommendation: '§2 parallel-advisor 금지 항목에 "단, Workflow 백그라운드 격리 실행은 orchestrator 컨텍스트 오염이 발생하지 않으므로 허용. 조건: (a) 각 에이전트가 orchestrator 컨텍스트를 공유하지 않을 것, (b) 정석 결정을 프롬프트 인라인으로 주입할 것" 을 추가.'
      structural: false

    - target: agent-team-protocol.md §4.4 (AskUserQuestion 옵션 설계)
      severity: rule-addition
      observation: 'AskUserQuestion Recommended 가 구현·운영 비용 절감(스코프 최소화) 쪽으로 편향되는 경향이 이번 세션에서도 재발. 사용자가 "정석적" 명시로 교정했음. §4.4 에 Recommended 기본값 규칙이 명시되지 않음.'
      recommendation: '§4.4 에 "Recommended 기본값 규칙: 도메인 정합·정규화·보안이 더 강한 안을 기본으로 한다. 빠른 완료·스코프 최소화 안이 Recommended 가 되려면 사용자 명시 요청(빠른 길·MVP·데모) 또는 세션 명시 컨텍스트가 있어야 한다." 추가.'
      structural: false

    - target: agent-team-protocol.md §2.1 (대형 호출 분할)
      severity: rule-refinement
      observation: 'W3-1 stream idle timeout(2회)은 §2.1 분할 원칙이 이미 있음에도 Workflow 에이전트 프롬프트에 분할 기준이 사전 명시되지 않아 발생. "필요 사실 인라인 주입(Read 0)" 회피책이 §2.1 에 미기재.'
      recommendation: '§2.1 에 "대형 설계 단일호출 가드" 항목 추가: (a) 에이전트 내부 Read 금지 — 필요 사실은 orchestrator 가 프롬프트에 인라인 주입, (b) 예상 산출 >300줄 또는 인라인 컨텍스트 합계 >30KB 이면 섹션 분할 필수, (c) 2회 timeout 시 즉시 분할 전환, 3회 이상 단일 재시도 금지.'
      structural: true

  applied_changes:
    - 'docs(프로젝트): 골자 stale 정정 3건(W3 skeletons 배너+QG-3, w2-w4 카탈로그) + 설계 인덱스(full-design-summary) — 이번 세션 적용·커밋(bfbe1de).'
    - 'memory_candidates 4건: 전부 ATP 프로토콜 레벨(docs_sync_target=agent-team-protocol.md=플러그인 번들/전역). §6 게이트로 orchestrator 가 플러그인 임의 편집 안 함 → protocol_feedback 으로 보존(report). 프로젝트 docs/ 무관(미적용 사유=교훈이 cross-project 프로토콜).'
    - 'MEMORY: opt-in 신호 없음 → 비기록(docs-first, memory_optional 미충족).'
    - 'protocol_feedback 3건(idle-timeout split·AskUser robust 기본값·Workflow-within-atp 예외): ATP 플러그인 유지보수자 영역으로 보류 — 사용자에게 고지.'
