bibimbap/.atp/work-session/20260623-104307/report.md

363 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 플러그인 유지보수자 영역으로 보류 — 사용자에게 고지.'