본문 바로가기
C.W.K.
Stream
Lesson 04 of 04 · published

module 은 schedule 이 아니라 preset 이야

~9 min · modules, capture-preset, workout-intake, no-schedule

Level 0차가운 쇠
0 XP0/37 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"module 은 일어난 걸 더 빨리 적는 방법이야. 일어났어야 할 것에 대한 주장이 절대 아니고."

module 이 실제로 뭔가

아빠랑 Pippa 는 Modules 탭에서 recurring-capture module 을 함께 유지해. 두 종류야. workout(실내 바이크, 3x 전신 근력 세션, 엄마랑 걷기)이랑 intake(프로틴 파우더, 크레아틴, 그 외 반복하는 non-meal 제품). module 은 작은 템플릿이야. id, 불변 kind, 이름, free-form default_values, notes, active 플래그. crumb 이 참조하고, 공유 CRUD 하나가 두 종류를 다 서비스해. 그게 엔티티 전부야. preset 이지 plan 이 아니고.

chip 을 떨구면 오늘을 기록해

Stream 에서 module 은 chip 으로 떨어져. Indoor Bike 골라서 오늘 duration 조정하고, Protein Powder 골라서 오늘 servings 조정하고. 두 경우 다 module 은 재사용 가능한 구조를 주고, 새 crumb 은 그날의 실제 이벤트 를 기록해. module_ref 더하기 그날 조정된 module_values 로. client 가 아니라 server 가 module 의 불변 kind 에서 crumb 의 surface 를 derive 해. workout module 은 workout crumb 을, intake module 은 intake crumb 을 만들지. preset 은 같은 free-prose 스트림으로의 지름길이지, 두 번째 종류의 기록이 아냐.

module 은 capture preset 이고, 일어난 걸 기록하지 일어났어야 할 걸 절대 기록 안 해. intake module 은 빈도, 예상 복용량, reminder, missed days, adherence 를 encode 하지 않아. chip 을 누르는 건 '이게 오늘 일어났다', 그게 다야. module 이 schedule 을 암시하는 순간, 지난 레슨이 금지한 adherence 기계가 된 거야.

파괴하지 말고 비활성화해

crumb 이 module 을 참조하니까, module 을 지우면 그걸 언급한 crumb 이 붕 떠. 그래서 module 은 삭제 대신 비활성화해. 템플릿이 inactive 가 되고, 그걸 쓴 모든 crumb 이 module_ref 랑 기록된 값을 온전히 지켜. 스키마 진화도 이걸 지켰어. 불변 kind 필드가 더해졌을 때, 기존 이벤트는 다시 쓰이는 대신 workout 으로 replay 됐고. append-only 진실은 새 모양에 맞추려고 편집되는 법이 없어. 새 모양이 그 위로 derive 돼. 그리고 경계를 봐. 바뀌는 식사는 free prose 더하기 선택적 slot chip 으로 남아. module 이 아냐. 식사는 보충제처럼 반복되는 동일 이벤트가 아니니까.

Code

module 템플릿, 그리고 chip-tap 이 만드는 crumb·json
// The template, maintained in the Modules tab:
{
  "id": "mod_bike",
  "kind": "workout",            // immutable: workout | intake
  "name": "Indoor Bike",
  "default_values": { "duration_min": 45, "intensity": "moderate" },
  "active": true
}

// chip 누르면 평범한 날짜 붙은 crumb 생성 -
// 오늘의 실제 이벤트, schedule 절대 아님:
{
  "target_date": "2026-07-24",
  "module_ref": "mod_bike",
  "module_values": { "duration_min": 60 },  // adjusted for today
  "surface": "workout"          // kind 에서 server-side derive
}
// module 은 preset. crumb 은 일어난 것.

External links

Exercise

누가 intake module 에 '주당 예상 복용 횟수' 필드를 더해서, 아빠가 못 미치면 빨간 'missed' badge 를 띄우게 하자고 해. Forge 가 왜 거절하는지 설명하고, module 이 expectation 대신 뭘 기록하는지 말해봐.
Hint
예상-복용 필드는 capture preset 을 schedule 로 바꾸고, 'missed' badge 는 adherence gamification 이야. 둘 다 금지. module 은 일어난 실제 소비 이벤트만 기록하지, 못 미칠 target 을 절대 안 기록해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.