Skip to content

feat: 식사 의사결정 엔진과 저장 안전성 완성 - #123

Open
minsing-jin wants to merge 1 commit into
mainfrom
codex/caffeine-candidate-telemetry-20260808
Open

feat: 식사 의사결정 엔진과 저장 안전성 완성#123
minsing-jin wants to merge 1 commit into
mainfrom
codex/caffeine-candidate-telemetry-20260808

Conversation

@minsing-jin

Copy link
Copy Markdown
Contributor

요약

  • 사진·텍스트·음성 식사 입력을 공통 nutrition interaction 계약으로 정규화하고, 실제 섭취 기록과 섭취 전 후보 질문을 분리했습니다.
  • 저장된 식사 기록을 검색 가능한 MCP context로 만들고, Sake의 카페인 판단을 일반 식사 엔진 위의 특화 정책으로 연결했습니다.
  • 오늘 확정 섭취량과 확인된 후보 카페인을 함께 계산해 "오늘 얼마나 먹었어?"와 "이걸 마셔도 될까?"를 별도 경로로 처리합니다.
  • UI와 디바이스 collector는 포함하지 않았으며, 컴퓨터·휴대폰 activity telemetry는 후속 구현용 canonical storage/retention/MCP 아키텍처만 문서화했습니다.

저장·안전성

  • 모든 영양 mutation에 caller-owned UUID operation_id와 canonical fingerprint를 적용해 재시도는 동일 결과를 반환하고 다른 입력 재사용은 차단합니다.
  • owner confirmation gate, 만료·취소·해결 terminal tombstone, plaintext handle 비저장, tamper 검증을 추가했습니다.
  • 만료된 health payload와 quarantine 원문은 보존기간에 맞춰 삭제하되, 데이터 내용을 담지 않는 최소 operation/deletion marker로 부활을 막습니다.
  • nutrition ledger와 retention policy 쓰기를 SQLite의 process/file lock 및 PostgreSQL advisory/row lock 순서로 직렬화했습니다.
  • storage maintenance dry_run은 nested savepoint 전체를 rollback해 DB 변경을 남기지 않습니다.

독립 리뷰에서 수정한 문제

  • legacy origin=user|label 결과가 owner review 없이 카페인 합계에 포함될 수 있던 provenance 경계를 닫았습니다.
  • expired quarantine payload가 보존기간 밖에서도 남을 수 있던 경로와 operation marker 복구 규칙을 수정했습니다.
  • malformed expired confirmation 삭제 후 operation ID가 재사용될 수 있던 경로를 opaque terminal tombstone으로 차단했습니다.
  • 대문자 등 비정규 UUID 표기도 canonical tombstone으로 수렴시켜 retention purge 뒤 재사용되지 않게 했습니다.
  • SQLite 별도 engine/별도 process 잠금과 dry_run rollback을 회귀 테스트로 고정했습니다.

독립 GPT-5.6 xhigh 최종 재리뷰 결과: NO FINDINGS.

검증

  • uv run pytest -q: 1827 passed, 19 skipped
  • 관련 확대 회귀군: 608 passed, 7 skipped
  • 변경 Python 파일 ruff check: 통과
  • 변경 Python 파일 ruff format --check: 통과 (tests/glue/test_bootstrap.py는 기존 전체 미포맷 파일이라 이번에 추가한 한 줄만 diff 확인)
  • compileall, git diff --check: 통과
  • SQLite 별도 engine 및 실제 별도 subprocess lock 테스트: 통과
  • 실제 PostgreSQL 통합 테스트 5개: HEALTHMES_TEST_POSTGRES_URL이 없어 이번 환경에서는 skip

범위 밖

  • iOS/Android/macOS/Windows UI 및 device dogfood
  • activity collector/ingest/MCP 실제 구현
  • 가격 정책과 관리형 cloud 제공
  • vendor/hermes-agent/ 변경

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant