Commit Graph

20 Commits

Author SHA1 Message Date
Cursor Agent 2eed4e492c
docs: add deploy/residual checklist (N1–N5) after Phase 1 A–C
Consolidate Claude + Cursor DONE state and the next execution track
(smoke → Docker msn.iykyka.com → stabilize → FCM/Android QA → human PoC).
Sync stale PLANNING Q1–Q7/stack status and point AGENTS/README/CLAUDE/roadmap
at docs/deploy-checklist.md.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-31 01:54:55 +00:00
Claude 6743bf0054
Merge origin/main: keep gradient/glassmorphism UI, port demo-invite + boot hardening, purge 분신 branding
- Resolve visual-direction conflicts (app_theme, main.dart, signup/onboarding
  screens, index.html) in favor of the soft-gradient + glassmorphism design;
  drop the competing Twin Shadow palette and TwinTokens usage.
- Port non-visual additions from the parallel branch: CORS middleware,
  FlutterError/PlatformDispatcher crash handlers + boot timeout/fallback
  screen in main.dart, and the shared demo-invite feature
  (core-backend/demo.go, demo_test.go, mobile/lib/config.dart), reskinning
  the demo panel to match the glass UI.
- Rename the shared demo invite code DEMO-BUNSIN -> DEMO-YKAVU on both
  client and server so the tester-facing feature keeps working.
- Purge remaining "분신"/"bunsin" identifiers app-wide: Dart package name
  (bunsin_mobile -> ykavu_mobile), Android applicationId/namespace
  (com.bunsin.bunsin_mobile -> com.ykavu.ykavu_mobile, incl. Kotlin source
  dir move), on-device DB filename, keystore alias/docs, PoC draft-generator
  system prompt, and the static web boot placeholder div.
2026-07-31 01:30:50 +00:00
Claude ebf333d287
제품명 변경(분신→와카뷰) + 소프트 그라디언트/글래스모피즘 UI + 브랜드 로딩 화면
명칭 변경:
- decision-log.md Q6 확정: "분신"(가칭) → "와카뷰 (Ykavu)" — 焚身(분신자살)
  동음이의 리스크도 있었고 메신저 브랜드로 부르기 무거웠음. Master가 최종
  선택한 이름으로 변경(2026-07-31), 파생 문서(AGENTS.md/CLAUDE.md/PRD 등)·
  Flutter 앱 텍스트·web manifest/index.html·AndroidManifest 라벨까지 전부 반영
- ai-service: 본인확인 고정 문구(identity.py)·시스템 프롬프트(generation.py)도
  갱신 — 새 이름 기준으로 "본인이야 와카뷰야?" 류 질문을 감지하도록 정규식도
  같이 손봄(단순 문자열 치환만으론 어미 형태가 안 맞아서 테스트 추가/조정)
- poc/tone-corpus/의 실험용 프롬프트는 의도적으로 그대로 둠(ai-service README에
  이미 명시된 대로 프로덕션과 분리된 실험 도구)

UI/UX:
- mobile/lib/theme/app_theme.dart: 시드 컬러를 인디고/라벤더로 변경, 화면 전체에
  깔리는 소프트 그라디언트(라이트: 라벤더→스카이→핑크 파스텔, 다크: 딥 인디고→
  네이비→플럼) + 카드/인풋/칩을 반투명 "글래스" 서피스로 전환
- mobile/lib/widgets/gradient_backdrop.dart(신규): MaterialApp.builder에 연결해
  모든 화면에 자동으로 그라디언트 배경 적용
- mobile/lib/screens/splash_screen.dart(신규) + main.dart 재구성: 기존엔
  session.restore()를 기다리는 동안 아무 것도 안 그려서 흰 화면/텍스트만 뜨는
  구간이 있었음 — runApp을 먼저 하고 restore 동안 브랜드 스플래시가 뜨도록 변경
- chat_screen·autonomy_settings_screen·data_flow_screen의 커스텀 패널들도
  글래스 스타일로 맞춤

BunsinApp -> YkavuApp (mobile/lib/main.dart, test/widget_test.dart 동기화)

