2026년 9월 1일 아침 · teamai · 모든 수치는 실측
cron 4개 전부 정상이고 24시간 무중단이다. 그런데 대표 계정에 새로 합성된 기억은 0건이었고, 아침 선발화도 안 나갔다. 둘 다 이유가 있었고, 둘 다 고쳤다.
| 항목 | 결과 |
|---|---|
| 꿈꾸기 실행 | 655회 / 24h · 실패 0 |
| 대표 계정 합성 기억 | 0건 — 유일한 후보가 검증에서 거부됨 |
| 시간 리뷰 | 10쌍 · 마지막 21.5시간 전 (주기 24h → 아직 안 익음, 정상) |
| 아침 선발화 | 08:00 KST 정시 실행 · done 0 — 시험 찌꺼기에 막힘 |
| 다시걸기 | 277회 · 오늘 약속 10건 생성(발송 4·예정 3·취소 3) |
| 증거 처리량 | 대표 4줄 소비 → 거부로 전량 소각 |
고친 것 둘 — ① 거부되면 한 번 고쳐 보게 했다 ② 안 울린 약속이 아침 인사를 못 막게 했다. 둘 다 실측으로 복구를 확인했다.
memory-dreaming(job 6)은 2분마다 655번 돌았고 전부 성공했다. 응답도 정상이다. 실패나 타임아웃은 한 건도 없다.
대표 계정 기억 181행 중 removed_by='synthesis'가 0건, 24시간 새 기억 1건, 합성으로 만들어진 것(부모 있음) 0건.
두 갈래를 각각 확인했다.
시간 리뷰 — 10쌍 전부 마지막 리뷰가 21.5시간 전이다. 주기가 24시간이니 아직 안 익었다. 정상이다. 오늘 오전 중에 익는다.
증거 합성 — 여기서 실제로 일이 있었다. 어제 17:30(UTC) 꿈꾸기가 대표의 피부주치의 대화(증거 4줄) 를 집어 제안 1건을 냈고, 검증자가 거부했다.
"‘가려움보다 외관이 주된 불편’은 가려움이 없거나 덜하다는 점이 직접 확인되지 않아 증거가 과장되어 있습니다."
이 판정은 옳다. 대표는 "그냥 각질이 보기싫어"라고 했지 "안 가렵다"고 한 적이 없다. 제안이 한 발 더 나갔고 검증자가 잡았다 — 제안→검증→적용 구조가 설계대로 작동한 것이다.
거부되자 증거 4줄이 전부 삭제됐다. 그 대화는 영영 다시 꿈꿀 수 없고, 피부주치의는 대표에 대해 아무것도 못 배웠다.
바로 옆 코드가 앞뒤가 안 맞았다. 제안의 모양이 틀렸을 때(invalid-output)는 이미 "증거를 태우지 않고 남긴다 — 다음 판에 다시" 로 처리하고 있었다. 모양이 틀리면 기회를 주면서, 한 줄이 과하면 통째로 버리는 것은 균형이 안 맞는다. 게다가 실제로 잃는 쪽은 후자다 — 대화 내용은 멀쩡했고 표현 하나만 과했으니까.
거부 사유를 그대로 붙여 한 번만 다시 제안하게 했다. "위 지적을 받아들여 증거에 실제로 적힌 것만 남겨 다시 제안해라. 확인되지 않은 것을 단정하지 마라." 두 번째도 거부되면 그때 태운다(무한 반복 금지). 비용은 거부가 났을 때만 들고, 24시간 실측 기준 1건이다.
검증 — 대표가 겪은 그 네 마디를 그대로 재현해 강제 꿈꾸기를 돌렸다. 결과 committed 1. 만들어진 기억은 이렇다.
[context]2026-08-31 기준 발뒤꿈치와 발바닥 전체에 각질이 반복적으로 생기고 껍데기처럼 보이며, 외관상 신경 쓰임.
검증자가 지적한 "가려움" 과장 없이, 대표가 실제로 한 말만 들어갔다.
정직 신고: 이 커밋으로 같은 대화가 기억을 남기는 것은 확인했지만, 재시도 분기가 탔는지 첫 제안이 그냥 통과했는지는 구분하지 못했다. 어젯밤 크루 지침을 고쳐서 크루의 답변 문장이 달라졌기 때문이다. 다음 거부가 나면 로그(거부 → 고쳐서 통과)로 확인된다.
crew-outreach(job 4)는 08:00 KST 정시에 돌았다. 결과는 done: 0, 사유는 이랬다.
"오늘 크루가 건 약속이 있다"
이건 설계된 양보다 — 크루가 직접 건 약속이 오늘 있으면 일괄 인사는 비켜선다. 그런데 그 약속의 정체가 문제였다.
title: 담담한할머니
body: [딥링크 시험] 이 알림을 누르면 「요즘 잠이 안 오는 이야기」 방으로 바로 들어와야 해요.
status: sent ← 손으로 찍은 값
fired_at: None ← 한 번도 안 울렸다
attempts: 0
fire_at: 2026-09-01 09:00 UTC ← 오늘
어제 딥링크를 시험하려고 만들고 발송을 막으려 status='sent'만 찍어 둔 행이다. 크루는 아무 말도 안 했는데 가드는 "오늘 약속 있음"으로 읽었고, 대표는 아침 인사를 못 받았다.
정상 발송과 대조하면 명확하다 — 실제로 울린 19건은 전부 fired_at이 찍히고 attempts가 올라 있다. 안 울린 채 sent인 행은 딱 2건, 둘 다 시험용이었다.
가드가 울린 적 없는 sent는 세지 않게 했다. 예정된 것(pending·firing)은 그대로 센다. 그리고 찌꺼기 2건은 지우지 않고 cancelled로 내렸다 — 흔적은 남긴다.
검증 — 고친 뒤 dry-run으로 돌리니 done: 1, 다이어트현실이 이런 인사를 낸다.
"어서 와요. 오늘 아침 삶은 계란은 드셨어요? 월·화·목엔 저녁을 거르지 말고, 순대국집 가기 전에 계란 하나라도 먼저 먹어 둡시다."
고른 이유도 기억에 근거한다 — "매일 아침 삶은 계란을 먹는 습관과 월·화·목 저녁을 거른 뒤 순대국·소주 2병을 먹는 구체적인 패턴을 아침에 바로 챙길 근거가 있습니다."
주의: dry-run이라 실제로 보내지는 않았다. 오늘 아침 인사는 이미 지나갔고, 다음 발송은 내일 08:00이다. 지금 바로 받고 싶으시면 말씀 주시면 한 번 쏘겠다.
다시걸기(job 5) — 5분마다 277회 실행. 대부분 scheduled: 0(걸 일이 없음)이고, 한 번은 6건을 잡았다. 오늘 만들어진 약속 10건 중 4건 발송(오사카단골 푸시 시험), 3건 예정(다이어트현실 오늘 저녁 18시·일본어센세·오사카단골 10월 3일), 3건 취소.
리마인더 티커(job 3) — 1440회, 1분에 정확히 한 번씩. 빠짐 없음.
memory_evidence 0행 — 정상이다. 증거는 꿈꾸고 나면 소비되며 지워진다. 지금 0인 건 어제 것이 전부 처리(또는 소각)됐기 때문이다.
"성공"이 "일했다"는 뜻이 아니다. cron 4개가 24시간 내내 초록불이었고 실패가 0이었는데, 정작 대표에게는 새 기억도 아침 인사도 없었다. 잡이 도는지 보는 것과 결과가 남는지 보는 것은 다른 확인이다.
그리고 검증자가 옳게 거부한 뒤에 무슨 일이 벌어지는지를 안 보고 있었다. 거부는 성공도 실패도 아니라서 어느 쪽 지표에도 안 잡힌다 — 그 사이로 대화 하나가 통째로 사라지고 있었다.
2cfc8475 fix(dream+outreach) 거부 한 번에 대화를 통째로 버리던 것
+ 시험 찌꺼기가 아침 인사를 막던 것