Commit Graph

20 Commits

Author SHA1 Message Date
Claude 9cd86a4da5
Pin down why v1 is Android-only now that the client is Flutter
Flutter weakens the old "single platform = faster dev" argument for
skipping iOS, so tech-design.md §6/§8 now state the reasons that
still hold: v2's OS-layer notification access is Android-only by
Apple's own policy regardless of framework, and the dev environment
is Windows, so an iOS build isn't even possible right now. Flutter
still means no UI rewrite once a Mac is available later.
2026-07-30 01:34:01 +00:00
Claude 874e965665
Split backend into a Go core service + Python AI service
Reconsidered pure Go (would mean reimplementing and re-verifying the
already-tested AI pipeline) and pure Python (leaves perceived
performance/concurrency headroom on the table for a preemptive
scale bet). Landed on: Go handles auth/messaging/DB, Python keeps
owning generate_draft/escalation_filter/retrieve_style behind an
internal API. backend/ (Python) is now labeled a verified prototype
for the Go rewrite to match, not the final service.
2026-07-30 01:21:35 +00:00
Claude a1777516cf
Switch client stack from Android/Kotlin to Flutter/Dart
Native wasn't actually required for the v2 OS-layer notification
listener -- Flutter reaches it via platform channels like any other
native Android API, same pattern many production apps already use.
Flutter's faster iteration on the chat UI (already validated in the
click prototype) matters more for v1 than starting native. Updates
tech-design.md §8, roadmap.md's checklist, and AGENTS.md accordingly.
2026-07-30 01:12:51 +00:00
Claude 9a5358d0b1
Start Phase 1 backend skeleton (item 2 of the build order)
FastAPI app with invite-code signup, message send/relay over
WebSocket, and the DB schema from roadmap.md Phase 1 §2.1 (users,
contacts, conversations, messages, twin_settings, whitelist_rules,
escalation_logs). Defaults to SQLite for local dev, PostgreSQL in
prod per tech-design.md §8.

Verified end-to-end with TestClient: signup, duplicate-invite-code
rejection (409), message persistence, 404 on an unknown conversation,
and WebSocket broadcast delivery all behave as expected.

Push notifications and the AI pipeline integration (item 3) are not
in this commit -- see backend/README.md and roadmap.md's checklist.
2026-07-30 00:57:57 +00:00
Claude 94479a51d6
Decide Phase 1 tech stack and turn the plan into a working checklist
tech-design.md §8 settles the stack (Android/Kotlin, Python/FastAPI,
PostgreSQL, WebSocket relay, Room+SQLCipher) so it stops blocking
item 1 of the build order. roadmap.md's Phase 1 breakdown is now
checkboxes instead of prose, and AGENTS.md adds the rule to check/
update that checklist before and after any Phase 1 app-build task,
rather than tracking progress ad hoc.
2026-07-30 00:54:52 +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