이 폴더의 문서 중 상태가 Accepted인 것은 확정된 결정이며 구현이 따라야 한다. Driver는 스코프가 아니라 제안·주도 파트다.
이 폴더는 ai 레포의 결정이다 — AI 구현·공용 프로세스(컨벤션·문서 통합 등 AI 파트 주도분)를 P## 번호로 기록한다. P##는 전수 인벤토리의 제안 번호와 일치한다.
- **상태**: Accepted | Proposed | Rejected | Superseded by P-XX
- **날짜**:
- **주도(Driver)**:
- **관련 PR/커밋**:
| P | 제목 | 상태 | Driver |
|---|---|---|---|
| P1 | Context 불변 모델 (버전 컬럼 제거) | Accepted | AI |
| P4 | 즉시 파기 대신 is_deleted + CANCELLED 마커 |
Accepted | AI |
| P5 | 정확 cosine 검색 (HNSW/IVFFlat 미도입) | Accepted | AI |
| P26 | Keyword 프리셋 구성·후보 하한·판정 프롬프트 | Accepted | AI |
| P43 | S1 구현 판단 변경·기각 대안 복원 | Accepted | AI |
| P44 | AI 레포 협업 운영 기준 | Accepted | AI |
| P47 | Keyword 프리셋 표시 라벨·축 정의·스키마 개정안 | Proposed | AI |
| P48 | 개인 검색의 신호 확장 — 단일 코사인에서 다신호로 | Proposed | AI |
| P49 | 다신호 검색 개선 — 질의 재작성·키워드 점수·문자열 검색 추가와 검증 기준 | Proposed | AI |
| P50 | 3계층 분리와 Place metadata 결합 — 장소 사실·Context 의미·파생 결합의 실체화 (번호 잠정) | Proposed | AI(+back 협의) |
| P51 | Keyword 프리셋 거버넌스 — 열린 발견, 닫힌 사용 (번호 잠정) | Proposed | AI |
| P52 | Keyword taxonomy·visibility 재설계 — 공개 장소 속성과 사적 맥락의 분리, 7축·43종·처분 어휘·Privacy 판정 계약 (번호 잠정) | Accepted | AI(+back·docs 후속 개정) |
| P | 결정 | Driver | 반영처 |
|---|---|---|---|
| P1 | Context 불변 모델(본문 in-place UPDATE 금지, 수정=삭제+INSERT, 새 context_id) | AI | P1 |
| P2 | insert-first — 신 Context를 삭제보다 먼저 → "마지막 Context 삭제 금지" 가드 자연 통과 | AI | P1, spec/deletion-race-control.md |
| P3 | 버전 컬럼 전면 제거(stale 방어는 CANCELLED) | AI | P1 |
| P4 | is_deleted + CANCELLED 마커(즉시 파기 대신) |
AI | P4 |
| P5 | 정확 cosine(ANN 미도입) | AI | P5 |
| P6 | AI 스키마 5테이블 확정 | AI | spec/architecture.md |
| P7 | context_embedding PK=context_id 단독(UPSERT 성립), is_deleted 일반 컬럼·Spring 전용 |
AI | P4, spec/architecture.md |
| P8 | context_ai_state 두 status 분리(embedding/keyword) |
AI | spec/state-machine.md |
| P9 | FastAPI core.* 접근 금지(DB role ai 한정, 조인은 백엔드 방향만) |
AI(+infra) | spec/architecture.md |
| P11 | PROCESSING 재선점 = 만료 건 한정(멱등성) | AI | spec/deletion-race-control.md |
| P12 | Keyword Visibility 3등급(PUBLIC/PRIVATE_ONLY/BLOCKED, MVP에 BLOCKED 없음) | AI | spec/keyword-preset.md |
| P14 | API 기본 경로 /api/core/v1 |
공용(AI 주도) | 계약 static/05 |
| P15 | Conventional Commits + 브랜치 규율(main 직접 커밋 금지) | 공용(AI 주도) | ../WORKLOG.md |
| P16 | static/05 단일 원본 통합 |
공용(AI 주도) | docs#2 |
| P17 | static/05-1 파트간 요구사항 신설 |
공용(AI 주도) | docs#3 |
| P18 | 수정 UX = 삭제+생성(버튼 유지, 새 contextId) | AI(+front) | spec/deletion-race-control.md |
| P19 | draft/06 §7 "AI 워커가 core.context 확인" 제거 → CANCELLED 방어 | AI | P4 |
| P20 | core.context.updated_at 제거(불변이라 불필요) |
공용 | 계약 |
| P26 | Keyword 프리셋 구성·후보 하한·판정 프롬프트 | AI | P26 |
| P27 | keyword_preset.yaml 경로 = ai 레포 data/ |
AI | implements |
| P28 | 판정 유사도 하한 0.30(eval) | AI | P26 |
| P29 | LLM 판정 프롬프트 확정 + 부대시설 제외 규칙(eval C-1) | AI | P26 |
| P30 | 후보 TOP-K 기본 10, 후보 0개면 LLM 미호출·선택 0 정상 | AI | spec/keyword-preset.md |
| P31 | LLM 구조화 출력 {selected:[{keywordId,confidence}]}, 후보 밖 id 폐기 |
AI | spec/keyword-preset.md |
| P32 | 임베딩 계약 text-embedding-3-small/1536/cosine, PINLOG_EMBEDDING_PROFILE |
AI | spec/model-profile.md |
| P34 | ai 레포 기본 브랜치 main 변경 | AI | — |
| P35 | 문서화 3계층(계약/작업기록 분리) | 공용(AI 주도) | 이 트리 |
| P36 | ADR 스코프 = 레포 단위, 파트는 Driver 메타 | 공용(AI 주도) | 이 README |
| P37 | 분류 3범주 proposals/implements/troubleshooting + spec | 공용(AI 주도) | 이 트리 |
| P38 | rebase Option B(MINYONG 독립작업 위 재정리) | AI | troubleshooting |
| P40 | /search 응답 contextId 추가(DISTINCT ON, Spring matchedContext 조립용) |
AI | ai#11·docs#10, spec/personal-search.md |
| P41 | 툴체인 — Python 3.12 통일·pgvector 0.8.5-pg16+digest 고정(최초 0.8.1-pg16 → Jira 작업에서 운영·back 실제 버전에 정합)·requirements lock |
AI | implements (ai#14·#16) |
| P43 | S1 판단 변경 10·기각 대안 9 복원(search_path 캐스트 원복·pgvector digest 권고·Python 3.12 상한(GraphRAG)·브랜치보호 CI 후 적용 등) | AI | P43 |
| P44 | Jira-first·TDD 증거·리뷰 대화 해결·영구 문서 기반 AI 협업 운영 | AI | P44 |
| P45 | 공개 설정은 코드가 정본, 주입 필수는 비밀뿐 — Embedding Profile 넷에 기본값 부여 | AI | P45, docs#27(05 §7.1 개정) |
P10·P13·P21~P25·P33·P39는 백엔드 아티팩트 결정이라 back 레포
docs/ai/proposals에 있습니다.
| M | 쟁점 | Driver | 상태 |
|---|---|---|---|
| M1 | 탈퇴/삭제 시 AI 파생 데이터 물리 삭제 시점(즉시(안 A)/유예/소프트) | 공용(개인정보) | 미결 |
| M2 | Context 목록 created_at 기준, origin_context_id 계보 |
백엔드 | ✅ 종결 — A안(수정 시 새 행의 created_at 그대로 사용, 승계·계보 필드 없음). core.context DDL 무변경·AI 파이프라인 무영향 → 백엔드 V2~ 블로커 해소 |
| M3 | Embedding Profile 전환 재처리 경로(§6.3 좁히기 + §7.3 운영 절) | AI | 미결 |
| M4 | eval 판정 LLM 모델 확정(C-2 모델 비교) | AI | 확정 — gemini-2.5-flash(thinkingBudget=0), C-2 5지표 최적 (ai#3) |
| M5 | 09_유저플로우 draft/static 중복 정리 |
공용 | ✅ 종결 — draft→static 승격으로 중복 제거. static/09_유저플로우.md만 존재하고 README도 이를 참조(2026-07-24) |
| M6 | FOLLOWUP_IMPLEMENTATION.md staleness(version 개념 잔존) |
AI | 미결(경미) |
| M7 | 검색 장소·시간 필터 — 매칭 테스트 후 최우선 고려(Spring 내부 Place 텍스트 사전 매칭 방식, FastAPI·프론트 무변경) | 백엔드(AI 협의) | 미결 |