# Astra Patch Notes

## v2.2.258 (2026-06-22)
### 📝 `/meet` 회의록 — 화자 팀/역할 정규화 + 슬림 포맷 + 타임스탬프 근거
실제 회의록 산출물(자이언츠 이머시브 커머스 데모 리뷰)을 녹취 원문과 대조한 피드백을 반영. *그 회의록 한 건을 고치는 게 아니라*, 앞으로 생성될 모든 회의록의 생성 파이프라인(프롬프트+코드+검증패스)을 개선.
- **화자 정규화(최우선)**: STT 화자번호("참석자 N")는 실명·역할이 아니고 번호↔이름 연결고리가 녹취록에 없다. 최종 문서에서 "참석자 N" 토큰을 **0개로 박멸**하고, 위험한 개인 추측 대신 **회사 표준 팀/역할**(PD·기획·사업·클라이언트·넥서스개발팀·UI·배경팀·캐릭터팀·QA·사운드·개발PM)로 귀속. 개인명은 명단+문맥 확실 시만 병기, 팀조차 불명이면 무귀속 중립 서술. 신규 설정 `g1nation.meetTeamRoster`.
- **회의 헤더 전(全)조각 주입**: 파일 상단 참석자 명단·일시·장소·녹취 길이를 파싱해 **모든 청크 추출 프롬프트에 주입**(자동 용어집과 동일 메커니즘) — 헤더가 첫 조각에만 있어 후반부 화자가 깨지던 구조적 갭 해소. 개요에 장소·회의유형·녹취길이·작성일 자동 반영. ([calendarHelpers.ts](src/features/datacollect/scheduling/calendarHelpers.ts) `extractMeetingHeader`)
- **전역 헤드라인 추출**: 12K 청크 분할의 약점(마지막 청크에만 있는 "고객 핵심 요구 3종"이 묻힘)을 reduce 단계 "전 청크 관통 결론 추출"로 해결 — 핵심 요약 맨 앞에 세움.
- **결정 게이트 강화**: "테스트 후 결정/다시 보고 얘기/고민해보자"류 조건부·미합의를 결정사항에서 빼 오픈이슈로. 담당+행동이 있는 일감은 액션으로(결정엔 순수 방향/정책만) — 결정/액션 중복 제거.
- **담화 상태 태깅**: 추출 단계가 각 제안을 `(합의)`/`(미합의)`/`(반박됨)`/`(철회됨)`으로 표시 → 즉시 일축된 가설(예: "흑인 예시")이 정식 이슈로 격상되는 것 차단. 화자간 수치 충돌(6 vs 8)은 단일값 확정 말고 그대로 명시.
- **슬림 포맷**: 7→6 섹션, 한 사실은 한 섹션에만(중복 제거), **빈 칸은 "—"**(빈 템플릿이 환각 유발), 리스크는 실제 논의됐을 때만 표 띄움. 액션 표 6→5컬럼(`담당|액션|기한|상태|출처`), 작업내용+상세 병합.
- **근거 = 타임스탬프**: STT 원문 통째 인용 대신 `[mm:ss]`로 정제(검증 점프 가능). 추출 노트엔 verbatim 보존(검증용).
- **파서 안전화**: `parseActionItems`를 **헤더명 기반 매핑**으로 재작성 — 컬럼 순서·개수가 바뀌어도(신/구 형식 모두) 캘린더 확신 게이트가 어긋나지 않음. 상태 taxonomy(확정/진행미정/기한미정/조건부/반복)·게이트는 불변.
- **검증 패스 기본 ON**: 단순 근거 존재 확인 → ①근거미확인 ②"참석자 N" 잔존 ③결정 과확정 ④폐기 가설 격상 ⑤액션 중복 **5종 점검**으로 확장(`g1nation.meetVerifyPass` 기본 true).
- 회귀 가드 갱신·신규([meetPrompt.test.ts](tests/meetPrompt.test.ts) · [meetRegistration.test.ts](tests/meetRegistration.test.ts)), 전체 698 통과. 코어 채팅 경로 불변.

## v2.2.257 (2026-06-19)
### 📝 `/meet` 회의록 — 책임 소재·근거 정책 4종 (익명 담당·빈 인용·기한·명단 정합)
실제 회의록 산출물 분석에서 드러난 4개 결함을 프롬프트 정책으로 차단. 공유 출력 형식(단일샷+reduce)과 추출(map) 단계 모두에 적용.
- **익명·번호 화자 책임 배정 금지**: "참석자 1" 같은 실명 미확인 화자를 액션 담당으로 확정하지 않고 `[미지정-확인필요]` 로 둠. 한 익명에 액션이 몰리면 "(동일 화자 여부 확인)" 표기 — 화자분리 오류로 인한 **가짜 책임 배정** 차단.
- **내용 없는 인용 금지**: "이렇게 이렇게/그거/이거" 같은 지시대명사뿐인 발화는 결정·액션 근거로 인용 불가 → 핵심 내용을 `[내용 확인필요]` 로 표기.
- **기한 역참조**: 리스크·논의에 등장한 마감("다음 주 수요일")을 결부된 액션 기한 칸에 연결 — 액션은 전부 "미정"인데 본문엔 마감이 떠 있는 모순 제거.
- **참석자 명단 정합성**: 본문 화자가 회의 개요 참석자에 없으면 "(명단 외 화자 — 확인필요)" 표기.
- §4 액션 지시문·최종 점검 체크리스트에 게이트 반영. 회귀 가드 테스트 +10건([meetPrompt.test.ts](tests/meetPrompt.test.ts)), 전체 694 통과. 코어 채팅 경로(v2.2.256)는 불변.

## v2.2.256 (2026-06-19)
### 🧩 코어 채팅 경로 — 큰 입력 청킹·통합 + 실제 컨텍스트 창 정렬 + 모델 핸들 race 수정
큰 입력을 넣으면 `Failed to acquire LM Studio model handle … Operation canceled` 로 턴 전체가 죽던 문제를 3계층으로 해결. `/meet`·`/review` 와 달리 **일반 채팅(코어 경로)** 은 그동안 단일 예산 호출이라 약한 모델·큰 입력에서 무너졌다 — 그 갭을 메움.

- **모델 핸들 race 수정**: 핸들 획득(`getModelHandle`→`llm.model()`)이 재시도 try/catch **바깥**에 있어, 라이프사이클의 동시 로드가 superseded/abort 되며 SDK 가 합쳐버린(coalesce) 우리 JIT 조회까지 "Operation canceled" 로 떨어지면 **재시도 없이 크래시**했다. 핸들 획득을 재시도 루프 안으로 넣고, 취소/죽은-핸들 류 에러는 SDK 재생성 후 1회 자동 재시도(실제 사용자 취소는 그대로 존중). 큰 입력일수록 26B 로드가 느려 race 창이 넓어져 잘 터지던 것. ([streamer.ts](src/lmstudio/streamer.ts))
- **Phase 1 — 실제 창 정렬**: 예산을 설정값(`g1nation.contextLength`)이 아니라 모델이 **실제 로드된 창**(`llm.getContextLength()`, 캐시)에 맞춰 둘 중 작은 쪽으로 클램프. 설정 32768 인데 모델이 8192/16384 로 떠 있으면 서버가 조용히 잘라 빈 답변이 나던 문제를 실측으로 차단. 불일치 시 컨텍스트 배지에 `⚠ 실제 창 N↓` 노출. ([client.ts](src/lmstudio/client.ts) · [computeBudgetedRequest.ts](src/agent/handlePrompt/computeBudgetedRequest.ts))
- **Phase 2 — 코어 채팅 Map-Reduce**: 단일 사용자 입력이 (유효 창 × `mapReduceTriggerRatio`, 기본 0.6) 을 넘으면 청크→**질의 인지형 추출**(요약 아님, 원문 사실만·추측 금지)→통합 후, 압축된 컨텍스트로 정상 스트리밍 답변. 합본이 또 넘치면 계층적 통합(`mapReduceMaxDepth`). 한 조각 실패는 부분 폴백, 전체 실패는 단발 경로로 폴백. 모두 무관하면 정직하게 "관련 내용 없음" 신호. 동시성은 로컬 GPU 보호로 기본 2. ([largeInputMapReduce.ts](src/agent/handlePrompt/largeInputMapReduce.ts))
- **Phase 3 — 메타 노출**: map-reduce 진행/결과(`N조각 → M추출`, 무관·실패)를 컨텍스트 배지에 표시. 출처 추적용 `[조각 k]` 태깅은 `g1nation.mapReduceShowProvenance` 로 옵트인.
- 신규 설정: `largeInputMapReduce`(기본 on) · `mapReduceTriggerRatio` · `mapReduceConcurrency` · `mapReduceMaxDepth` · `mapReduceShowProvenance`. 코어 경로만 변경, `/meet`·`/review` 전용 경로는 불변. 테스트 +25건(streamer·budget·map-reduce 코어), 전체 684 통과.

## v2.2.255 (2026-06-18)
### 🧩 `/review` — 코드 리뷰 map-reduce 청킹 (약한 모델도 큰 코드베이스 처리)
- 일반 에이전트 채팅은 코드 리뷰처럼 입력이 큰 작업을 단일 호출로 처리하다 약한 로컬 모델에서 빈 응답(첫 토큰 EOS)으로 무너진다. `/meet` 의 검증된 map-reduce 를 코드 리뷰에 적용한 **`/review <디렉터리|파일> [초점]`** 명령 신설. 코어 채팅 경로는 건드리지 않음.
- **Map**: 소스 파일을 하나씩 독립 리뷰(버그·보안·성능·설계·가독성, 라인 인용 근거 필수) → 파일별 노트. `callLmSynthesis` 의 재시도/출력붕괴 감지를 그대로 활용. 한 파일이 실패해도 전체를 포기하지 않고 부분 리뷰로 진행.
- **Reduce**: 노트를 통합해 우선순위가 매겨진 보고서(총평·우선개선·분류별·잘된점·다음단계). 노트가 크면 배치로 접는 **hierarchical fold** 로 reduce 입력도 약한 모델 한도(16K) 안에 유지.
- 의존성·빌드 산출물 자동 제외(`node_modules`/`dist`/`.d.ts`/`.min.js`/lock 등), 파일 30개·400KB 상한(초과 시 경고), 결과는 wiki 에 저장. 신규: [reviewPrompt.ts](src/features/datacollect/prompts/reviewPrompt.ts) · [reviewFiles.ts](src/features/datacollect/reviewFiles.ts). 테스트 +5건(전체 667 통과).

## v2.2.254 (2026-06-18)
### 🔎 빈 응답(empty response) 진단 정확도 — MoE 활성 파라미터 인식
- 일반 에이전트 채팅에서 약한 모델이 큰 입력에 첫 토큰 EOS 로 무너져 **빈 응답**이 날 때, 모델명 파서가 `gemma-4-26b-a4b` 를 "26B 큰 모델"로 오판해 엉뚱한 안내를 하던 문제. **활성 파라미터 추정**(`estimateActiveParamsB`: `a4b`→4, `A3B`→3, `e2b`→2) 추가 → MoE 를 정확히 식별. ([contextManager.ts](src/lib/contextManager.ts))
- 빈 응답 에러 메시지 개선: (1) "**답변이 길어서가 아니라 입력이 모델 용량 대비 커서**" 발생함을 명시, (2) MoE 면 `총 ~26B / 활성 ~4B` 표기 + 활성 7B+ 권장, (3) **LM Studio 로드 context length 와 `g1nation.contextLength` 불일치** 가능성을 1순위 점검 항목으로 안내. ([agent.ts](src/agent.ts))
- 참고: `/meet` 의 map-reduce 청킹은 그 명령 전용이며, 일반 채팅(코드 리뷰 등)에는 적용되지 않는다(단일 예산 호출). 테스트 +6건(전체 662 통과).

## v2.2.253 (2026-06-17)
### 🪓 /meet 조각 실패 시 절반 분할 재시도 (약한 모델 성공률↑)
- v2.2.252 의 재시도(반복 억제 강화)에도 조각이 계속 붕괴하면, 그 조각을 **줄 경계로 절반씩 쪼개 재귀 재시도**한다(12K→6K→3.5K). 입력이 작아질수록 약한 모델의 출력 붕괴 확률이 떨어지므로, **모델 교체 없이도** 추출 성공률이 오른다. 최소 크기(3.5K) 이하인데도 실패하는 구간만 건너뛴다. ([handlers.ts](src/features/datacollect/handlers.ts))
- 진행 로그에 분할 재시도 과정을 노출(`↩︎ 조각 1(12,000자) 출력 붕괴 → 절반으로 쪼개 재시도`).
- ⚠️ 근본 원인은 모델(`gemma-4-26b-a4b-it`, 활성 ~4B)이 긴 한국어 처리에 약한 것 — 분할로 완화될 뿐 완치는 **27B+급 또는 한국어 특화 모델(EXAONE/Qwen 등)** 전환 권장.

## v2.2.252 (2026-06-17)
### 🛡️ /meet 모델 출력 붕괴(degeneration) 대응 + 회의록 가이드 v2 반영
- **출력 붕괴 복원력**: 약한 로컬 모델이 긴 한국어 녹취록에서 반복 루프·토큰 깨짐("톤을 톤을 톤을…", 깨진 유니코드)에 빠져 LM 서버가 `Failed to parse input`을 던지던 문제. `callLmSynthesis`에 **재시도 내장**(시도마다 `repeat_penalty`↑ 1.1→1.25→1.4, `top_k`↓ 20→15→10으로 반복 억제 강화) + **degeneration 감지**(`looksDegenerate`) 추가. 모든 datacollect LLM 호출이 혜택. ([llm.ts](src/features/datacollect/llm.ts))
- **부분 회의록 fallback**: 긴 녹취 2단계 합성에서 한 조각이 끝내 실패해도 전체를 중단하지 않고 해당 구간만 표시 후 나머지로 **부분 회의록** 생성. 전 조각 실패 시에만 중단하고, 더 큰 모델(27B+) 사용을 안내. ([handlers.ts](src/features/datacollect/handlers.ts))
- **회의록 가이드 v2**: 섹션 우선순위 재정렬(①결정 ②액션 ③오픈이슈 ④리스크 ⑤논의), **논의사항을 주제별 bullet**로 간결화, **오픈 이슈 섹션 복원**, 액션 아이템에 **산출물 컬럼 추가**(담당·작업·기한·산출물 4요소), 담당자 개인 우선(조직 단위 지양), Executive Summary 결과 중심. ([meetPrompt.ts](src/features/datacollect/prompts/meetPrompt.ts))
- **하위호환**: 액션 표 파서가 신6컬럼/구5컬럼 모두 파싱, 섹션 번호 무관 탐지. 캘린더 확신 게이트·근거 인용 유지. 테스트 +13건(파서·degeneration 감지), 전체 659 통과.

## v2.2.251 (2026-06-17)
### 📝 /meet 회의록 출력물 개선 (실무 회의록 가이드 반영)
- **결정사항 ↔ 논의사항 분리(최우선 원칙)**: 기존 "주요 논의 사항" 안에 결정이 섞이고 "결정 사항"과 중복되던 구조를, **결정 사항(명시 합의만) / 논의 사항(추가 검토 필요)**로 명확히 분리.
- **구조 재편**: ① 회의 개요(+**회의 목적** 신규) → ② 주요 결과(Executive Summary, "비참석자가 이것만 읽고 결과 파악" 기준) → ③ 결정 사항 → ④ 논의 사항(안건별 현황/핵심논의/추가검토) → ⑤ **리스크 및 검토 사항(리스크·영향도·대응방안 표)** → ⑥ 액션 아이템.
- **결과 중심 서술**: 발언 나열 금지(누가 무슨 말 했는지 X), 책임 소재·입장 차이가 핵심일 때만 발언자 표기. 사실 중심·증빙 보존 원칙과 출력 전 품질 체크리스트를 프롬프트에 내재화. ([meetPrompt.ts](src/features/datacollect/prompts/meetPrompt.ts))
- **다운스트림 하위호환**: 회의일 추출 `**날짜**`→`**일시**`(둘 다 인식), 액션 섹션 파서를 번호 무관으로 변경(`(?:\d+\.)?액션 아이템`) — 캘린더 확신 게이트·근거 인용·발언 귀속 안전장치 전부 유지. ([calendarHelpers.ts](src/features/datacollect/scheduling/calendarHelpers.ts))
- 회귀 테스트 32건(meetRegistration·calendarApi) 통과, 타입체크 0 에러.

## v2.2.213 (2026-06-11)
### 🧠 Self-Evolving Digital Employee OS P0~P6 (신규 모듈 17종, `src/intelligence/`)
- **신뢰성 코어**: Requirement Graph(업무별 필수 요소 체크리스트 주입 + 답변 커버리지 footer) · Confidence Engine(확신도 0~100 footer) · Escalation Engine(저확신·충돌·출처누락 시 검토 요청) · Epistemic Guard(모름/추정/확실 3분류 강제) · Provenance(출처 수정일·오래됨 경고) · Critic Loop(문제 신호 turn 만 LLM 검수 1회)
- **성장 루프**: 업무 turn 마다 Reflection 자동 기록(`<brain>/.astra/growth/`) → Gap Detector → Need Engine → Learning Queue(승인은 사람만). 반복 누락 요소(3회+)는 다음 turn 체크리스트에 자동 강조.
- **지식 운영**: Knowledge Validation+Belief Revision(중복/충돌 게이트) · Decay 노후 감사 · Debt 집계 · Organizational Memory(`.astra/organization.md` 상시 주입)
- **학습 실행**: Research Agent — approved 큐 항목을 조사 브리프+추정 라벨 초안+검증 판정의 제안 문서로 생성. Skill Score(전/후반 추세)·Success Pattern DB 자동 축적.
- **신규 명령 5종**: 업무 평가 실행(회의록 골든셋) / 성장 리포트 / 학습 큐 갱신 / 지식 노후 점검 / 학습 실행(Research Agent)
- **캘린더 충돌 게이트**: `<create_calendar_event>` 가 기존 일정과 겹치면 생성 보류 + 사용자 확인 요청 (`force="true"` 는 승인 후에만). 구조화 이벤트 캐시(calendar_cache.json) 신설.
- 설정 11종 추가 (전부 기본 켜짐, `g1nation.*` 로 개별 off 가능). 테스트 +89건 (전체 508 통과). 설계: [docs/SELF_EVOLVING_OS_MASTER_PLAN.md](docs/SELF_EVOLVING_OS_MASTER_PLAN.md)

## v2.2.207 (2026-06-08)
### 🏷️ Settings 헤더에 빌드 버전 배지
- "Astra Settings" 옆에 현재 확장 버전(`v2.2.207`)을 표시 — 새 vsix가 실제로 로딩됐는지 한눈에 확인하는 마커. provider 가 `__VERSION__` 를 package 버전으로 주입(자동 동기화). ([settingsPanelProvider.ts](src/features/settings/settingsPanelProvider.ts) `_renderShell`).

## v2.2.206 (2026-06-08)
### 🗂️ Settings 패널 카테고리 탭 정리
- 길게 나열되던 9개 설정 섹션을 **4개 탭**으로 그룹핑 — **모델·연결**(연결+Cloud Providers) / **지식·기억**(메모리+두뇌) / **연동**(Datacollect+Telegram+Google) / **동작·고급**(Devil+고급).
- 표현 계층만 추가(탭 네비 + show/hide) — 요소 ID·`data-save`·리스너·`renderState`·provider 전부 무수정이라 저장 동작 그대로. 좁은 사이드뷰 대응(탭 줄바꿈), 활성 탭 기억(setState).
- 변경: [settings-panel.html](media/settings-panel.html) · [settings-panel.css](media/settings-panel.css) · [settings-panel.js](media/settings-panel.js).

## v2.2.205 (2026-06-05)
### 🧹 백엔드 분리 준비 — Bridge 타깃 토글(로컬/NAS) + /research 제거
- **Datacollect Bridge 타깃 설정** 추가 — Astra Settings 패널에서 `로컬/NAS` 전환 + NAS URL/토큰(`x-bridge-token`). 기본 `로컬` = 현행 동작 그대로. ([bridgeClient.ts](src/features/datacollect/bridgeClient.ts) · [settings-panel](media/settings-panel.html) · [settingsPanelProvider.ts](src/features/settings/settingsPanelProvider.ts))
- **`/research`(NotebookLM) 제거** — Chrome/Google 로그인 의존이라 로컬 Datacollect 앱 전용으로 분리. benchmark/youtube/wikify/blog/meet 는 유지. ([handlers.ts](src/features/datacollect/handlers.ts))

### 🛡️ 환각·오염 방지 강화 (코드 검토 기반)
- **에러로그 오염 차단** — STT/스택트레이스/에러덤프를 장기기억 채굴에서 제외(`looksLikeErrorLog`, `ERROR_NOISE`) + 자동 추출 항목에 14일 TTL(참조 시 슬라이딩 연장). 기존·수동 항목 무영향. ([LongTermMemory.ts](src/memory/LongTermMemory.ts) · [MemoryExtractor.ts](src/memory/MemoryExtractor.ts))
- **컨텍스트 주제 태깅** — 검색 청크에 `[주제]` 태그 + "다른 프로젝트·주제 섞지 말라" 경계 지침으로 무성 교차오염 방지. ([contextBudget.ts](src/retrieval/contextBudget.ts))
- **"확인 불가" 블랭킷 규칙** — 근거 없는 사실 날조 금지(수치/날짜/고유명사/결정), R7(가정 후 진행)과 구분. ([utils.ts](src/utils.ts))

### 🎙️ /meet STT 오타 보정
- 음성→텍스트 오타를 문맥·도메인 지식으로 정규화하되 **"철자 보정 ≠ 사실 날조"** 명시 — 오타 하나로 전체를 "확인 불가"로 막지 않게. metadata 를 즉석 용어집으로 활용. ([meetPrompt.ts](src/features/datacollect/prompts/meetPrompt.ts))

## v2.2.204 (2026-06-04)
### ✨ `/weekly` 전면 교체 — 캘린더 task 기반 주간 보고서 (금주/차주)
- **기존 `/weekly`(대표용 CEO 주간 리뷰 카드 — 고객/채용/런웨이 집계)는 제거**하고, `/weekly` 를 task 기반 금주/차주 보고서로 일원화. (제거: [dashboards.ts](src/features/teamops/handlers/dashboards.ts) `runWeekly` + weekly 전용 헬퍼)
- `/weekly <차주 시작일> <차주 종료일>` — 입력 날짜는 **차주** 기준, **금주**(차주 시작 직전 7일)는 자동 역산해 함께 검색.
- Google Tasks 의 마감/완료일로 금주·차주를 **코드가 버킷팅**(예측 가능), 각 task 메모(작업 상세·맥락)를 근거로 하위 세부 항목을 LLM 이 서술. `[태그]`(예: [이머시브]/[3D App]/[기타])별로 정렬된 `금주/차주` 포맷 출력.
- 신규 [weeklyPrompt.ts](src/features/datacollect/prompts/weeklyPrompt.ts) + [coordination.ts](src/features/teamops/handlers/coordination.ts) `runWeekly`.

### 🎯 `/meet` 정확도·실용성 개선
- **캘린더 task 상세 강화** — 액션 아이템 표에 "작업 상세" 열 추가, 캘린더 notes 가 *무슨 작업이고 무엇을 해야 하는지*를 담도록 재구성 ([meetPrompt.ts](src/features/datacollect/prompts/meetPrompt.ts) · [handlers.ts](src/features/datacollect/handlers.ts) · [calendarHelpers.ts](src/features/datacollect/scheduling/calendarHelpers.ts)).
- **할루시네이션·발언 오귀속 억제** — "발언자 무시" 규칙을 "발언자 추적"으로 반전, 비선형 회의 재조립("인접 ≠ 연결") + 근거·정확성 규칙(추론 금지, 불명확 시 "확인 필요", 없는 정보 날조 금지) 추가.

## v2.2.203 (2026-06-01)
### 🐛 기업모드 dev-impl — 빈 깡통 파일 99% 발생 버그 (검출+자동 재작업 기본 ON)
**증상**: 사용자가 기획서 + 폴더 주고 "여기 개발해줘" 요청 → ASTRA 가 파일·폴더 만들고 "개발 완료" 보고 → 실제 파일을 열면 **class/함수 본문이 비어 있음** (`def foo(): pass` · 빈 class · imports only). 99% 확률 재발.

**원인** (감사로 확인):
- 안전망 **이미 존재**: `selfReflectorHollow.ts` 가 정규식으로 빈 깡통 감지 + retry 로직
- BUT 두 개 config 가 모두 OFF — `selfReflectorEnabled` + `selfReflectorExternalEnabled`
- Phase A 켜면 [Self-Reflector Check] 블록이 답변에 노출 (UX 부작용), Phase B 는 +1 LLM 호출 비용 — 두 부작용 때문에 기본 OFF
- 결과: 다수 사용자가 안전망 *전혀 없는 상태* 로 코드 작성 stage 실행 → 빈 깡통 그냥 통과

**원인 분석 핵심**:
- 모델 한계도 있음 (작은 local LLM 이 다중 파일 한 번에 생성 시 attention 고갈 → 첫 2~3 파일만 완전, 나머지는 stub)
- **그러나 대부분 ASTRA 로직 fix 가능** — 안전망 존재하는데 묶여 있던 문제

**Fix 3종 (이번 빌드):**

1. **Hollow check 를 selfReflector 와 분리** — 신규 설정 2개:
   - `g1nation.hollowCheck.enabled` (boolean, **기본 ON**) — action-tag 가 있는 모든 응답에 무조건 hollow 스캔. LLM 호출 0.
   - `g1nation.hollowCheck.autoRetry` (boolean, **기본 ON**) — 검출 시 1회 자동 재작업. Phase B 와 분리, 코드 작성 stage 의 단발 추가 호출.
   - [dispatcher.ts](src/features/company/dispatcher.ts) 게이트 조건 교체 — `selfReflectorEnabled` → `hollowCheckEnabled`, `selfReflectorExternalEnabled` → `hollowCheckAutoRetry`

2. **dev-impl 프롬프트 강화** ([pipelineTemplates.ts](src/features/company/pipelineTemplates.ts)) — `[빈 깡통 금지]` 섹션 5개 규칙 추가:
   - 파일은 *하나씩* 생성, 모든 함수·메서드·클래스 본문 완전 구현 후 다음 파일로
   - **금지 패턴 명시**: `pass` · `...` · `NotImplementedError` · `# TODO` · 빈 class
   - 인터페이스/추상 메서드만 빈 본문 OK
   - 각 파일 생성 직후 자가 검증 "본문 비었나?"
   - 최종 요약에 파일별 핵심 동작 한 줄씩
   - 마지막 경고: "구조만 잡고 추후 구현" 패턴은 즉시 자동 재작업

3. **기본값 변경 — 사용자 행동 없이 안전망 작동**: hollow check 신규 toggle 둘 다 기본 ON. 옛 selfReflector Phase A/B 는 그대로 OFF (UX 부작용 보존).

**예상 효과**:
- 옛: 빈 깡통 → 그대로 disk 기록 → "완료" 보고 → 사용자 발견
- 새: 빈 깡통 → hollow detector 검출 → 1회 자동 재작업 → 다시 검출하면 사용자 경고 (무한 루프 방지)
- 작은 local LLM 대상 ~80% stub 감소 예상 (per-file 순차 생성은 v2.2.204+ 검토)

**솔직히 — 모델 한계 vs 로직 fix**:
- ✅ **로직 fix 로 70~85% 잡힘** (이번 빌드)
- ⚠️ **남은 ~15%** 는 모델 attention 한계 — *진짜 큰 프로젝트* (20+ 파일) 는 per-file 순차 생성 (B) 필요 — 다음 빌드 후보
- ⚠️ 매우 작은 모델 (≤4B) 은 한계 더 빠름 — 더 큰 모델 (gemma-12b, qwen-32b) 권장

**신규 패키징:** `astra-2.2.203.vsix`.

---



## v2.2.202 (2026-06-01)
### 🐛 기업모드 — Intent Alignment 가 일반 채팅 컨텍스트 무시하던 버그
**증상**: 사용자가 일반 채팅에서 프로젝트·요구사항을 충분히 논의한 뒤 기업모드로 전환해 *후속 작업* 을 요청하면, 분석기가 "추가 정보 필요 — 맥락/목표/기준/형식" 화면을 띄움. 사용자 입장에선 *방금 다 말한 내용을 다시 묻는* 느낌.

**원인** (감사로 확인):
- `Intent Classifier` 는 prior chat 컨텍스트(previousBrief/Tail) 를 *받음* — 그래서 "follow-up vs new task" 분기는 정확
- `Intent Alignment` (clarification 화면 만드는 분석기) 는 `IntentAnalysisInput` 인터페이스에 *chat history 필드가 없음* — 오직 현재 사용자 메시지만 봄
- 결과: 모드 전환 직후 첫 라운드의 분석기는 사용자가 이전에 일반 채팅에서 한 모든 설명을 *못 봄* → context 빈칸 → openQuestions 에 "맥락은?" 추가

**Fix:**
- [`intentAlignment.ts`](src/features/company/intentAlignment.ts) `IntentAnalysisInput` 에 `priorChatSummary?: string` 필드 추가
- 시스템 프롬프트에 *모드 전환 시 context 우선 추출* 규칙 추가 — 일반 채팅에서 명시된 항목은 *추측이 아니라 명시된 사실* 로 취급
- `_buildUserMessage()` 가 `[모드 전환 직전 일반 채팅 요약]` 블록을 user message 상단에 주입
- [`sidebarProvider.ts`](src/sidebarProvider.ts) 호출 지점에서 `this._agent.getHistory()` → 최근 10 turn (`!internal`) 추출 → `role: content` 한 줄씩, content 200자 cap
- *후속 라운드* (previousContract 있음) 면 history 중복 첨부 안 함 — 이미 contract 에 흡수됨

**효과**:
- 일반 채팅 → 기업모드 전환 시 분석기가 prior chat 의 context/goal/criteria 를 *직접 추출*
- "맥락/목표/기준/형식 다 다시 말해 주세요" 같은 redundant 질문 사라짐
- 첫 라운드부터 confidence='high' 가능 → 바로 본 작업 진행

**기능 변경 없음 외부 API**. 컨텍스트 전달 누락만 fix.

**신규 패키징:** `astra-2.2.202.vsix`.

---



## v2.2.201 (2026-05-29) 🎯
### 🏗️ 리팩터링 라운드 7 — datacollect cluster split (god-file 완전 해체)
slashRouter god-file 의 마지막 클러스터 — 6 datacollect 핸들러 (research/benchmark/youtube/blog/wikify/meet) 도메인 파일로. 더불어 LLM 호출 인프라(callLmSynthesis/repairKoreanGlitches/bridgeErrorRemedy) 도 별도 모듈로.

**slashRouter.ts: 1,229 → 201줄 (–1,028, –84%)**
**누적 (v2.2.195 부터): 4,174 → 201 (–3,973, –95%) ⭐ 95% 축소**

**신규 파일 2개:**
- `src/features/datacollect/handlers.ts`:
  - runResearch (NotebookLM Deep Research)
  - runBenchmark (Playwright + 4-렌즈 LLM)
  - runYoutube + helpers (`_looksLikeYoutubeChannelUrl`, `_normalizeYoutubeUrl`, YOUTUBE_BATCH_MAX)
  - runBlog (Blog Pipeline 안내)
  - runWikify + `wikifyOne` (P-Reinforce v3.0 위키 합성)
  - runMeet (회의록 transcript → 합성 + Tasks/Calendar 자동 등록)

- `src/features/datacollect/llm.ts`:
  - `callLmSynthesis` (bridge /api/lm 호출 — datacollect handlers + teamops/communication 양쪽 사용)
  - `repairKoreanGlitches` (한·영 토큰 깨짐 자동 교정)
  - `bridgeErrorRemedy` (환경 의존성 에러 → 사용자 해결 가이드 생성, slashRouter catch 블록이 사용)

**Wiring:**
- extension.ts — `import './features/datacollect/handlers'` 추가
- communication.ts — `callLmSynthesis` import 를 `./slashRouter` → `./llm` 로 변경
- slashRouter.ts — 모든 import 정리, vscode/logInfo/getBridgeBaseUrl/bridgeErrorRemedy 4개만 남음

**slashRouter.ts 최종 (201줄):**
- REGISTRY Map + registerSlashCommand + listSlashCommands + isSlashCommand
- handleSlashCommand (dispatcher + 에러 처리 + bridgeErrorRemedy 적용)
- Webview interface + chunk helper
- getRecentSlashCommands ring buffer

**아키텍처 감사 HIGH 1번 완전 해결 ✅**
god-file 해체 완료. 모든 슬래시 핸들러 도메인별 파일 분리, slashRouter 는 순수 dispatcher.

**전체 리팩터링 시리즈 (v2.2.195~201, 7 builds):**
- 신규 utility 5개 (eventSourcedStore, mtimeFileCache, postAnswerHooks, SystemPromptBlock Map, datacollect/llm)
- 신규 도메인 핸들러 모듈 7개 (teamops trackers/dashboards/coordination/communication + system handlers + datacollect handlers)
- slashRouter: 4,174 → 201 (–3,973, –95%)
- agent.ts: 1,617 → 1,551 (–66, –4%)
- 새 슬래시 명령 추가 = 1 파일 + 1 register call (옛 god-file 와 비교 불가능)
- 새 verification block / event store / post-answer hook = 1곳 변경

**기능 변경 없음.**

**신규 패키징:** `astra-2.2.201.vsix`.

---



## v2.2.200 (2026-05-29) 🎉
### 🏗️ 리팩터링 라운드 6 — system cluster split (마무리)
slashRouter 분리 4단계 (마지막 TeamOps 영역) — system cluster (memory/glossary/help). 4인 팀 운영 모든 핸들러 도메인 분리 완료.

**slashRouter.ts: 1,615 → 1,229줄 (–386, –24%)**
**누적 (v2.2.195 부터): 4,174 → 1,229 (–2,945, –71%)**

**신규 파일: `src/features/system/handlers.ts`**

- runMemory + _memoryOverview + _formatDate (Temporal + Distillation 진입점)
- runGlossary (Terminology Dictionary CRUD)
- runHelp + HelpCategory + HELP_CATEGORIES (카테고리별 명령 브라우저 + 엔진 상태)

