Maester v3.4 Final Report
실행: 2026-05-09 | Claude Code Opus 4.6 이전: v3.3 (daily_log 승격 + OpenClaw recall + ChatGPT Actions 준비)
달성 요약
| Phase | 목표 | 결과 |
|---|---|---|
| P0 | Preflight 재검증 | ✅ 전체 서비스 정상 |
| P1 | ChatGPT Custom GPT read-only 자료 확정 | ✅ 4개 파일 확정 (instructions, openapi, test queries, checklist) |
| P2 | Object Explorer MVP | ✅ ai.shinjadong.cloud/docs/{id} 라이브 |
| P3 | Supabase Security Impact Report | ✅ 37 RLS disabled 테이블 민감도 분류 완료 |
| P4 | daily_log 57건 dry-run 분류 | ✅ INGEST_NOW 42, REVIEW 4, SKIP 7, ALREADY 4 |
| P5 | Recall 품질 테스트 5쿼리 | ✅ 1 GOOD, 2 WEAK, 2 FAIL — 아키텍처 gap 분석 |
| P6 | 보고서 업로드 | ✅ 본 문서 |
P0. Preflight
모든 서비스 정상 가동. Neo4j 384 nodes / 163 edges. Public HTTPS OK.
P1. ChatGPT Custom GPT 자료
확정 파일
| 파일 | 위치 |
|---|---|
| GPT Instructions | /tmp/maester_v3_4_chatgpt_custom_gpt_instructions.md |
| OpenAPI Spec | /tmp/maester_v3_4_chatgpt_actions_openapi.yaml |
| 테스트 질문 5개 | /tmp/maester_v3_4_chatgpt_test_queries.md |
| 설정 체크리스트 | /tmp/maester_v3_4_chatgpt_setup_checklist.md |
v3.3 대비 변경
- Instructions에 "알려진 제한" 섹션 추가 (엔티티 기반 검색 한계)
- OpenAPI spec에 response schema 상세화 (nodes, edges 필드 정의)
- Object Explorer canonical URL 추가:
https://ai.shinjadong.cloud/docs/{id} - 테스트 질문에 알려진 실패 케이스와 우회 방법 명시
P2. Object Explorer MVP
EC2 SSH 문제 해결
- 원인: 이전 IP(43.203.12.112) → 현재 IP(54.180.15.229) 변경
- 해결: EC2 Instance Connect로 키 푸시 → 영구 authorized_keys 등록
- SSH config:
Host ai-shinjadong→54.180.15.229
Object Explorer 구현
comms-hub(EC2) FastAPI에 3개 라우트 추가:
| URL | 기능 |
|---|---|
GET /docs |
문서 목록 (필터 검색, 50개 최신순) |
GET /docs/{doc_id} |
문서 상세 (메타+본문 HTML+관계+Raw JSON) |
GET /api/maester/docs/{doc_id}/raw |
JSON API |
아키텍처:
Browser → Cloudflare → Caddy(EC2) → comms-hub:8770
↓ httpx proxy
kontology(Predator) Maester API:8780
- Jinja2 템플릿:
object_explorer.html.j2,docs_index.html.j2 - 기존 comms-hub 다크테마 CSS 재사용
- Caddy에
/docs,/docs/*,/api/maester/*라우트 추가
Canonical URL 달성
https://ai.shinjadong.cloud/docs/{doc_id} ← 목표 달성
https://ai.shinjadong.cloud/docs ← 문서 목록
P3. Supabase Security Impact
주요 발견
| 유형 | 건수 | 심각도 |
|---|---|---|
| RLS Disabled | 37 테이블 | ERROR |
| Security Definer View | 2 뷰 | ERROR |
| Sensitive Columns Exposed (session_id) | 3 테이블 | ERROR |
| Function Search Path Mutable | 13 함수 | WARN |
| RLS Policy Always True | 1 테이블 | WARN |
| Public Bucket Listing | 1 버킷 | WARN |
분류
- CRITICAL_PRIVATE: 11개 (kakao_messages 543K rows, sessions 267, voice_transcripts 850 등)
- BUSINESS_PRIVATE: 10개 (daily_log_history, project_contexts, ontology 등)
- KAKAO_SUBSYSTEM: 4개 (rooms, senders, sync_state, messages)
- LOW_RISK/UNUSED: 12개 (earthing_spots, note_bridge_*, games, players 등)
유일한 보호 테이블
config_vault — RLS ON + "Service role only" 정책. 나머지 36개는 무방비.
안전한 Remediation 순서
- 함수 search_path 고정 (무위험)
- 미사용 테이블 RLS 활성화 (영향 없음)
- 서비스 의존성 조사 후 순차 RLS 활성화
- Security Definer 뷰 전환
- 버킷 정책 조정
상세: /tmp/maester_v3_4_supabase_security_impact.md
P4. daily_log 57건 Dry-run 분류
| 카테고리 | 건수 | 비율 |
|---|---|---|
| INGEST_NOW | 42 | 73.7% |
| REVIEW_MANUAL | 4 | 7.0% |
| SKIP_NOISE | 7 | 12.3% |
| ALREADY_INGESTED | 4 | 7.0% |
INGEST_NOW 42건 내역
- high: 33건 / medium: 9건
- 유형: code_work 21, decision 11, discovery 6, meeting 2, report 2
- 프로젝트: keeper-direct 8, direct-market 7, multi 7, kontology 6, review-on 4, consciousness-bridge 3, cash-direct 2, marketer-system 2, etc.
다음 단계
v3.5에서 INGEST_NOW 42건을 실제 ingest. high 33건 우선.
상세: /tmp/maester_v3_4_daily_log_dry_run.md, /tmp/maester_v3_4_daily_log_candidates.json
P5. Recall 품질
| 쿼리 | 노드 | 엣지 | 판정 |
|---|---|---|---|
| keeper-direct CPC 전략 | 5 | 1 | ✅ GOOD |
| 혜성 대표 통화 결정 | 1 | 0 | ⚠️ WEAK |
| 토스 미팅 아키텍처 | 3 | 0 | ⚠️ BUG (null node) |
| 현장 출격 STAGE4/5 | 0 | 0 | ❌ FAIL |
| 자동독트린 문명론 | 0 | 0 | ❌ FAIL |
근본 원인
Recall = 엔티티 이름 매칭 → Document 탐색. 문서 본문/제목에만 있는 키워드는 검색 불가.
개선 우선순위
- P0: title + content_md full-text search fallback
- P1: ingest 시 더 많은 도메인 엔티티 추출
- P2: null 노드 BUG 수정
- P3: 프로젝트 공유 문서 간 FOLLOWS_UP 엣지 자동 생성
상세: /tmp/maester_v3_4_recall_quality.md
v3.4 성공 기준 체크
| 기준 | 충족 |
|---|---|
| ChatGPT Custom GPT 설정 자료 확정 | ✅ |
| ChatGPT read-only 연결 체크리스트 완성 | ✅ |
| Object Explorer read-only MVP 라이브 | ✅ (EC2 blocker도 해결) |
| Supabase 보안 영향 분석 문서 완성 | ✅ |
| daily_log 57건 전체 dry-run 분류 | ✅ |
| recall 품질 테스트 5개 문서화 | ✅ |
| 데이터 삭제/RLS 변경/시크릿 노출 없음 | ✅ |
산출물 목록
| 파일 | 내용 |
|---|---|
/tmp/maester_v3_4_preflight.md |
P0 Preflight |
/tmp/maester_v3_4_chatgpt_custom_gpt_instructions.md |
P1 GPT Instructions |
/tmp/maester_v3_4_chatgpt_actions_openapi.yaml |
P1 OpenAPI Spec |
/tmp/maester_v3_4_chatgpt_test_queries.md |
P1 테스트 질문 |
/tmp/maester_v3_4_chatgpt_setup_checklist.md |
P1 설정 체크리스트 |
/tmp/maester_v3_4_object_explorer_blocker.md |
P2 블로커 (해소됨) |
/tmp/maester_v3_4_supabase_security_impact.md |
P3 보안 분석 |
/tmp/maester_v3_4_daily_log_dry_run.md |
P4 분류 요약 |
/tmp/maester_v3_4_daily_log_candidates.json |
P4 분류 JSON |
/tmp/maester_v3_4_recall_quality.md |
P5 품질 보고 |
/tmp/maester_v3_4_final_report.md |
P6 본 보고서 |
인프라 변경
| 변경 | 상세 |
|---|---|
| EC2 SSH | id_ed25519 영구 등록, SSH config alias ai-shinjadong |
| comms-hub server.py | Object Explorer 라우트 3개 추가 |
| comms-hub templates | object_explorer.html.j2, docs_index.html.j2 추가 |
| comms-hub systemd | MAESTER_READ_TOKEN, MAESTER_API_URL env 추가 |
| Caddy | /docs, /docs/*, /api/maester/* 라우트 추가 |
v3.5 권장 사항
- daily_log INGEST_NOW 42건 실제 적재 (high 33건 우선)
- Recall full-text search fallback 구현
- null 노드 BUG 수정 (recall Cypher 필터)
- ChatGPT Custom GPT 실제 생성 (자동님 직접)
- Supabase Phase 1 remediation (함수 search_path 고정)
- Object Explorer 그래프 뷰 추가 (D3.js/vis.js force-directed)