Flutter SDK가 없는 환경이라 flutter analyze/run으로 직접 컴파일 검증은 못했음 —
중괄호/괄호 균형과 기존에 검증된 API 패턴 위주로 신중하게 작성함. go test·
pytest는 전부 통과.
2026-07-31 01:15:42 +00:00
Cursor Agent 4f2c9df160
Complete Phase 1 C: decisions, invite ops, release path, prototype anchor
- Confirm Q1~Q7 in decision-log (Master-approved Phase C)
- Invite ops doc + note/expiry/batch/revoke APIs and tests
- Android release docs/scripts + optional key.properties signing
- Fix prototype share-link docs anchor (SHARE_URL for Master)

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 05:48:50 +00:00
Cursor Agent e1714ec5d5
Add Flutter mobile client skeleton and defer human PoC to last
Scaffold `mobile/` against core-backend APIs (signup, chat, draft,
veto, retract, autonomy/whitelist). Update roadmap/README/AGENTS so
participant PoC #1/#3 stays the final Phase 1 step after app build.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 04:16:41 +00:00
Claude 3b595587cc
Break Phase 1 (actual app build) into a concrete workstream plan
PoC execution is on hold for now, so this splits Phase 1 into work
that's independent of PoC results (backend infra, client shell, AI
pipeline productionization) vs. values that genuinely need PoC data
(autonomy defaults, whitelist topics, trust UX copy) -- so
infrastructure work isn't blocked while PoC recruiting catches up.
2026-07-30 00:48:19 +00:00
Claude e05cd392cc
Add batch blind-eval harness and style retrieval, verified end-to-end
blind_eval.py runs PoC #1's blind-eval methodology over N held-out
corpus dialogues automatically (generate_draft.py refactored to
expose draft_reply() so both share the same drafting logic).
retrieve_style.py implements the keyword/recency search from
tech-design.md §2-1 and wires into generate_draft.py as --history,
replacing hand-curated --style files.

