From 4288b212d59e06b0ec90a2fb0231ece6429fcc44 Mon Sep 17 00:00:00 2001 From: g1nation Date: Tue, 23 Jun 2026 19:25:29 +0900 Subject: [PATCH] =?UTF-8?q?v2.2.259:=20/meet=20=ED=9A=8C=EC=9D=98=EB=A1=9D?= =?UTF-8?q?=20=EB=B0=A9=ED=96=A5=EC=84=B1=20=EA=B0=9C=EC=84=A0=20(?= =?UTF-8?q?=EA=B0=9C=EC=A1=B0=EC=8B=9D=20+=20=EC=9D=B4=EC=8A=88=E2=86=92?= =?UTF-8?q?=EA=B2=B0=EC=A0=95=20=EC=88=9C=EC=84=9C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 회의록 생성 프롬프트(meetPrompt.ts OUTPUT_FORMAT) 개선 — 외부 모범사례 근거: - 문체: 서술형 일기체 → 개조식·명사형 종결('~논의/합의/완료/필요') - 구조: '주요 논의/쟁점'을 '결정 사항' 앞으로(이슈→결정 흐름) - 참석자 명단의 "(참석자 N)" 화자번호 누수 차단; 최종 점검/검증 항목 보강 - package.json 2.2.258 → 2.2.259 (그 외 .astra/tests 런타임 캐시·미션 상태 변경 동반) Co-Authored-By: Claude Opus 4.8 (1M context) --- ...cde86955f34dda22a6e02b95c9adc0a456927.json | 2 +- ...c10d377a9fef641dd359504b8d53aecd0a4c3.json | 4 +-- .../tests/engine/.astra/missions/wiki_on.json | 10 +++--- ...b3d9d44f32b0e4cd024b2e055db3a0d34417e.json | 2 +- ...973124fb64ba505f767c53a783833bbc3fa6a.json | 2 +- ...0e6575e54853929e991e579e318f2f5a19030.json | 2 +- ...b73b3a5a01af5d82391ec29a25bd72b8239a5.json | 2 +- ...son => stress_conflict_1782194196149.json} | 20 +++++------ package.json | 2 +- .../datacollect/prompts/meetPrompt.ts | 36 +++++++++++++------ 10 files changed, 48 insertions(+), 34 deletions(-) rename .astra/tests/stress/.astra/missions/{stress_conflict_1782118381660.json => stress_conflict_1782194196149.json} (75%) diff --git a/.astra/tests/engine/.astra/cache/7fa9e2c0ed212d5dbde1172e996cde86955f34dda22a6e02b95c9adc0a456927.json b/.astra/tests/engine/.astra/cache/7fa9e2c0ed212d5dbde1172e996cde86955f34dda22a6e02b95c9adc0a456927.json index f4c5373..eb30afb 100644 --- a/.astra/tests/engine/.astra/cache/7fa9e2c0ed212d5dbde1172e996cde86955f34dda22a6e02b95c9adc0a456927.json +++ b/.astra/tests/engine/.astra/cache/7fa9e2c0ed212d5dbde1172e996cde86955f34dda22a6e02b95c9adc0a456927.json @@ -1,5 +1,5 @@ { "result": "직답 결과 — single-pass mock 응답입니다.", - "createdAt": 1782118373725, + "createdAt": 1782194189488, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/engine/.astra/cache/8c208151bed9108b665cd93e98fc10d377a9fef641dd359504b8d53aecd0a4c3.json b/.astra/tests/engine/.astra/cache/8c208151bed9108b665cd93e98fc10d377a9fef641dd359504b8d53aecd0a4c3.json index dbc48db..f897ead 100644 --- a/.astra/tests/engine/.astra/cache/8c208151bed9108b665cd93e98fc10d377a9fef641dd359504b8d53aecd0a4c3.json +++ b/.astra/tests/engine/.astra/cache/8c208151bed9108b665cd93e98fc10d377a9fef641dd359504b8d53aecd0a4c3.json @@ -1,5 +1,5 @@ { - "result": "---\nid: wiki_on\ndate: 2026-06-22T08:52:53.744Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\n직답 결과 — single-pass mock 응답입니다.\n\n직답 결과 — single-pass mock 응답입니다.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `0/100` | ✅ Low |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[DIRECT]** 답변 작성 중... (단일 호출 fast-path) (21ms)\n", - "createdAt": 1782118373745, + "result": "---\nid: wiki_on\ndate: 2026-06-23T05:56:29.490Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\n직답 결과 — single-pass mock 응답입니다.\n\n직답 결과 — single-pass mock 응답입니다.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `0/100` | ✅ Low |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[DIRECT]** 답변 작성 중... (단일 호출 fast-path) (21ms)\n", + "createdAt": 1782194189490, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/engine/.astra/missions/wiki_on.json b/.astra/tests/engine/.astra/missions/wiki_on.json index dd755b6..93d677b 100644 --- a/.astra/tests/engine/.astra/missions/wiki_on.json +++ b/.astra/tests/engine/.astra/missions/wiki_on.json @@ -1,8 +1,8 @@ { "missionId": "wiki_on", "status": "completed", - "startTime": "2026-06-22T08:52:53.702Z", - "totalElapsedMs": 44, + "startTime": "2026-06-23T05:56:29.465Z", + "totalElapsedMs": 26, "results": { "direct": "직답 결과 — single-pass mock 응답입니다." }, @@ -14,14 +14,14 @@ "to": "direct", "durationMs": 21, "message": "답변 작성 중... (단일 호출 fast-path)", - "ts": "2026-06-22T08:52:53.723Z" + "ts": "2026-06-23T05:56:29.486Z" }, { "from": "direct", "to": "completed", - "durationMs": 23, + "durationMs": 5, "message": "미션 완료", - "ts": "2026-06-22T08:52:53.746Z" + "ts": "2026-06-23T05:56:29.491Z" } ], "resilienceMetrics": { diff --git a/.astra/tests/stress/.astra/cache/21818066876cbf8515758bc351bb3d9d44f32b0e4cd024b2e055db3a0d34417e.json b/.astra/tests/stress/.astra/cache/21818066876cbf8515758bc351bb3d9d44f32b0e4cd024b2e055db3a0d34417e.json index 0c00a51..e808dde 100644 --- a/.astra/tests/stress/.astra/cache/21818066876cbf8515758bc351bb3d9d44f32b0e4cd024b2e055db3a0d34417e.json +++ b/.astra/tests/stress/.astra/cache/21818066876cbf8515758bc351bb3d9d44f32b0e4cd024b2e055db3a0d34417e.json @@ -1,5 +1,5 @@ { "result": "Final report with inconsistencies. This should be long enough to pass validation.", - "createdAt": 1782118381684, + "createdAt": 1782194196169, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/cache/4fc755e372f1dd80d6bffc7b2ef973124fb64ba505f767c53a783833bbc3fa6a.json b/.astra/tests/stress/.astra/cache/4fc755e372f1dd80d6bffc7b2ef973124fb64ba505f767c53a783833bbc3fa6a.json index 9833c3e..cae7495 100644 --- a/.astra/tests/stress/.astra/cache/4fc755e372f1dd80d6bffc7b2ef973124fb64ba505f767c53a783833bbc3fa6a.json +++ b/.astra/tests/stress/.astra/cache/4fc755e372f1dd80d6bffc7b2ef973124fb64ba505f767c53a783833bbc3fa6a.json @@ -1,5 +1,5 @@ { "result": "Final report with inconsistencies. This should be long enough to pass validation.", - "createdAt": 1782118381683, + "createdAt": 1782194196168, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/cache/6e559207c4542d959700ff14f360e6575e54853929e991e579e318f2f5a19030.json b/.astra/tests/stress/.astra/cache/6e559207c4542d959700ff14f360e6575e54853929e991e579e318f2f5a19030.json index 7b8e54b..74014cb 100644 --- a/.astra/tests/stress/.astra/cache/6e559207c4542d959700ff14f360e6575e54853929e991e579e318f2f5a19030.json +++ b/.astra/tests/stress/.astra/cache/6e559207c4542d959700ff14f360e6575e54853929e991e579e318f2f5a19030.json @@ -1,5 +1,5 @@ { "result": "[{\"heading\":\"본문\",\"scope\":\"전체 답변\"}]", - "createdAt": 1782118381679, + "createdAt": 1782194196165, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/cache/f65136cebc95448a7e93a45745cb73b3a5a01af5d82391ec29a25bd72b8239a5.json b/.astra/tests/stress/.astra/cache/f65136cebc95448a7e93a45745cb73b3a5a01af5d82391ec29a25bd72b8239a5.json index 18064cd..2666219 100644 --- a/.astra/tests/stress/.astra/cache/f65136cebc95448a7e93a45745cb73b3a5a01af5d82391ec29a25bd72b8239a5.json +++ b/.astra/tests/stress/.astra/cache/f65136cebc95448a7e93a45745cb73b3a5a01af5d82391ec29a25bd72b8239a5.json @@ -1,5 +1,5 @@ { "result": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.", - "createdAt": 1782118381681, + "createdAt": 1782194196166, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/missions/stress_conflict_1782118381660.json b/.astra/tests/stress/.astra/missions/stress_conflict_1782194196149.json similarity index 75% rename from .astra/tests/stress/.astra/missions/stress_conflict_1782118381660.json rename to .astra/tests/stress/.astra/missions/stress_conflict_1782194196149.json index 6acfc0f..03dfdda 100644 --- a/.astra/tests/stress/.astra/missions/stress_conflict_1782118381660.json +++ b/.astra/tests/stress/.astra/missions/stress_conflict_1782194196149.json @@ -1,8 +1,8 @@ { - "missionId": "stress_conflict_1782118381660", + "missionId": "stress_conflict_1782194196149", "status": "completed", - "startTime": "2026-06-22T08:53:01.660Z", - "totalElapsedMs": 25, + "startTime": "2026-06-23T05:56:36.149Z", + "totalElapsedMs": 21, "results": { "outline": "[{\"heading\":\"본문\",\"scope\":\"전체 답변\"}]", "section_0": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.", @@ -14,30 +14,30 @@ { "from": "idle", "to": "outline", - "durationMs": 18, + "durationMs": 14, "message": "답변 구조 잡는 중...", - "ts": "2026-06-22T08:53:01.678Z" + "ts": "2026-06-23T05:56:36.163Z" }, { "from": "outline", "to": "section", - "durationMs": 2, + "durationMs": 3, "message": "본문 작성 중...", - "ts": "2026-06-22T08:53:01.680Z" + "ts": "2026-06-23T05:56:36.166Z" }, { "from": "section", "to": "polish", - "durationMs": 2, + "durationMs": 1, "message": "최종 다듬기 중...", - "ts": "2026-06-22T08:53:01.682Z" + "ts": "2026-06-23T05:56:36.167Z" }, { "from": "polish", "to": "completed", "durationMs": 3, "message": "미션 완료", - "ts": "2026-06-22T08:53:01.685Z" + "ts": "2026-06-23T05:56:36.170Z" } ], "resilienceMetrics": { diff --git a/package.json b/package.json index 5df2772..0509e53 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "astra", "displayName": "Astra", "description": "The personal intelligence layer for Antigravity and VS Code. A private cognitive partner for deep project context, memory, and proactive strategic decision-making.", - "version": "2.2.258", + "version": "2.2.259", "publisher": "g1nation", "license": "MIT", "icon": "assets/icon.png", diff --git a/src/features/datacollect/prompts/meetPrompt.ts b/src/features/datacollect/prompts/meetPrompt.ts index 6bf7e80..a0eae80 100644 --- a/src/features/datacollect/prompts/meetPrompt.ts +++ b/src/features/datacollect/prompts/meetPrompt.ts @@ -2,6 +2,13 @@ * 회의 녹취 텍스트 → 사실 기반 구조화 회의록(Actionable Minutes) LLM 프롬프트. * 사용자 정의 규칙: Fact/Discussion/Decision/Risk/Action 분류, 메타데이터 우선. * + * v2.2.259 개선(사용자 피드백 반영 — 회의록 "방향성" 개선, 외부 모범사례 근거): + * - 문체: 서술형 일기체('~논의하였다/완료하였다') → **개조식·명사형 종결**('~논의/합의/완료/필요/예정'). + * 한국 공문서·회의록 표준이자 가독성↑. 핵심 요약을 개조식 3~5줄 글머리표로. + * - 구조 순서: '주요 논의/쟁점'을 '결정 사항' **앞**으로(이슈→결정 흐름). 국제(Context→Decision→Action)· + * 국내(안건별 논의→의사결정→액션) 모범사례 일치. 옛 '논의 메모'를 상단 '주요 논의/쟁점'으로 승격·이동. + * - 참석자 명단의 "(참석자 N)" 병기 누수 차단(검증 패스가 잡던 화자번호 잔존). + * * v2.2.258 개선(사용자 피드백 반영): * - 화자: STT 화자번호("참석자 N")를 **팀/역할**로 정규화(개인명은 확실할 때만 병기). * 최종 문서에 "참석자 N" 토큰을 절대 노출하지 않는다. @@ -69,7 +76,7 @@ export function buildMeetPrompt(transcript: string, metadata: string): string { - **빈 칸은 채우지 말 것**: 표에서 값을 모르면 "—"로 둔다. placeholder를 그럴듯한 추측으로 메우지 말 것. 모든 칸이 미정인 항목은 액션이 아니라 오픈 이슈다. # 출력 검증 (Validation — 출력 전 내부 점검, 로그는 출력 금지) -① "참석자 N" 토큰이 0개인가 ② 화자가 팀/역할로 귀속됐고 개인 추측이 없는가 ③ 인접 발언을 임의 연결하지 않았는가 ④ Decision이 실제 합의인가(테스트후결정·검토필요가 섞이지 않았나) ⑤ 즉시 반박된 가설을 이슈로 격상하지 않았는가 ⑥ 같은 사실이 여러 섹션에 중복되지 않았는가 ⑦ 빈 칸을 추측으로 채우지 않았는가 ⑧ 각 항목에 [mm:ss]가 있는가. +① "참석자 N" 토큰이 0개인가(명단의 "(참석자 N)" 병기 포함) ② 화자가 팀/역할로 귀속됐고 개인 추측이 없는가 ③ 인접 발언을 임의 연결하지 않았는가 ④ Decision이 실제 합의인가(테스트후결정·검토필요가 섞이지 않았나) ⑤ 즉시 반박된 가설을 이슈로 격상하지 않았는가 ⑥ 같은 사실이 여러 섹션에 중복되지 않았는가 ⑦ 빈 칸을 추측으로 채우지 않았는가 ⑧ 각 항목에 [mm:ss]가 있는가 ⑨ 모든 문장이 개조식·명사형 종결인가(서술형 '~하였다/합니다' 0개) ⑩ '주요 논의/쟁점'이 '결정 사항' 앞에 있는가. [메타데이터] ${metaBlock} @@ -85,6 +92,10 @@ ${OUTPUT_FORMAT}`; /** 최종 회의록 출력 형식 — 단일샷(buildMeetPrompt)과 병합 단계(buildMeetReducePrompt)가 공유. */ const OUTPUT_FORMAT = `# 작성 원칙 (회의록 품질 — 출력 전 반드시 내재화) 회의록은 *대화 요약 문서*가 아니라 **프로젝트 관리 문서**다. "무엇이 결정됐는가 / 누가(어느 팀이) 무엇을 해야 하는가 / 무엇이 아직 미결인가"를 우선한다. +- **개조식·명사형 종결 (필수 문체)**: 모든 항목을 개조식으로 — 명사형 또는 '~함·됨·필요·예정·합의·완료·확인' 류로 끝맺는다. **서술형 종결어미('~하였다/했다/합니다/입니다/됩니다/할 예정이다/것으로 보인다') 금지** — 회의록은 일기·기사·서간문이 아니다. 한 항목 = 한 줄, 군더더기·접속사("따라서/그리고/하였으며") 최소화. + - 좋은 예: \`- CDN 경로는 위버스 운영툴로 관리 — 합의\` / \`- 보안 솔루션 2개사 PoC·비용 검토 완료, 최종 도입안 미정\` + - 나쁜 예: \`- CDN 경로 정보를 위버스 운영툴을 통해 관리하는 방식으로 합의하였습니다.\` / \`- …검토를 완료하였으며, 향후 …결정할 예정이다.\` +- **이슈 → 결정 흐름 (구조 순서)**: 독자가 "무슨 쟁점이 있었고 → 어떤 결정이 났는지"를 따라가도록, '주요 논의 / 쟁점'을 '결정 사항' **앞**에 둔다. **쟁점(질문·대립·선택지)은 '주요 논의'에, 결론(답)은 '결정 사항'에** 나눠 적되 — 같은 *결론*을 양쪽에 반복하지 말 것(쟁점 ≠ 결론, 중복 아님). - **한 사실은 한 섹션에만**: 같은 항목을 요약·결정·액션에 중복 기재하지 말 것. 핵심 요약은 미리보기가 아니라 다이제스트다. - **결정 ↔ 액션 경계**: 담당+행동이 있는 *일감*은 '액션 아이템' 표로 보낸다. '결정 사항'에는 **담당자 없는 순수 방향/정책 결정만** 남긴다(예: "제품 리스트 클릭 이벤트 제거하기로 함"). "구현하기로 함"처럼 누가 할 일이면 액션이다. - **결정 ≠ 검토요청**: "테스트해보고 결정 / 다시 보고 얘기 / 고민해보자"는 결정이 아니다 → 오픈 이슈. 명시적 합의만 결정. @@ -104,14 +115,22 @@ const OUTPUT_FORMAT = `# 작성 원칙 (회의록 품질 — 출력 전 반드 - **회의유형**: [데모 리뷰 / 기획 논의 등] - **녹취 길이**: [헤더에 있으면 | 없으면 생략] - **작성일**: [메타데이터의 작성일 | 생략] -- **참석자**: 역할(팀)별로 — 개인명은 명단+문맥 확실 시만 병기. "참석자 N" 절대 금지. +- **참석자**: **참여한 팀/역할만 중복 없이 나열**(예: 넥서스개발팀, 개발PM, 기획, 위버스). 개인 실명은 명단+문맥 확실 시만 병기. **괄호로라도 "(참석자 N)"을 덧붙이지 말 것** — 화자번호↔역할 매핑은 본문에서만 쓰고 명단엔 노출 금지. ## 핵심 요약 -한 문단(3~5줄)으로 **무엇을 리뷰/논의했고 / 무엇이 정해졌고 / 다음 단계가 무엇인지**를 압축한다. 회의 전체를 관통하는 **핵심 요구·결론**(특히 후반부 정리분)을 여기 맨 앞에 세운다. 디테일 나열·항목 중복 금지. **참석하지 않은 사람이 이 문단만 읽어도 결과를 파악**할 수 있어야 한다. +회의 전체를 관통하는 **핵심 요구·결론**(특히 후반부 정리분)을 맨 앞에 세우고, **개조식 3~5줄**(명사형 종결, 글머리표)로 압축한다 — 무엇을 리뷰/논의했고 / 무엇이 정해졌고 / 다음 단계가 무엇인지. **참석하지 않은 사람이 이 부분만 읽어도 결과를 파악**할 수 있어야 한다. 디테일 나열·항목 중복·서술형 종결('~하였다') 금지. +- 예) 위버스 협업 영상 보안(DRM·OTP) 강화 + 운영툴·인프라 구조 논의 +- 예) 인코딩·업로드는 자체 수행, CDN 경로는 위버스 운영툴로 관리 — 합의 +- 예) 보안 솔루션 2개사(라인컴퍼니·스틸리언) PoC·비용 검토 완료, 최종 도입안·일정 미정 + +## 주요 논의 / 쟁점 +**결정에 앞서**, 회의에서 다뤄진 안건·쟁점을 **주제별**로 먼저 제시한다(독자가 "무슨 이슈가 있었고 → 어떤 결정이 났는지" 흐름을 따라가게). 발언 나열이 아니라 **쟁점·대립·선택지 중심**의 개조식. 결론 자체는 여기 쓰지 말고 '결정 사항'으로 — 여기엔 *질문/논거/미해결*만. 각 논점 끝 [mm:ss]. +**[주제명]** +- 핵심 쟁점/논거 한 줄 (명사형 종결) — [mm:ss] ## 결정 사항 -**명시적으로 합의·확정된 순수 방향/정책 결정만** 적는다(담당 있는 일감은 액션으로). 각 줄 끝에 타임스탬프. -\`- [결정 내용] — [mm:ss]\` +위 쟁점에 대해 **명시적으로 합의·확정된 순수 방향/정책 결정만** 적는다(담당 있는 일감은 액션으로). 개조식·명사형 종결, 각 줄 끝 타임스탬프. +\`- [결정 내용 — 명사형 종결] — [mm:ss]\` (확정된 결정이 없으면 "이번 회의에서 확정된 결정사항 없음"이라고 명시 — 빈칸·생략 금지.) ## 액션 아이템 @@ -134,18 +153,13 @@ const OUTPUT_FORMAT = `# 작성 원칙 (회의록 품질 — 출력 전 반드 회의 종료 시점에 **아직 결정되지 않은 미결 사항**을 한곳에 모은다(도입 여부·정의 필요·테스트 후 결정·화자간 충돌 등). 가능하면 *누가/언제 확인*까지. 각 줄 끝 [mm:ss]. - 예) 사진 노출 개수 6 vs 8 — 기준 미정, 클라이언트 확인 필요 — [58:25] -## 논의 메모 -결정되지 않았으나 오간 논의를 **주제별 글머리표**로 간결하게(발언 나열 금지, 결과·쟁점 중심). 각 논점 끝 [mm:ss]. -**[주제명]** -- 핵심 논점 한 줄 — [mm:ss] - ## 리스크 (선택) **실제로 리스크와 (가능하면) 완화책이 논의됐을 때만** 이 섹션과 표를 만든다. 회의에서 안 다뤄졌으면 이 섹션을 **통째로 생략**한다(빈 템플릿·"[내용 확인 필요]" 골격만 남기지 말 것). '리스크'는 위험 *요인/원인*, '영향'은 현실화 시의 *결과*다 — 두 열에 같은 문장을 반복하지 말 것. 셀 안에서 줄바꿈·\`|\` 금지. | 리스크 | 영향 | 대응 방안 | 출처 | | --- | --- | --- | --- | # 최종 점검 (출력 전 내부 확인 — 체크 로그는 출력하지 말 것) -□ "참석자 N" 토큰 0개 □ 화자가 팀/역할로 귀속(개인 추측 없음) □ 결정사항에 순수 방향/정책만(일감은 액션으로) □ "테스트후결정·검토필요"가 결정에 섞이지 않음 □ 즉시 반박된 가설을 이슈로 격상 안 함 □ 화자간 충돌은 단일값 확정 말고 그대로 표기 □ 같은 사실이 여러 섹션에 중복 안 됨 □ 빈 칸은 "—"(추측 채움 없음) □ 통째 미정 항목은 오픈이슈로 □ 액션 상태가 5종 taxonomy 형식 □ 리스크는 실제 논의됐을 때만 표 띄움 □ 모든 결정·액션·논점에 [mm:ss] +□ 모든 문장이 개조식·명사형 종결(서술형 '~하였다/했습니다/할 예정이다' 0개) □ '주요 논의/쟁점'이 '결정 사항'보다 앞에 위치 □ 참석자 명단에 "(참석자 N)" 병기 0개 □ "참석자 N" 토큰 0개 □ 화자가 팀/역할로 귀속(개인 추측 없음) □ 결정사항에 순수 방향/정책만(일감은 액션으로) □ "테스트후결정·검토필요"가 결정에 섞이지 않음 □ 즉시 반박된 가설을 이슈로 격상 안 함 □ 화자간 충돌은 단일값 확정 말고 그대로 표기 □ 같은 사실이 여러 섹션에 중복 안 됨 □ 빈 칸은 "—"(추측 채움 없음) □ 통째 미정 항목은 오픈이슈로 □ 액션 상태가 5종 taxonomy 형식 □ 리스크는 실제 논의됐을 때만 표 띄움 □ 모든 결정·액션·논점에 [mm:ss] 위 형식을 정확히 따르고, 모든 내용은 한국어로 작성하시오.`;