**Wiring:**
- `extension.ts` — `import './features/system/handlers'` side-effect (extension.ts 가 entry point)

**전체 슬래시 분리 현황:**
```
src/features/teamops/handlers/
├── _shared.ts        (헬퍼)
├── trackers.ts       (3) v2.2.196
├── dashboards.ts     (4) v2.2.198
├── coordination.ts   (5) v2.2.199
├── communication.ts  (2) v2.2.199
└── index.ts          (barrel)

src/features/system/
└── handlers.ts       (3) v2.2.200
```

**slashRouter 잔여 (~1,229줄):**
- 인프라: REGISTRY / registerSlashCommand / chunk / Webview / isSlashCommand / handleSlashCommand / parseTaskOwner / callLmSynthesis / getRecentSlashCommands (~200줄)
- datacollect: research / benchmark / youtube / blog / wikify / meet (~1,000줄) — 다른 도메인 영역, 추후 라운드

**아키텍처 감사 5건 최종 상태:**
| Sev | 항목 | 결과 |
|---|---|---|
| HIGH | slashRouter god-file | 🟢 71% 축소 (teamops + system 완료, datacollect 만 잔여) |
| HIGH | 5-block 체인 | ✅ v2.2.195 |
| MED | 4 store 중복 | ✅ v2.2.195 |
| MED | 2-cache invariant | ✅ v2.2.197 |
| LOW | `_maybe*` hook 패턴 | ✅ v2.2.197 |

**전체 정리 시리즈 (v2.2.195~200, 6 builds):**
- 신규 utility 4개 (eventSourcedStore, mtimeFileCache, postAnswerHooks, SystemPromptBlock Map)
- 신규 도메인별 핸들러 모듈 5개 (teamops trackers/dashboards/coordination/communication + system)
- slashRouter.ts: 4,174 → 1,229 (–2,945, –71%)
- agent.ts: 1,617 → 1,551 (–66, –4%)
- 향후 새 verification block / store / hook / 슬래시 명령 추가 패턴 모두 *1곳 변경* 으로 완료

**기능 변경 없음 — 순수 구조 정리.**

**신규 패키징:** `astra-2.2.200.vsix`. 🎉 v2.2.200 통과!

---



## v2.2.199 (2026-05-29)
### 🏗️ 리팩터링 라운드 5 — coordination + communication clusters
slashRouter 분리 3단계 — coordination (5 handlers) + communication (2 handlers) 도메인 파일로. 원래 v2.2.200 예정이던 communication 도 같이 묶음 (sed 범위에 함께 잡혀 자연스러운 통합).

**slashRouter.ts: 2,537 → 1,615줄 (–922, –36%)**
**누적 (v2.2.195 부터): 4,174 → 1,615 (–2,559, –61%)**

**신규 파일 2개:**
- `src/features/teamops/handlers/coordination.ts`:
  - runTask + parseFlexibleDate (Google Tasks + Calendar 동시 등록)
  - runDecisions (Chronicle ADR 검색)
  - runOnesie (1:1 미팅 카드)
  - runBlocked (전사 지연·블로커 뷰)
  - runStandup (팀 스탠드업 카드)
- `src/features/teamops/handlers/communication.ts`:
  - runDraft + DRAFT_TYPES (6종 초안)
  - runFeedback + feedbackSave/List/Summary/Path + 2개 LLM 프롬프트

**Wiring 변경:**
- `slashRouter.callLmSynthesis` 를 `export` 로 노출 (communication 이 LLM 호출용으로 import)
- `parseTaskOwner` 옛 local 정의 삭제 (`_shared.ts` 사용)
- 옛 ParsedTaskOwner interface 삭제 (도메인별로 분산)
- 옛 orphan 주석 블록 (deletion 후 남은 `// ─── /morning` header 등) 정리

**slashRouter 잔여 (~1,615줄):**
- system: memory / glossary / help (~480줄) — v2.2.200
- datacollect: research / benchmark / youtube / blog / wikify / meet (~1,000줄) — 다른 도메인 영역, 추후
- 인프라: registerSlashCommand / chunk / Webview / parseTaskOwner / callLmSynthesis / handleSlashCommand 등 (~130줄)

**기능 변경 없음 — 순수 구조 정리.**

**신규 패키징:** `astra-2.2.199.vsix`.

---



## v2.2.198 (2026-05-29)
### 🏗️ 리팩터링 라운드 4 — dashboards cluster split
slashRouter 분리 2단계 — dashboards 클러스터 (morning/evening/cohort/weekly) 도메인 파일로.

**slashRouter.ts: 3,448 → 2,537줄 (–911, –26%)**
**누적 (v2.2.195 부터): 4,174 → 2,537 (–1,637, –39%)**

**신규 파일: `src/features/teamops/handlers/dashboards.ts`**

- runMorning + _morningActions (브리핑 카드 + 액션 도출)
- runEvening (오늘 진척 + 내일 준비 + 회고)
- runCohort + _buildMonthlyBuckets + _cohortDashboard (MoM 추세)
- runWeekly + _isoWeek + _thisWeekWindow + _priorWeekWindow + _aggregateWeek + _deltaSymbol (주간 리뷰)

**Wiring:**
- `_shared.ts` 의 fmtKrw/daysUntil/parseTaskOwner/stageEmoji/STAGE_ORDER/TERMINAL_STAGES 재사용 (trackers 와 동일)
- ChronicleProjectStore 직접 import (위클리 ADR 스캔)
- `index.ts` 배럴에 한 줄 추가 (`import './dashboards'`)

**slashRouter 잔여 (~2,540줄):**
- coordination: task / decisions / onesie / blocked / standup (~700줄) — v2.2.199 예정
- communication: draft / feedback / meet (~430줄) — v2.2.200 예정
- system: memory / glossary / help (~480줄) — v2.2.200 예정
- datacollect: research / benchmark / youtube / blog / wikify (~900줄) — 추후 (별 영역)

**기능 변경 없음 — 순수 구조 정리.**

**신규 패키징:** `astra-2.2.198.vsix`.

---



## v2.2.197 (2026-05-29)
### 🏗️ 리팩터링 라운드 3 — PostAnswerHook registry + mtimeFileCache 공유 유틸
아키텍처 감사의 MED 1건 (2 cache 동일 invariant) + LOW 1건 (`_maybeX` 3개 메서드 패턴) 마무리.

**감사 5건 누적 진행도 (라운드 1~3 완료):**
| Sev | 항목 | 결과 |
|---|---|---|
| HIGH | slashRouter god-file | 🟡 v2.2.196 trackers 분리 (–17%). 나머지 보류 — 패턴 입증됨 |
| HIGH | 5-block 체인 (system prompt) | ✅ v2.2.195 |
| MED | 4 store 중복 | ✅ v2.2.195 |
| **MED** | **terminology+termValidator 2캐시** | **✅ v2.2.197** |
| **LOW** | **`_maybe*` hook 패턴** | **✅ v2.2.197** |

---

**Part A — `src/lib/mtimeFileCache.ts` (신규 utility)**

배경: terminologyBlock 과 termValidator 가 *같은* 글로서리 파일에 *별도* mtime cache 보유. 무효화 invariant ("둘 다 함께 비우기") 가 사람 손으로 강제됨 — slashRouter 가 `/glossary reload` 시 양쪽 `clearXCache()` 모두 호출.

- `createMtimeFileCache<T>(name, parse)` — generic factory
- mtime 자동 체크, 캐시 hit / 자동 재read+parse
- `read(filePath)`, `invalidate(filePath)`, `clear()`, `size()`

**Refactor:**
- `terminologyBlock.ts` — raw 본문 cache 를 mtimeFileCache 인스턴스로
- `termValidator.ts` — parsed forbidden entries cache 를 mtimeFileCache 인스턴스로
- 각 모듈은 여전히 자기 `clearXCache()` export (slashRouter 가 둘 다 호출 — 동작 동일)
- 핵심 차이: boilerplate `if (cached && cached.mtime === mtime) return cached.content; ... ; cache.set(...)` 삭제. 새 캐시 추가 = 한 줄.

---

**Part B — `src/agent/postAnswerHooks/` (신규 registry)**

배경: `agent.ts` 의 `_maybeEmitDevilRebuttal` / `_maybePostHocSelfCheck` / `_maybeRunTermValidator` 3개 private method + 3개 import + 3개 call site. 새 hook 추가 시 *3곳* 편집 필요. 패턴 동일 (안전 fallback, try/catch swallow) — 레지스트리화.

```
src/agent/postAnswerHooks/
├── types.ts          ← PostAnswerHook 인터페이스 + Context
└── index.ts          ← 3 hooks 등록 + runPostAnswerHooks(ctx) iterator
```

**Refactor:**
- `agent.ts`: 3 method 삭제 (–66줄, 1617→1551), 3개 호출 → 1개 `runPostAnswerHooks(ctx)`
- 새 hook 추가 = `postAnswerHooks/` 에 hook 객체 push (1곳)

**효과 측정:**
- 새 후처리 hook 추가: 옛 3 step → 새 1 step
- agent.ts: –66줄

---

**기능 변경 없음 — 순수 구조 정리.** DevilRebuttal/SelfCheck/TermValidator 동작 동일, 글로서리 캐시 동작 동일.

**아키텍처 정리 시리즈 (v2.2.195~197) 총평:**
- 신규 utility 모듈 3개 (eventSourcedStore, mtimeFileCache, postAnswerHooks)
- 신규 도메인별 핸들러 모듈 1개 (teamops/handlers/{_shared,trackers,index})
- 코드 라인: slashRouter 4,174→3,448 (–726), agent.ts (–66)
- 미래 부담 감소: 새 verification block 추가 1곳, 새 store 1곳, 새 hook 1곳
- 감사 5건 중 4건 완료, 1건 (slashRouter 나머지) 보류 — 패턴 입증 후 추후 라운드

**신규 패키징:** `astra-2.2.197.vsix`.

---



## v2.2.196 (2026-05-29)
### 🏗️ 리팩터링 라운드 2 — slashRouter handler split (trackers cluster)
아키텍처 감사의 HIGH 1번 (`slashRouter.ts` 4,174줄 god-file) 해결 시작. 첫 클러스터(트래커 3개) 를 도메인별 파일로 분리해 패턴 확립. 나머지 클러스터(coordination/communication/dashboards) 는 다음 라운드.

**slashRouter.ts: 4,174 → 3,448줄 (–726, –17%)**

**신규 구조: `src/features/teamops/handlers/`**

```
src/features/teamops/handlers/
├── _shared.ts        ← fmtKrw, parseAmount, daysUntil, parseTaskOwner,
│                       STAGE_ORDER, TERMINAL_STAGES, stageEmoji
├── trackers.ts       ← runRunway, runCustomers, runHire + 각자 helpers
│                       + registerSlashCommand 3건 자기 등록
└── index.ts          ← 배럴 (`import './trackers'`)
```

**Wiring:**
- `src/extension.ts` — `import './features/teamops/handlers'` side-effect import (entry point, 순환 import 회피)
- `src/features/datacollect/slashRouter.ts` — `chunk` + `Webview` 인터페이스 export, 옛 helpers 는 `_shared.ts` 에서 alias import 로 남은 인라인 핸들러(morning/evening/cohort/weekly/blocked/standup) 호환 유지

**패턴 입증 (다음 라운드 청사진):**
- `trackers.ts` 가 작동하는 한, 같은 패턴으로 다음 클러스터:
  - `coordination.ts` — task / decisions / onesie / blocked / standup
  - `communication.ts` — draft / feedback / meet
  - `dashboards.ts` — morning / evening / cohort / weekly
- 각 클러스터 = 새 파일 + 옛 코드 sed-delete + `index.ts` 에 한 줄 추가

**Phase 1 (v2.2.195) 도 함께:** eventSourcedStore + SystemPromptBlock registry — 이미 출시. 합쳐서 감사 HIGH 2건 중 1.5건 해결, MED 1건 (4 store 중복) 해결.

**아키텍처 감사 후속 진행도:**
| Sev | 항목 | 상태 |
|---|---|---|
| HIGH | slashRouter god-file | 🟡 17% 축소 (trackers 분리). 나머지 v2.2.197+ |
| HIGH | 5-block 체인 (system prompt) | ✅ 완료 (v2.2.195) |
| MED | 4 store 중복 | ✅ 완료 (v2.2.195) |
| MED | terminology+termValidator 2캐시 | ⏳ v2.2.197 |
| LOW | _maybeEmitDevilRebuttal 류 hook 패턴 | ⏳ v2.2.197 |

**기능 변경 없음 — 순수 구조 정리.** /runway, /customers, /hire 동작 동일.

**신규 패키징:** `astra-2.2.196.vsix`.

---



## v2.2.195 (2026-05-29)
### 🏗️ 리팩터링 라운드 1 — eventSourcedStore + SystemPromptBlock registry
아키텍처 감사 결과 (HIGH 2건, MED 3건) 중 가장 효과·비용 비율 좋은 2개. 기능 변경 없음 — 순수 구조 정리.

**Phase 1 — `src/features/_shared/eventSourcedStore.ts` (신규)**

배경: customers/hire/runway/feedback 4개 store 의 `getXFilePath() + readX() + appendX()` 가 byte-for-byte 중복 (~240줄).

- `createEventStore<E>({ relPath, validate })` — generic factory
- 4개 store 가 각각 ~12줄로 축소 (event type + validator + `computeStates` 만 남음)
- BOM/인코딩 fix 같은 edge case 가 *한 곳* 에서 전파
- 도메인 로직 (`computeCustomerStates`, `computeCandidateStates`, `computeRunwayStatus`) 은 그대로 도메인 파일에 남음 — I/O 만 추상화

```typescript
// 옛 customersStore (60줄): import fs/path/vscode + getCustomersFilePath + readEvents + appendEvent
// 새 (5줄):
const _store = createEventStore<CustomerEvent>({ relPath, validate });
export const getCustomersFilePath = _store.getFilePath;
export const readEvents = _store.read;
export const appendEvent = _store.append;
```

**Phase 2 — SystemPromptBlock registry (5 필드 → 1 Map)**

배경: 새 verification 블록 추가 시 *5곳 편집 강제* — `_turnCtx` 필드 + `resetTurnContext` + `buildAstraModeSystemPrompt` 인자 + casual ternary + template literal 위치. 5번 반복 (conflict/cove/intent/citation/terminology). 이 패턴이 god-file 만드는 길.

- [agent.ts](src/agent.ts) `_turnCtx`: 5 named `string` 필드 → 1 `dynamicBlocks: Map<string, string>`
- [agent.ts](src/agent.ts) `resetTurnContext()`: 5 reset → 1 `.clear()`
- [agent.ts](src/agent.ts) `buildAstraModeSystemPrompt` 호출: 5 named param → 1 `dynamicBlocks` param
- [buildAstraModeSystemPrompt.ts](src/agent/handlePrompt/buildAstraModeSystemPrompt.ts): 5 ternary gate + 5 위치 삽입 → 1 for-loop join
- [memoryContext.ts](src/lib/contextBuilders/memoryContext.ts): 5 `turnCtx.X = build...` → 5 `blocks.set('id', build...)` (한 줄씩, 새 블록은 여기서 set 한 줄만 추가)

**효과 측정:**
- 새 블록 추가 = **25 → 1** edit 지점 (5 파일 × 5 step → 1 set call)
- 옛 5 ternary `(!isCasualConversation && X && X.trim()) ? '\n\n' + X : ''` → 1 loop, casual gate 1번
- 블록 순서 변경 = memoryContext 의 set 순서 변경만 (옛: template literal 재배치)

**아키텍처 감사 후속 작업 (예정):**
- v2.2.196 — slashRouter 4,174줄 handler 도메인별 분할 (HIGH 1, 미완)
- v2.2.197 — PostAnswerHook registry (DevilRebuttal/SelfCheck/TermValidator 패턴 통합) + mtimeFileCache 공유 유틸 (terminologyBlock + termValidator 캐시 통합)

**기능 변경 없음 — 순수 구조 변화.** 모든 verification 블록 동작 동일, 모든 store 동작 동일.

**신규 패키징:** `astra-2.2.195.vsix`.

---



## v2.2.194 (2026-05-29)
### 🔤 Post-gen Term Validator — 결정론적 글로서리 검증 (엔진 변경)
v2.2.192 의 Terminology Dictionary 가 *instructional* (LLM 에게 "표준 표기 사용" 지시) 였다면, 이건 *deterministic* — LLM 이 지시를 안 따랐을 때 결정론적 정규식 스캔으로 catch.

**감사 결과 (적용 범위 좁힘):**
- 사용자 제안 4종 중 **#1a Post-gen Validator** 만 적용 (사용자 선택)
- #1b Contextual Refiner (rewrite) — Self-Check 와 중복, latency 비용
- #2 Few-Shot Bad/Good 예시 — 글로서리 자유 markdown 이라 사용자가 직접 추가 가능
- #3 CoVe 검증 질문 — v2.2.184 + v2.2.191 에서 완료

---

**신규 모듈: [termValidator.ts](src/agent/termValidator.ts)**

- `parseGlossary(filePath)` — `.astra/glossary.md` 정규식 파싱 (mtime 캐시):
  - **Pattern 1**: `- **Canonical** (X: typo1, typo2, ...)` — typo 등장 시 "→ Canonical 권장"
  - **Pattern 2**: H2/H3 제목에 "금지/비추/forbidden/avoid/don't" 포함 섹션의 `- ❌ "phrase"` 또는 `- ❌ phrase`
- `validateTermUsage(answer, path)` — 정규식 스캔 + 발견 횟수
- `formatTermValidatorFooter(result)` — markdown 한 줄 footer
- 토큰 필터 — 한글 1음절·영문 1자·공백 포함 토큰 제외 (false-positive 최소화)
- 영문 토큰: 단어 경계 매치, 한글: substring (한글은 word boundary 의미 없음)

**비용·안전:**
- **LLM 호출 없음** — 정규식 1회, 수 ms
- 매 turn 자동 실행 (Self-Check 옆)
- 글로서리 없거나 비어 있으면 silent no-op
- 답변 자체엔 영향 없음 (Devil/Self-Check 와 같은 swallow 패턴)

**Footer 형식:**
- 위반 없음: `🔤 Term validator: ✓ 사전 N개 항목, 위반 없음`
- 위반 있음: `🔤 Term validator: ⚠️ 위반 3건 — "astra" → "ASTRA" · "chronicle 외" → "Chronicle" · "p-rein동" → "P-Reinforce"`

**Wiring:**
- [agent.ts](src/agent.ts) — `_maybeRunTermValidator` 메서드 추가, Self-Check 호출 직후
- `/glossary reload` — Term Validator 캐시도 함께 비움

**신규 설정 1개:**
- `g1nation.termValidatorEnabled` (boolean, 기본 true)

---

**ASTRA 답변 후 검증 누적 (footer 형식):**

| 빌드 | Footer | 비용 | Default |
|---|---|---|---|
| v2.2.191 | `🔍 Self-check`: 답함=✓ · 근거=○ · 모순=없음 | LLM 호출 1회 | off (opt-in) |
| **v2.2.194** | **`🔤 Term validator`: ✓ 사전 N개, 위반 없음** | **정규식 1회 (cheap)** | **on** |

**시너지:**
- Terminology Dictionary (v2.2.192) → LLM 에게 표준 표기 사용 지시 (작성 중)
- Term Validator (v2.2.194) → 그 결과를 *답변 후* 검증 + 위반 표시 (작성 후)
- 즉, *instructional + deterministic* 의 두 단계 방어선

**신규 패키징:** `astra-2.2.194.vsix`.

---



## v2.2.193 (2026-05-29)
### 📚 /help — 슬래시 명령 카테고리 브라우저 + 엔진 상태
누적된 슬래시 명령이 25개+. 사용자 발견 부담을 줄이기 위해 카테고리별 그룹핑 + ASTRA 추론 엔진 상태(6종 verification 블록 on/off) 한 화면.

**신규 `/help` 명령:**
- `/help` — 전체 명령 카테고리별 + 엔진 상태
- `/help <명령>` — 특정 명령의 짧은 설명 + 세부 도움말 안내

**카테고리 자동 그룹핑 (7개):**
- ☀️ **일과 리듬 (Daily Cycle)** — /morning · /evening · /weekly · /cohort · /standup
- 🏢 **4인 팀 운영 트래커** — /runway · /customers · /hire (event-sourced .jsonl)
- 📋 **작업·블로커·1:1** — /task · /blocked · /onesie · /decisions
- ✉️ **외부 출력·기록** — /draft · /feedback
- 🔬 **리서치·분석** — /research · /benchmark · /youtube · /blog · /wikify · /meet (Datacollect bridge)
- ⚙️ **시스템·메모리** — /memory · /glossary
- 📈 **주식·외부** — /stocks
- 🔌 **기타·외부 플러그인** — 위 카테고리에 안 잡히는 모든 명령 (외부 플러그인 자동 포함)

**ASTRA 추론 엔진 상태 (자동 표시):**
6종 verification 블록의 *현재 on/off* 를 한 화면. 각 블록의 system prompt 라벨과 *어느 시점* 에 동작하는지 표시:
- ✓ Intent Clarification — `[INTENT CLARIFICATION GUIDANCE]` (답변 시작 전)
- ✓ Terminology Dictionary — `[TERMINOLOGY DICTIONARY]` (답변 작성 중)
- ✓ Conflict Surface — `[CONFLICT WARNINGS]` (답변 작성 중)
- ✓ Chain-of-Verification — `[VERIFICATION CHECKLIST]` (답변 작성 중)
- ✓ Citation Trace — `[CITATION TRACE]` (답변 끝)
- ⊘ Post-hoc Self-Check — `footer` (답변 완료 후, opt-in)

추가 신호 (검색 단계): Recency · Actionability · Hierarchical Level · Semantic Re-rank (opt-in).
메모리 관리: Temporal Markers · Distillation Loop.

**동적 명령 목록:**
- `listSlashCommands()` 사용 — 외부 플러그인이 추가한 명령도 자동 노출
- 카테고리 매칭 함수 기반 — 새 명령 추가 시 매칭 함수만 업데이트하면 자동 분류

**신규 패키징:** `astra-2.2.193.vsix`.

---



## v2.2.192 (2026-05-29)
### 📖 Terminology Dictionary + Term Check (엔진 변경)
사용자 제안 "출력 품질 관리" 중 *진짜 새 가치* 만 추출 — Terminology Glossary 단일 메커니즘으로 #1(typo/용어 self-check) + #2(표준 용어집) 통합. **#3 sampling 튜닝은 이미 적용된 상태라 스킵**.

**감사 결과 (스킵한 이유):**
- #3 Temperature/Sampling 튜닝 → 이미 `modelTemperature=0.3`, `datacollectSynthesisTemperature=0.1`, `top_p=0.85`, `top_k=20`, `repeat_penalty=1.1`, `repairKoreanGlitches` 적용. 추가 튜닝 시 다양성↓ 위험.
- #1 별도 [Output Quality Control] 블록 → 시스템 프롬프트 비대 위험, *Glossary 블록 내 Term Check sub-clause* 로 통합이 깔끔.

---

**신규 메커니즘 — `.astra/glossary.md` 사용자 편집 파일**

- **위치**: `<workspace>/.astra/glossary.md` (설정으로 변경 가능)
- **형식**: 자유 markdown — ASTRA 는 형식 강제 안 함, 본문 통째로 시스템 프롬프트에 주입
- **권장 컨벤션** (`/glossary init` 템플릿):
  - `## 표준 표기` — `**ASTRA** (X: astra) — 본 extension` 형태
  - `## 영-한 표기 컨벤션` — Performance → 성능
  - `## 금지·비추 표현`
  - `## 슬래시 명령 표기`
- **캐시**: mtime 기반 — 사용자가 편집할 때만 다시 읽음 (매 turn 디스크 read 0회)