Bash access was intermittently restricted for part of this session
(auto-mode safety classifier), so these were initially written and
committed-pending without live execution. Now verified for real:
generate_draft.py's existing behavior still holds after the
draft_reply() refactor, blind_eval.py runs cleanly against val.jsonl,
and retrieve_style.py's original weighted-sum scoring had a real bug
-- recency drowned out keyword overlap for short Korean messages
(particle attachment means "핀란드" and "핀란드는" don't share a
token), so it was effectively returning the most recent messages
regardless of topic. Fixed by ranking on (overlap, recency) instead
of a weighted sum, confirmed the Finland-related exemplar now ranks
first for a matching query.
2026-07-29 09:20:41 +00:00
Claude bb720f0178
Add rule-based escalation gate before any LLM call
escalation_filter.py implements tech-design.md §3's first step as an
actual hard gate, not just a system-prompt instruction: money,
appointment-confirmation, and emotional content stop generate_draft.py
before it ever calls Gemini. Self-test 10/10; measured a 0.93% trigger
rate against 82,305 real corpus utterances (mostly factual price
mentions, not personal money requests -- noted as an upper bound, not
a real-usage estimate).
2026-07-29 08:56:12 +00:00
Claude 623f850ed1
Design the personalization layer (B-3)
v1 doesn't train a custom model: it retrieves the closest-matching
past messages from the person's own history and feeds them as
few-shot exemplars to the same prompt contract generate_draft.py
already implements, via the hosted Gemini call. Narrows the AI-Hub
base corpus's role to evaluation and future on-device distillation,
since a hosted LLM already covers general Korean fluency.
2026-07-29 08:38:37 +00:00
Claude 7307cb56bb
Add unlabeled-corpus extractor (B-2)
build_unlabeled_corpus.py pulls the 34,030 raw-source dialogues that
never got speech_act/slot labels (found via the earlier QA
cross-check) into their own unlabeled.jsonl, forward-filling the
per-dialogue metadata that AI-Hub's CSV export only writes on each
dialogue's first row. Verified against the actual data: 176,605
raw - 142,575 labeled = 34,030, matches exactly.
2026-07-29 08:37:18 +00:00
Claude 8a4b5ba782
Add response-draft generator prototype for PoC #1
generate_draft.py takes a few style-exemplar messages plus recent
conversation context and drafts a reply via LLM call (the server
fallback path from tech-design.md §2), with escalation baked into
the system prompt for money/appointment/emotional content. Verified
prompt construction against a real corpus dialogue and hand-compared
a generated draft to the withheld real reply (README "샘플 검증") --
no API key in this session, so the live call itself is untested.
2026-07-29 08:27:39 +00:00
Claude 699ba68f49
Add PoC #1 base-corpus preprocessing pipeline
Consolidates the AI-Hub "한국어 SNS 멀티턴 대화" TL/VL zip parts into
clean train/val JSONL (142,575 dialogues), with a QA cross-check
against the raw TS/VS source. Script and docs only -- the dataset
itself stays out of git per .gitignore, both for size and because
AI-Hub's terms restrict redistribution.
2026-07-29 08:00:31 +00:00
Claude 1271531a14
Add one-page meeting review summary and wire up README
Consolidates what's ready (doc set, PoC plans/materials, prototype)
vs. what still needs a human to execute (recruiting, interviews,
Go/No-Go calls), plus a Q1-Q7 confirm/revisit checklist for the
actual planning meeting.
2026-07-29 07:39:06 +00:00
Claude c147623919
Add Q3 autonomy-acceptance interview guide (twin owner's perspective)
poc-materials.md only tests how the recipient reacts to the twin; Q3
asks whether the person delegating to it actually wants to. Adds a
separate screening + interview script for that side, with guidance
on sequencing it before the peer role-play so the two perspectives'
gap becomes a signal in itself.
2026-07-29 07:38:01 +00:00
Claude e586a3fa9f
Add ready-to-use PoC recruiting/consent/script materials
Recruiting message and data-consent blurb for PoC #1, a role-play
script for the one scenario the click prototype doesn't cover
(emotional escalation), and a shared post-session interview guide —
so participant recruitment can start without drafting these from
scratch.
2026-07-29 07:36:43 +00:00
Claude 210432747b
Note the clickable prototype in the planning docs
Built an interactive click-through prototype covering the read-receipt,
identity-confirmation/veto, and escalation scenarios plus the autonomy
settings screen. Link it into PLANNING.md's checklist and poc-plan.md
so PoC #3 role-play can reuse it as stimulus material instead of
building scenario scripts from scratch.
2026-07-29 07:35:15 +00:00
Claude bda759010a
Add PoC #1/#3 execution plan with Go/No-Go criteria
Turns the two highest-priority open risks (on-device tone realism,
impersonation/trust acceptance) into runnable protocols: sample
collection, blind evaluation, role-play scripts, and pass/fail
thresholds, so results can update decision-log.md and risk-log.md.
2026-07-29 07:28:33 +00:00
Cursor Agent 2714fbef43
Sync planning docs with tentative Q1-Q7 decisions
Update PLANNING.md §2 from empty checkboxes to the working answers in
decision-log, fix the reverse OS/self-app wording, and clarify roadmap
Phase 3 so OS-layer growth does not rewrite the start order.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-29 07:14:23 +00:00
Claude 97d70028e3
Flesh out full planning doc set: vision, PRD, tech design, risks, roadmap
Resolves the open Q1-Q7 questions as tentative decisions (self-app beta
first, target consumers, MVP scenario = read-receipt relief + group-chat
catch-up, autonomy capped at L0-L2) and builds the standard deliverable
set on top of them, ready for review at the next meeting.
2026-07-29 07:01:38 +00:00
Claude 44eb3e0f65
Add project planning approach for AI-twin messenger idea
Captures the idea-meeting doc and a step-by-step planning process:
confirm the open decisions (Q1-Q7), narrow to one MVP scenario,
sequence technical validation, and phase autonomy levels (L0-L4)
before writing a full PRD.
2026-07-29 07:01:38 +00:00