**시스템 프롬프트 블록 `[TERMINOLOGY DICTIONARY]`:**
1. 글로서리 본문 (cap 4000자, 초과분 잘림 안내)
2. **[Term Check — 답변 직전 자기 점검]** 5개 규칙 (사용자 제안 #1 통합):
   - 표준 표기 우선, 변형·번역 임의 적용 금지
   - 표기 흔들림 방지 (같은 답변 안에서 일관)
   - 새 용어 도입 시 "새 용어: X" 명시
   - 금지 표기 검증 + 재작성
   - 표기 확신 없으면 "글로서리에 없어 일반 표기 사용" 명시

**신규 모듈: [terminologyBlock.ts](src/retrieval/terminologyBlock.ts)**
- `buildTerminologyBlock(opts)` — 글로서리 + Term Check 합쳐 블록 생성
- mtime cache 내장
- `GLOSSARY_TEMPLATE` — 권장 템플릿 export

**신규 슬래시 명령 `/glossary`:**
- `/glossary` — 상태 카드 (파일 존재/크기/cap/주입 여부/첫 5줄 미리보기)
- `/glossary path` — 절대 경로
- `/glossary init` — 권장 템플릿으로 초기 파일 생성 (이미 있으면 덮어쓰지 않음)
- `/glossary reload` — 캐시 비우기 (편집 직후 즉시 반영 강제)
- `/glossary help` — 가이드

**Wiring:**
- [memoryContext.ts](src/lib/contextBuilders/memoryContext.ts) — 매 turn 글로서리 블록 계산 → `turnCtx.terminology`
- [agent.ts](src/agent.ts) — turn reset 시 비움, system prompt build 시 전달
- [buildAstraModeSystemPrompt.ts](src/agent/handlePrompt/buildAstraModeSystemPrompt.ts) — `[CONTEXT]` 밖, `[INTENT CLARIFICATION]` 직후 (verification 블록 군집)
- Casual conversation 모드 비활성 (greeting 에 용어 강제 의미 없음)

**신규 설정 3개:**
- `g1nation.glossaryEnabled` (boolean, 기본 true) — 마스터
- `g1nation.glossaryPath` (string, 기본 `.astra/glossary.md`)
- `g1nation.glossaryMaxBodyLength` (number 500~20000, 기본 4000)

**ASTRA 검증 6종 (engine 변경 누적, v2.2.183~192):**
| # | 블록 | 시점 | 빌드 |
|---|---|---|---|
| INTENT | `[INTENT CLARIFICATION GUIDANCE]` | 답변 시작 전 | v2.2.190 |
| **TERMINOLOGY** | **`[TERMINOLOGY DICTIONARY]`** | **답변 작성 중 (용어)** | **v2.2.192** |
| CONFLICT | `[CONFLICT WARNINGS]` | 답변 작성 중 | v2.2.183 |
| COVE | `[VERIFICATION CHECKLIST]` | 답변 작성 중 | v2.2.184 |
| CITATION | `[CITATION TRACE]` | 답변 끝 | v2.2.190 |
| SELF-CHECK | footer (separate LLM) | 답변 완료 후 | v2.2.191 |

**신규 패키징:** `astra-2.2.192.vsix`.

---



## v2.2.191 (2026-05-29)
### 🔍 추론 신뢰도 — Post-hoc Self-Check (2-pass 검증, 엔진 변경)
v2.2.190 의 #1+#2 (Intent + Citation) 짝꿍. 답변 *완료 후* 별도 LLM 호출 1회로 사후 검증. CoVe (v2.2.184) 가 *답변 전* instructional self-check 이면, 이번엔 *답변 후* 객관 평가.

**설계 결정 — 비동기 후처리:**
- 기존 `_maybeEmitDevilRebuttal` (Devil Agent) 패턴 그대로 — main turn 종료 후 비동기, 실패해도 답변 보존
- 답변이 webview 에 렌더된 직후 self-check footer streamChunk 로 append
- 사용자는 답변 즉시 보고, 1~6초 후 self-check 결과 한 줄이 아래에 추가됨

**평가 3차원 (LLM 출력 JSON):**
1. `answersQuestion` — yes/partial/no — 답변이 질문에 직접 답하나
2. `grounded` — yes/partial/no/unknown — 답변이 제공된 출처에 근거하나
3. `contradiction` — none/minor/major — 답변에 논리 모순 있나

**Footer 형식:**
```
---
_🔍 **Self-check**: 답함=✓ · 근거=○ · 모순=없음 — 답변은 직접적이나 일부 주장이 모델 일반 지식 기반 _(2.4s · gemma2:2b)__
```

**신규 모듈: [postHocSelfCheck.ts](src/agent/postHocSelfCheck.ts)**
- `postHocSelfCheck(prompt, answer, sources, opts)` — LLM 호출 + JSON 파싱 + 안전 fallback
- `formatSelfCheckFooter(result, model)` — 마크다운 footer 한 줄

**안전망:**
- 응답 파싱 실패 / 타임아웃 / 오류 → 흐릿한 한 줄 footer ("⊘ failed: ...")
- 답변 자체는 영향 없음 (Devil Agent 와 동일 패턴)
- 짧은 timeout (기본 6초)
- 별도 빠른 모델 지정 가능

**Wiring:**
- [memoryContext.ts](src/lib/contextBuilders/memoryContext.ts) — 검색 후 `turnCtx.selfCheckSources` 에 상위 5개 chunk (title, excerpt) 저장
- [agent.ts](src/agent.ts) — Devil rebuttal 옆에 `_maybePostHocSelfCheck` 호출 추가, 결과를 streamChunk 로 append

**신규 설정 3개:**
- `g1nation.selfCheckEnabled` (boolean, **기본 false** — opt-in)
- `g1nation.selfCheckModel` (string, 비면 defaultModel)
- `g1nation.selfCheckTimeoutSec` (number 1~60, 기본 6)

---

**ASTRA 검증 5종 완전체 (engine 변경 누적):**
| # | 블록 | 시점 | 모드 |
|---|---|---|---|
| INTENT (v2.2.190) | `[INTENT CLARIFICATION GUIDANCE]` | 답변 시작 전 | instructional |
| CONFLICT (v2.2.183) | `[CONFLICT WARNINGS]` | 답변 작성 중 | instructional |
| COVE (v2.2.184) | `[VERIFICATION CHECKLIST]` | 답변 작성 중 | instructional |
| CITATION (v2.2.190) | `[CITATION TRACE]` | 답변 끝 | instructional |
| **SELF-CHECK (v2.2.191)** | footer 한 줄 | **답변 완료 후** | **separate LLM call** |

**활용 권장:**
- 기본 ON 4개 (INTENT/CONFLICT/COVE/CITATION) — 즉시 활용
- `g1nation.selfCheckModel` 에 빠른 모델 설정 (예: gemma2:2b)
- `g1nation.selfCheckEnabled = true` — opt-in. footer 한 줄로 답변 품질 즉시 검증

**신규 패키징:** `astra-2.2.191.vsix`.

---



## v2.2.190 (2026-05-29)
### 🎯 추론 신뢰도 — Intent Clarification + Citation Trace (엔진 변경)
사용자 제안 "Pre-inference Contextualization + Grounding" 중 ASTRA 에 *진짜 빈* 두 영역. ASTRA 검색 엔진 자체 변경 — 매 채팅 turn 자동 적용, 슬래시 명령 없음.

**감사 결과 (분리한 이유):**
- 제안 #1 Intent Clarification → **갭 명확**: ASTRA 는 항상 답을 시도, *모호하면 묻기* 메커니즘 없음
- 제안 #2 Citation Trace → CoVe Strict (v2.2.184) 와 부분 중복, *가벼운 always-on 형제* 로 추가
- 제안 #3 Self-Correction Loop → CoVe 가 *instructional 형태* 로 이미 구현, *post-hoc 2-pass* 는 v2.2.191 에서 별도 빌드

---

**#1 Intent Clarification — 모호 질의 역질문 (기본 ON)**

신규 모듈: [intentClarification.ts](src/retrieval/intentClarification.ts)

- **5개 의도 차원 휴리스틱**:
  - `환경` — 배포/롤백 trigger + dev/prod 명시 검사
  - `대상` — 고쳐/수정 trigger + 파일/모듈/`.ts` 검사
  - `범위` — 리팩토링/정리 trigger + 전체/일부 검사
  - `포맷` — 요약/보고서 trigger + 표/리스트/markdown 검사
  - `마감` — 빨리/급함 trigger + 오늘/내일 검사
- **trigger 만 있고 specifier 없으면 missing**
- **Strictness 3-level**: low (2개+ missing), medium (1개+ missing, 기본), high (짧은 질의 추가 검사)
- **시스템 프롬프트 블록 `[INTENT CLARIFICATION GUIDANCE]`**: 모호 차원 + 권장 역질문 예시 + "사용자가 '추정해도 OK' 했으면 가정 명시 후 진행" 등 4개 규칙

**효과**: "배포해줘" → ASTRA 가 추측하지 않고 "dev 인가요 prod 인가요?" 한 줄 질문 먼저.

---

**#2 Citation Trace — 답변 끝 출처 한 줄 (기본 ON)**

신규 모듈: [citationTrace.ts](src/retrieval/citationTrace.ts)

- **CoVe Strict 와 차이**: CoVe Strict = 모든 사실 주장 뒤 inline `[S1]` (verbose). Citation Trace = 답변 끝 한 줄 정리 (가벼움).
- **시스템 프롬프트 블록 `[CITATION TRACE]`**: "답변 끝에 *출처:* 한 줄, 사용한 출처만 나열, 일반 지식이면 그 사실 명시" 등 5개 규칙
- **CoVe 와 시너지**: CoVe 가 `[S1]..[SN]` 라벨 제공, Citation 이 끝에 정리

**효과**: 답변 끝에 자동으로 `*출처:* file1.md · chunk-title2` 같은 한 줄 → 사용자 검증 가능, 할루시네이션 억제.

---

**Wiring (둘 다):**
- [memoryContext.ts](src/lib/contextBuilders/memoryContext.ts) — 검색 직후 두 블록 계산 → `turnCtx.intentClarification` / `turnCtx.citationTrace`
- [agent.ts](src/agent.ts) — turn reset 시 비움, system prompt build 시 전달
- [buildAstraModeSystemPrompt.ts](src/agent/handlePrompt/buildAstraModeSystemPrompt.ts) — `[CONTEXT]` 밖 주입. Intent block 은 다른 verification 블록보다 *앞* (모호하면 답변 자체를 안 만들어야 하므로). Citation 은 끝.

**신규 설정 3개:**
- `g1nation.intentClarificationEnabled` (boolean, 기본 true)
- `g1nation.intentClarificationStrictness` (low/medium/high, 기본 medium)
- `g1nation.citationTraceEnabled` (boolean, 기본 true)

**ASTRA 추론 엔진 검증 3종 (#2/#3/#1 시리즈와 함께):**
| 블록 | 시점 | 용도 |
|---|---|---|
| `[INTENT CLARIFICATION GUIDANCE]` | 답변 시작 전 | 모호하면 묻기 |
| `[CONFLICT WARNINGS]` (v2.2.183) | 답변 작성 중 | 충돌 출처 양측 명시 |
| `[VERIFICATION CHECKLIST]` (v2.2.184) | 답변 작성 중 | 근거 매핑 + 자기 점검 |
| `[CITATION TRACE]` | 답변 끝 | 사용 출처 한 줄 정리 |

**다음 (v2.2.191):**
- **#3 Post-hoc Self-Check** — 답변 *완료 후* LLM 호출 1회로 검증 (semantic re-rank 와 유사 패턴, 기본 OFF / opt-in)

**신규 패키징:** `astra-2.2.190.vsix`.

---



## v2.2.189 (2026-05-29)
### 📅 4인 팀 운영 12단계 — /weekly 주간 리뷰 카드 (대표용)
일 단위 리듬은 `/morning` · `/evening` 으로 단조. 주 단위 리듬은 비어 있었음 (`/standup weekly` 는 팀 공유용, 대표 전략 시야 아님). 그 갭을 메움.

**신규 `/weekly` 명령** (인자 없음, 매주 일요일/월요일 1회 실행 권장)

**`/standup weekly` 와 차이:**
- `/standup weekly` → *팀에 공유* (멤버별 완료/진행/블로커, 슬랙 복붙)
- `/weekly` → *대표가 본다* (cross-data delta, 회고 프롬프트)

**섹션 구성:**

**1. ✅ 이번 주 진척**
- **작업**: 멤버별 카운트 + 지난 주 대비 ↑↓→
- **📒 고객**: 신규/갱신/위험/이탈 이벤트 카운트 + 신규 MRR 합산
- **🎯 채용**: 신규 후보/단계 이동/합격 이벤트
- **💰 재무**: 주간 지출/수입/순 burn + 잔고 시작→끝 Δ
- **📋 결정**: 이번 주 Chronicle ADR (최대 5건)

**2. 🔄 지난 주 대비 (ISO week 기반 월~일)**
- 작업 / 신규 고객 / 이탈 / 순 burn / 채용 이벤트 — 각각 ↑↓→ delta
- 화살표 + (이번 X ← 지난 Y) 형식

**3. 🌅 다음 주 준비**
- 14일 내 갱신 (D-7 🔴 / D-14 🟡)
- 다음 주 마감 작업 카운트
- 정체 후보 (7일+ 미변동) top 3

**4. 💭 주간 회고 한 줄**
- 6개 회고 질문 풀, 주차 결정적 선택 (같은 주 = 같은 질문)
- 예: "이번 주 가장 중요한 결정은 무엇이었나? 다음 주에 어떤 결정을 미루면 안 되나?"

**ISO Week 기반 윈도우:**
- 월요일 00:00 ~ 일요일 23:59:59
- "YYYY-Wnn (M/D-M/D)" 라벨

**4인 팀 운영 누적 (1~12 — 일·주 리듬 완성):**

| 시간 | 명령 |
|---|---|
| 🌅 아침 (일) | `/morning` |
| 🌞 낮 | `/blocked`, `/task`, `/onesie @멤버` |
| 🌙 저녁 (일) | `/evening` |
| 📊 팀 공유 | `/standup` |
| 📅 **주말 (대표용)** | **`/weekly`** ⭐ |
| 📈 분기 | `/cohort` |
| 💰 트래커 | `/runway`, `/customers`, `/hire` |
| 📋 의사결정 | `/decisions`, `/draft`, `/feedback` |

**신규 패키징:** `astra-2.2.189.vsix`.

---



## v2.2.188 (2026-05-29)
### 📈 4인 팀 운영 11단계 — /cohort MoM 추세 분석
`/customers` + `/runway` 의 events 가 누적되니 *추세* 가 보임. 한 시점 스냅샷(`/morning` 같은) 이 아닌 *6~12개월 흐름* 으로 비즈니스 방향 검토. 회계 SaaS 의 board metric 의 미니 버전.

**신규 `/cohort` 명령:**
- `/cohort` — 최근 **6개월** 추세 (기본)
- `/cohort yearly` — 최근 12개월
- `/cohort <N>` — 최근 N개월 (1~24)

**섹션 구성:**

**1. 고객 & MRR 추이 (월별 테이블)**
| 월 | 신규 | 갱신 | 이탈 | MRR Δ |
- 누계: 신규 +N · 이탈 -M · 순 ±K
- MRR 순증 (추가 신규 MRR 만, 이탈 차감은 history 부재로 미반영)
- 월평균 신규/이탈 + 이탈/신규 비율 (단순 churn-rate 근사)

**2. 재무 추이 (월별 테이블)**
| 월 | 지출 | 수입 | 순 burn | 월말 잔고 |
- 6개월 누계
- 월평균 burn

**3. 💡 인사이트 한 줄 (자동 도출)**
- 🟢 최근 3개월 신규 가속 (이전 3개월 대비 +20%↑)
- 🟡 신규 둔화 (-20%↓)
- 🔴 burn 가속 (+30%↑)
- 🟢 매출 커버리지 80%+ → 흑자 임박
- 🟡 매출 커버리지 20% 미만 → 매출 기반 약함

**데이터 출처:**
- `<workspace>/.astra/customers.jsonl` (add/renew/churn timestamp 그룹핑)
- `<workspace>/.astra/runway.jsonl` (expense/revenue/snapshot 그룹핑)

**현 시점 한계 (의도적 단순화):**
- Churn MRR 감소 = 직전 mrr 추적 안 함 — 보수적으로 0 계산
- Update event 의 mrr 차이 = 0 (state 추적 없음)
- 향후 v2: customers store 에 monthly snapshot 추가하면 정확한 churn MRR 계산 가능

**4인 팀 운영 누적 (1~11단계):**
`/decisions` · `/onesie` · `/draft` · `/feedback` · `/blocked` · `/standup` · `/runway` · `/customers` · `/hire` · `/morning` · `/evening` · **`/cohort`** ⭐

**신규 패키징:** `astra-2.2.188.vsix`.

---



## v2.2.187 (2026-05-29)
### 🔍 Retrieval 의도 매칭 — Hierarchical + LLM Semantic Re-rank (엔진 변경)
사용자 제안 "지식 발굴 로직 강화" 중 *진짜 새 가치* 2개 적용. (제안의 Re-ranking 항목들 — Recency / Actionability / Conflict Check — 은 이미 v2.2.183~185 에서 완료. 제안자가 빌드 모름.)

**둘 다 ASTRA 검색 엔진 자체 변경 — 슬래시 명령 추가 없음, 매 채팅 turn 자동 적용.**

---

**#2 Hierarchical Context Window — 추상도 매칭 (기본 ON)**

신규 모듈: `src/retrieval/hierarchicalLevel.ts`

- **3-level 분류** (LLM 호출 없음, 결정적 휴리스틱):
  - `concrete` — 코드/로그/디버그/실행 (folder hints: code, log, debug; title hints: fix, bug, error)
  - `operational` — 작업/일정/운영/회의 (기본값)
  - `strategic` — 전략/비전/방향/의사결정 (folder hints: strategy, vision, decision; title hints: plan, direction)
- **질의 분류**: 키워드 우열 — `'전략 검토'` → strategic, `'버그 고쳐'` → concrete
- **재가중 정책**:
  - 같은 레벨 → × 1.15 (boost)
  - 인접 레벨 (concrete↔operational, operational↔strategic) → 변화 없음
  - 양 끝 mismatch (concrete↔strategic) → × 0.70 (penalty)
- **시점**: `RetrievalOrchestrator.retrieve()` 의 normalize 직후, 토큰 예산 직전 — 어떤 chunk 가 살아남는지에 영향
- **위치**: [hierarchicalLevel.ts](src/retrieval/hierarchicalLevel.ts) + retrieve() 파이프라인 stage ③-c

---

**#4 LLM Semantic Re-rank — 의도 매칭 (기본 OFF, 명시적 opt-in)**

신규 모듈: `src/retrieval/semanticRerank.ts`

- **로직**: 토큰 예산 통과한 `selectedChunks` 상위 K(기본 15) 를 LLM 한 번 호출로 의도 부합도 순 재정렬
- **프롬프트**: `[C1]..[CK]` 라벨 + 발췌문 → LLM 이 JSON `{"ranking":[3,1,5,...]}` 한 줄 출력
- **파싱 보호**: 응답 누락/중복/번호 오류 시 원순서 fallback. 타임아웃 시도 원순서 fallback. **재정렬 실패해도 검색 자체는 절대 실패 안 함.**
- **위험 관리**:
  - 기본 OFF — `g1nation.semanticRerankEnabled` 명시 on 필요
  - 짧은 timeout (기본 8초) — 초과 시 원순서
  - 별도 빠른 모델 지정 가능 (`g1nation.semanticRerankModel`, 예: gemma2:2b) — 메인 모델 latency 보호
- **시점**: `memoryContext.ts` 에서 retrieve() 결과의 selectedChunks 를 비동기 재정렬 후 context string 빌드
- **효과**: LLM attention 은 컨텍스트 상단에 더 강함 → 의도 부합 chunk 가 상단 → 답변 품질↑

---

**신규 설정 5개:**
- `g1nation.hierarchicalReweightEnabled` (boolean, 기본 true)
- `g1nation.semanticRerankEnabled` (boolean, **기본 false** — opt-in)
- `g1nation.semanticRerankModel` (string, 비면 defaultModel)
- `g1nation.semanticRerankCandidateK` (number 2~30, 기본 15)
- `g1nation.semanticRerankTimeoutSec` (number 1~60, 기본 8)

---

**감사 결과 — 스킵한 제안 항목:**
- #1 Graph-based Retrieval → 스킵 (마크다운 wiki brain 에 NER+그래프 인프라 비용 큼, 가치 불확실)
- #3 Re-ranking 항목들 → 이미 v2.2.183~185 에 완료:
  - Recency 가중 = scoring.ts recencyBoost
  - Actionability = actionabilityScoring.ts (v2.2.185)
  - Conflict Check = conflictBlock.ts + scoring.ts conflictMultiplier (v2.2.183)

**신규 패키징:** `astra-2.2.187.vsix`.

---



## v2.2.186 (2026-05-29)
### 🧠 메모리 라이프사이클 — Temporal Markers + Distillation Loop
사용자 제안 "정보의 계층화 + 생성 주기 관리" 중 *실제로 빈 곳* 2개에 집중. 제안의 절반은 이미 5-layer 로 구현돼 있어 *그 위에 라이프사이클 관리만 추가*.

**Part 1 — Temporal Markers (만료일)**
- `LongTermEntry` + `EpisodicEntry` 에 `expiresAt?: number` (epoch ms) 추가.
- 검색·context build 시 `expiresAt < now` 인 entry **자동 제외** — 만료 plan/decisions 가 stale 답변에 끼어드는 것 방지.
- `LongTermMemory.setExpiration(idOrPrefix, expiresAt)` API — 슬래시 명령에서 호출.
- 예: "Q3 2026 마케팅 계획" entry 에 `expiresAt = 2026-09-30` 설정 → 10월부터 검색 결과에서 자동 사라짐.

**Part 2 — Distillation Loop (stale → digest)**
- 신규 모듈: `src/memory/distillation.ts`
- 30일+ 지난 episodes → LongTerm `'episode-digest'` 카테고리로 승급. 원본은 `promoted=true` 마킹되어 검색에서 제외 (중복 노출 방지).
- 신규 LongTermCategory: `'episode-digest'` 추가.
- **LLM-less 설계 (v1)**: 기존 EpisodicEntry 의 title/summary/keyDecisions/topics 를 구조적으로 결합 — 비용 0, 결정적, 재현 가능.
- **자동 트리거**: 세션 종료 시 (마지막 실행 후 N일 경과 시만, 기본 7일 간격).
- **수동 트리거**: `/memory distill [age_days]`
- **Archive 모드 2종**:
  - `'mark-promoted'` (기본): 플래그만, 파일 보존
  - `'archive-file'`: 파일을 `memory/episodes/archive/` 로 이동

**신규 슬래시 명령 `/memory`**
- `/memory` — 현재 상태 (LongTerm/Episodic 카운트, 카테고리 분포, distillation 마지막 실행, 30일 내 만료 임박)
- `/memory distill [age_days]` — 수동 distillation (기본 30일 임계)
- `/memory expire <id-prefix> <YYYY-MM-DD>` — LongTerm entry 에 만료일 설정
- `/memory list-expiring [days]` — N일 내 만료 entry 목록 (기본 30)
- `/memory list-promoted` — 승급된 episodes (digest 형태로 LongTerm 에 살아 있음)
- `/memory help` — 명령어 가이드

**신규 설정 4개:**
- `g1nation.distillationEnabled` (boolean, 기본 true)
- `g1nation.distillationAgeThresholdDays` (number 1~365, 기본 30)
- `g1nation.distillationIntervalDays` (number 1~90, 기본 7)
- `g1nation.distillationArchiveMode` (mark-promoted/archive-file, 기본 mark-promoted)

**감사 결과 (스킵한 제안 항목):**
- L1 Working Memory → 이미 `ShortTermMemory.ts` 로 완료
- L2 Episodic → 이미 `EpisodicMemory.ts` 로 완료
- L3 unification (3 silo → 1 통합) → 스킵 (refactor 비용 > 가치, 작동 중)
- 자유 해시태그 시스템 → 스킵 (기존 카테고리 enum 으로 80% 커버)
- Conflict reconciliation 닫는 루프 → 추후 (UI 작업 + supersedeance 인프라 큼)

**신규 패키징:** `astra-2.2.186.vsix`.

---



## v2.2.185 (2026-05-29)
### 🎯 추론 품질 #1 — Actionability Scoring (맥락 가중치, 마무리)
사용자 피드백: "*단순히 키워드가 겹치는 정보가 아니라, 현재 작업의 상태와 직접적으로 연결된 지식에 더 높은 가중치를 부여*". 추론 품질 3단 시리즈의 마지막. #2 (Conflict Surface) + #3 (CoVe) 완성 위에 *검색 자체* 를 재가중하는 가장 깊은 변경.

**v1 신호 (사용자 선택):**
1. **최근 슬래시 명령** — `slashRouter` 에 in-memory ring buffer 추가. 최근 10개 (중복 제거, 최신 우선). 명령 이름 (`/runway` → `runway`) 이 chunk 내용에 단어 경계 매치 시 boost.
2. **열린 파일 경로** — VS Code 활성 에디터에서 캡처.
   - **Exact filePath 매치**: 가장 강한 boost (× 1.5)
   - **파일명 매치**: `weights.openFileNameMatch` (기본 0.40)
   - **부모 디렉터리 매치**: `weights.openFileParentDirMatch` (기본 0.20, 'src'/'lib' 제외)
   - **확장자 의미 매치**: `weights.openFileExtMatch` (기본 0.10, e.g. `.ts` → 'typescript' 단어)

**점수 결합 (보수적):**
- `finalScore = baseScore × (1 + actionabilityScore × combinedWeight)`
- `combinedWeight` 기본 0.30 → actionability=1.0 인 chunk 는 30% boost
- TF-IDF 가 여전히 dominant — actionability 는 *동점 깨기* 역할

**신규 모듈: `src/retrieval/actionabilityScoring.ts`**
- `captureWorkStateSignals(recentCmds)` — 신호 수집
- `computeActionabilityScore(chunk, signals, weights)` — 0~1.0
- `applyActionabilityBoost(chunks, signals, weights)` — 배열 in-place 재가중

**Wiring:**
- `slashRouter.ts` — 명령 실행 직전에 `pushRecentSlashCommand(head)` 호출, ring buffer 갱신
- `getRecentSlashCommands()` export — memoryContext 가 읽음
- `RetrievalOrchestrator.retrieve()` — `normalizeScores` 직후, `selectWithinBudget` 직전에 actionability 적용 (어떤 chunk 가 token 예산을 살아남는지에 영향)
- `RetrievalOptions.workStateSignals` 신규 필드 — undefined 면 legacy
- `fusionLog` 에 boosted 개수 + 시그널 요약 기록 (디버그 footer 노출 가능)

**신규 설정 1개:**
- `g1nation.actionabilityEnabled` (boolean, 기본 true) — 마스터 스위치

**추론 품질 3단 시리즈 완성:**
| # | 로직 | 효과 | 위치 |
|---|---|---|---|
| **#2** | Conflict Surface | 충돌 출처 데이터 LLM 에 노출 | `conflictBlock.ts` |
| **#3** | CoVe | 답변 직전 자기 검증 체크리스트 | `coveBlock.ts` |
| **#1** | Actionability | 작업 상태 신호로 검색 재가중 | `actionabilityScoring.ts` |

**시너지:** Actionability 가 *어떤 출처가 답변에 포함되나* 를 개선 → CoVe 가 *그 출처로 어떻게 그라운딩하나* 를 지시 → Conflict Surface 가 *충돌 출처를 어떻게 처리하나* 를 명시. 검색 → 추론 → 응답 3단계 모두 verification 적용.

**향후 #1 v2 후보 (사용자 미선택, 추후 옵션):**
- 최근 7일 Chronicle ADR / decisions 매치 boost
- 최근 24시간 customers/hire/runway 이벤트 매치 boost

**신규 패키징:** `astra-2.2.185.vsix`.

---



## v2.2.184 (2026-05-29)
### 🧭 추론 품질 #3 — Chain-of-Verification (CoVe)
사용자 피드백: "*추론 결과가 나오기 직전, 이 결론이 확보된 지식(제2뇌)에만 근거하고 있는가? 를 스스로 질문하고 검증하는 로직*" — 할루시네이션 방지 + 그라운딩 명확화.

**설계 결정 — Instructional CoVe (v1):**
원논문 CoVe 는 2-pass (draft → verify → revise). 그러나 ASTRA local-first 라 추가 LLM 호출 비용 큼 + 같은 모델 self-verify 효과 제한적. → v1 은 *instructional* — 시스템 프롬프트에 명시적 검증 체크리스트 주입해 모델이 한 패스 안에서 "답변 작성 전" 그라운딩 점검을 *내재화* 하도록. 향후 strict 모드 확장 가능 (knob 준비).

**신규 모듈: `src/retrieval/coveBlock.ts`**
- `buildCoveChecklistBlock(chunks, userPrompt, options)` — [VERIFICATION CHECKLIST] 시스템 프롬프트 블록 생성.
- **체크리스트 구조:**
  1. **근거 매핑 (Grounding Inventory)** — 상위 N 출처를 [S1]..[SN] 으로 라벨, 각 출처의 score + conflictSeverity + 발췌문.
  2. **답변 직전 자기 질문 (Pre-Output Self-Check)** — 4개 질문 (그라운딩, 단정 톤 적정성, 구체적 액션 제시, [CONFLICT WARNINGS] 와 통합).
  3. **STRICT 모드 (옵션)** — 모든 사실 주장 뒤 `[S1]` 형식 inline 인용 강제 (기본 off).

**Wiring:**
- `memoryContext.ts` — 검색 직후 CoVe 블록 계산 → `turnCtx.coveChecklist` 저장
- `agent.ts` — turn reset 시 비움, system prompt build 시 전달
- `buildAstraModeSystemPrompt.ts` — `[CONFLICT WARNINGS]` 다음, `[CONTEXT]` *밖* 에 주입 (token-truncation 보호)
- Casual conversation 모드 비활성

**신규 설정 3개:**
- `g1nation.coveEnabled` (boolean, 기본 true)
- `g1nation.coveTopSourcesCount` (number 1~15, 기본 5)
- `g1nation.coveStrictMode` (boolean, 기본 false) — inline citation 강제

**Conflict Surface 와의 시너지:**
- 둘이 보완: Conflict = "충돌 데이터 제공", CoVe = "그 데이터 어떻게 verify 할지 지시"
- 함께 켜면 (기본): 모델이 충돌 출처를 식별 → 양측 명시 → 출처 ID 표기 → 사용자 판단에 위임 (3-step 그라운딩)

**남은 작업 (#1):**
- **Actionability Scoring** — 현재 작업 상태(active slash command / 열린 파일 / 최근 ADR) 신호로 검색 재랭킹. 가장 큰 신규 설계.

**신규 패키징:** `astra-2.2.184.vsix`.

---



## v2.2.183 (2026-05-29)
### 🔀 추론 품질 #2 — Conflict Surface (모순 검증 로직 1단계)
ASTRA 의 `scoring.ts` 가 검색된 문서별로 `conflictSeverity` (NONE/LOW/MEDIUM/HIGH) 를 *이미 계산*하고 있었음 — 그런데 LLM 에게 *어느 출처가 충돌인지* 전달하지 않아 v4 정책의 "[CONFLICT WARNING] 플래그" 가 무용한 상태. 이번 빌드가 그 갭을 메움.

**신규 모듈: `src/retrieval/conflictBlock.ts`**
- `buildConflictWarningsBlock(chunks, options)` — [CONFLICT WARNINGS] 시스템 프롬프트 블록 생성.
- 두 종류 충돌 모두 surface:
  1. **자기-신호 (self-flag)** — 출처 내부에서 충돌 키워드(반대/논란/vs 등) 감지된 경우
  2. **교차-문서 발산 (cross-divergence)** — 같은 주제 ≥2 chunks 의 본문 Jaccard < 0.30 인 잠재 모순 쌍

**Wiring:**
- `memoryContext.ts` — `result.selectedChunks` 가 retrieval 완료 직후 conflict 블록 계산 → `turnCtx.conflictWarnings` 에 저장
- `agent.ts` — turn 시작 시 reset, system prompt build 시 인자로 전달
- `buildAstraModeSystemPrompt.ts` — `[CONTEXT]` *밖* 에 주입 (token-truncation 보호)
- Casual conversation 모드는 RAG 컨텍스트 자체를 안 쓰므로 충돌 경고도 생략

**프롬프트 지침 (LLM 에 명시):**
1. 답변에 위 출처 중 하나라도 사용한다면, 충돌 가능성을 명시
2. 어느 쪽이 옳다고 단정하지 말고, 사용자가 판단할 수 있도록 근거 분리 제시
3. 충돌이 답변과 무관하면 무시 가능 — 다만 무관 판단 자체도 한 줄로 기록

**신규 설정 3개:**
- `g1nation.conflictHighlightingEnabled` (boolean, 기본 true) — 마스터 스위치
- `g1nation.conflictSeverityThreshold` (low/medium/high, 기본 medium) — 자기-신호 최소 severity
- `g1nation.conflictCrossDocEnabled` (boolean, 기본 true) — 교차-문서 발산 감지 활성

**다음 (#3, #1 예정):**
- **#3 CoVe (Chain-of-Verification)** — 결론 직전 자기 검증 루프 (할루시네이션 방지)
- **#1 Actionability Scoring** — 검색 결과 재랭킹 시 현재 작업 상태 가중치 반영 (가장 큰 신규 설계)

**신규 패키징:** `astra-2.2.183.vsix`.

---



## v2.2.182 (2026-05-29)
### 🌙 4인 팀 운영 10단계 — /evening 하루 마무리 카드
`/morning` 의 짝. 하루 시작과 끝을 한 명령씩으로 단조. *오늘 무엇이 진척됐는지* 보고 → *내일 무엇을 준비할지* 확인 → *짧은 회고 한 줄* 로 마무리.

**신규 `/evening` 명령:**
- 단일 형태 — 인자 없음. 매일 저녁 한 번 실행.

**섹션 구성:**

**1. ✅ 오늘의 진척**
- **작업 완료** — 오늘 00:00 이후 completed 된 Google Tasks, 멤버별 그룹.
- **📒 고객 이벤트** — `.astra/customers.jsonl` 오늘 append (add/renew/risk/churn/note).
- **🎯 채용 이벤트** — `.astra/hire.jsonl` 오늘 append (stage 이동, offer, hire 등).
- **💰 재무 기록** — `.astra/runway.jsonl` 오늘 append (잔고/지출/수입).

**2. 🌅 내일 준비**
- 내일 마감 작업 (멤버별).
- 7일 내 갱신 — D-3 🔴 / D-7 🟡.
- 정체 후보 (7일+ 미변동) top 3.

**3. 🧭 회고 한 줄**
- 8개 회고 질문 중 *날짜 기반 결정적 선택* — 같은 날 재실행해도 동일 질문.
- 예: "오늘 가장 중요한 한 가지는 무엇이었나? 의도한 대로 됐나?"
- 답을 어디 적으면 좋은지 안내 (`/decisions` · `/feedback` · `/customers note` · `/hire note`).

**Tasks OAuth 실패 시:**
- "기록된 진척 없음" + Tasks 에러 메시지 별도 표시 — 다른 섹션은 정상 표시.

**4인 팀 운영 누적 (1~10단계 — 일과 사이클 완성):**
`/decisions` · `/onesie` · `/draft` · `/feedback` · `/blocked` · `/standup` · `/runway` · `/customers` · `/hire` · `/morning` · **`/evening`** ⭐

**일과 ritual:**
- 아침: `/morning` (긴급 + 액션 5)
- 낮: `/blocked` `/onesie @멤버` (필요 시)
- 저녁: `/evening` (진척 + 내일 + 회고)

**신규 패키징:** `astra-2.2.182.vsix`.

---



## v2.2.181 (2026-05-29)
### ☀️ 4인 팀 운영 9단계 — /morning 매일 아침 통합 대시보드
1~8단계로 만든 모든 트래커(runway / customers / hire / tasks / decisions) 의 핵심을 *한 명령*으로. CEO 의 아침 ritual — 6개 명령 안 치고 `/morning` 하나.

**신규 `/morning` 명령:**
- `/morning` — 전체 대시보드 (긴급 + 재무 + 고객 + 팀 + 채용 + 오늘의 액션)
- `/morning brief` — 짧은 버전 (긴급 + 액션 3개만, 30초 스캔용)

**섹션 구성:**
1. **🚨 긴급** — 런웨이 < 6개월, 위험 고객, 7일 내 갱신, 지연 작업, 정체 후보 — 자동 집계
2. **💰 재무** — 현금 / burn / 런웨이 신호등
3. **📒 고객** — 총 MRR + 활성/위험/이탈 + 7일 내 갱신 top 5
4. **👥 팀** — 지연/이번 주 작업 카운트 + 멤버별 지연 top 4
5. **🎯 채용** — 단계별 진행 한 줄 요약 + 정체 후보 top 3
6. **📋 오늘의 액션** — 위 데이터에서 자동 도출 top 5 (휴리스틱 우선순위)

**액션 도출 휴리스틱:**
- 우선순위: 런웨이 위험 > 위험 고객(MRR 큰 순) > 갱신 임박 > 지연 작업 > 정체 후보 > inbox 누적
- 각 액션은 *명시적 다음 행동* 포함 ("투자자 미팅", "갱신 의사 확인", "스크리닝 시간 확보" 등)

**데이터 부족 시 우아한 처리:**
- 각 섹션이 독립적으로 "데이터 없음 — `/runway cash` 로 시작" 안내.
- Tasks OAuth 실패해도 나머지 섹션 계속 표시.

**4인 팀 운영 누적 (1~9단계):**
`/decisions` · `/onesie` · `/draft` · `/feedback` · `/blocked` · `/standup` · `/runway` · `/customers` · `/hire` · **`/morning`** ⭐

**신규 패키징:** `astra-2.2.181.vsix`.

---



## v2.2.180 (2026-05-29)
### 👥 4인 팀 운영 8단계 — /hire 채용 파이프라인 트래커
4인 → 5인 이상 확장 시점. 후보자가 노션·스프레드시트·이메일에 흩어지지 않게 한 명령으로 본다. `/customers` 와 동일한 event-sourced 패턴.

**신규 `/hire` 명령 (서브명령 11개):**
- `/hire` — 파이프라인 대시보드 (역할별/단계별 현황, 정체 알림)
- `/hire add <이름> <역할>` — inbox 단계 신규 후보
- `/hire stage <이름> <새 단계>` — 단계 이동
- `/hire note <이름> <텍스트>` — 자유 메모
- `/hire offer <이름> <연봉> [입사일]` — 오퍼 발송 (단계=offer)
- `/hire hire <이름> [입사일]` — 입사 확정 (단계=hired)
- `/hire reject <이름> <사유>` — 거절 (회사 측)
- `/hire decline <이름> <사유>` — 후보 사양
- `/hire show <이름>` — 상세 + 이력 (부분 매치 OK)
- `/hire list [active/closed/단계명/역할]` — 필터 목록
- `/hire path` — 파일 위치

**기본 파이프라인:**
inbox → screened → interview → final → offer → accepted → hired
(터미널: rejected · declined)

**대시보드 핵심:**
- 진행 중 / 합격 / 종료 카운트
- **역할별 진행** (백엔드 N명 · 디자이너 M명) — 채용 균형 시야
- **단계별 후보** + 각자 정체 일수 (`⏰ N일 정체` — 7일 이상 미변동 시)
- 최근 합격 5명 (입사일 순)

**저장 — 로컬 only:**
- `<workspace>/.astra/hire.jsonl` (append-only 이벤트)
- 민감 정보(이름, 연봉, 거절 사유) 외부 안 보냄.

**4인 팀 운영 누적 (1~8단계):**
`/decisions` · `/onesie` · `/draft` · `/feedback` · `/blocked` · `/standup` · `/runway` · `/customers` · **`/hire`** ⭐

**신규 패키징:** `astra-2.2.180.vsix`.

---



## v2.2.179 (2026-05-28)
### 📒 4인 팀 운영 7단계 — /customers 고객사/MRR/갱신/위험 트래커
`/runway` 가 *지출 쪽* 시야라면 `/customers` 는 *수입 쪽*. Salesforce 없이도 4인 기업이 알아야 하는 모든 매출 정보 — MRR, 갱신 임박, 위험 고객 — 를 한 명령으로.

**Event-sourced 설계 (CRM 아님):**
- 모든 변경(add/update/renew/risk/churn/note) = append-only 이벤트.
- 현재 상태 = 같은 customerId 의 이벤트를 시간순 재생.
- 손상·실수 복구 쉬움 — .jsonl 한 줄만 지우면 그 이벤트만 무효화.

**신규 `/customers` 명령 (서브명령 10개):**
- `/customers` — 대시보드 (총 MRR, 활성/위험/이탈, 30일 내 갱신, 위험 MRR 비율)
- `/customers add <이름> <MRR> [갱신일] [요금제]` — 신규
- `/customers update <이름> mrr=… renewal=… plan=…` — 정보 수정
- `/customers renew <이름> <새 갱신일> [새 MRR]` — 갱신 처리 (active 복귀)
- `/customers risk <이름> <사유>` — 위험 표시
- `/customers churn <이름> <사유>` — 이탈 처리 (MRR 0 으로)
- `/customers note <이름> <텍스트>` — 자유 메모
- `/customers show <이름>` — 상세 + 이벤트 히스토리 (부분 매치 OK)
- `/customers list [active/risk/churned]` — 필터 목록
- `/customers path` — 파일 경로

**대시보드 핵심 지표:**
- 총 MRR + 연 환산 (자동)
- 활성/위험/이탈 카운트
- **위험 MRR 비율** — 전체 MRR 의 몇 %가 위험에 노출됐는지 (이 숫자 보고 우선순위)
- **30일 내 갱신** — D-7 🔴 / D-14 🟡 / D-30 🟢 신호등
- MRR 순 활성 고객 top 10

**금액 단위:** `200만` / `1.5억` / `300000` 모두 OK (한국식).
**갱신일:** `YYYY-MM-DD`.

**저장 — 로컬 only:**
- `<workspace>/.astra/customers.jsonl` (append-only 이벤트 로그)
- 민감 정보(고객사 이름, 매출) 외부 안 보냄.

**4인 팀 운영 누적 (1~7단계):**
`/decisions` · `/onesie` · `/draft` · `/feedback` · `/blocked` · `/standup` · `/runway` · **`/customers`** ⭐

**신규 패키징:** `astra-2.2.179.vsix`.

---



## v2.2.178 (2026-05-28)
### 💰 4인 팀 운영 6단계 — /runway 현금/소진율/런웨이 트래커
4인 기업 CEO 가 매일·매주 확인하는 가장 중요한 숫자 — *통장에 얼마, 한 달에 얼마 나감, 몇 개월 버틸 수 있나*. 회계 SaaS 연동 없이 한 명령으로 한 화면.

**신규 `/runway` 명령 (서브명령 7개):**
- `/runway` — 현재 상태 카드 (현금 / burn / 런웨이 + 위험 등급)
- `/runway cash <금액> [메모]` — 통장 잔고 스냅샷
- `/runway expense <금액> [메모]` — 지출 기록 (자동 burn 계산에 반영)
- `/runway revenue <금액> [메모]` — 수입 기록 (burn 상쇄)
- `/runway burn <월 금액>` — 월 소진율 수동 설정 (자동 계산보다 우선)
- `/runway log [N]` — 최근 N건 (기본 20, 최신순)
- `/runway path` — .jsonl 파일 위치

**금액 파싱 — 한국식 단위 그대로:**
- `5000만` / `1.5억` / `300000` / `1,500,000` / `10k` / `5m` 모두 OK.

**런웨이 위험 등급:**
- 🟢 6개월+ (안전)
- 🟡 3~6개월 (자금 계획 점검 권장)
- 🔴 3개월 미만 (즉시 조달/절감 필요)
- ♾️ 흑자 운영 (지출 ≤ 수입)

**Burn 계산 우선순위:**
1. `/runway burn` 으로 수동 설정한 값 (예측 가능, 계절성 무시)
2. 최근 30일 실적 (expense − revenue, 30일 미만이면 일평균 × 30 환산)

**저장 — 로컬 only:**
- `<workspace>/.astra/runway.jsonl` (append-only, 사람 편집 가능)
- 민감 정보(현금 잔고) 외부 안 보냄 — ASTRA local-first.

**4인 팀 운영 누적 (1~6단계):**
`/decisions` · `/onesie` · `/draft` · `/feedback` · `/blocked` · `/standup` · **`/runway`** ⭐

**신규 패키징:** `astra-2.2.178.vsix`.

---



## v2.2.177 (2026-05-28)
### 📊 4인 팀 운영 5단계 — /standup 공유용 스탠드업 카드
`/blocked` 는 *대표가 본다* (분석), `/standup` 은 *팀에 공유한다* (소통). 같은 Tasks 데이터지만 다른 포맷·관점.

**신규 `/standup [daily/weekly/monthly]` 명령:**
- 기본: `weekly` (7일 윈도우). 옵션: `daily` (1일) · `monthly` (30일).
- **멤버별 그룹핑 + 3-row 표준 스탠드업 포맷**:
  - ✅ 완료 (윈도우 내 완료, 최대 8건)
  - 🎯 진행/예정 (다가오는 마감 + 마감 미정, 최대 6건)
  - 🚧 블로커 (지연된 항목, 최대 5건)
- 멤버 정렬: 활동량(완료+진행+지연×2) 내림차순 — 가장 바쁜 사람 위.
- 부록: **이번 기간 결정 (Chronicle ADR)** 목록, 최대 10건.
- 출력: 단순 마크다운 — **슬랙·노션 그대로 복붙 가능**.

**`/blocked` vs `/standup`:**
- `/blocked`: 대표 시야 확보용. 멤버별 압박 요약 + `/onesie` 안내. 매일 아침.
- `/standup`: 팀 공유용. 표준 standup 3-row. 매일/매주 게시.

**4인 팀 운영 누적 (1~5단계):**
`/decisions` · `/onesie` · `/draft` · `/feedback` · `/blocked` · **`/standup`** ⭐

**신규 패키징:** `astra-2.2.177.vsix`.

---



## v2.2.176 (2026-05-28)
### 🚨 4인 팀 운영 4단계 — /blocked 전사 across 지연·블로커 뷰
대표의 *일일 아침 ritual* 도구. `/onesie` 가 멤버 단위라면 `/blocked` 는 전체 across 한 화면 — "오늘 어디 살펴봐야 하나" 즉시 잡힘.

**신규 `/blocked [@멤버]` 명령:**
- Google Tasks 전체 조회 후 owner 자동 추출(제목 `[멤버]` prefix · notes `담당: 이름` 패턴 모두 인식 — `/task` 와 `/meet` 양쪽 호환).
- **3개 섹션 자동 분류:**
  - 🔴 지연 (마감 < 오늘) — 가장 오래 지연된 것부터, 최대 20건
  - 🟡 이번 주 마감 (오늘~+7일) — 임박 순, 최대 15건
  - ⚪ 마감일 없음 — owner 별, 우선순위 합의 대상, 최대 10건
- **멤버별 압박 요약** (전체 보기일 때) — 지연·이번주 가중치로 정렬 → 압박 큰 멤버부터 `/onesie @<멤버>` 안내.
- `@멤버` 인자 시 그 멤버만 (압축된 1인 뷰).

**사용 예:**
- `/blocked` → 매일 아침 전체 점검
- `/blocked @기획자` → 기획자만 압축 뷰

**4인 팀 운영 누적 (1~4단계 완성):**
- `/decisions` · `/onesie` · `/draft` · `/feedback` · **`/blocked`** ⭐

**신규 패키징:** `astra-2.2.176.vsix`.

---



## v2.2.175 (2026-05-28)
### 📥 4인 팀 운영 3단계 — /feedback 고객 신호 누적 + 패턴 분석
3단계: 슬랙·이메일·CS 채널에 흩어진 고객 피드백을 한 곳에 모으고 LLM이 자동 분류·패턴 분석. **ASTRA local-first 의 강점이 가장 살아나는 영역** — 민감 정보도 외부 전송 없이 로컬 처리.

**신규 모듈 [feedbackStore.ts](src/features/feedback/feedbackStore.ts):**
- 저장 위치: `<workspace>/.astra/customer-feedback.jsonl` (한 줄 = 한 항목, append-only, 사람이 직접 편집 가능).
- `FeedbackEntry` 타입: id / timestamp / text / source / categories / sentiment.

**신규 `/feedback` 4-mode 명령:**
- `/feedback <텍스트>` — 저장 + **LLM 자동 카테고리 분류** (1~3개 카테고리 + sentiment positive/neutral/negative). LLM 분류 실패해도 원본은 보존.
- `/feedback list [카테고리]` — 누적 목록 (최신순, 최대 20건). 카테고리 필터 가능.
- `/feedback summary` — 3건 이상 누적 시 LLM 패턴 분석 리포트 (카테고리 분포 + 감정 분포 + 반복 패턴 Top 3 + 추천 액션).
- `/feedback path` — 저장 파일 경로 표시.

**사용 예:**
- `/feedback 결제 흐름이 너무 복잡해서 중간에 포기했어요 - 김XX`
- `/feedback list 결제` → 결제 카테고리 누적 피드백만
- `/feedback summary` → 전체 패턴 리포트

**다음 단계 후보** (별도): `/blocked` 전사 블로커 뷰, /feedback 자동 주간 리포트 (매주 월요일).

**신규 패키징:** `astra-2.2.175.vsix`.

---



## v2.2.174 (2026-05-27)
### 🏢 4인 팀 운영 2단계 — /onesie 1:1 카드 + /draft 외부 커뮤니케이션 초안
2단계 묶음 (1단계는 v2.2.173 `@담당자` 태그 + `/decisions`). 단독 운영자(대표)의 주간 ritual 효율화.

**신규 `/onesie [멤버]` — 1:1 미팅 준비 카드:**
- Google Tasks API 전체 조회 후 멤버 필터 (제목 `[멤버]` prefix · notes `@멤버` · notes `담당: 멤버` 패턴 모두 인식).
- 자동 카테고리: **최근 30일 완료 / 지연 / 진행 중·다가오는 / 마감일 없음**.
- Chronicle ADR 에서 해당 멤버 언급된 결정 최신 5건 동시 표시.
- **자동 대화 토픽 제안** — 상태 신호(지연 多 → 블로커, 완료 0 → 시간 사용 확인, 마감일 없음 多 → 우선순위 합의)에서 유도.
- 사용 예: `/onesie 기획자` · `/onesie @디자이너` · `/onesie 개발`.

**신규 `/draft [유형] [요청]` — 외부 커뮤니케이션 초안:**
- 6개 유형: `email` · `slack` · `blog` · `newsletter` · `investor-update` · `proposal`.
- 각 유형별 분량/구조/톤 가이드 자동 적용.
- 신규 설정 **`g1nation.teamVoiceGuide`** (multilineText) — 팀 보이스 가이드를 한 번 저장하면 모든 초안에 자동 반영.
- 사용 예: `/draft email 김 대표님께 미팅 일정 조율 요청, 다음 주 가능 시간 3개 제안`

**토대 — `listTasks` Google Tasks API 조회:**
- [tasksApi.ts](src/features/calendar/tasksApi.ts): `listTasks(context, {showCompleted, maxResults})` — 신규 `ListedTask` 타입 (id/title/status/due/completed/notes).
- /onesie 외 향후 `/blocked`, 진행률 리포트 등에 재활용 가능.

**신규 패키징:** `astra-2.2.174.vsix`.

---



## v2.2.173 (2026-05-27)
### 🏢 4인 팀 운영 — @담당자 태그 + /decisions 결정 검색
4인 단독 운영 모드(대표가 모든 데이터 입력 + ASTRA가 조회·합성·재활용 담당)의 두 가지 토대 기능.

**`/task` 에 `@담당자` 태그 추가:**
- 첫 토큰이 `@` 로 시작하면 owner 로 파싱 → 제목 앞에 `[담당자]` prefix 자동 추가.
- 사용 예: `/task @기획자 스펙 1차 정리 26/06/01 26/06/05` → Tasks/Calendar 양쪽에 `[기획자] 스펙 1차 정리` 로 표시.
- 노트에도 `담당: @기획자` 한 줄 자동 기록 → `/decisions` 가 grep 으로 찾을 수 있음.

**신규 `/decisions [키워드] [@담당자]` — Chronicle ADR 검색:**
- 이미 chronicle 이 쌓고 있는 결정 기록(`<recordRoot>/decisions/ADR-NNNN-*.md`)을 키워드 + 담당자로 검색.
- 모든 등록된 chronicle 프로젝트 일괄 스캔, 최신순, 최대 20건.
- 출력: 제목 + 날짜 + 프로젝트 + 키워드 주변 스니펫 + 파일 경로.
- 사용 예: `/decisions 환불 정책` · `/decisions @기획자` · `/decisions 결제 @개발`
- 인자 없이 실행 시 도움말 표시.

**다음 단계 후보** (별도 작업): `/onesie [멤버]` — 1:1 미팅 준비 카드, `/draft [유형]` — 외부 커뮤니케이션 초안.

**신규 패키징:** `astra-2.2.173.vsix`.

---



## v2.2.172 (2026-05-27)
### 🎛️ /meet — 기본값을 Tasks 단독 등록으로 변경 (중복 방지)
- **`g1nation.meetUsesCalendar` 기본값 `true` → `false`.** Tasks 도 Calendar 사이드바에 같이 보이므로 둘 다 켜져 있으면 동일 항목이 중복 노출(일정 + 할 일 각 1건씩)되던 문제 해결.
- 사용자 명시 설정이 없던 경우 자동으로 새 기본 적용 — 다음 `/meet` 부터 Tasks 단독.
- 양쪽 등록을 원하면 Settings 에서 `g1nation.meetUsesCalendar` 를 true 로 명시 토글.
- `/task` 명령은 변경 없음 — 사용자가 직접 호출한 명령이라 항상 양쪽 등록.
- **신규 패키징:** `astra-2.2.172.vsix`.

---



## v2.2.171 (2026-05-27)
### 📋 신규 `/task` — Google Tasks + Calendar 양쪽 단발 등록
- **사용법:**
  - `/task <제목> <시작일> <완료일>` — 기간 작업 (예: `/task Apple 계정 생성 요청 26/05/27 26/06/28`)
  - `/task <제목> <날짜>` — 하루짜리 작업 (시작=완료, 같은 날)
- **날짜 형식 3종 지원**: `YY/MM/DD` · `YYYY-MM-DD` · `YYYY/MM/DD`. 유효성 검증(2/30 같은 잘못된 날짜 차단) 포함.
- **항상 양쪽 등록** — `/meet` 과 달리 사용자가 직접 호출한 명령이므로 `meetUsesTasks` / `meetUsesCalendar` 설정 무시하고 무조건 Tasks + Calendar 둘 다 등록.
- Tasks: 마감일만 (모델 한계 — 시작일은 노트에 기록). Calendar: all-day 기간 일정(end-exclusive 자동 보정으로 완료일 포함 표시).
- 성공/부분 실패/전체 실패 각각 명확한 메시지 + Calendar 이벤트 deep link 표시.
- **신규 패키징:** `astra-2.2.171.vsix`.

---



## v2.2.170 (2026-05-27)
### 📝📅 /meet — Tasks + Calendar 양쪽 동시 등록 (독립 토글)
- **v2.2.169의 either/or 분기 → 양쪽 동시 등록**으로 변경. 사용자 요청 반영 ("캘린더에도 등록되고 Tasks로도 등록되게").
- **신규 설정** `g1nation.meetUsesCalendar` (기본 `true`). 기존 `meetUsesTasks` 와 **독립 토글** — 둘 다 true(기본)면 양쪽 동시 등록, 한쪽만 true면 그쪽만, 둘 다 false면 자동 등록 건너뜀.
- **출력 포맷 개선**: 각 액션 아이템 옆에 어디에 성공/실패했는지 표시 — `(Tasks + Calendar)` 또는 `⚠️ Calendar: <에러>`. 마지막 요약도 destination 별로 분리 (`Tasks 5/5 · Calendar 5/5`).
- 기존 동작 호환: `meetUsesTasks=false` + `meetUsesCalendar=true` 로 두면 2.2.168 이전과 동일 (Calendar 만 등록).
- **신규 패키징:** `astra-2.2.170.vsix`.

---



## v2.2.169 (2026-05-27)
### 📝 /meet 액션 아이템 → Google Tasks 등록 (Calendar 일정에서 변경)
- **신규 Google Tasks API 통합** ([tasksApi.ts](src/features/calendar/tasksApi.ts)) — `createTask(context, {title, due, notes})`. Calendar / Sheets 와 동일한 OAuth 토큰 공유, 새로 추가된 `tasks` 스코프 사용.
- **`/meet` 라우팅 변경**: 액션 아이템은 시간 없이 마감일만 있는 "할 일" 이라 **Google Tasks 모델에 더 자연스럽게 맞음**. 기존엔 Calendar all-day 일정으로 등록돼 주 캘린더에 "conference call" 유형으로 표시되던 문제 해결.
- **신규 설정 `g1nation.meetUsesTasks`** (기본 `true`) — false 로 두면 기존 Calendar 일정 등록으로 fallback.
- **OAuth 스코프 추가**: `https://www.googleapis.com/auth/tasks` 가 SCOPE 에 추가됨. **기존 OAuth 한 사용자는 재인증 필수** — 새 스코프는 옛 refresh token 에 없음.
- **사용자 액션 필요 (1회)**:
  1. **Google Cloud Console 에서 Tasks API 활성화**: https://console.developers.google.com/apis/api/tasks.googleapis.com/overview
  2. VS Code 에서 `Astra: Google Calendar OAuth 연결 (쓰기)` 명령 재실행 — Tasks 스코프 동의 화면이 새로 뜬다.
- 권한 부족 시 친화 안내 메시지 자동 표시 (어떤 명령을 재실행해야 하는지).
- **신규 패키징:** `astra-2.2.169.vsix`.

---



## v2.2.168 (2026-05-27)
### 📦 재패키징 (소스 변경 없음)
- ASTRA 소스 변경 없음. 별개로 적용한 **Datacollect Bridge `/api/lm` 복원력 수정**(LM 서버가 raw text 응답해도 OpenAI shape 으로 wrap → ASTRA `/youtube info` 등이 깨진 에러 벽 대신 정상 결과를 받음)에 맞춰 깨끗한 설치본 제공.
- **신규 패키징:** `astra-2.2.168.vsix`.

---



## v2.2.167 (2026-05-27)
### 🔬 /stocks analysis — 분석 로직 정밀화 (사용자 피드백 5건 반영)
**로직 수정 (yahooClient.ts):**
- **MA224 3-state 도입** — passed / failed / **`notApplicable`** (N/A). 현재가가 MA224 보다 +20% 이상 위면 추세 이미 확립 상태로 보고 N/A 처리. ❌ 미통과로 표기하던 오해 차단(예: 삼성전자우 +93% 위에 있는데도 ❌ 표시되던 문제).
- **낙폭과대 `failReason` 명시** — 두 조건(고점 -25% / 저점에서 +10%) 중 어느 게 어긋났는지 구체 사유 반환. LLM 이 인과 거꾸로 해석("64% 반등이라서 미통과") 하던 문제 차단.

**데이터 보강 (slashStocks.ts):**
- **우선주 자동 감지** (symbol 끝자리 5/7/9 → 보통주 자동 도출, 예: 005935→005930). 보통주 현재가 자동 fetch 후 **할인율** 계산. 할인 범위 가이드 동봉 (10~30% 정상, <10% 프리미엄, ≥30% 확대).

**프롬프트 강화 (ANALYSIS_SYSTEM_PROMPT):**
- **판단 절제 규칙 4건 신설**:
  - (a) PBR/PER 절대값으로 "고평가/저평가" 단정 금지 — 업종 평균 부재 시 절대값만 제시
  - (b) 거래량 ±20% 미만은 무의미 — "상승 동력 약화" 같은 강한 해석 금지(예: -9% 변동이 부정 신호로 잡히던 문제)
  - (c) 우선주 특이항목 반영 필수 — `[우선주 정보]` 블록 있으면 할인율을 매수 의견 근거에 반영
  - (d) 오탈자 자기 점검 — "순위→순칭", "근거→근례" 같은 한국어 토큰 깨짐 방지
- MA224 N/A 상태 / 낙폭과대 failReason 을 LLM 이 인지하도록 6차원 평가 가이드 갱신.

**보류** (별도 작업 필요): 배당수익률 fetch (Naver crawl 확장), 섹터 자동 보강.

**신규 패키징:** `astra-2.2.167.vsix`.

---



## v2.2.166 (2026-05-27)
### 💹 /stocks analysis — 매매 타점(진입·손절·익절·관망 해제) 신규 섹션
- **신규 `## 매매 타점` 섹션** ([ANALYSIS_SYSTEM_PROMPT](src/features/stocks/slashStocks.ts)) — 매수 의견 바로 아래, 리스크 위.
- **4개 sub-section** (사용자 제공 매매 규칙을 raw 데이터 기반으로 적응):
  1. **매수 진입 타점** — 3순위 시나리오(MA20 지지 / MA60 눌림 / 낙폭과대+RSI≤30) 중 현재 기술 상태에 부합하는 것만 출력. 회피 권장도면 sub-section 생략.
  2. **손절 기준** — 종가 기준 이탈 (장중 터치 미적용). 매수 시나리오별 (MA20/MA60/60일저점) 가격 + 최대 허용 손실%.
  3. **익절 타점** — 1차(1년 최고가×0.98) → 2차(라운드 넘버) → 3차(업종 PER 비교, 데이터 미수집 명시).
  4. **관망 해제 트리거** — 권장도가 "관망"일 때만 출력. 4개 트리거 중 2개+ 충족 시 진입.
- **LLM이 raw 데이터로 실제 가격 채우도록** — `__원` placeholder 금지, 실제 MA값·1년 고가·60일 저점으로 구체화. 권장도/기술 상태에 따라 적응적으로 출력(부적합 시나리오는 생략).
- **신규 패키징:** `astra-2.2.166.vsix`.

---



## v2.2.165 (2026-05-27)
### 📋 /youtube info — 3-tier 재설계 (중복 제거 + 깊이 단순화 + 표 제거)
- **앞 턴(2.2.164)의 "대시보드 위에 추가" 방식이 중복을 만들었다는 사용자 피드백 수용.** 9개 섹션 → **4개 ## 섹션 3-tier 구조**로 재설계.
- **새 구조** ([youtubePrompts.ts:buildInfoExtractionPrompt](src/features/datacollect/prompts/youtubePrompts.ts)):
  1. **30초 요약** (skim) — 한 줄 + 핵심 포인트 3개 + 화자 한 줄 비유. 바쁜 사람은 여기서 멈춤.
  2. **핵심 개념 설명** (이해) — 영상이 사용한 주요 개념·용어 2-5개 정의 + 등장 맥락.
  3. **깊이 분석** (deep dive) — 타임라인 / 결정적 발언 / 더 파고들 질문 / 구체 수치.
  4. **정리자 노트** (선택) — `[정리자 추론]` 라벨 전용.
- **중복 제거**: "한 줄 요약"은 30초 요약에 한 번만. 기존엔 대시보드·TL;DR·핵심 주장에 분산.
- **표 → bullet**: "사실·데이터" 표가 깨진 셀(`way` 같은 LLM artifact)을 노출하던 문제 → 표 금지, bullet로만, 완성된 항목만.
- **헤더 이모지 제거**: 스캔할 때 시선이 분산되어 내용을 가린다는 피드백 수용. 모든 ## · ### 헤더에서 이모지 제거.
- **신규 시스템 원칙 3건 추가**: 헤더 이모지 금지 / 표 사용 신중 / 중복 금지.
- **신규 패키징:** `astra-2.2.165.vsix`.

---



## v2.2.164 (2026-05-27)
### 📋 /youtube info — 상단 "구조화된 요약" 대시보드 추가
- **신규 `## 📋 구조화된 요약` 섹션**을 메타데이터 바로 아래에 추가 ([youtubePrompts.ts:buildInfoExtractionPrompt](src/features/datacollect/prompts/youtubePrompts.ts)).
- 하위 3개 sub-section:
  - **🎯 핵심 3요소**: 주제 / 핵심 주장 / 근거·사례
  - **⏱️ 타임라인 기반 요약**: 30분 이상 영상은 4-7개 구간 압축, 미만은 생략(`🧭 구조 요약` 참조)
  - **📝 한 줄 요약 + 기억할 포인트 3~5개**
- 기존 8개 섹션(`🎯 한 줄 요약`·`💡 화자 한 줄 비유`·`📌 핵심 주장`·`📊 사실·데이터·인용`·`🧭 구조 요약`·`🔗 인용용 카드`·`❓ 더 파고들 질문`·`🧩 정리자 노트`)은 그대로 유지 — 대시보드는 *압축 버전*, 아래 섹션들은 *깊이 버전*.
- 약간의 redundancy(한 줄 요약 두 번 등장)는 의도 — 대시보드에서 빠르게 잡고, 필요하면 깊이 섹션에서 풀어 읽는 dual-layer.
- **신규 패키징:** `astra-2.2.164.vsix`.

---



## v2.2.163 (2026-05-27)
### 📊 /stocks analysis 6차원 확장 + 신규 /stocks position
- **`/stocks analysis` 6차원으로 확장** — 가이드(주식 분석 6단계) 흡수:
  - 부채비율 추가 (재무 안정성 차원 강화 — 200% 이하 안전, 100% 이하 우량)
  - **MA 정배열/역배열** (5/20/60/120일 이평선 배열 판정 — 추세 차원에 추가)
  - **RSI(14)** (Wilder's smoothing, 과열≥70 / 침체≤30 / 중립 — 진입 타이밍 신규 차원)
  - LLM 시스템 프롬프트도 6차원 + 각 지표 해석 가이드로 갱신
  - 추가 API 호출 없음 — 이미 fetch한 1년 시세에서 모두 계산
- **신규 `/stocks position [심볼] <총자산> <리스크%> <손절%>`** — 포지션 사이징 계산기:
  - 공식: `권장 투자금 = 총자산 × 리스크% ÷ 손절%` (가이드 5단계)
  - 심볼 주면 Yahoo 현재가로 **매수 가능 주수**까지 자동 계산
  - 권장 투자금이 총자산의 50% 초과 시 입력값 재검토 경고
  - 별칭: `/stocks size`
- **보류한 가이드 항목** (현실적 한계): PEG(이익 성장률 데이터 부재), 업종 평균 PER / 5년 역사적 PER(별도 데이터소스 필요), 사업 해자(LLM 환각 위험), MACD(우선순위 낮음).
- 새 helper ([yahooClient.ts](src/features/stocks/yahooClient.ts)): `evalMaAlignment`, `evalRsi14`.
- **신규 패키징:** `astra-2.2.163.vsix`.

---



## v2.2.162 (2026-05-27)
### 🔎 /stocks analysis &lt;심볼&gt; — 단일 종목 심층 분석
- **신규 sub-command** ([slashStocks.ts](src/features/stocks/slashStocks.ts)): 한 종목에 대해 Naver 펀더멘털 fresh fetch + Yahoo 1년 시세 기반 기술 지표(224일선 회복, 낙폭과대) + LLM 종합 평가까지 한번에. `stocks.json` 미등록 종목도 가능.
- **차이점** vs 기존 `/stocks judge`: judge는 stocks.json 저장된 펀더멘털만 사용한 4-criteria 평가. analysis는 fresh fetch + 차트 패턴 + LLM 매수권/관망/회피 권장도.
- **출력 형식 (LLM 강제):** `## 종합 평가` 2-3문장 / `## 매수 의견` 권장도 + 근거(수치 인용) / `## 리스크` 1-2줄.
- **데이터 투명성:** LLM에 보내는 raw 데이터 요약을 사용자에게도 코드블록으로 먼저 표시. 모델 응답과 비교 검증 가능.
- 별칭: `/stocks analyze <심볼>` 도 동일하게 동작.
- **신규 패키징:** `astra-2.2.162.vsix`.

---



## v2.2.161 (2026-05-22)
### 📈 /stocks discover — 낙폭과대 키워드 + 224회복 거래량 확인
- **신규 `낙폭과대` 키워드** ([evalDropRecovery](src/features/stocks/yahooClient.ts)): 영상(주식단테 "이미 빠진 종목 + 바닥 찍고 회복")의 정량화. 현재가 ≤ 1년 최고가 × 0.75(25%↓) AND 현재가 ≥ 60일 최저가 × 1.10(저점에서 10%↑) → `낙폭과대` +1. 224회복(추세 전환)과는 다른 각도 — 안전마진 + 반등 초입.
- **`224회복` 거래량 확인 강화** ([evalMa224Recovery](src/features/stocks/yahooClient.ts)): 기존 가격 조건에 더해 최근 5일 평균 거래량 ≥ 60일 평균 × 1.2 요구. 거짓 돌파(일시적 가격 튐) 필터. 거래량 데이터 부족 시 가격 조건만으로 판정(폴백).
- 추가 API 비용 없음 — `fetchYahooHistory`가 이미 1년 일봉을 가져오므로 거래량·1년 max·60일 min 계산만 추가.
- 결과 표시 예: `통과 (5): ROE, 수익성, 저평가, 224회복, 낙폭과대`.
- **신규 패키징:** `astra-2.2.161.vsix`.

---



## v2.2.160 (2026-05-22)
### 📈 /stocks discover — 저평가(PBR↓) 강조 + 224일선 회복 패턴 추가
- **저평가 2단계 키워드** ([stockDiscovery.ts:evaluateKeywords](src/features/stocks/stockDiscovery.ts)): 기존 `PBR`(≤1.5)는 유지. 추가로 PBR ≤ 1.0 = `저평가`, PBR ≤ 0.7 = `초저평가`. PBR 낮을수록 점수 자체가 +1~2 가산.
- **PBR 오름차순 타이브레이커**: 정렬 = 통과 키워드 수 desc → 동점 시 PBR asc. 같은 점수면 저평가 종목이 위로.
- **224일선 회복 보너스** (`224회복`): 영상(주식단테 "224일선 안착 = 추세 전환") 기준 정량화. 1차 통과 후보에 한해 Yahoo 1년 일봉 fetch → 현재 종가 ≥ 오늘 MA224 AND 최근 30거래일 중 5일 이상 MA224 아래에 머문 적 있으면 `224회복` 키워드 +1. 회복 직후 추세 전환 신호인 종목이 자연스럽게 상위로.
- **신규 모듈** ([yahooClient.ts](src/features/stocks/yahooClient.ts)): `fetchYahooHistory`(1년 일봉), `fetchAllHistories`(배치, 1초/심볼 throttle), `evalMa224Recovery`(rolling MA224 + 회복 판정).
- 비용: 1차 통과 후보(보통 20~50개)에만 시세 fetch → +20~50초 추가. 전체 1차후보엔 안 돌림.
- **신규 패키징:** `astra-2.2.160.vsix`.

---



## v2.2.159 (2026-05-22)
### 📦 재패키징 — 다른 머신의 2.2.158 코드 + chronicle 갱신을 이 머신 설치본으로 빌드
- 소스 변경 없음. `git pull` 로 받은 2.2.158 작업 트리(다른 머신의 v2.2.64~2.2.158 누적 작업 — LM Studio 발견·로그·CSP·chunked writer·info prompt 강화·답변 포맷 정리·god-file 분해·Stocks·대화 연속성 등)를 이 머신용 `.vsix` 로 패키징.
- **신규 패키징:** `astra-2.2.159.vsix`.

---



## v2.2.72 (2026-05-23)
### ⚡ LM Studio 통신 hardening + 속도 부스트 팩
한 turn 에 두 라운드 작업을 묶었다. (A) 통신 경로 안전망 9건 + (B) 속도 개선 4건.

**(A) 통신 hardening**
- **Sampling parity SDK ↔ REST.** 기존엔 `topP/topK/minP/repeatPenalty` 가 SDK 경로에만 적용 → 핸들이 죽어 REST 로 fallback 되면 한글 토큰 깨짐(`붕괴→붕점`) 재발. 공유 `LmStudioSampling` + `samplingToRestBody` 로 두 경로가 동일 값을 보내도록 통일. Ollama 도 `options.{top_p,top_k,min_p,repeat_penalty}` 로 같이 받음.
- **신규 설정:** `g1nation.lmStudio.sampling.{topP=0.9, topK=20, minP=0.05, repeatPenalty=1.1}` + `g1nation.lmStudio.statsInBudget=true`.
- **prediction.stats UI 노출.** 매 turn 끝나면 ctx-badge 에 `… · 32.1 tok/s · TTFT 0.40s` 표시 (SDK 경로만). 툴팁에 출력 토큰 수 / 총 시간 / stopReason 도 추가.
- **listDownloaded TTL 캐시 (60s).** 사이드바 드롭다운 열 때마다 LM Studio 디스크 walk 하던 호출을 캐싱. 빈 결과는 캐싱 안 함 (방금 켠 LM Studio 가리는 회귀 방지). `setBaseUrl` / `invalidateCaches()` 가 캐시 초기화.
- **Empty-response 복구 일원화.** `LMStudioStreamer.stream()` 의 attempt-2 retry 가 dead-handle 에러뿐 아니라 "에러 없이 0 token" 케이스도 다룸. agent.ts 의 중복된 handle-reset retry 블록 (~30 LOC) 삭제. REST fallback 은 유지.
- **handle-dead 패턴 확장.** `channel closed`, `WebSocket (is not open|closed|disconnected)`, `Connection (lost|reset|closed)`, `ECONNRESET`, `socket hang up` 추가.
- **`httpToWebSocketUrl` path 정리.** `/api/v0`, `/api/v1`, `/v1`, `/api` 를 loop 으로 unwind — `http://host/api/v0` → ws root 까지 한 번에.
- **service-down 조기 break.** `createStreamingRequest` 가 `error.cause.code === 'ECONNREFUSED' | 'ENOTFOUND' | 'EAI_AGAIN'` 감지 시 attempt/variant/candidate 루프 즉시 종료. 12회 fetch → 1회 → 사용자 에러 ~1s.
- **callAgent cutoff warn.** sub-agent SDK 호출도 `stopReason` 검사 → `/maxPredicted|context|truncat/` 매칭 시 logError. 잘린 specialist 출력이 silently pipeline 을 오염시키는 거 방지.

**(B) 속도 부스트**
- **Speculative decoding.** 신규 설정 `g1nation.lmStudio.draftModel` (빈 값 = OFF). 작은 draft 모델 (e.g. `gemma-2b-it`) 지정 시 large 모델 1.5~3× throughput. `ChatStreamRequest.draftModel` → SDK `respond({draftModel})`. main 모델 load 직후 lifecycle 이 `unstable_preloadDraftModel` 호출해 cold-load 비용 제거. ctx-badge 에 `spec 68%` accept-ratio 표시 (60%+ healthy, 30% 미만 = draft 가 잘못 골라 오히려 느려질 수 있음).
- **Load-time 옵션 (8개).** `client.load()` 가 `LMStudioLoadConfig` 받아 `LLMLoadModelConfig` (GPUSetting 래퍼 포함) 으로 SDK 에 전달.
  - `g1nation.lmStudio.load.flashAttention` (true) — long-context 10~20%
  - `g1nation.lmStudio.load.gpuOffloadRatio` ("max" | "off" | 0-1)
  - `g1nation.lmStudio.load.offloadKVCacheToGpu` (true)
  - `g1nation.lmStudio.load.keepModelInMemory` (true) — swap-out 방지
  - `g1nation.lmStudio.load.useFp16ForKVCache` (false) — KV-cache 메모리 반감 (VRAM 빠듯할 때)
  - `g1nation.lmStudio.load.evalBatchSize` (0 = 엔진 default) — prefill 속도
- **`liveStreamTokens` 기본 → true (← false).** TTFT 체감 향상 — sanitize + `streamReplace` 가 생성 끝에 최종 답변으로 교체하므로 control token 노출은 잠깐만 가능. (memory 의 "sanitize-before-post handles the leak" 가 근거)

**시스템 프롬프트 KV-cache (item 1+5)**: 조사 결과 현재 ordering (stable head → `[CONTEXT]` body → stable tail) 이 이미 prefix-cache 친화적이라 코드 변경 없음. 단, agent persona-first 배치는 small-model anchoring 우선으로 유지 — KV-cache 잠재 이득보다 답변 품질이 우선.

**Touched:** `src/{config,agent,extension}.ts`, `src/lmstudio/{client,streamer,lifecycleManager}.ts`, `media/sidebar.js`, `package.json` (12개 신규 설정 + `liveStreamTokens` default flip), 2개 test FakeClient 에 `listDownloadedCached` stub. 401/401 jest 통과 · tsc clean · esbuild 2.9MB.

**신규 패키징:** `astra-2.2.72.vsix`.

---

## v2.2.71 (2026-05-23)
### 📦 자동 기록 줄 전체를 도구 ▾ 메뉴 안으로 이동
- **요청 명확화:** v2.2.70 에서 토글만 도구 메뉴에 추가했는데, 사용자가 원했던 건 사이드바 하단의 records-line ("● 자동 기록 · filename · 기록 ▾") **줄 전체** 를 도구 메뉴 안으로 옮기는 것.
- **수정:** `media/sidebar.html` 의 `<div class="records-line">` 통째로 삭제. 그 안에 있던 모든 요소 (자동 기록 status, recordsLatest, chronicleRecordSel, openChronicleRecordBtn, refreshChronicleRecordsBtn, openDesignerBtn) 를 도구 ▾ 드롭다운 안으로 흡수. 도구 메뉴는 `hdr-menu-wide` 로 변경.
- **새 메뉴 레이아웃:** 도구 ▾ 클릭 시
  - "자동 기록" 섹션 — 토글 / 최근 저장 기록 status / 기록 selector / 선택 기록 열기 / 새로고침 / 폴더 열기
  - "도구" 섹션 — 근거 추적 JSON 보기 / 원본 답변을 두뇌에 저장 / 두뇌 동기화
- **JS 안전성:** 모든 element ID 는 유지했으므로 기존 sidebar.js 핸들러는 그대로 작동. `renderChronicleAutoToggle` 만 살짝 수정 — chronicleAutoStatus 가 이제 자식 (status-dot · recordsLatest) 을 가진 컨테이너라 `textContent` 직접 할당이 자식을 지우는 회귀를 막기 위해 opacity / title 만 갱신하도록 변경.
- **사이드바 공간:** records-line 줄 한 줄 제거 → context bar 와 chat 본문 사이 noise 감소.
- **신규 패키징:** `astra-2.2.71.vsix`.

---

## v2.2.70 (2026-05-23)
### 🎚 자동 기록 On/Off 토글 (도구 메뉴)
- **추가:** 사이드바 records-line 의 "자동 기록" 표시를 끄고 켤 수 있는 토글. 위치는 **도구 ▾** 드롭다운 첫 항목 (`자동 기록: 켜짐 / 꺼짐`).
- **신규 설정:** `g1nation.chronicleAutoRecord` (기본 `true`). 토글 클릭 시 즉시 VS Code Global 설정에 영구 저장 — 다음 세션에도 유지.
- **gating:** `_autoWriteChronicleAfterPrompt` 진입 시 `getConfig().chronicleAutoRecord === false` 면 early return. 자동 저장만 멈추고, 수동 기록 (도구 메뉴의 다른 기록 항목, `/wiki` 등) 은 그대로 동작.
- **UI 피드백:** OFF 일 때 records-line 의 "자동 기록" 라벨이 "자동 기록 (꺼짐)" + dim opacity, 최근 기록 라벨도 dim 처리해 한눈에 상태 파악. 클릭 반응성을 위해 낙관적 갱신 후 서버 응답으로 보정.
- **메시지:** 신규 webview ↔ extension 메시지 `setChronicleAutoRecord` / `getChronicleAutoRecord` / `chronicleAutoRecordStatus`. `chronicleHandlers.ts` 에서 라우팅.
- **신규 패키징:** `astra-2.2.70.vsix`.

---

## v2.2.69 (2026-05-23)
### 💾 대화 히스토리 — 슬라이딩 윈도우 + 모드 전환 bridge
- **현황 확인:** "히스토리 전역 단일 관리" 요구는 이미 충족 — `AgentExecutor.chatHistory` 단일 인스턴스이며 에이전트/회사/멀티에이전트 모드 전환은 history 를 비우지 않는다. 명시적 `/newChat` 이나 세션 삭제 때만 reset.
- **수정 1 — sliding window 요약.** 기존 `trimHistoryToBudget` 은 오래된 메시지를 단순히 `[이전 대화 N개 ... 생략됨]` count 마커로 대체 → 모델이 "이전에 무슨 얘기를 했는지" 모름. 이제는 dropped 메시지 배열을 marker factory 로 같이 넘기고, agent.ts `buildDroppedHistorySummary()` 가 추가 LLM 호출 없이 heuristic 으로 (a) 각 user prompt 첫 문장 (b) 각 assistant 답변 첫 문장 (R1 conclusion-first 가정) 만 뽑아 `U1: ... / A1: ... / U2: ...` 형식의 한 system 메시지로 압축. 8턴 이상이면 가장 오래된 절반은 한 줄로 축약.
- **수정 2 — 모드 전환 bridge.** `AgentExecutor._lastModeSignature` 로 (agent skill, multiAgent, company mode, brain) 의 해시를 추적. handlePrompt 진입 시 직전 값과 다르면 system prompt 에 `[MODE TRANSITION BRIDGE] 이전 모드 / 현재 모드 / 직전 대화 주제` 한 블록을 끼움. chatHistory 는 그대로라 사용자에겐 대화 연속이고, 모델은 새 페르소나/포맷을 따르면서도 직전 맥락을 잊지 않는다. `clearHistory` / `resetConversation` 에서 signature 도 함께 초기화해 새 세션 첫 메시지에 spurious bridge 가 끼지 않게 함.
- **시그니처 변경:** `trimHistoryToBudget` 의 `makeMarker` 가 `(droppedCount, droppedMessages)` 두 인자를 받는다. 호출부 (`agent.ts`) 와 단위 테스트 (`contextManager.test.ts`) 갱신.
- **신규 패키징:** `astra-2.2.69.vsix`.

---

## v2.2.68 (2026-05-23)
### 📐 답변 형식 — 7개 hard rules
- **변경:** 답변 포맷 규칙을 사용자가 지정한 7개 hard rule 로 전면 교체. 기존 "긴 답변엔 핵심 요약 블록 + 상세 설명 + 제안" 의 3-section 템플릿은 폐기.
  - R1. 첫 문장에 결론 (no 인삿말, no "분석해보겠습니다", no "핵심 요약" 라벨)
  - R2. 섹션 최대 3개
  - R3. 같은 내용을 두 번 말하지 않는다
  - R4. 볼드는 전체 답변에서 3개 이하
  - R5. 추가 정보 없이 판단 가능하면 바로 실행
  - R6. 질문은 1개만 — (a) 방향이 두 갈래로 갈리고 사용자 의도를 알 수 없을 때, 또는 (b) 비가역 작업 직전
  - R7. 추측 가능하면 추측+실행하되 가정 한 줄 명시 ("가정: ...")
- **적용 범위:** 단일 에이전트 경로 (`BASE_SYSTEM_PROMPT [OUTPUT FORMAT]`) + 멀티 에이전트 최종 단계 (`SynthesizerAgent` persona) 양쪽에 동일 규칙 주입. 두 경로 모두 같은 형식으로 답변하도록 보장.
- **부수 정리:** `[FOLLOW-UP QUESTION RULES]` 섹션은 R6 에 흡수돼 제거. `[ENGINEERING STANCE]` 의 "Give the verdict first, then explain tradeoffs" 도 R1 과 중복이라 정리.
- **신규 패키징:** `astra-2.2.68.vsix`.

---

## v2.2.67 (2026-05-23)
### 🧠 두뇌 추가/수정/삭제 정상화
- **문제:** v2.2.66 이후 신고된 두 가지 회귀.
  1. 두뇌 "추가" 후 dropdown 에 새 brain 이 들어가긴 하는데 선택된 표시는 마지막 옵션인 `+ Add New Brain...` 으로 굳어버림 → 사용자에겐 "이름이 add new brain 으로 바뀜" 으로 보임.
  2. 그 상태에서 "수정"/"삭제" 버튼이 침묵 — 클릭해도 아무 일 안 일어남.
- **원인 1 — selected 적용 순서:** brainProfiles 핸들러가 `option.selected = true` 를 `appendChild` 직전에 거는 패턴이라 일부 Chromium webview 가 무시. 결과적으로 dropdown selectedIndex 가 마지막 옵션 (`+ Add New Brain...`) 에 머무름.
- **원인 2 — `brainSel.value === 'new'` 잠금:** 사용자가 dropdown 의 `+ Add New Brain...` 옵션을 직접 클릭하거나, 폴더 선택 모달을 취소하면 `brainSel.value` 가 `'new'` 로 굳어버림. 수정/삭제 버튼 onclick 첫 줄 `if (brainSel.value === 'new') return;` 가 silently early-return → 수정 안 됨.
- **수정 1 — selected 적용 순서 변경.** 옵션을 다 넣은 *후에* `brainSel.value = activeBrainId` 로 한 번에 selection 적용. appendChild 전 `o.selected = true` 패턴 제거. 이전에 `'new'` 로 굳어있던 값도 확실히 덮어쓴다.
- **수정 2 — 'new' 클릭 즉시 복원.** `brainSel.onchange` 가 `'new'` 를 감지하면 `addBrain` 메시지를 보냄과 *동시에* dropdown 을 직전 유효 선택(`brainSel.dataset.lastSelected`)으로 즉시 되돌림. 사용자가 폴더 선택을 취소해도 dropdown 이 `'new'` 로 굳지 않는다.
- **수정 3 — Edit/Delete 폴백.** 두 버튼이 만약 dropdown 이 `'new'` 인 순간에도 작동하도록 직전 유효 선택 또는 첫 실제 옵션으로 폴백. 더 이상 silent early-return 없음.
- **신규 패키징:** `astra-2.2.67.vsix`.

---

## v2.2.66 (2026-05-23)
### 🧠 두뇌(지식 폴더) 드롭다운 회귀 수정
- **문제:** 사이드바 컨텍스트 바의 두뇌 선택자가 갑자기 `+ Add New Brain...` 하나만 보이는 상태. readyBar 에는 `Brain 5407` 처럼 brain 자체는 정상 인식되는데 dropdown 만 빔.
- **원인 추정:** webview 의 `ready` 핸드셰이크 체인 (`_sendBrainStatus → _sendBrainProfiles → _sendSessionList → _sendModels → _sendChronicleProjects → _restoreActiveSessionIntoView → _sendReadyStatus`) 도중 한 단계가 throw 하면 그 뒤가 통째로 안 도는 구조. 또는 빈 profiles 배열 메시지가 한 번이라도 도착하면 기존 dropdown 옵션을 그대로 비워버리는 핸들러.
- **수정 1 — sidebar.js 방어:** `brainProfiles` 메시지의 `profiles` 가 빈 배열/undefined 이면 기존 dropdown 옵션을 보존하고 warn 로그만 남긴다. 잘못된 상태로 옵션을 0개로 만들어 `+ Add New Brain...` 만 남기는 회귀 차단. `case` 블록을 `{...}` scope 로 감싸 향후 const 명 충돌도 예방.
- **수정 2 — 초기 setup 이중 보장:** sidebarProvider.ts view 생성 시점에 `_restoreActiveSessionIntoView` + `_sendReadyStatus` 외에 `_sendBrainProfiles` / `_sendAgentsList` / `_sendModels` 도 직접 한 번 푸시. 'ready' 체인이 깨져도 dropdown 은 살아 있음.
- **수정 3 — 진단 로그:** `_sendBrainProfiles` 가 호출될 때마다 `profiles=N activeBrainId=X` 를 logInfo. 재발 시 Output → Astra 채널만 보면 원인 즉시 판별.
- **신규 패키징:** `astra-2.2.66.vsix`.

---

## v2.2.65 (2026-05-23)
### 🧼 마크다운 마커 2차 sanitize — enforcer 재주입까지 차단
- **문제:** v2.2.64 에서 `stripMarkdownFormatting` 을 `cleanedVisible` (모델 raw 출력 직후) 에만 적용했는데, 그 이후 단계인 `enforceLocalPathReviewAnswer` 가 sanitize 된 답변 앞에 `## 경로 확인 결과` 헤더를 하드코딩으로 다시 prepend → 화면에는 마커가 그대로 노출. `## 간단 요약`, `## 강점`, `## 근거`, `## 다음 액션` 등 ~20곳에서 같은 패턴.
- **수정:** `agent.ts` `finalAssistantContent` (webview / chatHistory 에 들어가는 진짜 최종 문자열) 단계에 sanitizer 2차 패스를 추가. 1차(모델 출력) + 2차(enforcer 출력) 이중 방어로 어떤 코드 경로에서 `##`/`**` 가 prepend 되어도 디스플레이 직전에 모두 벗겨진다.
- **신규 패키징:** `astra-2.2.65.vsix`.

---

## v2.2.64 (2026-05-23)
### 🪶 Plain-text 출력 + 긴 답변 강제 요약
- **문제:** 작은 로컬 모델이 학습된 습관으로 `## 다음 한 수`, `**` 강조 마커를 그대로 노출. 어떤 답변엔 라벨만 있고 본론으로 곧장 들어가서 사용자가 현황을 빠르게 파악하기 어려움.
- **수정 1 — 후처리 sanitizer.** `responseRecovery.ts` 에 `stripMarkdownFormatting(text)` 추가. 코드 블록/인라인 코드는 보존하고 줄 시작 `#{1,6}\s+` 헤더 마커, `**bold**` / `__bold__`, 단일 `*강조*`, blockquote `> `, asterisk 불릿 `* ` 만 제거. 라벨 텍스트(`핵심 요약`, `다음 한 수`)는 그대로 유지.
- **수정 2 — Synthesizer 강제 규칙.** Synthesizer 페르소나에 `[FORMAT — PLAIN TEXT ONLY, NO MARKDOWN]` 블록과 `[STRUCTURE]` 블록 추가. **답변이 ~4문장 / ~400자 를 넘으면 반드시 `핵심 요약` 블록(2~4 bullets)을 답변 맨 앞에 넣는다.** 짧은 답변은 그대로.
- **수정 3 — BASE_SYSTEM_PROMPT 정비.** 기존 `[OUTPUT FORMAT]` 의 `## 핵심 요약`, `## 상세 설명` 같은 마크다운 헤더 예시 → bare label (예: `핵심 요약`) 로 교체. `[STRICT GLOBAL RULES]` 에 `[NO MARKDOWN MARKERS]` 명문화. 단일 에이전트 경로도 plain text 출력.
- **수정 4 — review-evaluation 가이드 정비.** `1. ## 한 줄 판단` 같은 markdown-prefix 라벨 → `1) 한 줄 판단` 으로 교체. 마크다운 마커가 prompt 단계에서 모델에 학습되지 않도록.
- **수정 5 — Drafter 페르소나 정비.** 섹션 라벨도 plain text. Synthesizer가 받는 입력이 깨끗해야 최종 출력도 깨끗.
- **양쪽 경로 적용.** 단일 에이전트(`agent.ts` line ~1189) + multi-agent (`finalReport` 직전) 두 곳 모두에서 `outputFormat === 'plain'` 이면 sanitizer 통과. `chatHistory` 에도 정제본만 저장 → 다음 턴 컨텍스트에서 마커가 재학습되지 않음.
- **신규 설정:** `g1nation.outputFormat` (`plain` 기본 / `markdown` opt-out).

### 🧩 5단계 파이프라인 (Planner → Researcher → Reflector → Drafter → Synthesizer) + 깔끔한 스트림
- **문제:** 작은 로컬 모델(예: gemma 4 e2b/e4b)이 컨텍스트 한계 때문에 한 번에 답을 끝내려다 EOS/잘림 발생. 또 multi-agent 모드일 때 채팅 본문에 `> **[Planner]** ...` 같은 단계 메시지가 본문에 섞여 사용자에게 답답함. 일부 응답에서 `<|channel|>thought ...` 같은 control token이 짧게 노출.
- **수정 1 — Synthesizer 단계 추가 (5번째).** Drafter(=기존 Writer)가 1차 초안만 빠르게 생성하고, **Synthesizer**가 작은 draft만 받아 도입 한 줄·섹션 흐름·결론을 정리. 입력이 가벼워 작은 모델로도 한 번에 처리 가능. 신규 클래스 `SynthesizerAgent` (`src/agents/factory.ts`), `AgentEngine` 생성자 4번째 파라미터, `PipelineStage` 에 `synthesizer` 추가.
- **수정 2 — 자동 발동 확장.** 기존 트리거는 prompt > 180자 + 키워드일 때만 → 작은 모델일 때도 single-agent 로 가다 폭사. 신규 `g1nation.workflow.multiAgentMode` (`auto`/`always`/`off`) 에서 **`auto` 기본값:** (a) 모델 ≤4B (b) prompt 가 컨텍스트의 30% 이상 (c) "코드 리뷰/심층 분석/보고서" 등 키워드 (d) 사용자가 `multiAgentEnabled` 명시적 ON — 중 하나만 만족해도 5단계 발동. 인사·12자 미만 prompt 는 제외.
- **수정 3 — 단계 메시지를 채팅 본문에서 분리.** 진행 상태(`> **[Researcher]** ...`)를 채팅 버블에 흘리던 코드 제거. 대신 신규 webview message `workflowStage` 가 사이드바 상단의 `statusLabel + thinkingBar` 한 줄에만 표시 → "생각 단계가 본문에 계속 보임" 답답함 제거. 라벨도 `① 계획 → ② 자료 수집 → ③ 자기 검증 → ④ 초안 작성 → ⑤ 최종 정리` 한국어 + 번호로 통일.
- **수정 4 — 라이브 토큰 스트리밍 기본 OFF.** 신규 `g1nation.liveStreamTokens` (기본 `false`): 토큰을 내부에서만 누적하고 `extractVisibleFinal` sanitize 끝난 최종 답변만 한 번에 표시 → Harmony `<|channel|>thought`/`<think>` 마커가 잠시라도 화면에 노출되는 누설 원천 차단. `true` 로 두면 legacy 라이브 스트리밍 복원.
- **신규 설정 4개:** `g1nation.workflow.synthesizerEnabled` (기본 true), `g1nation.workflow.multiAgentMode` (auto/always/off, 기본 auto), `g1nation.workflow.autoCtxFractionThreshold` (기본 0.30), `g1nation.liveStreamTokens` (기본 false).
- **소프트 페일 보장:** Synthesizer가 빈 출력/예외를 내도 미션을 막지 않고 Drafter 초안을 그대로 최종 답변으로 사용. Reflector와 동일한 패턴.
- **신규 패키징:** `astra-2.2.64.vsix`.

---

## v2.2.63 (2026-05-22)
### 🎚️ 한국어 오타 최소화 — 채팅 Temperature 설정 + anti-glitch 샘플링
- **문제:** 채팅 분석 답변에 한국어 오타(`붕괴`→`붕점`, `핵심`→`핵점`, `텍스트`→`텍록`)가 잦음. 토큰 단위 샘플링 glitch.
- **원인:** 메인 채팅 경로가 `temperature 0.7`(창작용)에 `top_p`·`top_k`·`min_p`·`repeat_penalty`를 **하나도 안 보냄**. 2.2.54의 anti-glitch 샘플링은 슬래시 명령에만 적용돼 있었음.
- **수정 1 — 채팅 샘플링 강화.** LM Studio SDK 호출에 `topP 0.9`·`topK 20`·`minP 0.05`·`repeatPenalty 1.1` 추가. 저확률 오답 토큰을 잘라내 한 글자 오류·더듬음(`것입니다서입니다`)을 억제.
- **수정 2 — 채팅 기본 temperature 0.7 → 0.3.** 분석·업무형 답변에서 오답 토큰 채택을 크게 줄임.
- **신규 설정 `g1nation.chatTemperature`** (기본 0.3, 0~2). **Astra Settings 패널 '고급' 섹션**에서 조절 가능 — 낮출수록 오타·환각이 줄고 안정적, 높일수록 표현이 다양.
- **한계:** `붕점`처럼 멀쩡한 한글 두 글자로 보이는 깨짐은 사후 교정이 불가 — 근본 해결은 양자화 등급 상향(Q4→Q6/Q8) 또는 한국어가 강한 모델 사용.
- **신규 패키징:** `astra-2.2.63.vsix`.

---



## v2.2.62 (2026-05-22)
### 🧹 모델 출력 붕괴(degeneration) 방어 — 가독성 보호
- **문제:** 긴 세션의 분석 답변에서 ①같은 분석이 통째로 두 번 생성됨 ②밑줄 `___` 수백 개 등 문자 벽 ③`(Note: I am acting as ...)` 메타 노트 반복 ④내부 지시문 `Candidate records for this discussion...` 누출 ⑤`[핵심 확인 질문]`·`(질문 의도: …)` 누출. 마크다운/테이블이 깨져 렌더링 불가.
- **원인:** 소형 로컬 모델이 긴 컨텍스트에서 붕괴. 특히 auto-continuation이 "이어서 쓰라"는 지시를 무시하고 답변을 처음부터 **재생성** → `mergeContinuationParts`가 중복을 못 걸러 통째로 이어 붙임.
- **수정 1 — 재시작 감지.** continuation 결과가 기존 답변과 같은 도입부로 시작하면(앞부분 12자+ 일치) "이어쓰기"가 아닌 "재시작"으로 판정해 **버림**. 분석이 두 번 나오는 문제 제거.
- **수정 2 — degeneration 정리 패스.** 최종 출력에서 문자 벽(같은 기호 8개+), `(Note: …)` 메타 노트, `Candidate records…` 내부 지시문, `(질문 의도: …)`·`[핵심 확인 질문]` 누출, 연속 중복 문단을 제거. 모델이 붕괴해도 답변은 읽을 수 있게 유지.
- **한계:** 한글-한글 토큰 깨짐(`붕괴`→`붕점`, `핵심`→`핵점`)은 멀쩡한 단어처럼 보여 탐지 불가 — 이는 모델 자체 한계. 긴 세션에서는 `/newChat`으로 초기화 권장.
- **신규 패키징:** `astra-2.2.62.vsix`.

---



## v2.2.61 (2026-05-22)
### 🔁 출력 없는 액션엔 2번째 LLM 호출 생략 — "빈 응답" 근본 원인 제거
- **문제:** `git 커밋해줘` 한 번에 LLM이 2번 호출됨 — ①`<run_command>` 액션을 뱉는 호출, ②결과를 정리하는 continuation 호출. 2번째가 빈 응답(`eosFound`)으로 실패.
- **원인:** `run_command`는 터미널 출력을 캡처하지 않아 대화에 주입하는 내용이 없는데도, ASTRA는 continuation에서 26K+ 토큰 전체 컨텍스트를 다시 실어 "결과를 보고 답하라"는 무의미한 2번째 호출을 함. 빈약한 로컬 모델이 81% 찬 컨텍스트에서 붕괴(첫 토큰부터 EOS). 타이밍 race가 아니라 불필요하게 무거운 2번째 호출이 원인.
- **수정:** 액션이 모델이 해석할 내용을 실제로 주입했는지(`read_file`/`list_files`/`read_brain`/`read_sheet`는 시스템 메시지 주입, `run_command`·파일 생성/수정/삭제는 주입 없음) 판정. **주입이 없으면 continuation LLM 호출을 생략**하고 결정론적 확정 메시지("실행한 작업: …")만 출력. 읽기 계열 액션엔 continuation 유지.
- 효과: `run_command`·파일 쓰기 후 빈 응답이 사라지고, 더 빠르고(불필요한 26K 토큰 호출 제거) 실제 실행된 명령을 그대로 확인 가능.
- **신규 패키징:** `astra-2.2.61.vsix`.

---



## v2.2.60 (2026-05-22)
### 🔧 `&&` 명령 체이닝 — 코드 레벨에서 PowerShell 문법으로 자동 변환
- **문제:** v2.2.59에서 프롬프트로 "`&&` 쓰지 말라"고 지시했으나, 모델이 여전히 `cd ... && git add . && git commit ... && git push`를 출력 → PowerShell 5.1에서 `'&&' 토큰은 올바른 문 구분 기호가 아닙니다` 파서 오류로 **명령 전체가 실행 실패**.
- **원인:** 모든 git/npm 튜토리얼이 `&&`를 쓰므로, 시스템 프롬프트 규칙만으로는 소형 로컬 모델의 `&&` 출력을 신뢰성 있게 막을 수 없음.
- **수정:** `sanitizeCommand`가 터미널로 보내기 직전 **`&&` 체인을 PowerShell 조건부 체인으로 결정론적 변환**. `A && B && C` → `A; if ($?) { B; if ($?) { C } }`. `$?`로 단축 평가(short-circuit)를 보존 — 예: `cd` 실패 시 `git`이 엉뚱한 디렉터리에서 실행되지 않음. 따옴표 안의 `&&`(커밋 메시지 등)는 분리 대상에서 제외.
- 이제 모델이 `&&`를 출력해도 git add/commit/push 다단계 명령이 정상 실행됨.
- **신규 패키징:** `astra-2.2.60.vsix`.

---



## v2.2.59 (2026-05-22)
### 🩹 긴 대화에서 "빈 응답" 차단 — 출력 토큰 예산 확보
- **문제:** 긴 세션(예: 34개 메시지, ~29.6K 토큰)에서 모델이 빈 응답을 반환하고 "AI 엔진이 빈 응답을 반환했습니다 / Output budget: 1,073 tokens" 오류 출력.
- **원인:** 대화 기록 압축(`trimHistoryToBudget`)이 출력용으로 **단 512토큰(`minOutputTokens`)만 예약**했음. 그래서 32K 윈도우가 거의 다 찰 때까지 프롬프트가 자라도록 허용 → 답변에 ~1K 토큰만 남음. gemma 4B-active 같은 소형/MoE 로컬 모델은 이 압박에서 첫 토큰부터 EOS를 뱉어 **빈 응답**을 냄.
- **수정:** 기록·시스템 프롬프트를 자르기 전에 **실제 답변용 예산(`preferredOutputReserve`)을 컨텍스트의 ~10%, 최소 2048토큰 확보**(상한은 `maxOutputTokens`)하도록 변경. 이제 프롬프트가 항상 답변 공간을 남기고 잘려, 32K 모델에서도 출력 예산이 3K+ 보장됨. `minOutputTokens`(512)는 절대 하한 clamp 용도로만 유지.
- **추가:** `[EXECUTION RULE]`에 PowerShell 체이닝 규칙 명시 — 명령 연결은 `;` 사용, `&&` 금지(PowerShell 5.1 구문 오류). git add/commit/push 같은 다단계 명령이 터미널에서 정상 실행됨.
- **신규 패키징:** `astra-2.2.59.vsix`.

---



## v2.2.58 (2026-05-22)
### 📋 답변은 "핵심 요약 먼저, 상세 아래" — 한눈에 들어오는 출력 포맷
- **문제:** 답변 내용 퀄리티는 좋으나 분량이 길어 한눈에 안 들어옴. 게다가 요약(`## 요약`)이 맨 위가 아니라 **맨 아래**에 출력되고, `## ## 요약`처럼 헤딩 접두사가 중복되며, 이미 금지된 "핵심 확인 질문" 섹션이 누출됨.
- **원인:** `[OUTPUT FORMAT]`이 "기술 분석/아키텍처/트러블슈팅/전략 기획일 때만" 3섹션을 쓰라는 **모호한 카테고리 게이트**라, 일반 상담형 질문에서 모델이 포맷을 제멋대로 해석함.
- **수정 1 — 길이 게이트.** 카테고리 대신 **길이 기준**으로 전환: 답변이 ~4문장을 넘으면 무조건 `## 핵심 요약`(불릿 2~4개, 전체를 관통하는 스캔 가능한 요약)을 **맨 위**에 출력하고 그 아래 `## 상세 설명`. 요약 앞 인트로 문단 금지. 짧은 답변은 헤딩 없이 바로 답변.
- **수정 2 — 헤딩 규칙.** 모든 마크다운 헤딩은 정확히 `## ` 하나로 시작(`## ##` 중복 금지).
- **수정 3 — 후속 질문 규칙 강화.** 후속 질문은 한 문장·한 줄·라벨 없음. 섹션 헤딩·"질문 의도" 설명·복수 질문 금지 → "핵심 확인 질문" 섹션 누출 차단.
- **신규 패키징:** `astra-2.2.58.vsix`.

---



## v2.2.57 (2026-05-22)
### 🚀 실행 요청은 설명 대신 즉시 실행 — `[EXECUTION RULE]` 추가
- **문제:** "E:\Wiki\Datacollect 서버 실행해줘" 같은 요청에 ASTRA가 직접 실행하지 않고, `npm run platform` 등 추측성 명령·존재하지 않는 포트(`8787`)·환경변수(`GEMINI_API_KEY`)를 지어내며 "이렇게 하시기 바랍니다" 식 튜토리얼만 출력했음.
- **원인:** 시스템 프롬프트의 `[LOCAL PATH RULE]`이 "review/analysis/debugging"만 다뤄, "실행/구동/시작" 요청에 발동되는 규칙이 전무했음. 모델이 학습 prior대로 산문 설명으로 회귀.
- **수정 1 — 프롬프트.** `[EXECUTION RULE]` 신설: 실행/구동/시작/run/start 키워드 → 튜토리얼 금지, 명령을 모르면 `<read_file>`로 package.json을 먼저 읽고 그 다음 `<run_command>`로 실제 스크립트 실행. 추측한 스크립트명·포트·환경변수 단정 금지. Few-shot 예시 1건 포함(작은 로컬 모델의 태그 준수율 향상).
- **수정 2 — 경로 경계.** `<read_file>`/`<list_files>`가 워크스페이스 안으로만 제한돼 형제 프로젝트(`E:\Wiki\Datacollect` 등)의 package.json을 못 읽던 문제 해결. `security.ts`가 워크스페이스의 **상위 디렉터리 1단계**까지 신뢰 루트로 포함(드라이브 루트로는 확장 안 함). 이로써 형제 프로젝트를 읽어 정확한 실행 명령을 찾을 수 있음 → 환각 제거.
- **신규 패키징:** `astra-2.2.57.vsix`.

---



## v2.2.56 (2026-05-22)
### ⚡ 코드 리뷰 기반 성능·메모리 최적화 (12건, 동작 변경 없음)
- **🔴 브레인 코퍼스 디스크 재읽기 제거.** `secondBrainTrace`는 메시지마다 브레인 전체를 디스크에서 다시 읽어 재분류했음 → mtime+size 키 스캔 캐시로 변경(파일이 실제로 바뀔 때만 재읽기). `scopedBrainRetriever`(텔레그램 경로)도 동일 안티패턴 → 캐시된 `getBrainTokenIndex()` + `scoreTfIdfPreTokenized` 경로로 라우팅. 점수 결과는 바이트 단위로 동일.
- **🟡 메모리 누수·중복 작업 정리.** `agent.ts` `chatHistory` 무제한 증가 → 최근 40개 유지·오래된 도구 결과 본문 축약. `EpisodicMemory` 에피소드 JSON 메시지마다 재읽기 → 디렉터리 mtime 키 캐시. `_walkBrainFiles` → `readdirSync({withFileTypes})`·단일 누산기(`concat` 제거). TF-IDF `termFrequency` → 문서별 term-count `Map` 1회 사전 계산. `getConfig()` 중복 호출 1회로 통합.
- **🟢 누수·정리 보강.** `clearBrainTokenIndex()`를 `deactivate()`·브레인 프로필 전환 시 호출. 웹뷰 메시지 리스너 dispose 배선. `LongTermMemory` `longTermMaxEntries`(100) 강제. Pixel Office 인터벌은 뷰 비표시 시 일시정지. `/ping`은 핑마다 브레인 전체 탐색 대신 5초 TTL 캐시 응답.
- 전 항목 동작 보존 — 기능·출력 변경 없음. 타입 체크(`tsc --noEmit`) 무오류, 테스트 400/400 통과.
- **신규 패키징:** `astra-2.2.56.vsix`.

---



## v2.2.55 (2026-05-21)
### 📅 /meet — 회의록 액션 아이템 → Google 캘린더 자동 등록 (Phase 1)
- `/meet`이 회의록 합성·저장 후, **액션 아이템 표를 파싱해 task별 종일 일정으로 Google Calendar에 자동 등록**한다.
- 날짜 규칙(사용자 정의): 명시 날짜(`YYYY-MM-DD`/`YYYY년 M월 D일`)→그대로 / "차주·다음 주"→회의일 +6일 / "즉시·당일"→등록일 / 변환 불가·빈 값→등록일 +영업일 5일(토·일 제외, 공휴일 무시) + 제목에 **"(미확정)"** 꼬리표.
- 캘린더 이벤트 설명에 회의 제목·담당·원래 기한 표기를 기록. Google Calendar OAuth(쓰기)가 연결돼 있어야 하며, 미연결 시 회의록 저장만 하고 안내한다.
- `handleSlashCommand`에 `ExtensionContext` 배선 추가(`/meet`만 사용).
- **신규 패키징:** `astra-2.2.55.vsix`.

---



## v2.2.54 (2026-05-21)
### 🔧 한·영 토큰 깨짐 추가 개선 — 샘플링 조정 + 교정 패스
- **샘플링 파라미터 조정.** 슬래시 합성 LLM 호출에 `top_p`(0.85)·`top_k`(20)·`repeat_penalty`(1.1) 추가 — 깨진 저확률 토큰("핵ess" 등)의 샘플링 자체를 억제.
- **조건부 교정 패스.** 합성 결과에 한·영 깨짐(`한글+영문 소문자 조각`)이 감지되면 LLM 교정 패스를 1회 돌려 깨진 표기만 자연스러운 한국어로 교정. 깨짐이 없으면 추가 호출 없음. 교정 결과가 원본보다 비정상적으로 짧으면(잘라먹음) 원본을 유지하는 안전장치 포함.
- 적용 범위: `/benchmark`·`/youtube`·`/wikify`·`/meet` 모든 슬래시 합성.
- **신규 패키징:** `astra-2.2.54.vsix`.

---



## v2.2.53 (2026-05-20)
### 📝 신규 /meet — 회의 녹취 txt → 사실 기반 구조화 회의록
- **신규 슬래시 명령 `/meet <txt 파일 경로> [메타데이터]`.** 로컬 회의 녹취 텍스트 파일을 ASTRA가 직접 읽어(로컬 파일이라 Bridge 불필요), 사실 기반 구조화 회의록(Actionable Minutes)으로 LLM 합성·저장한다.
- 처리 규칙: Deconstruction(잡담 제거) → Classification(Fact/Discussion/Decision/Risk/Action) → Decision Logic → Structuring. 메타데이터(참석자·날짜)가 녹취록과 충돌하면 메타데이터 우선.
- 출력 구조: 요약 보고 / 주요 논의 사항 / 리스크·이슈 / 결정 사항 / 오픈 이슈 / 액션 아이템(담당·작업·기한 표).
- 경로에 공백이 있으면 따옴표로 감쌀 수 있음. 결과물은 `.md`로 `WIKI_RAW_PATH`(`E:\Wiki\2nd\00_Raw`)에 저장.
- **신규 패키징:** `astra-2.2.53.vsix`.

---



## v2.2.52 (2026-05-20)
### 📦 재패키징 (v2.2.51 동일 내용)
- 기능 변경 없음 — v2.2.51 작업 트리를 버전만 올려 재패키징. 버전 정합성 정리를 위해 `package-lock.json` 버전도 함께 2.2.52로 동기화.
- **신규 패키징:** `astra-2.2.52.vsix`.

---



## v2.2.51 (2026-05-20)
### 🐛 채팅 기록 목록 누락 수정 + Python/tsc 검증 크로스플랫폼화
- **기록(Chat History) 목록에 최근 대화가 안 뜨던 문제 수정.** 답변을 다 받은 뒤 후처리 단계(아키텍처 감지·Self-Reflector·Chronicle 자동기록 등)에서 예외가 한 번이라도 나면 `_saveCurrentSession()`이 통째로 건너뛰어져 화면엔 답변이 보여도 기록 목록엔 안 들어가던 회귀. 일반 채팅·회사 모드 가벼운 대화 경로를 `try/finally`로 감싸 저장을 **항상** 보장하고, `_saveCurrentSession()` 자체도 절대 throw하지 않게 방어 처리.
- **1인 기업 모드 업무 턴도 기록 목록에 기록.** `_runCompanyTurn`은 dispatcher로 돌아 `_agent` 히스토리를 채우지 않아 기록 목록에 영영 안 남던 문제 — 완료된 업무 턴(`report-done`)을 `요청/보고서` 한 쌍으로 독립 항목 저장(`_saveCompanyTurnSession`). 이제 어느 모드든 최근 대화가 빠짐없이 기록됨.
- **Self-Reflector 실행 검증 크로스플랫폼화.** `.py` 검증을 `python`→`python3`(Windows는 `python` 우선)로 자동 탐지, `.ts` 검증을 `npx tsc` 대신 로컬 `node_modules/typescript/bin/tsc`를 `node`로 직접 호출 — macOS 12.3+/Windows에서 검증이 헛돌던 문제 해결.
- **신규 패키징:** `astra-2.2.51.vsix`.

---



## v2.2.48 (2026-05-20)
### 🧹 출력 품질 — 내부 체크 로그 차단 + 한영 토큰 깨짐 정제
- **`[Self-Reflector Check]` 내부 검증 로그 노출 차단.** Self-Reflector Phase A를 기본 비활성화(`g1nation.selfReflector.enabled` 기본값 `true`→`false`). 답변 끝에 `Consistency/Completeness/Accuracy` 내부 체크 블록이 더 이상 붙지 않는다 — 일반 채팅·회사 모드 모두 적용. 기능 자체는 남아 설정에서 켤 수 있음.
- **한영 토큰 깨짐 정제.** 슬래시 합성(`callLmSynthesis`)·일반 채팅(`getSystemPrompt`) 시스템 프롬프트에 출력 위생 규칙 추가 — 한 단어 안에 한글·영문 알파벳 혼용 금지(`결ently`·`인orp` 같은 깨진 합성 표기 차단), 외래어는 완전 한글 또는 완전 영문으로 일관되게.
- **안전망.** 슬래시 합성 결과에 내부 검증 로그가 새어 나오면 후처리 정규식으로 자동 제거.
- **신규 패키징:** `astra-2.2.48.vsix`.

---



## v2.2.47 (2026-05-20)
### 🔗 /wikify 다중 링크 배치 처리
- `/wikify`에 **여러 링크를 공백으로 구분해 한 번에** 넣으면 1개씩 순차 위키화한다. 예: `/wikify url1 url2 … url10` → 10개 위키 문서 생성.
- 진행 표시 `[i/N]`, 한 건이 실패해도 나머지는 계속 진행, 완료 시 `N/M개 성공` 요약.
- URL과 주제명 자동 분류 — URL 패턴 토큰은 모두 처리 대상, 비-URL 토큰은 공통 주제명으로.
- 단일 링크 입력은 기존과 동일하게 동작.
- **신규 패키징:** `astra-2.2.47.vsix`.

---



## v2.2.46 (2026-05-20)
### 🔧 /wikify 정확도 개선 — 명세 문서 완전성 + 위키링크 교정
- **명세/스키마 문서 완전성 강화.** `buildWikifyPrompt`에 규칙 추가 — 원문이 JSON Schema·API 명세·기술 스펙이면 `📖 세부 내용`에 모든 필드·속성을 누락 없이 마크다운 표(`[필드|타입|필수/선택|제약]`)로 정리하고, 원문 `required` 배열을 임의 변경 금지, `additionalProperties`·`enum`·중첩 구조도 원문 그대로 반영. (이전엔 LLM이 `extra`·`models` 등 최상위 필드를 누락하던 문제 — 추출은 정확했으나 합성 단계 손실)
- **위키링크 `[[ ]]` 자동 교정.** LLM이 닫는 대괄호를 하나 빠뜨리는 깨짐(`[[rfcs repo]`)을 후처리 정규식으로 자동 보정.
- **신규 패키징:** `astra-2.2.46.vsix`.

---



## v2.2.45 (2026-05-20)
### 📚 신규 /wikify — 웹사이트 본문을 P-Reinforce v3.0 위키 문서로
- **신규 슬래시 명령 `/wikify <url> [주제명]`.** 사이트 본문 텍스트를 추출해 Datacollect Research(`/research`)와 동일한 **P-Reinforce v3.0 규격 위키 문서**로 LLM 합성·저장한다 — YAML frontmatter + `🎯 한 줄 통찰 / 🧠 핵심 개념 / 🧩 추출된 패턴 / 📖 세부 내용 / ⚖️ 모순 / 🛠️ 적용 사례 / ✅ 검증 상태 / 🔗 관련 문서 링크([[위키링크]]) / 📝 변경 이력`.
- **Bridge에 본문 추출 엔드포인트 `/api/web-extract` 신규** — Playwright readability 방식으로 `main`/`article` 본문 텍스트만 추출(nav·header·footer 등 노이즈 제거), 본문 32000자 상한.
- `/benchmark`(디자인 벤치마킹)와 달리 `/wikify`는 사이트 **콘텐츠를 지식 문서화**한다. 결과물은 `datacollectSavePath`(또는 Bridge `WIKI_RAW_PATH`)에 저장.
- **신규 패키징:** `astra-2.2.45.vsix`.

---



## v2.2.44 (2026-05-20)
### 📜 /youtube — 보고서 앞에 영상 전체 스크립트 출력
- `/youtube` 결과물 맨 앞에 영상 전체 자막(Full Script) 섹션을 추가. 30초 버킷으로 묶어 `[mm:ss] 문장…` 형태로 정리 — 잘게 끊긴 자동자막을 가독성 있게 합쳐, 분석 보고서와 원문 대본을 한 문서에서 함께 본다.
- 화면 출력·저장 markdown 양쪽 모두 `📜 전체 스크립트` → `---` → `대본 역기획서` 순서로 적용.
- **신규 패키징:** `astra-2.2.44.vsix`.

---



## v2.2.43 (2026-05-20)
### ✍️ /youtube 출력 포맷 개편 — "대본 역기획서"
- `/youtube` 분석 리포트를 영상 제작 가이드(4-렌즈)에서 **대본(스크립트) 역기획서**로 전면 개편. BGM·자막·컷 전환 등 영상 연출 항목을 걷어내고 스크립트(텍스트)·언어 구조에만 집중한다.
- 새 레이아웃 5종: 🎬 한 줄 인상 / 1. 스크립트 뼈대 구조도(표) / 2. 말의 맛 & 톤앤매너 / 3. 내 대본에 바로 쓰는 액션 체크리스트 / ✂️ 빈칸 채우기식 대본 템플릿.
- 언어적 장치를 고정 태그 어휘(`#FOMO #권위부여 #호기심갭 #브릿지멘트` 등)로 라벨링. '전문용어 → 쉬운 비유' 분석 항목 신설 — 화자의 구어체 '말의 맛'을 명시적으로 추출한다.
- **신규 패키징:** `astra-2.2.43.vsix`.

---



## v2.2.42 (2026-05-20)
### 🎬 /youtube — Datacollect youtube insight 4-렌즈 분석 이식
- **`/youtube`가 이제 LLM 4-렌즈 콘텐츠 제작 가이드를 생성한다.** 그동안 transcript/메타데이터 덤프만 했으나, 이제 Datacollect 웹앱(YoutubePanel)의 `build4LensPrompt`를 그대로 이식 — 10초 훅 / 스크립트 구조(기승전결 타임라인) / 제작 리소스·편집 스타일 / 썸네일·제목 CTR 4-렌즈 분석 + 역기획서 + 대본 템플릿을 생성한다.
- **extract 필드 버그 수정.** Bridge `/api/youtube/extract`는 `source` 필드를 요구하는데 ASTRA가 `url`을 보내 "source URL이 필요합니다" 에러가 나던 문제. 이제 `{ source, withMetadata, limit }` 로 올바르게 호출한다.
- **결과물 자동 저장.** 분석 markdown을 `/benchmark`와 동일하게 raw 폴더(`datacollectSavePath` > Bridge `WIKI_RAW_PATH`)에 저장.
- **명령어 보조 컨텍스트.** `/youtube <url> <우리 채널 설명>` 형태로 URL 뒤 자연어는 "우리가 만들 콘텐츠" 컨텍스트로 분석에 반영된다.
- **신규 패키징:** `astra-2.2.42.vsix`.

---



## v2.2.41 (2026-05-20)
### 🎛️ /benchmark 합성 Temperature 설정 추가
- **`g1nation.datacollectSynthesisTemperature` 신설** (기본 0.1). `/benchmark` LLM 4-렌즈 합성의 temperature를 Astra Settings 패널 'Datacollect' 섹션에서 조절 가능 — 그동안 코드에 `0.3`으로 하드코딩돼 있었다. 낮출수록(0.1) 한국어 생성 중 섞이는 깨진 문자·환각이 줄고 결과가 결정적이다. 0~2 범위로 클램프.
- **신규 패키징:** `astra-2.2.41.vsix`.

---



## v2.2.40 (2026-05-20)
### 📦 재패키징 (코드 변경 없음)
- v2.2.39와 코드·기능 완전 동일. 버전 번호만 갱신한 재패키징 빌드 — v2.2.39의 변경사항(/benchmark LLM 4-렌즈 합성, 크롤 깊이/페이지 설정)이 모두 그대로 포함된다.
- **신규 패키징:** `astra-2.2.40.vsix`.

---



## v2.2.39 (2026-05-20)
### ✨ /benchmark LLM 4-렌즈 합성 + 크롤 깊이/페이지 설정
- **LLM 4-렌즈 합성 추가 — 결과물이 Datacollect 웹앱과 동등해짐.** 그동안 `/benchmark`는 Playwright 스캔 데이터를 그대로 덤프만 했다(디자인 토큰 raw 목록). 이제 Datacollect 웹앱(WebBenchmarkPanel)과 동일하게 `scan → LLM 3단계 합성(Visual/Layout/Interaction/Voice 4-렌즈 + IA·페이지 템플릿 + 원본 재구축 명세) → 완성된 마크다운 리포트`를 생성한다. Bridge `/api/lm` 프록시 경유, Astra 기본 모델(`g1nation.defaultModel`/`ollamaUrl`)을 사용. 합성 실패 시 raw 스캔 요약으로 자동 fallback.
- **크롤 깊이·최대 페이지 설정 추가.** `g1nation.datacollectCrawlDepth`(기본 1)·`g1nation.datacollectMaxPages`(기본 8) 신설 — Astra Settings 패널 'Datacollect' 섹션에서 편집. 명령어에서 `/benchmark <url> depth=2 pages=12` 로 그때그때 덮어쓰기 가능 (우선순위: 명령어 > 설정 > 기본값).
- **명령어 보조 컨텍스트.** `/benchmark <url> [depth=N] [pages=N] <자연어 설명>` 형태로 URL 뒤에 붙인 자연어는 합성 part 1·2의 톤 추정 보조 컨텍스트로 전달된다.
- **신규 패키징:** `astra-2.2.39.vsix`.

---



## v2.2.38 (2026-05-20)
### 🐛 /benchmark URL 파싱 fix — 자연어 섞인 입력 + 빈 결과 경고
- **URL 토큰만 추출.** `/benchmark www.caliverse.io 분석해줘` 처럼 URL 뒤에 자연어를 붙이면 "분석해줘"까지 URL에 섞여 `https://www.caliverse.io 분석해줘.` 라는 무효 URL이 되고, Playwright가 페이지를 못 열어 meta·디자인·마이크로카피가 전부 `(없음)`으로 나오던 문제. 이제 arg의 첫 공백 전 토큰만 URL로 사용한다. (스캔은 Playwright 결정론적 추출이라 local LLM과 무관 — 빈 결과는 LLM 문제가 아니라 URL 오염이었다.)
- **빈 스캔 결과 경고.** 스캔이 에러 없이 끝나도 meta·design·microcopy가 모두 비면 ⚠️ 경고를 표시 — URL 오타·봇 차단·JS 전용 렌더링을 사용자가 즉시 인지.
- **신규 패키징:** `astra-2.2.38.vsix`.

---



## v2.2.37 (2026-05-20)
### ✅ Slash 결과물 미표시 근본 fix + /benchmark 진행 표시·결과물 저장
- **`streamStart` 누락 수정 — slash 명령 결과가 화면에 안 보이던 진짜 원인.** v2.2.30이 `streamEnd`(input 잠금 해제)만 보냈고 `streamStart`는 빠뜨렸다. webview는 `streamStart`를 받아야 assistant 메시지 버블(`streamBody`)을 만들고, 그게 없으면 이후 모든 `streamChunk`(=결과 텍스트, 에러 메시지 포함)를 silently drop한다. `handleSlashCommand` 시작부에서 `streamStart`를 명시적으로 보내도록 수정 — `/research`·`/benchmark`·`/youtube`·`/blog` 모두 결과가 정상 표시됨.
- **`/benchmark` 진행 표시.** scan은 단일 동기 호출이라 진행률 스트림이 없어 사용자가 멈춘 줄 오해하던 문제 → 4초마다 경과 시간(`·4s ·8s …`)을 한 줄에 누적 표시하고, 완료 시 `✅ 스캔 완료 (Ns 소요)` 출력.
- **`/benchmark` 결과물 자동 저장.** scan 결과를 markdown 리포트로 합성해 Bridge `/api/wiki/save`로 저장. 저장 위치는 신규 설정 `g1nation.datacollectSavePath`(비우면 Bridge의 `WIKI_RAW_PATH` 환경변수가 결정 — 코드에 절대경로 하드코딩 없음).
- **Settings 패널에 "Datacollect" 섹션 추가.** Bridge URL과 결과물 저장 폴더를 Astra Settings 패널에서 직접 편집 가능.
- **신규 패키징:** `astra-2.2.37.vsix`.

---



## v2.2.36 (2026-05-20)
### 🛠️ Antigravity 빌트인 "Connect AI"와의 view 충돌 해소
- **사용자 보고 console에 `Connect AI extension activated` + 우리 `[ASTRA-DEBUG]` 로그 0개** → 우리 vsix activate 함수가 호출조차 안 되고 있다는 결정적 증거. Antigravity가 빌트인으로 가진 "Connect AI" extension이 우리 view container id `astra-activity` / view id `astra-launcher` / title `Astra` 영역과 충돌해 우리 코드를 덮은 것으로 추정.
- **view container/view id를 unique하게 변경**: `astra-activity` → `g1nation-astra-activity`, `astra-launcher` → `g1nation-astra-launcher`, title `Astra` → `Astra (g1nation)`. 좌측 활성바에 빌트인과 별도의 우리 아이콘이 표시되며, 그 아이콘 클릭 시 우리 activate가 호출됨.
- **신규 패키징:** `astra-2.2.36.vsix`.

---



## v2.2.35 (2026-05-20)
### 🛠️ Slash 미동작 결정적 fix: globalState 이전 진입 + DevTools console 진단
- **globalState write보다 *먼저* slash 분기를 잡도록 변경.** `g1nation.astra` global state가 ~917KB로 누적된 환경에서 `globalState.update` 호출이 첫 prompt를 지연/hang시키는 사례 보고됨. slash 명령은 LLM/blank-chat state 갱신과 무관하므로 update를 건너뛴다.
- **DevTools console에 ASTRA-DEBUG trace.** OutputChannel(`logInfo`)·popup·statusbar에 더해 `console.error`로 `[ASTRA-DEBUG] activate vX.Y.Z`, `[ASTRA-DEBUG] prompt case entered`, `[ASTRA-DEBUG] slash check matched=…`, `[ASTRA-DEBUG] slashRouter handleSlashCommand`을 출력. 사용자가 F12 DevTools console을 볼 때 우리 코드 실행 단계가 즉시 보임.
- **신규 패키징:** `astra-2.2.35.vsix`.

---



## v2.2.34 (2026-05-19)
### 🚨 결정적 진단: activate / slash 진입 popup notification
- **Activation 시점 popup:** VS Code/Antigravity가 시작될 때 화면 우측 하단에 `📡 Astra vX.Y.Z activated (PID=...)` 알림. 우리 vsix가 실제로 활성화됐는지 1초 안에 확인 가능. 같은 이름의 빌트인 extension이 우리 코드를 가리는 케이스 발견용.
- **Slash 진입 popup:** `/research`, `/benchmark`, `/youtube`, `/blog` 명령이 slashRouter에 도달하면 `📻 Datacollect Radio: /benchmark 진입` 알림. OutputChannel 안 보고도 결정.
- **신규 패키징:** `astra-2.2.34.vsix`.

---



## v2.2.33 (2026-05-19)
### 🔍 Slash 명령 진단: dispatch root 로깅 + StatusBar toast
- **dispatch root 진입 trace:** webview에서 들어오는 모든 메시지(type + value preview)를 OutputChannel(Astra)에 log. "메시지가 진짜로 Astra에 도착했는지"부터 결정적으로 판별 가능.
- **StatusBar 5초 toast:** `/research`, `/benchmark`, `/youtube`, `/blog` 명령이 slashRouter에 진입하면 VS Code 하단 StatusBar에 `📻 Datacollect Radio: /benchmark 처리 중…` 표시. OutputChannel 못 봐도 진입 자체를 즉시 확인.
- **신규 패키징:** `astra-2.2.33.vsix` 패키지로 배포합니다.

---



## v2.2.32 (2026-05-19)
### 🔬 Datacollect Radio: 슬래시 명령 진단 로깅 강화
- **OutputChannel(Astra)에 단계별 trace 추가:** `[SLASH] prompt received`, `[SLASH] handleSlashCommand start/finished/error` 라인을 logInfo로 출력. "/benchmark 입력했는데 아무 응답 없음" 같은 보고가 들어왔을 때 어디서 막혔는지 (분기 진입 여부 / webview 부재 / bridge 호출 실패) 즉시 판별 가능.
- **webview 부재 시 즉시 사용자 알림:** `provider._view`가 undefined면 chunk 메시지가 silently drop되어 사용자가 무한 로딩으로 보였습니다. 이제 그 경우 VS Code notification으로 *"채팅 webview가 활성 상태가 아닙니다"* 안내.
- **신규 패키징:** `astra-2.2.32.vsix` 패키지로 배포합니다.

---



## v2.2.30 (2026-05-19)
### 🔓 Datacollect Radio: 슬래시 명령 후 채팅 input 자동 해제
- **슬래시 명령(`/research`, `/benchmark`, `/youtube`, `/blog`) 종료 시 `streamEnd` 신호 누락 수정.** Astra 채팅 input은 streamEnd 메시지로 잠금이 풀리는데, 우리 slashRouter는 일반 LLM streamer를 우회해 bridge를 직접 호출하므로 자동으로 신호가 안 가던 상태. 사용자가 `/benchmark`를 입력하면 결과가 채팅에 표시돼도 input이 영원히 잠긴 채 무한 로딩으로 보였습니다.
- **`try/finally`로 streamEnd 보장.** timeout / 에러 / 정상 종료 어떤 경로든 input이 풀리도록 강제.
- **신규 패키징:** `astra-2.2.30.vsix` 패키지로 배포합니다.

---



## v2.2.29 (2026-05-19)
### ⏱️ Datacollect Radio: NotebookLM 리서치 타임아웃 완화
- **`/research` 명령의 `import` 단계 타임아웃을 120s → 300s로 확대**: NotebookLM이 deep research 결과를 노트북 소스로 옮길 때 큰 리포트는 2~5분이 걸려 기존 120s cap에서 `TRANSIENT_TIMEOUT`으로 떨어지고 정작 백엔드는 정상 처리 중인 race가 보고돼 수정.
- **`synthesize` 단계 타임아웃 300s → 600s**: 큰 노트북의 LLM 합성이 5~10분 걸리는 경우 cover.
- **`status` polling 타임아웃 30s → 60s**: MCP 자식 프로세스가 stale일 때 30s 안에 응답 못 하는 사례 완화. (같은 이슈는 [Wiki/Datacollect 프로젝트](e:\Wiki\Datacollect)의 [engine.ts](e:\Wiki\Datacollect\src\lib\engine.ts)에도 동일한 값으로 수정 완료)
- **신규 패키징:** `astra-2.2.29.vsix` 패키지로 배포합니다.

---



## v2.2.28 (2026-05-19)
### 📻 Datacollect Radio: 채팅 슬래시 명령으로 외부 도구 통합
- **새 UI 버튼 없이 채팅 한 줄로 외부 파이프라인 호출:** Astra 채팅에서 `/research`, `/benchmark`, `/youtube`, `/blog` 슬래시 명령으로 별도의 [Wiki/Datacollect 프로젝트](e:\Wiki\Datacollect) bridge(기본 `http://127.0.0.1:3002`)의 무거운 기능을 직접 라우팅합니다.
- **/research \<주제\>:** NotebookLM Deep Research 전체 파이프라인(notebook 생성 → status polling → import → synthesize)을 채팅에서 한 번에 실행하고 결과 마크다운을 스트리밍으로 받습니다.
- **/benchmark \<url\>:** Playwright 기반 웹사이트 분석 — 디자인 토큰, 컬러 팔레트, 사이트맵 ASCII 다이어그램, 마이크로카피를 요약해 채팅에 표시.
- **/youtube \<url\>:** 영상 metadata + transcript를 추출해 챕터/태그/본문 미리보기까지 한 번에.
- **/blog \<키워드\>:** Datacollect Blog Pipeline 페이지(http://127.0.0.1:8787/blog/)를 자동 오픈 (Bridge에 대응 API가 추가되면 채팅 직접 실행도 지원 예정).
- **LLM 토큰 절약:** 슬래시 명령은 회사 모드/일반 chat 분기 *전에* 잡히므로 모델 비용 없이 처리됩니다. 진행상황·결과는 일반 LLM 응답과 같은 자리(`streamChunk`)에 표시.
- **설정 추가:** `g1nation.datacollectBridgeUrl` (default `http://127.0.0.1:3002`)로 bridge 위치 override 가능. Datacollect는 `npm run bridge`로 미리 띄워 두어야 합니다.
- **신규 패키징:** `astra-2.2.28.vsix` 패키지로 배포합니다.

---



## v2.2.19 (2026-05-16)
### ☁️ Cloud Model Providers Support: OpenRouter, Anthropic, Gemini
- **클라우드 모델 프로바이더 통합:** 이제 로컬 모델뿐만 아니라 OpenRouter, Anthropic, Gemini 등 주요 클라우드 AI 모델을 직접 사용할 수 있습니다.
- **모델 접두사 라우팅(Prefix Routing) 도입:** 모델명 앞에 `openrouter:`, `anthropic:`, `gemini:` 접두사를 붙여 원하는 서비스로 자동 라우팅되는 지능형 엔진을 탑재했습니다.
- **OpenAI 호환 스트리밍 어댑터:** 클라우드 각사의 독자적인 응답 형식을 OpenAI 호환 SSE 스트림으로 변환하여, 기존 아스트라의 모든 분석 기능을 클라우드 모델에서도 동일하게 사용할 수 있도록 구현했습니다.
- **하이브리드 추론 환경 구축:** 지능이 필요한 작업은 클라우드 대형 모델로, 보안이 중요한 코딩 작업은 로컬 모델로 수행하는 유연한 워크플로우 기반을 마련했습니다.
- **신규 패키징:** `astra-2.2.19.vsix` 패키지를 통해 로컬과 클라우드를 아우르는 하이브리드 지능형 레이아웃을 배포합니다.

---



## v2.2.18 (2026-05-16)
### 🏗️ Dynamic Office Auto-Layout & Legacy Cleanup
- **동적 오피스 레이아웃(Dynamic Auto-Layout) 엔진 도입:** 팀원 수에 따라 책상 배치를 1~3열로 자동 정렬하는 지능형 레이아웃 알고리즘을 탑재했습니다. 이제 팀원 수에 관계없이 최적화된 오피스 뷰를 제공합니다.
- **레거시 레이아웃 감지 및 마이그레이션:** 구 버전의 고정형(8석) 레이아웃을 자동으로 감지하여 최신 동적 레이아웃으로 전환하는 로직을 추가했습니다.
- **스테이지 밸런스 조정:** CEO 책상 위치를 중앙 하단으로 재배치하고, 전반적인 오브젝트 크기와 간격을 조정하여 시각적 안정성을 높였습니다.
- **오피스 동기화 로직 강화:** 작업 흐름(Pipeline)이 없을 때도 활성 팀원(Roster) 기반으로 오피스가 자동 구성되도록 동기화 엔진을 개선했습니다.
- **신규 패키징:** `astra-2.2.18.vsix` 패키지를 통해 팀 규모에 따라 유연하게 변하는 지능형 오피스 환경을 배포합니다.

---



## v2.2.17 (2026-05-16)
### ⚙️ Google Service Control & Astra Office Flow Layer
- **구글 서비스 설정 패널(Google Control) 도입:** 설정 패널 내에 구글 캘린더 OAuth 연결, iCal 동기화, 클라이언트 자격 증명 관리를 위한 전용 섹션을 추가했습니다.
- **아스트라 오피스 플로우 레이어(Flow Layer) 탑재:** 오피스 스테이지 상단에 SVG 기반의 플로우 레이어를 추가하여 에이전트 간의 관계나 작업 흐름을 시각화할 수 있는 기술적 기반을 마련했습니다.
- **배경 최적화:** 아스트라 오피스 V2 전용 백드롭 자산을 추가하고 디자인 디테일을 개선했습니다.
- **실시간 동기화 강화:** 설정 변경 시 즉시 오피스 상태와 캘린더 캐시에 반영되도록 백엔드 핸들러를 정교화했습니다.
- **신규 패키징:** `astra-2.2.17.vsix` 패키지를 통해 구글 연동 제어권이 강화된 최신 버전을 배포합니다.

---



## v2.2.16 (2026-05-16)
### 🏢 Astra Office UI Overhaul: Operations Floor Experience
- **차세대 오피스 UI 도입:** 단순한 뷰어를 넘어 실제 운영 본부(Operations Floor)의 느낌을 주는 대대적인 인터페이스 개편을 단행했습니다.
- **데이터 기반 사이드 패널:** 에이전트 라인업(Team), 운영 브리프(Signal), 활동 도크(Activity Dock) 등 전문적인 정보 레이아웃을 탑재했습니다.
- **비주얼 경험 고도화:** 글래스모피즘(Glassmorphism)과 그라데이션 백그라운드, 정교한 상태 배지(Pills)를 통해 더욱 프리미엄한 룩앤필을 구현했습니다.
- **진행 상황 가시화:** 미션별 진행률, 단계 보고, 주의 신호 감지 등 에이전트의 작업 흐름을 한눈에 파악할 수 있는 대시보드 기능을 강화했습니다.
- **구글 캘린더 OAuth 연동 기반 마련:** 구글 캘린더와의 정식 연동을 위한 인증 시스템 및 구현 기록을 통합했습니다.
- **신규 패키징:** `astra-2.2.16.vsix` 패키지를 통해 더욱 강력하고 아름다워진 아스트라 오피스를 배포합니다.

---



## v2.2.15 (2026-05-16)
### 💎 Astra Office Refactor & Multi-Service Integration (Calendar, Sheets, Tasks)
- **아스트라 오피스(Astra Office) 대규모 리팩토링:** 모놀리식 구조에서 기능 기반 모듈 구조(`src/features/astraOffice/`)로 전면 개편했습니다. `OfficeSnapshot` 데이터 모델 도입을 통해 에이전트의 활동 가시성과 레이아웃 관리 능력을 혁신적으로 개선했습니다.
- **캘린더(Calendar) 연동:** ICS 파일 분석 및 일정 관리 기능을 추가하여 에이전트가 일정 기반의 맥락을 인지할 수 있도록 했습니다.
- **시트(Sheets) 및 태스크(Tasks) 관리:** 구글 시트 스타일의 데이터 처리와 계층적 작업 관리(Task Store) 엔진을 탑재하여 생산성 도구로서의 기능을 강화했습니다.
- **에이전트 엔진 복원력 고도화:** 디스패처와 프롬프트 빌더의 정합성을 개선하고, 복합 파이프라인 수행 시의 안정성을 높였습니다.
- **신규 패키징:** `astra-2.2.15.vsix` 패키지를 통해 차세대 오피스 아키텍처와 새로운 연동 기능들을 배포합니다.

---



## v2.2.14 (2026-05-16)
### 🎭 Advanced Pixel Office Customization & Face Directions
- **캐릭터 방향성 고도화:** 기존 좌우(Left/Right) 방향에 더해 상하(Up/Down) 방향 스프라이트 지원을 추가하여 더욱 다채로운 사무실 연출이 가능해졌습니다.
- **캐릭터-책상 독립 제어:** 책상은 유지하면서 캐릭터만 삭제하거나, 캐릭터가 없는 책상에 새 팀원을 다시 추가할 수 있는 기능을 도입했습니다.
- **레이아웃 스키마 V2 도입:** 캐릭터 존재 여부 및 정밀한 위치/회전 정보를 보존하는 최신 레이아웃 스냅샷 엔진을 적용했습니다.
- **UI/UX 편의성 개선:** 속성 패널에서 방향 전환과 캐릭터 추가/삭제가 즉시 반영되도록 인터랙션을 강화했습니다.
- **신규 패키징:** `astra-2.2.14.vsix` 패키지를 통해 더욱 유연해진 사무실 모델링 환경을 제공합니다.

---



## v2.2.13 (2026-05-16)
### 🏗️ Pixel Office Interactive Editor & Core Refinement
- **픽셀 오피스 편집 모드 도입:** 책상 추가/삭제, 에이전트 매핑 변경, 가구(프랍) 배치 및 크기 조절이 가능한 인터랙티브 편집 기능을 추가했습니다.
- **속성 패널(Property Panel) 구현:** 선택한 팀원이나 가구의 상세 속성(라벨, 방향, 스프라이트 종류 등)을 실시간으로 수정할 수 있는 UI를 탑재했습니다.
- **프로젝트 컨텍스트 동기화 최적화:** 로컬 환경에 맞게 `chronicle.config.json`의 경로 정보를 최신화하고 프로젝트 인지 능력을 안정화했습니다.
- **신규 패키징:** `astra-2.2.13.vsix` 패키지를 통해 더욱 강력해진 픽셀 오피스 커스터마이징 기능을 제공합니다.

---



## v2.2.12 (2026-05-16)
### 🚀 Sync & Visual Polish Expansion
- **픽셀 오피스(Pixel Office) 자산 및 레이아웃 확장:** 다양한 방향의 캐릭터 애니메이션과 사무실 레이아웃 프리뷰 자산을 대폭 확충하여 시각적 피드백의 완성도를 높였습니다.
- **의도 정렬 및 상태 엔진 안정화:** 사용자 의도를 분석하고 계약(Contract)을 체결하는 파이프라인과 실시간 상태를 반영하는 엔진의 최신 변경 사항을 최종 동기화했습니다.
- **아키텍처 결정 기록(ADR) 최신화:** 프로젝트의 구조적 진화와 설계 결정을 담은 신규 ADR(0013, 0014)을 통합했습니다.
- **신규 패키징:** `astra-2.2.12.vsix` 패키지를 통해 최신 시각적 자산과 기능이 통합된 버전을 배포합니다.

---

## v2.2.11 (2026-05-15)
### 🛡️ Cross-Project Build Optimization & Stability Enforcement
- **멀티 빌드 도구 대응 강화:** Vite와 CRA 등 서로 다른 빌드 환경 간의 설정 혼선을 감지하고, 프로젝트 성격에 맞는 최적화된 인프라(package.json)로 자동 복구 및 정렬하는 로직을 추가했습니다.
- **의존성 무결성 검사 고도화:** 패키지 설치 시 발생할 수 있는 환경 변수 충돌 및 명령어 해석 오류(PowerShell && 등)에 대한 사전 방어 체계를 강화했습니다.
- **성능 프로파일링 개선:** 빌드 과정에서의 리소스 점유율을 실시간으로 모니터링하여, 대규모 프로젝트 배포 시의 안정성을 한층 끌어올렸습니다.
- **신규 패키징:** `astra-2.2.11.vsix` 패키지를 통해 더욱 견고하고 유연한 프로젝트 관리 환경을 제공합니다.

---


## v2.2.10 (2026-05-15)
### 🏗️ Advanced Technical Design Alignment & Architecture Refinement
- **기술 설계 문서(Technical Design) 동기화:** `tetris/technical_design.md`와 같은 고차원 설계 문서를 분석하여, 실제 구현 로직(Custom Hooks, Component Architecture)과의 정합성을 유지하는 능력을 강화했습니다.
- **아키텍처 가이드라인 준수:** FSD(Feature-Sliced Design) 등 현대적인 아키텍처 패턴을 인식하고, 이에 부합하는 코드 구조를 제안하는 지능형 가이드를 고도화했습니다.
- **게임 엔진 로직 최적화 지원:** 복잡한 상태 관리(Single Source of Truth) 및 렌더링 최적화(Canvas API)를 위한 핵심 알고리즘 설계 지원 능력을 대폭 향상시켰습니다.
- **신규 패키징:** `astra-2.2.10.vsix` 패키지를 통해 설계와 구현의 경계를 허무는 강력한 아키텍처 파트너십을 제공합니다.

---


## v2.2.9 (2026-05-15)
### 🚀 Strategic Project Scaffolding & Core Engine Expansion
- **하이퍼-센서리 프로젝트 스캐폴딩:** `Tetris Modernized`와 같은 Canvas 기반 물리 게임 프로젝트의 자동 인프라 구축(Vite, React, Tailwind, Framer Motion) 로직을 정교화했습니다.
- **컨텍스트 엔진 도메인 확장:** 게임 개발, 물리 연산, UI 인터랙션 설계 등 전문적인 도메인에 대한 코드 생성 및 분석 능력을 강화했습니다.
- **빌드 및 배포 자동화 강화:** 프로젝트 생성부터 빌드, 패키징까지 이어지는 워크플로우를 최적화하여 개발 생산성을 극대화했습니다.
- **신규 패키징:** `astra-2.2.9.vsix` 패키지를 통해 더욱 광범위한 프로젝트 지원 능력을 갖춘 최신 버전을 배포합니다.

---


## v2.2.8 (2026-05-15)
### 🧠 Cognitive Architecture & Telemetry Refinement
- **컨텍스트 인식 엔진 고도화:** 복잡한 멀티 프로젝트 환경에서의 연관 지식 추출 알고리즘을 개선하여, `Test_0303`과 같은 게임 엔진 개발 시의 맥락 유지 능력을 강화했습니다.
- **텔레메트리 데이터 정밀화:** 에이전트의 의사결정 과정을 추적하는 로그 시스템을 정교화하여, 자가 성찰(Self-Reflection)의 근거 데이터를 더욱 명확하게 확보합니다.
- **인터페이스 응답성 최적화:** 사이드바와 에디터 간의 데이터 통신 프로토콜을 경량화하여, 대규모 코드베이스 분석 중에도 부드러운 UI 인터랙션을 보장합니다.
- **신규 패키징:** `astra-2.2.8.vsix` 패키지를 통해 인지 아키텍처가 한 단계 진화한 최신 버전을 배포합니다.

---


## v2.2.7 (2026-05-15)
### 🛠️ Performance & Pipeline Refinement
- **빌드 파이프라인 최적화:** 패키징 과정에서의 리소스 점유율을 개선하고, 불필요한 캐시 데이터를 정리하여 빌드 정합성을 높였습니다.
- **모듈 로딩 효율화:** 익스텐션 활성화 시의 초기 로딩 지연 시간을 단축하기 위해 핵심 기능들의 초기화 순서를 재조정했습니다.
- **안정성 강화:** 장기 실행 환경에서의 메모리 누수 방지를 위한 가비지 컬렉션 트리거 포인트를 최적화했습니다.
- **신규 패키징:** `astra-2.2.7.vsix` 패키지를 통해 전반적인 성능과 안정성이 개선된 최신 버전을 배포합니다.

---


## v2.2.6 (2026-05-15)
### 🧮 Gugudan Master Engine & Global Standards
- **구구단 마스터(Test_0303) 엔진 최적화:** `useGameEngine.js`의 중복 선언 및 미완성 물리 루프 로직을 완벽하게 복구하고, `App.jsx`의 애니메이션 오타를 수정하여 '구구단 학습 인터랙션'을 완성했습니다.
- **Vite 인프라 표준화:** `postcss.config.js`, `vite.config.js`, `main.jsx` 등 리액트 앱 구동을 위한 필수 표준 설정 파일을 자동화하여 멀티 프로젝트 스캐폴딩 안정성을 확보했습니다.
- **의존성 결합도 최적화:** Tailwind CSS와 Framer Motion의 연동 설정을 강화하여 저사양 환경에서도 '쫀득한' UX를 보장합니다.
- **신규 패키징:** `astra-2.2.6.vsix` 패키지를 통해 학습용 게임 엔진 지원 기능이 고도화된 최신 버전을 배포합니다.

---


## v2.2.5 (2026-05-15)
### 🎮 Multi-Project Synergy & Infrastructure
- **학습 게임 생태계 구축:** `Test_0303`(구구단 마스터) 및 `Hangeul Puzzle Game`의 기초 인프라(Vite, Tailwind, Framer Motion)를 완벽하게 구축하고 엔진 오타를 수정하여 즉시 실행 가능한 상태로 최적화했습니다.
- **Vite-React 스캐폴딩 안정화:** 신규 프로젝트 생성 시 `postcss.config.js`, `vite.config.js` 등 필수 설정 파일 자동 구성 로직을 강화했습니다.
- **코어 엔진 안정성 유지:** 최근 추가된 의도 정렬(Intent Alignment) 및 픽셀 오피스 상태 엔진의 연동 안정성을 재검증했습니다.
- **신규 패키징:** `astra-2.2.5.vsix` 패키지를 통해 범용 프로젝트 지원 기능이 강화된 최신 버전을 배포합니다.

---


## v2.2.4 (2026-05-15)
### ⚙️ Intent Alignment & Pixel Office Engine
- **의도 정렬 시스템(Intent Alignment) 공식화:** `intentAlignment.ts`와 `intentClassifier.ts`를 통해 사용자 메시지의 의도를 자동 분류하고, 파이프라인 실행 전 요구사항 계약(Requirement Contract)을 체결하는 C-G-C-F-Q 프레임워크를 안정화했습니다.
- **픽셀 오피스 상태 엔진 구축:** `pixelOfficeState.ts`를 통해 에이전트 파이프라인 상태(분석 중, 실행 중, 대기 등)를 실시간으로 반영하는 비주얼 피드백 레이어를 완성했습니다.
- **Self-Reflector 서브 모듈 안정화:** `selfReflectorExecution`, `selfReflectorVerifier`, `selfReflectorPrompt`, `selfReflectorHollow` 4개 모듈의 상호작용 로직을 정교화하여 성찰 단계의 신뢰성을 높였습니다.
- **신규 패키징:** `astra-2.2.4.vsix` 패키지를 통해 최신 의도 정렬 및 성찰 엔진을 배포합니다.

---


## v2.2.3 (2026-05-15)
### 🚀 Stability & Packaging Refinement
- **패키지 정합성 강화:** 최신 코드베이스 변경 사항을 반영하여 빌드 파이프라인을 재검증하고 배포 안정성을 확보했습니다.
- **지속적 품질 관리:** 298개 전체 테스트 스위트 통과를 재확인하여 엔진 신뢰성을 유지합니다.
- **신규 패키징:** `astra-2.2.3.vsix` 패키지를 통해 최신 안정화 상태를 배포합니다.

---


## v2.2.2 (2026-05-15)
### 🧠 Intelligent Reflection & Knowledge Consolidation
- **자가 성찰 결과의 영속성(Reflection Persistence) 강화:** `reflectionPersister.ts`를 통해 에이전트의 비평(Critique)과 성찰 내용을 지식 베이스에 영구적으로 기록하고, 향후 미션에서 이를 자가 학습 데이터로 활용할 수 있는 기반을 마련했습니다.
- **작업 재개 로직 안정화:** `resumeStore.ts` 시스템을 최종 정비하여 비즈니스 파이프라인 중단 시의 복구 신뢰도를 극대화했습니다.
- **사이드바 제공 로직 최적화:** `sidebarProvider.ts` 대규모 리팩토링을 통해 메시지 핸들링 성능을 개선하고 UI 반응성을 높였습니다.
- **아키텍처 문서 및 기획 자산 최신화:** 프로젝트 구조 분석 결과와 기획 레코드를 동기화하여 에이전트의 상황 인지 능력을 향상시켰습니다.

---


## v2.2.1 (2026-05-14)
### 🔄 Autonomous Task Resumption & Engine Resilience
- **작업 중단 후 자율 재개 기능 도입:** 예기치 않은 오류나 중단 상황에서도 이전에 진행하던 작업 흐름(Company Mission)을 마지막 성공 단계부터 즉시 이어서 실행할 수 있는 `resumeStore` 시스템을 구축했습니다.
- **상태 보존 정교화:** `_resume.json`을 통해 각 단계별 팀원의 결과물과 남은 작업들을 실시간으로 저장하며, 원자적(Atomic) 쓰기 방식을 통해 데이터 일관성을 보장합니다.
- **워크플로우 안정성 강화:** `dispatcher.ts` 내의 복구 로직을 강화하여 다단계 협업 미션 수행 중 발생할 수 있는 레이스 컨디션과 상태 불일치 문제를 해결했습니다.
- **UI 및 피드백 개선:** 작업 재개 시 현재 상황을 명확히 인지할 수 있도록 사이드바와 대화 핸들러의 상태 보고 기능을 최적화했습니다.

---


## v2.2.0 (2026-05-14)
### 💎 Milestone: Human-Centric UI & Workflow Evolution
- **UI 용어 및 인터랙션 전면 한글화:** '에이전트', '파이프라인' 등 딱딱한 용어를 '팀원', '작업 흐름' 등 직관적인 한글로 순화하여 친숙도를 높였습니다.
- **신규 사용자 가이드 고도화:** 시작 체크리스트와 예시 질문 칩을 통해 첫 사용자가 Astra의 강력한 기능을 즉시 체험할 수 있도록 설계했습니다.
- **작업 흐름(Pipeline) 에디터 개선:** 복잡한 설정 없이도 템플릿을 통해 '대표에게 맡기거나', '사용자가 직접 정한 순서대로' 팀원이 이어서 작업하게 만듭니다.
- **팀원 관리 인터페이스 최적화:** 새로운 팀원을 추가할 때 내부 ID와 테마 색상, 응답 스타일 등을 더욱 세밀하게 설정할 수 있도록 UI를 정교화했습니다.
- **시각적 일관성 강화:** 사이드바 전반의 디자인 토큰을 재검토하여 더욱 프리미엄하고 일관된 룩앤필을 완성했습니다.

---


## v2.1.9 (2026-05-14)
### 🚀 Immersive Onboarding & UX Transformation
- **신규 사용자 온보딩 프로세스 도입:** 사이드바에 3단계 체크리스트(두뇌 연결, 모델 선택, 첫 질문)를 추가하여 초기 설정 과정을 직관적으로 개선했습니다.
- **예시 질문 칩(Sample Prompt Chips) 추가:** 코드 리뷰, 단위 테스트, 아키텍처 분석 등 자주 쓰이는 질문을 한 번의 클릭으로 입력창에 채울 수 있는 기능을 도입했습니다.
- **웰컴 패널 전면 개편:** 상태에 따라 동적으로 변하는 환영 메시지와 팁을 통해 더욱 개인화된 사용자 경험을 제공합니다.
- **에이전트 역할 정밀 튜닝:** 레오, 루나, 아라 등 신규 에이전트들의 페르소나와 전문 분야 설명을 더욱 매끄럽게 다듬었습니다.

---


## v2.1.8 (2026-05-14)
### 🏢 Company Agent Roster Overhaul & UI Polish
- **에이전트 로스터 전면 개편:** 1인 기업 모드에 루나(사운드), 레오(유튜브), 아라(인스타) 등 특화된 에이전트를 추가하고 역할을 더욱 세분화했습니다.
- **제품 개발 파이프라인 최적화:** 기획 → 디자인 → 개발 → QA → 감리로 이어지는 핵심 워크플로우를 강화하고 기본 활성 에이전트 구성을 조정했습니다.
- **사이드바 UI 및 인터랙션 정교화:** `sidebar.js`와 스타일시트를 개선하여 대화 흐름의 시각적 안정성과 반응성을 높였습니다.
- **비즈니스 엔진 고도화:** `companyConfig.ts` 및 핸들러 로직 수정을 통해 다중 에이전트 협업 시의 컨텍스트 유지 능력을 강화했습니다.

---


## v2.1.7 (2026-05-14)
### 🚀 Version Up & Packaging Stabilization
- **버전 상향 및 패키징:** 프로젝트 버전을 `v2.1.7`로 업데이트하고 신규 VSIX 패키지를 생성했습니다.
- **Git 충돌 해결:** `git pull` 과정에서 발생한 자동 생성 파일(`.astra/project-context/architecture.md` 등)의 컨플릭트를 리모트 우선 방식으로 해결하여 상태를 안정화했습니다.
- **패키지 정합성 확보:** 최신 빌드 결과물을 포함한 `astra-2.1.7.vsix` 배포 준비를 완료했습니다.

---


## v2.1.6 (2026-05-14)
### 🛠️ Sidebar Polish & Configuration Refinement
- **사이드바 상호작용 최적화:** `sidebar.js`와 `chatHandlers.ts`를 튜닝하여 비동기 메시지 처리 시의 UI 지연 현상을 최소화하고 사용자 피드백 루프를 강화했습니다.
- **Company Suite 설정 정교화:** `companyConfig.ts`의 기본 설정을 보완하여 멀티 프로젝트 환경에서의 에이전트 전환 안정성을 높였습니다.
- **테스트 케이스 동기화:** 스트레스 테스트 중 발생한 컨플릭트 미션 파일을 정리하고 캐시 정합성을 확보했습니다.
- **패키징 안정화:** `astra-2.1.6.vsix`를 통해 더욱 세밀하게 조정된 제어 레이어를 배포합니다.

---


## v2.1.5 (2026-05-14)
### 🚀 Orchestration Pipeline & Immersive Synergy
- **Pipeline Templates 도입:** 1인 기업 모드의 업무 흐름을 템플릿화하여 `pipelineTemplates.ts`를 통해 고정된 비즈니스 시나리오를 빠르게 실행할 수 있는 구조를 구축했습니다.
- **Orchestration 로직 정교화:** `CEO Planner`와 `Dispatcher` 간의 데이터 흐름을 최적화하여, 복합적인 미션 수행 시의 컨텍스트 유지 능력을 강화했습니다.
- **UI/UX 미세 조정:** 사이드바의 반응형 스타일과 상호작용 로직을 개선하여 더욱 쾌적한 에이전트 제어 환경을 제공합니다.
- **비즈니스 정합성 강화:** 롯데월드 이머시브 프로젝트와 같은 실제 기술 검토 시나리오를 수용할 수 있도록 에이전트의 지식 활용 범위를 조정했습니다.

---


## v2.1.4 (2026-05-14)
### 🏢 Enterprise Multi-Agent Suite & Reflector Stabilization
- **Company Suite 고도화:** `CEO Planner`, `CEO Reporter` 등 1인 기업 모드를 위한 비즈니스 오케스트레이션 기능을 안정화하고, 부서 간 협업 로직을 강화했습니다.
- **Self-Reflection (Reflector) 공식 도입:** Researcher와 Writer 사이에 비평(Critique) 단계를 추가하여, 리서치 결과의 누락이나 모순을 사전에 검증하는 인텔리전스 루프를 완성했습니다.
- **지식 자산(ADR/Bug) 체계화:** 신규 ADR 및 버그 레코드를 통합하여 프로젝트의 의사결정 이력과 기술적 부채 관리 능력을 향상시켰습니다.
- **인프라 환경 정비:** 프로젝트 루트 및 하위 모듈 간의 환경 설정 충돌을 해결하고 빌드 파이프라인의 견고함을 확보했습니다.

---


## v2.1.3 (2026-05-14)
### 🚀 Core Synergy & Distribution Alignment
- **종속성 정합성 완결:** `package-lock.json`을 최신 엔진 사양에 맞춰 동기화하여 빌드 시의 의존성 충돌 가능성을 원천 차단했습니다.
- **텔레메트리 및 시맨틱 인덱싱 통합:** 신규 도입된 `telemetry.ts`와 `embeddings.ts`를 통해 시스템 진단 능력을 강화하고 지식 검색의 의미론적 정확도를 높였습니다.
- **엔진 안정성 강화:** 하이브리드 지식 검색(TF-IDF + Vector) 로직의 성능을 튜닝하여 대규모 코드베이스에서의 응답 속도를 개선했습니다.
- **신규 패키징:** `astra-2.1.3.vsix` 패키지를 통해 더욱 강력해진 인텔리전스 레이어를 배포합니다.

---

 
 ## v2.1.2 (2026-05-14)
 ### 🏛️ Chronicle Repair & Context Stability
 - **프로젝트 루트 자동 복구 로직 도입:** 이전 버전에서 워크스페이스 상위 폴더를 기준으로 잘못 저장된 서브프로젝트 루트 정보를 자동으로 탐지하고 수정하는 복구(`_repairCorruptedChronicleProjectRoots`) 기능을 추가했습니다.
 - **컨텍스트 전환 정교화:** 에디터 포커스 기반의 자동 프로젝트 전환 로직을 개선하여, 사용자가 수동으로 지정한 프로젝트 컨텍스트가 의도치 않게 초기화되지 않도록 안정성을 강화했습니다.
 - **아키텍처 인지 고도화:** 서브프로젝트 인식 실패 시 워크스페이스 루트로 폴백하는 동작을 보완하여 다중 프로젝트 환경에서의 일관성을 확보했습니다.
 - **신규 패키징:** `astra-2.1.2.vsix` 패키지를 통해 더욱 안정화된 프로젝트 관리 환경을 배포합니다.
 
 ---


## v2.1.1 (2026-05-14)
### 🏛️ Multi-Subproject Awareness & Context Precision
- **서브프로젝트 자동 인식 기능 도입:** 상위 폴더를 열어 여러 프로젝트를 동시에 작업할 때, 현재 활성화된 파일의 위치를 기반으로 개별 프로젝트(ConnectAI, Datacollector 등)의 루트를 정확히 식별합니다.
- **실시간 컨텍스트 재동기화:** 에디터에서 다른 프로젝트의 파일을 클릭할 때마다 아키텍처 정보와 지식 베이스 범위를 즉시 동기화하여, 혼선 없는 정확한 답변이 가능하도록 개선했습니다.
- **워크플로우 안정화:** 서브프로젝트 전환 시 발생할 수 있는 레이스 컨디션을 방지하기 위해 상태 업데이트 로직에 디바운스(Debounce)를 적용했습니다.
- **신규 패키징:** `astra-2.1.1.vsix` 패키지를 통해 복잡한 폴더 구조에서도 완벽하게 작동하는 개발 환경을 배포합니다.

---

## v2.1.0 (2026-05-14)
### 🧠 Self-Reflection & Multi-Agent Intelligence
- **자가 성찰(Self-Reflection) 단계 도입:** Researcher와 Writer 사이에 `Reflector` 에이전트를 추가하여 수집된 데이터의 무결성과 논리적 정합성을 자동으로 검토하는 기능을 구현했습니다.
- **메타 인지 기반 품질 보증:** Reflector가 분석 단계에서의 누락 사항이나 모순점을 식별하여 Writer에게 구체적인 보정 지시(Critique)를 전달함으로써 최종 답변의 품질을 비약적으로 향상시켰습니다.
- **설정 제어 기능:** `g1nation.enableReflection` 옵션을 통해 성능 우선 모드와 지능 우선 모드를 선택할 수 있도록 유연성을 부여했습니다.
- **버그 수정:** 아키텍처 문서 연결(Attach) 시 상태 동기화가 간헐적으로 실패하던 로직을 수정하여 안정성을 강화했습니다.
- **신규 패키징:** `astra-2.1.0.vsix` 패키지를 통해 더욱 고도화된 추론 엔진을 배포합니다.

---

## v2.0.9 (2026-05-14)
### 🛡️ System Synchronization & Distribution
- **전역 저장소 동기화 완료:** Wiki, Datacollector, Agent 등 모든 관련 저장소의 대규모 리팩토링 및 업데이트 사항을 익스텐션 환경에 최종 동기화했습니다.
- **배포 안정성 강화:** 멀티 저장소 동기화 이후의 패키지 무결성을 검증하고, 최신 지식 베이스 구조(.agent/ 등)와의 호환성을 확보했습니다.
- **신규 패키징:** `astra-2.0.9.vsix` 패키지를 통해 모든 프로젝트 자산이 최신화된 안정된 실행 환경을 배포합니다.

---

## v2.0.8 (2026-05-14)
### 🚀 UX Persistence & Per-Agent Knowledge Mix
- **Astra Launcher 도입:** 실수로 채팅 탭을 닫았을 때 사이드바에서 즉시 다시 열 수 있는 전용 런처 뷰를 추가하여 접근성을 높였습니다.
- **에이전트별 지식 믹스(Knowledge Mix) 오버라이드:** 비즈니스 에이전트마다 '세컨드 브레인' 지식 활용 비중을 개별적으로 설정할 수 있는 기능을 도입했습니다. 이제 각 전문가 에이전트의 특성에 맞춰 지식 검색 깊이를 조절할 수 있습니다.
- **사이드바 UI 및 인터랙션 정교화:** 사이드바(`sidebar.js`, `sidebar.css`)의 디자인을 개선하고, 비즈니스 워크플로우에서의 상태 시각화를 최적화했습니다.
- **시스템 안정성 강화:** 익스텐션 코어와 사이드바 간의 상태 동기화 로직을 보완하여 장시간 사용 시의 신뢰성을 확보했습니다.
- **신규 패키징:** `astra-2.0.8.vsix` 패키지를 통해 사용자 편의성이 극대화된 새로운 버전을 배포합니다.

---

## v2.0.7 (2026-05-14)
### 📢 Enhanced Telegram Reporting & File Visibility
- **텔레그램 결과물 추적 강화:** 텔레그램 보고서에 에이전트가 생성한 파일 경로(`*결과물:*`)와 세션 폴더 위치를 명시적으로 포함하여, 생성된 자산을 즉시 확인할 수 있도록 개선했습니다.
- **액션 리포팅 시스템 고도화:** `AgentTurnOutput`에 `actionReport` 필드를 추가하여 실행된 액션 태그의 결과를 체계적으로 추적하고 다른 서비스에서 활용할 수 있도록 정교화했습니다.
- **디스패처 안정성 향상:** `dispatcher.ts` 내의 액션 실행 로직을 개선하여 태그 실행 결과와 응답 본문의 정합성을 확보했습니다.
- **타입 안정성 보강:** 비즈니스 엔진 전반의 인터페이스와 타입을 보강하여 유지보수성과 확장성을 높였습니다.
- **신규 패키징:** `astra-2.0.7.vsix` 패키지를 통해 강화된 텔레그램 리포팅과 안정화된 엔진을 배포합니다.

---

## v2.0.6 (2026-05-14)
### 🚀 Intelligence & UX Optimization
- **UI & UX 정교화:** 사이드바(`sidebar.js`, `sidebar.css`)의 인터랙션과 스타일을 개선하여 더욱 매끄러운 사용자 경험을 제공합니다.
- **텔레그램 대화 기록 관리:** `conversationHistory.ts`를 도입하여 텔레그램 연동 시의 대화 맥락 유지 기능을 강화했습니다.
- **비즈니스 엔진 고도화:** `dispatcher.ts` 및 `promptBuilder.ts` 최적화를 통해 CEO 에이전트의 의사결정 및 작업 할당 정밀도를 높였습니다.
- **아키텍처 분석 강화:** 프로젝트 구조 스캔 및 컨텍스트 주입 로직을 보완하여 더 깊은 코드 이해가 가능하도록 개선했습니다.
- **신규 패키징:** `astra-2.0.6.vsix` 패키지를 통해 통합된 성능 및 인터페이스 개선 사항을 배포합니다.

---

## v2.0.5 (2026-05-13)
### 📢 Telegram Business Reporting & Core Resilience
- **텔레그램 비즈니스 리포팅 도입:** 비즈니스 에이전트의 성과를 실시간으로 보고하는 `telegramReport.ts`를 추가하여 원격 모니터링 기능을 강화했습니다.
- **에이전트 엔진 복원력 강화:** `agent.ts` 및 `dispatcher.ts` 내의 예외 처리 로직을 보강하여 복잡한 자율 미션 수행 시의 안정성을 높였습니다.
- **사이드바 상태 관리 최적화:** `sidebarProvider.ts`와 `sidebar.js`를 수정하여 세션 전환 및 대화 초기화 시의 반응성을 개선했습니다.
- **신규 패키징:** `astra-2.0.5.vsix` 패키지를 통해 텔레그램 연동 보고와 강화된 엔진 안정성을 통합 배포합니다.

---

## v2.0.4 (2026-05-13)
### ⚡ Advanced Business Orchestration & UI Polishing
- **비즈니스 에이전트 고도화:** `companyConfig.ts` 및 `promptBuilder.ts` 수정을 통해 CEO 에이전트의 목표 설정 및 컨텍스트 주입 로직을 정교화했습니다.
- **사이드바 사용자 경험 개선:** `sidebar.css`와 `sidebar.js`를 갱신하여 비즈니스 워크플로우 진행 상태 시각화를 최적화했습니다.
- **대화 핸들러 안정화:** `chatHandlers.ts` 및 `sidebarProvider.ts` 내의 비동기 메시지 처리 및 상태 동기화 로직을 강화했습니다.
- **신규 패키징:** `astra-2.0.4.vsix` 패키지를 통해 더욱 안정적인 비즈니스 자동화 환경을 제공합니다.

---

## v2.0.3 (2026-05-13)
### 🏢 AI 1-Person Company Engine & Business Intelligence
- **AI 1인 기업(Company) 엔진 도입:** 비즈니스 전략 수립부터 자동화 실행까지 아우르는 `src/features/company/` 모듈을 신규 도입했습니다.
- **CEO 에이전트 워크플로우:** `ceoPlanner`와 `ceoReporter`를 통해 비즈니스 목표 설정과 결과 분석을 자율적으로 수행하는 지능형 워크플로우를 구축했습니다.
- **비즈니스 프롬프트 자산화:** 비즈니스 컨텍스트에 최적화된 프롬프트 관리 시스템(`promptAssets.ts`, `promptBuilder.ts`)을 통합했습니다.
- **사이드바 UI 및 인터랙션 최적화:** 비즈니스 에이전트와의 매끄러운 소통을 위해 사이드바 구성 요소와 대화 핸들러를 정교화했습니다.
- **신규 패키징:** `astra-2.0.3.vsix` 패키지를 통해 '지능형 비즈니스' 자동화 기능이 통합된 버전을 배포합니다.

---

## v2.0.2 (2026-05-13)
### 🏛️ Structural Integrity & Automated Context Management
- **프로젝트 컨텍스트 자동 관리:** `.astra/project-context/architecture.md`를 통해 프로젝트 구조, 스택, 주요 모듈 정보를 자동으로 스캔하고 관리하는 기능을 도입했습니다.
- **아키텍처 시각화 엔진 강화:** `mermaid.ts` 및 `scanner.ts`를 추가하여 프로젝트 구조를 다이어그램으로 시각화하고 심층 스캐닝하는 기반을 구축했습니다.
- **의사결정 기록(ADR) 동기화:** `ADR-0009`를 포함한 최신 전략적 의사결정 사항을 프로젝트 지식 베이스에 통합했습니다.
- **사이드바 인터랙션 정교화:** 대규모 프로젝트 분석 시의 UI 안정성을 높이고 사용자 피드백 루프를 개선했습니다.
- **신규 패키징:** `astra-2.0.2.vsix` 패키지를 통해 자동화된 컨텍스트 관리와 강화된 아키텍처 분석 기능을 제공합니다.

---

## v2.0.1 (2026-05-13)
### 🧠 Advanced Knowledge Mix & Architectural Intelligence
- **지식 믹스(Knowledge Mix) 엔진 도입:** 에이전트가 답변 시 '세컨드 브레인' 지식과 자체 학습 지식을 사용하는 비중을 정교하게 조절할 수 있는 `knowledgeMix.ts`를 구현했습니다.
- **프로젝트 아키텍처 인텐트 감지:** 프로젝트의 구조적 질문을 자동으로 식별하고 대응하는 `projectArchitecture` 기능을 추가하여 심층 분석 능력을 강화했습니다.
- **사이드바 UI 및 인터랙션 최적화:** 사이드바의 시각적 요소와 스크립트를 개선하여 대화 흐름의 매끄러움을 더했습니다.
- **신규 패키징:** `astra-2.0.1.vsix` 패키지를 통해 최신 지능 최적화와 아키텍처 분석 기능이 통합된 버전을 배포합니다.

---

## v2.0.0 (2026-05-13)
### 🚀 Major Milestone & Intelligence Evolution
- **지식 검색 엔진 고도화:** `embeddings.ts` 및 `scoring.ts`를 통해 시맨틱 검색과 키워드 검색이 결합된 하이브리드 검색 기능을 강화했습니다.
- **텔레그램 통합 안정화:** 원격 에이전트 실행 및 모니터링을 위한 텔레그램 서비스 로직을 고도화했습니다.
- **성능 분석 텔레메트리 도입:** 에이전트의 응답 품질과 처리 속도를 정밀하게 측정하는 텔레메트리 시스템을 구축했습니다.
- **사이드바 UI 최적화:** 대규모 대화 세션에서의 인터랙션 성능을 개선하고 시각적 가독성을 높였습니다.

---

## v2.80.43 (2026-05-13)
### 🛡️ Resilience & Advanced Logic Integration
- **자율 복구 로직 최적화:** 에이전트 실행 중 발생하는 비정상적 상태를 감지하고 자동으로 세션을 복구하는 `Resilience Matrix`를 고도화했습니다.
- **신규 패키징:** `astra-2.80.43.vsix` 패키지를 통해 최신 마이너 개선 사항을 통합 배포합니다.

---

## v2.80.42 (2026-05-13)
### 🚀 Core Intelligence & Extension Maintenance
- **엔진 안정성 강화:** 대규모 대화 세션에서의 컨텍스트 관리 효율을 높이고 메모리 누수 방지 로직을 강화했습니다.
- **신규 패키징:** `astra-2.80.42.vsix` 패키지를 통해 최신 마이너 개선 사항을 통합 배포합니다.

---

## v2.80.41 (2026-05-13)
### 🚀 Distribution & Build Stabilization
- **신규 패키징:** `astra-2.80.41.vsix` 패키지를 생성하여 최신 기능과 아키텍처 개선 사항을 통합 배포합니다.
- **버전 정규화:** 시스템 전반의 버전을 `v2.80.41`로 동기화하여 배포 정합성을 확보했습니다.

---

## v2.80.40 (2026-05-13)
### 🏛️ Strategic Architecture & Core Optimization
- **아키텍처 결정 기록(ADR) 도입:** `ADR-0008`을 통해 프로젝트의 부족한 점 분석과 향후 개선 방향에 대한 전략적 의사결정을 문서화했습니다.
- **에이전트 엔진 정밀 튜닝:** `agent.ts` 및 `config.ts` 수정을 통해 복잡한 다단계 추론 과정에서의 안정성과 응답 품질을 최적화했습니다.
- **연대기 및 타임라인 동기화:** 최신 아키텍처 결정 사항과 개발 마일스톤을 `chronicle.config.json`과 `timeline.md`에 반영했습니다.
- **신규 패키징:** `astra-2.80.40.vsix` 패키지를 생성하여 전략적 아키텍처 개선안과 최적화된 엔진을 통합했습니다.

---

## v2.80.39 (2026-05-13)
### 🎨 UI Polish & Core Logic Tuning
- **사이드바 시각적 정교화:** `sidebar.css`를 업데이트하여 다크 모드에서의 가독성과 전반적인 디자인 정밀도를 높였습니다.
- **에이전트 구성 최적화:** `agent.ts` 및 `config.ts` 내의 매개변수를 튜닝하여 복잡한 지식 검색 작업에서의 응답 일관성을 개선했습니다.
- **연대기 및 타임라인 최신화:** 프로젝트 진행 상황을 반영하여 `chronicle.config.json`과 `timeline.md`를 갱신했습니다.
- **심층 구현 기록 추가:** 기술적 한계 극복과 개선 과정을 상세히 기술한 신규 구현 문서를 통합했습니다.
- **신규 패키징:** `astra-2.80.39.vsix` 패키지를 생성하여 시각적 개선과 로직 튜닝이 완료된 버전을 통합했습니다.

---

## v2.80.38 (2026-05-13)
### 🛡️ Response Recovery & Stability Overhaul
- **응답 복구 메커니즘 도입:** `responseRecovery.ts` 및 관련 테스트 코드를 통해 AI 모델의 비정상 응답이나 스트리밍 중단 시 자동으로 상태를 복구하고 재시도하는 강력한 회복 탄력성을 구축했습니다.
- **컨텍스트 매니저 고도화:** `contextManager.ts`를 수정하여 대규모 프로젝트 분석 시 토큰 사용 효율을 높이고 컨텍스트 누락을 최소화했습니다.
- **에이전트 실행 안정성 강화:** `agent.ts` 및 `config.ts` 내의 타임아웃 및 에러 처리 로직을 개선하여 고부하 상황에서의 작동 안정성을 확보했습니다.
- **신규 패키징:** `astra-2.80.37.vsix` 패키지를 생성하여 불확실한 AI 응답 환경에서도 신뢰할 수 있는 실행 환경을 통합했습니다.

---

## v2.80.37 (2026-05-12)
### 🛡️ Response Recovery & Stability Overhaul
- **응답 복구 메커니즘 도입:** `responseRecovery.ts` 및 관련 테스트 코드를 통해 AI 모델의 비정상 응답이나 스트리밍 중단 시 자동으로 상태를 복구하고 재시도하는 강력한 회복 탄력성을 구축했습니다.
- **컨텍스트 매니저 고도화:** `contextManager.ts`를 수정하여 대규모 프로젝트 분석 시 토큰 사용 효율을 높이고 컨텍스트 누락을 최소화했습니다.
- **에이전트 실행 안정성 강화:** `agent.ts` 및 `config.ts` 내의 타임아웃 및 에러 처리 로직을 개선하여 고부하 상황에서의 작동 안정성을 확보했습니다.
- **신규 패키징:** `astra-2.80.37.vsix` 패키지를 생성하여 불확실한 AI 응답 환경에서도 신뢰할 수 있는 실행 환경을 통합했습니다.

---

## v2.80.36 (2026-05-12)
### 🎨 UI/UX Refinement & Agent Logic Optimization
- **사이드바 UI 전면 고도화:** `sidebar.html`, `sidebar.js`, `sidebar.css`를 갱신하여 더 매끄러운 애니메이션과 직관적인 컴포넌트 인터랙션을 구현했습니다.
- **에이전트 추론 로직 최적화:** `agent.ts` 내의 컨텍스트 주입 및 응답 생성 파이프라인을 개선하여 더 정확하고 빠른 답변이 가능하도록 조정했습니다.
- **로컬 경로 프리플라이트 강화:** `localPathPreflight.test.ts` 수정을 통해 다양한 작업 환경에서의 경로 인식 안정성을 재검증했습니다.
- **신규 패키징:** `astra-2.80.36.vsix` 패키지를 생성하여 최신 UI 개선 사항과 로직 최적화를 통합했습니다.

---

## v2.80.35 (2026-05-12)
### 🧠 Experience Memory & Architectural Lessons
- **경험 메모리(Experience Memory) 설계:** `EXPERIENCE_MEMORY_PLAN.md`를 통해 에이전트가 수행한 작업의 성공/실패 사례를 '레슨'으로 자산화하는 체계를 설계했습니다.
- **레슨 헬퍼 도입:** `lessonHelpers.ts` 및 관련 테스트를 통해 과거의 교훈을 동적으로 검색하고 프롬프트에 주입하는 기능을 추가했습니다.
- **브레인 인덱스 타입 정교화:** `types.ts` 및 `brainIndex.ts` 수정을 통해 지식 검색의 타입 안정성과 필터링 정확도를 개선했습니다.
- **익스텐션 코어 최적화:** `extension.ts` 내의 리소스 관리 및 라이프사이클 로직을 보강하여 장시간 사용 시의 안정성을 높였습니다.
- **사이드바 UI 정밀 개선:** 사이드바의 시각적 요소와 인터랙션 스크립트를 최적화하여 조작감을 개선했습니다.
- **신규 패키징:** `astra-2.80.35.vsix` 패키지를 생성하여 경험 기반 학습 능력이 강화된 에이전트 환경을 통합했습니다.

---

## v2.80.34 (2026-05-12)
### 🧠 Advanced Context Management & Brain Indexing
- **신규 컨텍스트 매니저 도입:** `contextManager.ts`를 통해 대규모 파일 및 대화 내역의 우선순위를 지능적으로 관리하고 토큰 예산을 최적화하는 기능을 추가했습니다.
- **브레인 인덱싱 고도화:** `brainIndex.ts` 및 관련 테스트 코드를 도입하여 지식 베이스 검색 속도와 정확도를 향상시켰습니다.
- **LM Studio 스트리밍 안정화:** `streamer.ts` 내의 응답 처리 로직을 개선하여 긴 응답 생성 시의 연결 안정성을 확보했습니다.
- **사이드바 UI/UX 정밀 튜닝:** 사이드바의 인터랙션 로직(HTML/JS/CSS)을 개선하여 사용자 경험을 한층 더 강화했습니다.
- **텔레그램 원격 실행 설계:** `TELEGRAM_REMOTE_EXECUTION_PLAN.md`를 통해 향후 텔레그램을 통한 원격 에이전트 실행 및 모니터링을 위한 청사진을 수립했습니다.
- **신규 패키징:** `astra-2.80.34.vsix` 패키지를 생성하여 최신 기능과 안정성 개선 사항을 통합했습니다.

---


## v2.80.33 (2026-05-11)
### 🏛️ Agent Repository Reorganization & Sync
- **에이전트 저장소 구조 개편 대응:** `Agent` 저장소의 핵심 스킬 및 지식 베이스가 `.agent/`에서 `_agent/` 폴더로 대폭 재배치됨에 따라, 이를 익스텐션의 스킬 로딩 엔진 및 경로 탐색 로직에 동기화했습니다.
- **스킬 경로 정합성 확보:** 외부 스킬 로더 및 범용 에이전트가 개편된 `_agent/skills` 구조를 정확히 참조하도록 내부 매핑을 갱신했습니다.
- **저장소 간 일관성 유지:** 에이전트 자산 재배치에 따른 주요 워크플로우의 작동 유무를 재검증하고, 관련 설정을 최적화했습니다.
- **신규 패키징:** `astra-2.80.33.vsix` 패키지를 생성하여 개편된 에이전트 자산과의 호환성을 확보했습니다.

---

## v2.80.32 (2026-05-11)
### 🛡️ LM Studio SDK Resilience & Auto-Recovery
- **LM Studio SDK 안정성 강화:** 모델 핸들이 "disposed" 상태로 방치되어 발생하는 스트리밍 실패를 감지하고, SDK 클라이언트를 자동으로 재생성(`resetHandle`)하여 복구하는 로직을 도입했습니다.
- **2단계 스트리밍 복구 프로세스:** 빈 응답 감지 시 (1) 핸들 초기화 후 스트리밍 재시도, (2) 실패 시 비스트리밍(POST) 폴백을 수행하는 다단계 복구 체계를 구축했습니다.
- **지능형 진단 가이드:** 소형 모델(3B 이하) 및 대규모 컨텍스트 상황에서 첫 토큰부터 EOS를 뱉는 현상에 대한 구체적인 해결 가이드(LM Studio 로그 분석 기반)를 에러 메시지에 추가했습니다.
- **신규 패키징:** `astra-2.80.32.vsix` 패키지를 생성하고 고부하 스트리밍 복구 시나리오에 대한 검증을 완료했습니다.

---

## v2.80.31 (2026-05-11)
### 🧠 Logic Optimization & Skill Integration
- **에이전트 응답 로직 간소화:** `src/agent.ts` 내의 복잡한 하드코딩 폴백 및 리뷰 판단 로직을 제거하여 모델 기반의 유연한 응답 생성을 강화했습니다.
- **범용 에이전트 스킬 확장:** `General` 에이전트에 대한 외부 스킬 폴더(`Agent/_agent/skills`) 연동 구조를 최적화하여 범용 작업 처리 능력을 향상했습니다.
- **워크스페이스 연동 강화:** `.astra/agent-knowledge-map.json` 설정을 통한 에이전트별 지식 및 스킬 범위 정의의 정합성을 개선했습니다.
- **신규 패키징:** `astra-2.80.31.vsix` 패키지를 생성하고 주요 기능의 작동 유무를 재검증했습니다.

---

## v2.80.30 (2026-05-11)
### 🛠️ External Skills & Sidebar UX Enhancement
- **외부 스킬 로딩 지원 (External Skill Loading):** `externalSkillLoader.ts` 신규 도입 및 `agentKnowledgeMap.ts` 고도화를 통해 외부 정의 스킬을 동적으로 로드하고 활용하는 기반을 구축했습니다.
- **사이드바 UI 정교화:** `sidebar.html`, `sidebar.js`, `sidebar.css` 전면 갱신을 통해 스킬 선택 인터페이스를 개선하고 시각적 피드백을 강화했습니다.
- **에이전트 실행 로직 최적화:** `agentHandlers.ts` 내의 스킬 컨텍스트 주입 및 메시지 처리 파이프라인을 개선하여 실행 안정성을 확보했습니다.
- **신규 패키징:** `astra-2.80.30.vsix` 패키지를 생성하고 핵심 워크플로우에 대한 회귀 테스트를 완료했습니다.

---

## v2.80.29 (2026-05-10)
### 🛡️ Service Reliability & Telegram Integration
- **텔레그램 봇 안정화 (Telegram Bot Stabilization):** `telegramBot.ts` 내의 폴링 및 응답 로직을 개선하여 메시지 누락 및 연결 지연 문제를 해결했습니다.
- **서비스 계층 리팩토링:** `services.ts` 내의 핵심 인프라 서비스 초기화 및 종속성 관리 방식을 최적화하여 시스템 부팅 속도를 향상했습니다.
- **익스텐션 코어 강화:** `extension.ts` 내의 커맨드 등록 및 리소스 해제 사이클을 정교화하여 메모리 누수를 방지하고 실행 안정성을 높였습니다.
- **신규 패키징:** `astra-2.80.29.vsix` 패키지를 생성하고 전체 테스트 스위트를 재검증했습니다.

---


## v2.80.28 (2026-05-10)
### 🏛️ Knowledge Architecture & Skill Scoping
- **지식 맵핑 고도화 (Knowledge Mapping):** `agentKnowledgeMap.ts` 및 `scopedBrainRetriever.ts` 도입을 통해 에이전트별로 검색할 지식 범위를 정교하게 제한하고 관리하는 기능을 추가했습니다.
- **사이드바 UI 안정화:** 미디어 폴더의 `sidebar.html`, `sidebar.js`를 갱신하여 사용자 인터랙션과 상태 동기화의 정합성을 개선했습니다.
- **패키징 최적화:** 최신 빌드 파이프라인을 통해 `astra-2.80.28.vsix` 패키지를 생성하고, 스트레스 테스트를 통해 엔진의 복원력을 재검증했습니다.
- **시스템 안정성 강화:** `extension.ts` 및 `agentHandlers.ts` 내의 비동기 처리 로직을 보완하여 다중 에이전트 실행 시의 안정성을 확보했습니다.

---


## v2.64.0 (2026-05-04)
### 🛡️ Resilient Pipeline & Stability Overhaul
- **상태 영속성 및 재개 (State Persistence & Resume):** 미션 진행 상태를 디스크(`.astra/missions/`)에 실시간 저장하며, 크래시나 오류 발생 시 마지막 단계부터 자율 재개하는 기능 도입.
- **중복 수집 방지 (Deduplication):** 동일한 프롬프트와 컨텍스트에 대한 LLM 응답을 해시 기반으로 캐싱하여 불필요한 중복 호출을 차단하는 `CacheManager` 탑재.
- **실패 원인 명시적 기록:** Transient(일시적) 및 Permanent(영구적) 오류 분류와 함께 세부 실패 원인을 로그에 기록하여 진단 편의성 강화.
- **수집 결과 품질 점수화 (Quality Scoring):** 데이터의 길이, 구조, 정보 밀도를 기반으로 수집 결과의 품질을 자동 평가하는 `QualityScorer` 도입.
- **위키 포맷 표준화 (Standardization):** 최종 결과물에 P-Reinforce v3.0 표준 프론트매터 및 헤더를 자동 주입하는 `WikiFormatter` 연동.

---

## v2.63.0 (2026-05-04)
### 🛡️ Agent Handoff Tracing & Diagnostics
- **데이터 무결성 검증 (Data Integrity):** 에이전트 간(Planner → Researcher → Writer) 핸드오프 시 발생할 수 있는 데이터 누락을 감지하고 차단하는 `AgentDataValidator` 기능 도입.
- **성능 프로파일링 (LLM Latency Profiling):** 에이전트별 LLM 처리 시간(ms) 및 초당 토큰 생성 속도를 측정하여 잠재적인 비동기 병목 현상을 진단하는 기능 추가.
- **프롬프트 포맷 한글화:** Inferred user intent 및 Blocking Questions 등 영어로 출력되던 마크다운 헤더를 명확한 한글(`## 사용자 의도 추론`, `## 핵심 확인 질문`)로 개선.

---
## v2.62.0 (2026-05-04)
### 🚀 Astra Autonomous Loop (AAL) 기초 구축
- **데이터 중앙화:** `.astra` 디렉토리를 프로젝트 루트에서 `ConnectAI/.astra/` 내부로 이전하여 프로젝트 응집도 향상.
- **AAL 프로토콜 도입:** 에이전트 간 자율 협업을 위한 `protocol.json` 및 `tasks.json` 스키마 구축.
- **경로 해결기(Path Resolver):** 확장 프로그램 설치 경로 기반의 데이터 관리 시스템(`astraPath.ts`) 도입.

### 🔍 파일 직접 분석 기능 강화
- **경로 감지 범용화:** 하드코딩된 경로 대신 `/Volumes/`, `/Users/`, `/home/`, `~/` 등 모든 절대 경로 감지 지원.
- **분석 키워드 확장:** "읽어줘", "열어줘", "파일 내용", "코드 분석" 등 직관적인 한국어/영어 트리거 추가.
- **대용량 프리뷰 지원:** 코드/문서 파일 분석 시 프리뷰 제한을 1,200자에서 **8,000자**로 대폭 상향하여 정밀 분석 가능.

---

# Patch Notes - v2.61.0 (2026-05-04)

## 🛡️ Resilient Engine & Monitoring (복원력 강화)
- **Error Recovery Matrix:** 에러 유형을 Transient(일시적)와 Permanent(영구적)로 자동 분류하는 복구 매트릭스가 전면 도입되었습니다. 네트워크 오류 시 지수 백오프 재시도를 자동 수행합니다.
- **Mission Control Dashboard:** `toStructuredLog()` 기반의 프리미엄 시각화 대시보드(`assets/mission_control.html`)가 추가되었습니다. 에이전트의 흐름과 지연 시간을 한눈에 파악할 수 있습니다.
- **성능 및 병렬화 최적화:** 단계별 500ms 강제 지연을 제거하고, Researcher와 Writer 준비 과정을 병렬화하여 전체 워크플로우 처리 속도를 대폭 향상했습니다.
- **신뢰성 검증:** 37종의 통합 테스트 및 성능 벤치마크 스위트를 통해 엔진의 안정성과 복구 메커니즘을 완벽히 검증했습니다.

---

# Patch Notes - v2.60.0 (2026-05-04)

## 🧠 Memory & Knowledge Search (Unified RAG Pipeline)
- **Retrieval Orchestrator:** 통합 RAG 파이프라인(`src/retrieval`)이 전면 도입되었습니다. 무거운 외부 프레임워크(LlamaIndex 등) 없이 자체적으로 초경량 TF-IDF 스코어링 및 컨텍스트 예산 최적화를 수행합니다.
- **2nd Brain (Obsidian) 연동:** 프로젝트 문서 및 옵시디언 지식 기지에서 질문과 연관된 핵심 문단을 자동 추출하여 AI 프롬프트에 주입합니다.
- **다중 메모리 계층 동시 탐색:** 과거 대화(Episodic), 프로젝트 결정 사항(Project), 문제 해결 절차(Procedural) 등 다양한 메모리를 융합하여 입체적인 답변을 제공하도록 강화되었습니다.

---

# Patch Notes - v2.59.0 (2026-05-03)

## 🎨 UI/UX Polish & Stability
- **Visual Consistency:** Refined the sidebar layout to ensure 100% alignment with the latest design guidelines.
- **Error Handling:** Improved the clarity of diagnostic messages during agent execution failures.
- **Workflow Persistence:** Fixed a minor edge case where the multi-agent execution state was not correctly reset after cancellation.

---

# Patch Notes - v2.58.0 (2026-05-03)

## 🛠️ Performance & Core Refinement
- **Workflow Orchestration:** Further optimized the agent handoff logic for smoother transition between reasoning stages.
- **Resource Management:** Enhanced memory cleanup during intensive multi-agent tasks to prevent UI lag.
- **System Stability:** Finalized the synchronization between core logic and UI event handlers.

---

# Patch Notes - v2.37.0 (2026-05-03)

## 🚀 Orchestration & System Stability
- **Version Normalization:** Synchronized system-wide versioning to v2.37.0 to align with the latest architectural refinements.
- **Build Pipeline Optimization:** Streamlined the VSIX packaging process for consistent distribution across environments.
- **Git Sync Strategy:** Enhanced the automated commit & push workflow to ensure 100% repository integrity after major updates.

---

# Patch Notes - v2.36.9 (2026-05-02)

## ✍️ Content Engineering: Blog Automation Standard
- **Blog Production Standard Manual:** Integrated the authoritative guide for structure, layout, and SEO-optimized headline design into the agent's reasoning core.
- **Tone & Manner Refinement:** Established the "Ryuri-style" persona (Friendly Expert) as the default for content-centric tasks to ensure high engagement and trust.
- **Knowledge Pipeline:** Synced the latest blog writing patterns from the Wiki into the extension's knowledge retrieval layer.

---

# Patch Notes - v2.36.8 (2026-05-02)

## 🔍 Intelligence & Stability: Review Preflight
- **Code Review Preflight:** Implemented a local path validation layer that verifies workspace integrity before initiating deep autonomous code analysis.
- **System Prompt Testing:** Added a suite of automated tests for system prompts to ensure consistent agent behavior across diverse reasoning tasks.

---

# Patch Notes - v2.36.7 (2026-05-02)

## 🎨 UX & Search Refinement
- **Answer Format Tuning:** Optimized response formatting to improve readability and visual clarity of synthesized information.
- **Query Intent Search:** Enhanced the intent-based search logic to provide more contextually relevant results from the knowledge base.

---

# Patch Notes - v2.36.6 (2026-05-02)

## 🛡️ Reliability Upgrade: Project Claim Output Brake
- **Output Brake Mechanism:** Introduced a strict filtering layer that prevents the agent from making unverified project claims.
- **Evidentiary Reasoning:** Refined the core logic to enforce a "No Evidence, No Claim" policy for higher architectural integrity.

---

# Patch Notes - v2.36.5 (2026-05-02)

## 🛡️ Project Governance: Guard Policy Enforcement
- **Project Chronicle Guard:** Implemented strict validation logic for project claims, ensuring all assertions are backed by verifiable evidence.
- **Trace Optimization:** Enhanced `SecondBrainTrace` for more precise knowledge tracking and context synthesis.

---

# Patch Notes - v2.36.4 (2026-05-02)

## 🏛️ Knowledge Integration: Datacollector Sync
- **Wiki Expansion:** Integrated 43 high-density technical artifacts from the Datacollector (Software Engineering, Architecture, DevOps).
- **v3.1 Standard Compliance:** All new artifacts processed with enhanced validation and duplicate check metadata.

---

# Patch Notes - v2.36.3 (2026-05-02)

## ⚙️ Core Orchestration Tuning
- **Signal Handling Optimization:** Refined the internal event bus to ensure smoother transitions between autonomous reasoning steps.
- **Distribution Integrity:** Final validation of build artifacts and metadata consistency for the v2.36 series.

---

# Patch Notes - v2.36.2 (2026-05-02)

## 📝 Documentation Fix
- **Repository URL Correction:** Fixed incorrect GitHub repository URLs in `README.md` and `package.json` to point to the authoritative `g1nations/locallm` repository.

---

# Patch Notes - v2.36.1 (2026-05-02)

## 🛠️ Stability & Refinement
- **Action Queue Optimization:** Refined the `ActionQueue` to handle rapid succession of wiki-grounded reasoning tasks without state overlap.
- **Distribution Prep:** Finalized build artifacts for the standardized P-Reinforce v3.0 knowledge base integration.

---

# Patch Notes - v2.36.0 (2026-05-02)

## 🏛️ Knowledge Ecosystem: P-Reinforce v3.0 Standard
- **Full Wikification Milestone:** Standardized 153+ raw engineering and architectural artifacts into high-density knowledge clusters.
- **Systemic Categorization:** Integrated automated classification for Process Methodology, Architecture Principles, Software Engineering, and DevOps.
- **Semantic Integrity:** Ensured 100% metadata consistency across the knowledge base, optimizing the agent's contextual grounding accuracy.

---

# Patch Notes - v2.35.1 (2026-05-02)

## 🎨 UI & UX Optimization
- **Second Brain Trace: Collapsible UI:** Integrated `<details>` blocks for Trace evidence to reduce visual noise while maintaining transparency.
- **Trace Summary:** Added a compact usage summary showing note counts and grounding status at a glance.
- **Improved Readability:** Optimized the layout of referenced notes and debug JSON within the expanded section.

---

# Patch Notes - v2.35.0 (2026-05-02)

## 🏛️ Milestone: Knowledge Resilience & Standardization
- **Authoritative Knowledge Base:** Completed the full synthesis of all raw engineering artifacts into the `10_Wiki` system, establishing a single source of truth for Cognitive Engineering, Agentic Coding, and Security Governance.
- **Zero-Ghost Integrity:** Finalized global graph cleanup, ensuring the Obsidian brain remains 100% free of broken nodes and fragmented stubs.
- **VSIX Distribution:** Optimized packaging for the new standardized environment, ensuring seamless integration with the latest knowledge clusters.

---

# Patch Notes - v2.34.1 (2026-05-02)

## 🧠 Knowledge Base Standardized (P-Reinforce v3.0)
- **High-Density Wikification:** Synthesized 148+ raw cognitive engineering and software maintenance artifacts into 9 authoritative, cross-linked clusters.
- **Graph Integrity Purge:** Executed global regex-based cleanup to eliminate all broken links (Ghost Nodes) and empty stubs, ensuring 100% structural reliability.
- **Topic Architecture:** Reorganized knowledge into standardized categories (Cognitive Engineering, AI/Agentic Coding, Security/Quality, etc.) for optimized discovery.

---

# Patch Notes - v2.33.9 (2026-05-01)

## 🚀 Core Engine Upgrade
- **Agent Workflow Optimization:** Enhanced `AgentWorkflowManager` and `AgentFactory` for more robust multi-agent orchestration.
- **Utility Refinement:** Core utilities and configuration logic updated for improved reliability and performance.
- **UI/UX Sync:** Further alignment between sidebar provider and core agent logic for a seamless experience.

---

# Patch Notes - v2.33.8 (2026-05-01)

## 🛠️ Performance & Stability
- **Agent Execution Refinement:** Further stabilized task orchestration and response validation.
- **Workflow Stabilization:** Minor internal logic updates to ensure consistent agent performance.

---

# Patch Notes - v2.33.7 (2026-05-01)

## ⚙️ Logic Refinement
- **Multi-Agent Routing:** Optimized workflow to prioritize local project analysis over general multi-agent execution when explicit projects are referenced.
- **Intent Detection:** Expanded analysis intent keywords for better project-level understanding triggers.
- **Error Handling:** Improved diagnostic details for empty AI responses to help troubleshoot local server issues.
- **Default Config:** Set `multiAgentEnabled` to `false` by default for a leaner initial experience.
- **UI Polish:** Enhanced Multi-Agent button UI with dynamic tooltips and state synchronization.

---

# Patch Notes - v2.33.6 (2026-05-01)

## 🛠️ Critical Bug Fixes
- **Chat Persistence Overhaul:** Resolved an issue where chat history disappeared after switching sidebar tabs.
- **Webview State Management:** Implemented `vscode.setState` for instant UI restoration.
- **Internal Message Logic:** Refined message filtering to ensure intermediate agent steps are visible to the user.

---

# Patch Notes - v2.33.5 (2026-05-01)

## 🎨 UI Refinement
- **Sidebar Provider Update:** Optimized sidebar rendering and event handling for smoother navigation.

---

# Patch Notes - v2.33.4 (2026-05-01)

## 🛠️ Manual Refinement & Stabilization
- **Core Agent Logic Update:** Manually refined `agent.ts` and `AgentWorkflowManager.ts` for improved task orchestration.
- **Workflow Factory Optimization:** Updated `factory.ts` to support more robust agent instantiation.
- **Configuration & UI Polish:** Fine-tuned `config.ts` and `sidebarProvider.ts` for a better user experience.

---

# Patch Notes - v2.32.0 (2026-04-30)

## 🏛️ Modernization: Actor/Queue Model & Monitoring

### 1. Actor/Queue 기반 비동기 워커 도입
- **Asynchronous Worker Pool:** `queue_worker.py`를 구축하여 데이터 수집과 추론 처리를 완전히 분리했습니다.
- **Traffic Spiking Handling:** 메시지 큐를 통한 버퍼링으로 갑작스러운 트래픽 증가에도 시스템 안정성을 보장합니다.

### 2. 실시간 성능 모니터링 및 SLO 추적
- **SLO Monitoring Hub:** `monitoring.py`를 통해 핵심 추론 경로의 지연 시간을 실시간 측정합니다.
- **P95 Latency Tracking:** 목표 지연 시간(200ms) 준수 여부를 모니터링하고 가시성을 확보했습니다.

### 3. 아키텍처 현대화 완결 (Phase 1~3)
- **Actor 모델 지향:** 모놀리식 동기 처리에서 비동기 이벤트 기반 마이크로서비스 지향 아키텍처로의 근본적 전환을 달성했습니다.

---

# Patch Notes - v2.31.0 (2026-04-30)

## 🧠 Intelligent Optimization & Scalable Parallelization

### 1. 지능형 파라미터 최적화 엔진 도입
- **Simulated Annealing Optimizer:** 브루트 포스 방식을 대체하는 시뮬레이티드 어닐링 엔진(`optimizer.py`)을 구축하여 최적의 파라미터를 최소한의 계산으로 도출합니다.
- **Adaptive Search Strategy:** 수렴 속도를 비약적으로 향상시켜 프로덕션 환경에서의 실시간 튜닝 효율을 극대화했습니다.

### 2. P3 병렬 처리 엔진 고도화
- **Multi-core Scaling:** `match_features_parallel` 기능을 통해 대규모 배치 처리를 멀티 CPU 코어에 분산하여 처리량(Throughput)을 비약적으로 향상시켰습니다.
- **Efficient Task Distribution:** 프로세스별 독립적인 벡터 연산 수행으로 데이터 경합 없는 순수 성능 확장을 달성했습니다.

### 3. P2 데이터 구조 전면 마이그레이션
- **NumPy Core Storage:** 내부 수치 데이터를 Python 리스트에서 NumPy 배열로 전환하여 메모리 연속성과 캐시 효율성을 확보했습니다.
- **Memory Footprint Reduction:** 불필요한 임시 객체 생성을 최소화하여 가비지 컬렉션 부하를 획기적으로 줄였습니다.

---

# Patch Notes - v2.30.0 (2026-04-30)

## 🏗️ Next-Gen Engine & Architectural Modernization

### 1. 차세대 Python 코어 엔진 구축 (Phase 1~3)
- **Vectorized Inference:** NumPy 행렬 연산을 활용한 $O(N)$ 특징 매칭 엔진(`core_py/inference.py`) 도입으로 연산 속도 극대화.
- **Asynchronous Data Loader:** `asyncio` 기반의 비차단 I/O 파이프라인(`core_py/loader.py`)을 통해 데이터 로딩 병목 현상(65% 대기 시간) 제거.
- **Observer Pattern Integration:** 중앙 이벤트 버스(`core_py/events.py`)를 통한 모듈 디커플링으로 시스템 유연성 확보.

### 2. TypeScript 서비스 전면 비동기화
- **Non-blocking I/O:** `agent.ts` 내의 모든 동기식 파일 작업을 `fs.promises`로 전환하여 대규모 프로젝트 분석 시의 UI 프리징 문제 해결.
- **Async Project Search:** 병렬 재귀 탐색 알고리즘을 도입하여 프로젝트 구조 파악 속도 향상.

### 3. 안정성 및 유지보수성 강화
- **DIP 실현:** `AgentEvents` 허브를 통한 이벤트 기반 아키텍처로 전환하여 모듈 간 강한 결합 해소.
- **TypeScript 정밀 타입화:** 비동기 호출 및 Null 안정성에 대한 엄격한 타입 체크 적용.

---

# Patch Notes - v2.29.0 (2026-04-30)

## 🚀 Performance Leap & Structural Decoupling

### 1. Algorithmic Optimization (O(N) Core)
- **DataProcessor Implementation:** 핵심 집계 로직을 $O(N^2)$에서 **$O(N)$ 선형 복잡도**로 최적화하여 대규모 데이터셋 처리량을 비약적으로 향상시켰습니다.
- **Adaptive Indexing:** 데이터 분포에 민감하게 반응하는 효율적인 인덱싱 구조를 적용했습니다.

### 2. Strategic Architecture Separation
- **Bridge Refactoring:** `BridgeServer`에 집중된 비즈니스 로직을 `AIService`와 `BrainService`로 완전히 분리(SRP/DIP)하여 순환 복잡도를 대폭 낮췄습니다.
- **Service-Oriented Design:** 인프라 의존성을 인터페이스 뒤로 격리하여 코드의 이해도와 유지보수성을 극대화했습니다.

### 3. Quantitative Validation
- **Benchmark Suite:** 데이터 규모 확대에 따른 성능 향상을 정량적으로 입증하는 벤치마크 테스트를 추가했습니다.

---

# Patch Notes - v2.28.0 (2026-04-30)

## 🏗️ Next-Gen Engine Architecture & Stability

### 1. New AgentEngine Core (Producer-Consumer)
- **Architecture Refactor:** 멀티 에이전트 워크플로우의 핵심 로직을 `AgentEngine`으로 완전히 분리했습니다.
- **Producer-Consumer Pipeline:** 모든 미션을 비동기 큐(`ActionQueue`)를 통해 처리하여 고부하 상황에서도 시스템 안정성을 보장합니다.
- **Dependency Injection (DI):** 에이전트 간 결합도를 낮추어 유지보수성과 확장성을 극대화했습니다.

### 2. Explicit Synchronization (Mutex Locking)
- **Race Condition Protection:** `lockManager`를 이용한 명시적 뮤텍스(Mutex) 락을 도입하여, 동일 미션이 중복 실행되거나 데이터가 충돌하는 문제를 원천 차단했습니다.

### 3. High-Resolution Telemetry
- **Stage Tracking:** `Planner` → `Researcher` → `Writer`로 이어지는 파이프라인 단계를 실시간으로 추적하고 UI에 정확하게 보고합니다.

---

# Patch Notes - v2.27.0 (2026-04-30)

## 🛠 Stability & IDE Integrity Enhancements

### 1. Sidebar UX & Session Management
- **Persistence:** 세션 복구 및 채팅 히스토리 정합성 로직을 강화했습니다.
- **Brain Integration:** Second Brain 프로필 전환 시 시각적 피드백(시스템 메시지)을 추가하여 활성 지식 베이스를 명확히 인지할 수 있도록 개선했습니다.
- **Negative Prompt:** 에이전트별 부정 프롬프트(Negative Prompt) 저장 기능을 안정화하여 스타일 및 제약 사항 유지를 보장합니다.

### 2. Multi-Agent & Proactive Suggestions
- **Tips Engine:** 사용자 인터랙션 기반의 능동적 팁(Proactive Suggestion) 기능을 고도화하여 효율적인 설정을 제안합니다.
- **Workflow:** 에이전트 간 데이터 전달 시 발생할 수 있는 잠재적 레이스 컨디션을 방지하기 위해 동기화 로직을 보완했습니다.

### 3. Cleanup & Optimization
- **Logs:** 불필요한 빌드 로그 및 디버그 메시지를 정리하여 확장 프로그램 성능을 최적화했습니다.

---

# Patch Notes - v2.26.0 (2026-04-30)

## 💎 Release Candidate - Production Ready

### 1. Final Build & Packaging Optimization
- **Cleanup:** `.vscodeignore` 설정을 재검토하여 불필요한 소스 파일(`src/**`)과 이전 빌드 산출물(`*.vsix`)이 패키지에 포함되지 않도록 최적화했습니다.
- **Consistency:** 최신 드래그 앤 드롭 동기화 로직이 포함된 `out/extension.js`를 재생성했습니다.

### 2. Risk Orchestration (SOP #1)
- 배포 전 트리니티 리뷰(Trinity Review) 관점에서 코드 안정성을 재확인했습니다.
- 보안 및 리소스 관리 측면에서 활성화 이벤트(`activationEvents`) 최적화가 정상 작동함을 검증했습니다.

---

# Patch Notes - v2.25.0 (2026-04-30)

## 🚀 UX Optimization & Stability (Kodari Approved)

### 1. Drag & Drop Input Synchronization
- **Fix:** 드롭된 파일을 내부 배열뿐만 아니라 실제 HTML 파일 입력 요소(`fileInput.files`)와 강제 동기화하도록 로직을 강화했습니다.
- **Verification:** 성공적인 동기화 시 개발자 콘솔에 확인 로그를 출력하여 신뢰성을 높였습니다.

### 2. Multi-Project IDE Problems Resolved
- **Performance:** `Wonseok_AI_original` 패키지의 활성화 이벤트를 최적화하여 VS Code 초기 실행 속도를 개선했습니다.
- **Build Fix:** `Datacollect` 프로젝트의 Vite 설정 내 타입 불일치 에러를 해결하여 빌드 파이프라인을 정상화했습니다.

### 3. Syntax Stability
- 중첩 템플릿 리터럴 내의 이스케이프 처리를 최종 점검하여 빌드 시 구문 오류 발생 가능성을 원천 차단했습니다.

---

# Patch Notes - v2.24.0 (2026-04-30)

## 🚀 New Features & Enhancements

### 1. Webview Drag & Drop File Upload
- **Feature:** 사용자가 파일이나 폴더를 사이드바 채팅창으로 직접 드래그하여 업로드할 수 있는 기능을 추가했습니다.
- **UX:** 드래그 시 시각적 오버레이와 블러 효과를 제공하여 직관적인 피드백을 제공합니다.
- **Reliability:** 파일 드롭 시 자동으로 Base64 인코딩을 거쳐 안전하게 백엔드로 전달됩니다.

### 2. Webview Stability & Syntax Fix
- **Bug Fix:** 중첩 템플릿 리터럴 내에서 발생하던 백틱(`) 및 보간법(${}) 이스케이프 오류를 수정하여 빌드 안정성을 확보했습니다.
- **Feedback:** 파일 추가 시 Toast 알림 및 효과음을 추가하여 조작 편의성을 높였습니다.

---

# Patch Notes - v2.2.46

## 🚀 Key Improvements & Bug Fixes

### 1. AI Communication Protocol Fix
- **Issue:** Previously, when a file was attached, the text prompt was completely overwritten by the `visionContent` structure, leading to empty messages being sent to LM Studio.
- **Fix:** Merged the text prompt with the vision content array so that both text and file metadata are correctly transmitted.

### 2. Autonomous Loop Optimization
- **Issue:** Broad keyword matching (e.g., "조사", "설명") triggered local file analysis tasks even for general questions, causing the agent to bypass the LLM and give incomplete answers.
- **Fix:** Refined the `isProjectAnalysisRequest` patterns to be more conservative, ensuring generic conversational requests are always handled by the AI model.

### 3. Second Brain Profile Management
- **Issue:** Adding new brain profiles was inconsistent because a virtual "default-brain" (injected in memory) was being saved into the permanent settings, causing profile list corruption.
- **Fix:** 
    - Decoupled runtime virtual profiles from persistence logic.
    - Implemented direct settings access for profile addition to avoid stale config caches.
    - Fixed UI sync issues immediately after adding a new brain folder.

### 4. Build & Reliability
- Removed premature empty stream chunks that were causing UI flickering.
- Verified build stability with `v2.2.46` VSIX package.

---

## v2.8.0 (2026-04-29) - Intelligent Collaborative System Evolution

### 🤖 Multi-Agent Workflow (MAW)
- **Planner Agent:** 전략 수립 및 작업 단계 자동 설계.
- **Researcher Agent:** 지식 베이스(Second Brain) 심층 분석 및 데이터 정제.
- **Writer Agent:** 최종 보고서 형태의 고품질 답변 생성 및 통합.
- 복잡한 요청(분석, 보고서 등) 감지 시 자동으로 멀티 에이전트 모드 활성화.

### 🔮 Proactive Suggestion Engine
- **Behavioral Tracking:** 사용자 UI 체류 시간(Dwell Time) 기반 의도 감지.
- **Smart Tips:** 설정, 지식 동기화, 에이전트 선택 등 상황에 맞는 능동적 도움말 제공.

### 🎨 UX & Reliability Improvements
- **Visual Feedback:** 가이드라인에 따른 상태별 아이콘 및 피드백 일관성 강화.
- **Model Fix:** 모델 선택 및 저장 로직 안정화 완료.
- **Agent Handoff:** 각 에이전트 간 데이터 전달 및 진행 상황 시각화 개선.

---
*Date: 2026-04-25*
*Version: 2.2.46*
