2026-09-16 테스터6 휴먼테스트, 개발 로그인, Anthropic·Gemini 평가, 프로덕션 도메인 연결

테스터6 실플레이 (판 2338ec9f, 09:48~11:06)

start_demo.sh로 재기동 뒤 테스터6이 5회차를 완주했다(1회차 8.8 → 2회차 64.2 → 3~5회차 94.2, side_effect 셀은 끝까지 0). 피드백 11건을 docs/review-verification/2026-09-16-tester6/tester6.md에 원문·DB 대조·분류로 기록했다. 대조에서 드러난 수치: 근거 목록 notes 273건 중 서로 다른 문장 96건, 관찰 264건 중 87건 — 목록의 약 2/3가 이전 회차 반복이었다. 신의 질문 15문답 전부 unknown이고 “한 가지 더 —” 해금 단서는 질문과 무관하게 회차 게이트로 붙었다.

즉시 반영 5건 (미커밋)

  • F1 보이스 — 인물 대사 음원(CH/MI/EU/JU) 재생 보류, 관리자·조언자·회고(MA/AD/EN)만 유지. voiceForLine 접두 가드 한 곳으로 처리, 파일·대응표 보존
  • F3 맨 위로 버튼 — 밤 근거 목록이 열리고 300px 이상 내려가면 우측 하단 고정 버튼
  • F4 답변 잘림 — 신의 질문 문답 로그의 40vh 상한 제거, 최신 답변 스크롤 인
  • F5 추천 규칙 — 규칙 없이 이미 수행된 행동(“채연: 배급을 남긴다”)은 추천에서 제외. 테스트 2건 추가
  • F6 중복 기록 — 관찰 기록·근거 목록에서 같은 문장은 첫 회차만 표시(lib/dedupeByText.ts), 서버 데이터·채점 근거 무변경

검증: backend 462 passed · tsc 통과 · 헤드리스 UI 7종 통과. 부수로 OAuth credentials: "include" 이후 깨져 있던 UI 테스트 모의 서버 CORS 헤더와 ToggleSwitch 셀렉터를 정리했다.

브레인스토밍 → 기획서 원설계 복귀, 자산 제작

F2·F7·F8·F11을 브레인스토밍한 뒤 기획서 v8.1과 대조해 중간안(조언자 계시·원숭이손 UI 이상화·관리자 노출 서사)을 폐기하고 원설계로 돌아갔다. 결정: F2 규칙 게이트+분류기(첫 1회 예산 면제), F7 판정·근거·조언 3부 고정형(리드 표의 사실 공개 제거, 조언은 세계 구조에서만), F8 고아 단서는 밤 결말 전환 안에서 쿠키 문법(치지직 1초 + 관리자 밤 방송 + 캡션)으로, F10 현행 유지, F11 기획서 5.7 소원 표 4종을 시나리오 분기로. 설계 문서 docs/superpowers/specs/2026-09-16-coherence-chain-design.md(검토 대기), 제작서 REMAKE_DAY_이미지제작서_밤단서_v2.md·원숭이손Q군_v1.md, 인계 HANDOFF-26-09-16.md.

같은 날 사용자가 이미지 12장(P01~P05·Q02~Q08)과 관리자 밤 방송 MA08~12를 제작했다. 검수에서 Q04만 보류(손잡이 높이 위반), 나머지는 게임 경로에 복사하고 대응표 등록(대사 음원 34개). 검증 중 BGM 페이드가 rAF 음수 진행률로 상한을 넘던 결함을 발견해 수정했고 voice-playback 테스트 2회 연속 통과. 이어서 인게임 확인: UI 7종 전부 통과, 실서버 셀프플레이 1회차 완주(크래시·폴백 0)로 F5 추천 규칙 필터 실동작 확인. connected-investigation의 삽화 크기 검사는 로드 완료 대기로 안정화.

밤 단서 시퀀스(F8) 구현 — 서브에이전트

밤 결말 전환에 그날의 고아 단서를 쿠키 문법으로 얹었다. 시나리오의 NightClueDTO 5행이 단일 출처이고 밤 답안 응답이 night_clue를 내려준다. 결말 이미지 → 관리자 밤 방송(MA08~12) → 음원 중반 치지직 1초(전역 .cookie-glitch 재사용, 2회차는 두 장) → 캡션 잔류 → 「계속」. 캡션은 observed·방송은 reported로 「N회차 · 소등 후」 관찰·노트에 저장되고, 낮 노트의 고아 파편 5개는 제거했다. 검증: backend 475 passed(신규 13), tsc, 헤드리스 6종 통과, 실서버 셀프플레이 1회차에서 「소등 후」 관찰 저장·낮 파편 0·폴백 0 확인.

같은 시각 이 세션 밖에서 backend/.env가 바뀐 것을 확인했다(OAuth 리다이렉트·프런트 URL이 프로덕션 도메인으로, NPC 모델 kanana). 배포 세션의 작업으로 보이며 인계 문서에 기록만 했다.

F7 신의 질문 구현 — 서브에이전트 주도 개발

설계 승인 뒤 계획 3종(F7·F2·F11)을 쓰고 F7을 먼저 실행했다. feat/coherence-chain 브랜치에서 task 7개를 구현자·검토자 서브에이전트 쌍으로 진행(fix round 2회), opus 전체 리뷰에서 Important 4건(판정 라벨 4종→3종, 선두 판정어 중복, 확인 노트가 dedupe에 가려짐, 조언 문장이 탭 가능한 근거로 노출)을 단일 수정으로 반영하고 main에 머지했다. 결과: 답변은 판정·근거·조언 3부 한다체, 리드 표는 사실 문장 없이 닻(플레이어 기록)→행동(인물 질문/규칙)만, “맞다” 판정은 확인 노트로 저장, notes.source_key 64→255 마이그레이션. backend 491 passed·tsc·헤드리스 7종. 후속 티켓은 인계 문서에.

비용 문서 docs/apiscenario.md를 썼다. 테스터6 판 실측(Core 82회·31만 자, NPC 27회·11만 자)으로 외부 API 판당 비용(Opus 5 $1.5~2.1, Sonnet 5 $0.65~0.85, Haiku $0.35~0.45)과 운영 시나리오 A(현재 PC+API)·B(EC2+API)·C(GPU EC2) 45일 비용을 비교했다. 지금 규모에선 A 또는 B, C는 10배 이상 비싸다.

F2 무의미 입력 처리·Anthropic 어댑터 — 서브에이전트 주도 개발

F2 계획 5 task를 같은 방식으로 실행했다. “ㅋㅋㅋㅋ”·”……”·”왜왜왜” 같은 입력은 규칙 게이트가 모델 호출 없이 인물의 되묻기 대사로 답하고 같은 비트 첫 1회는 예산을 쓰지 않는다. 통과한 입력은 Core 경량 분류기(질문·부탁·잡담·무의미)를 거쳐 잡담이면 지식 블록을 빼고 답하게 해 첫 발화 동기 자백을 막는다. 전체 리뷰(opus)가 게이트의 낮 상태 검사 우회(심각)와 분류기 호출 순서를 잡아 한 번에 수정했다. 비한글 입력은 게이트로 되묻기 처리가 의도된 동작이다.

Anthropic 어댑터(provider=anthropic)를 붙였다. 리뷰가 하네스 스키마의 비지원 키워드(min/max 등)가 API에 그대로 나가는 문제를 잡아 SDK 방식대로 정리했고, refusal·절단은 재시도 없이 즉시 폴백, thinking은 지침대로 파라미터를 생략하고 effort low로만 조절한다. 실호출 스모크는 API 키가 들어오면 돈다. main 머지(d4597d3), backend 545 passed.

과잉 사용 방지 허들을 설계·승인·계획까지 마치고 구현을 시작했다. 비용 문서 apiscenario.md에 NPC까지 Anthropic으로 통일하는 조합 표를 추가했다. .gitignore에 /output/ 전체를 넣었다(이미 추적 중인 voice·npc-dialogue 원문은 그대로).

허들 main 머지, 검토 강도 등급, 개발 계정 로그인 착수 (저녁 마감)

허들 4층을 opus 최종 리뷰까지 돌려 main에 합쳤다(8137acf, 574 passed). 리뷰가 잡은 것은 야간 초안·주장·규칙 커스텀 텍스트의 상한 누락(Critical), 배포 보안 점검 1건, 판 생성 재집계(TOCTOU), 재시작 경로에서 허들 화면이 빠진 것, 허들 화면과 결말 화면의 동시 렌더였다. 재기동 뒤 익명 판 생성은 401로 막힌다.

하루 동안 F7·F2·허들을 모두 무거운 절차로 돌려 기능당 1~1.5시간이 든 것을 두고, 검토 강도를 A(비용·보안·인증)/B(게임 로직·UI)/C(문장·문서·러너) 세 등급으로 나눠 CLAUDE.md·AGENTS.md에 규칙으로 넣었다. 외부 API 전환 이유(공개 운영 기간에 홈서버 GPU 1장으로 동시 접속을 감당할 수 없다는 서빙 조건, 모델 품질 문제가 아님)와 로컬·Anthropic 비교 프로토콜을 model_evaluation.md 맨 위에 기록했다.

허들이 켜지면 구글 없이 들어갈 길이 없어 개발 계정 로그인을 A등급으로 시작했다. 백엔드 엔드포인트·유스케이스·테스트 11개까지 WIP(7af14dd, 585 passed)에서 사용자 지시로 중단. 남은 순서(검토·랜딩 폼·selfplay 플래그·머지·재기동)와 Anthropic 평가·F11·untrack 결정은 HANDOFF-26-09-16.md “지금 바로 할 일”에 있다.

개발 계정 로그인 완료·main 머지 (귀가 후 20:39~21:01, A등급)

낮에 WIP로 멈춘 7af14dd부터 이어서 A등급 절차(task별 sonnet 검토 → opus 최종 리뷰 → 수정 1회 → 범위 재검토)로 끝냈다. 진행 장부는 .superpowers/sdd/2026-09-16-dev-login/progress.md.

  • Task 1 검토(sonnet) — Important 1건: 계획 Step 6의 api_contract.md 기재 누락 → 34ce698(20:39)
  • Task 2 48a70ac(20:41) — 랜딩 DevLoginForm(52줄), run_selfplay --dev-login, 헤드리스 dev-login.cjs. 실서버 실행에서 getByRole('alert')가 Next의 route announcer(role=alert)와 겹쳐 strict mode로 실패 → 선택자를 폼 안으로 한정(816f052) 뒤 PASS(틀린 비번 alert, 로그인 → /play, POST /sessions 200)
  • opus 최종 리뷰 — Critical 0, Important 2. I1: 배포 보안 점검 1건 수정, 테스트 4개 + 1개 추가(d659be3, 585 → 590 passed 10.51초). I2: 개발 계정 관련 정리 1건(be42385, grep 0건, 590 passed)
  • 파킹한 Minor — M1 off 상태에서도 본문 검증 422가 404보다 먼저 나옴(공개 저장소라 은닉 가치 낮음), M2 배포 보안 점검 1건(09-17 수정 완료), M4 dev 계정의 사용 한도를 모든 용도가 공유, M5 합성 루트 주입 조건 테스트 없음
  • 머지·재기동 — main ff → be42385, 백엔드 8500 재기동. dev-login.cjs PASS. 이어서 테스트의 .env 폴백 경로(../backend/.env → ../../backend/.env, 78b7cc8)와 selfplay --dev-login이 Secure 쿠키를 http 요청에 못 싣던 문제(속성 없이 재설정, 33bebca)를 고쳤다

Anthropic·Gemini 모델 평가 (B등급, feat/coherence-chain)

러너·어댑터 변경 — Anthropic SDK 1.6에서 create()의 temperature 인자가 빠져 extra_body로 전송(6a02a13). run_npc_dialogue_check --provider anthropic(59dada7)·--provider gemini(ece472d), run_core_selection(formal stage만)·run_age7_check --provider anthropic(7527fa2, 채점기는 ollama 고정). selfplay 밤 서술 폴백이 free_text 2000자 상한을 넘어 422 나던 문제(ff4eb66). 작업 지시는 Core 축 러너를 run_model_descent.py로 적었지만 그 파일은 E6 NPC 디센트라 PCA·극성쌍이 없어서, 실제 게이트가 있는 run_core_selection.py에 스위치를 붙였다.

아래 수치의 원문은 output/(gitignore)에만 있다 — npc-dialogue-2026-09-16-anthropic/·npc-dialogue-2026-09-16-gemini/의 comparison.md, model-eval-2026-09-16-anthropic/core-age7-summary.md와 stage2-formal-*.json. 정본 model_evaluation.md·metrics.yml에는 아직 기록되지 않았다(model_evaluation.md 마지막 수정 18:13, metrics.yml 변경 없음).

NPC 대화 점검 (20케이스 × repeat 2)

평가 중 러너 결함을 찾았다. 낮에 추가한 발화 분류기가 core_llm을 부르는데, 러너 fixture의 core_llm stub이 늘 {"plans": []}를 돌려줘 분류기 스키마를 못 맞췄다. 그래서 턴마다 재생성 2회·폴백 1회가 모델과 무관하게 붙었다(1차 Haiku·Sonnet 원시 재생성 162·161, failed_harnesses 80). stub이 label 스키마면 question을 돌려주게 고치고 Haiku만 재실행했다. Sonnet은 재실행하지 않아 NPC 역할 수치만 따로 뽑은 값이다.

  kanana1.5:8b (09-15 기준선) claude-haiku-4-5 (수정 러너) claude-sonnet-5 (수정 전 러너) gemini-3-flash-preview
평가 턴 82 80 80 80 시도 · 성공 14
NPC 역할 재생성 / 미복구 폴백 1 / 0 2 / 0 1 / 0 0 / 66
p50 / p95 (ms) 1,060.3 / 1,515.5 1,906.5 / 2,545.8 2,498.0 / 3,492.2 9,183.2 / 66,669.6 (10 RPM 대기 포함)
평균 답 길이(자) 29.4 31.4 35.8 54.5 (n=14)

(수정 전 러너의 Haiku 1차는 p50 2,256.1 · p95 3,418.8ms, 평균 32.5자.) 재생성은 세 모델 모두 같은 identity 케이스의 금칙어에서 나왔고 재시도로 회복했다. 10케이스·1회 반복·검토자 1명 기준 읽기로는, 두 Anthropic 모델 모두 09-15 보고서가 로컬 모델의 지속적 약점으로 적은 “지금 네가 말해 줘서 알았어”와 기억을 구분한다(kanana는 “그건 나도 몰라.”). 반면 Sonnet은 사라진 친구를 물으면 현재 인물을 나열하는 약점을 그대로 재현했고, core-6에서 Sonnet·Gemini는 근거 없이 “은상이는 안 적었어”라고 단정했다(Haiku는 모른다고 답함). Gemini 무료 키의 실제 제약은 10 RPM이 아니라 하루 20요청이었다 — 워밍업 503으로 두 번 실패, 세 번째에 14턴 성공 뒤 503과 429 RESOURCE_EXHAUSTED로 끊겼다.

Core — run_core_selection --stage formal (advisor·evaluator 역할만)

셀 PCA 극성쌍 eval 기대 일치 advisor p95 (ms) evaluator p50 (ms) C11 (p95≤5s) C13 (p50×10≤30s)
로컬 기준 gemma4:12b-N 0.90 O 0.57 4,231 2,918 O O
claude-sonnet-5 n=1 0.90 O 0.7143 4,593 3,186 O X (31,860)
claude-opus-5 n=1 1.00 O 0.5714 5,853 3,135 X X (31,350)
claude-sonnet-5 n=3 (23:38) 0.9667 O 0.7143 7,387 2,964 X O (29,640)

n=3에서 advisor 66콜·evaluator 42콜 폴백 0, advisor p50 3,813ms. n=1과 n=3에서 두 지연 게이트의 결과가 서로 뒤집혔다 — Sonnet은 두 게이트 모두 경계선에 있다는 뜻으로 읽었다. C13은 evaluator p50 × 10으로 만든 합성 지표라, 채점 호출을 묶으면 실제 호출이 1회가 되어 네트워크 왕복이 있는 외부 API에 불리하게 작동한다는 점도 함께 적었다. Opus는 advisor p95가 로컬보다 38% 느려 n=3을 돌리지 않았다. 비용은 문자수 × 1.0토큰 상한 추정으로 Core 스모크 두 셀·Haiku age7·중단분 합계 약 $1.06(실측 토큰 아님).

NPC 7세 정책 — run_age7_check --policy on (채점기 gemma3:12b)

  1_사실대로 2_왜=몰라 3_3턴망각 4_유도수용 5_문자그대로 통과
로컬 kanana1.5:8b (09-14) 0.6 1.0 1.0 1.0 1.0 4/5 O
claude-haiku-4-5 n=4 (21:35, 동시 실행) 0.75 1.0 0.0 0.0 0.0 2/5 X
claude-haiku-4-5 n=4 (23:30, 단독 재실행) 0.0 1.0 0.0 0.75 1.0 3/5 X

Haiku는 두 번 다 게이트(4/5) 미달이지만 항목별 값이 크게 흔들린다. 단독 재실행의 1_사실대로 4건에는 모두 “judge 출력 파싱 실패” 주석이 붙었는데, 같은 발화를 뒤에 다시 채점했을 때는 파싱 실패가 0건이었다 — 채점기 문제라기보다 그 시각 VRAM 경합으로 본다. Sonnet age7은 결과가 없다. 1차 32분·2차 24분 동안 CPU 0·소켓 idle로 멈춰 종료했고, 같은 프롬프트의 단발 진단 호출은 3.31초에 정상 완료돼 어댑터 결함은 아닌 것으로 판단했다(동시 평가로 인한 계정·네트워크 정체로 추정, 원인 확정 못함). 22:41에 시작한 재시도 로그도 0바이트다.

채점기·셀프플레이 기본값 gemma3 → gemma4(think off) 통일 (06e0906, 23:44)

.env는 이미 CORE_LLM_MODEL=gemma4:12b·think off였는데 코드 기본값(runner_common.DEFAULT_JUDGE_MODEL, Settings.core_llm_model)은 gemma3:12b였다. 16GiB GPU 한 장에 gemma3 채점기와 백엔드의 gemma4가 같이 올라가지 못해 스와핑이 났고, 오늘 밤 평가 러너가 40분 넘게 묶인 원인 중 하나였다. 5파일 +10/−8줄. 요약은 output/gemma4-unify-2026-09-16/summary.md.

  • think 기본값 — gemma4:12b는 think 필드를 빼면 thinking이 켜진다. 짧은 판정 1건에 thinking 1,666토큰·35초가 걸렸고 JSON이 코드펜스에 싸여 나왔다(curl 직접 재현). make_llm()에 think=False 기본값을 넣어 이 함수를 쓰는 13개 호출 지점이 한 번에 off를 받게 했고, Settings.core_llm_think 기본값도 "default" → "off". gemma3·exaone3.5·kanana1.5는 thinking capability가 없어 무해함을 /api/show로 확인했다
  • 채점기 일치율 — Haiku age7 발화 20건을 두 채점기로 각 2회 채점

    지표 gemma3:12b gemma4:12b (think off)
    파싱 실패 (1회/2회) 0/20, 0/20 0/20, 0/20
    자기일치 20/20 20/20
    평균 지연 ~1.0초/콜 ~1.2~1.7초/콜 (첫 콜 로드 11.8초)
    두 채점기 간 일치 19/20 (95%)  

    유일한 불일치는 “그건 나도 몰라. 내가 못 봤어.”를 gemma3는 회피(FAIL), gemma4는 부정 답변(PASS)으로 본 해석 차이다

  • age7 로컬 기준 재측정 (kanana + gemma4 채점기) — 0.75 / 1.0 / 0.25 / 1.0 / 1.0, 4/5로 게이트 통과(gemma3 채점기 시절과 통과 수 동일, 파싱 실패 0). 다만 3_3턴망각이 09-14 기록 1.0에서 0.25로 내려갔다
  • 건드리지 않은 것 — run_core_selection.py의 후보 목록(여러 모델 비교가 목적이라 기본값이 아님), test_health_and_factories.py의 "gemma3:12b"(임의 문자열 테스트 데이터)
  • 검증 — backend 590 passed
  • 완료(자정 전후 이어서 확인) — 셀프플레이 플레이어 gemma4 확인(D): 5회차 완주 8.8·8.8·8.8·21.9·17.5, 323.6초, 전 역할 재생성·폴백 0(e5b936ce). 이전 gemma3 플레이어 판(35.0 × 5, 1,526초)은 GPU 경합이 있던 판이고 self-play 점수는 판마다 크게 흔들려 한 판으로 우열을 가리지 않는다 — gemma4 플레이어 기본값 유지. gemma4 채점기로 Anthropic NPC age7 재측정(E): Haiku 4/5, Sonnet 4/5 통과(각 1~1.5분, gemma3 채점기 때의 40분 정지 해소)

밤 마무리 — Anthropic 평가 결론 기록과 부록 A.19 (자정 무렵)

오늘 밤 작업을 정본에 옮겼다. 개발 계정 로그인은 A등급 절차로 완료·main 머지(be42385, 590 passed). Anthropic 어댑터는 SDK 1.6.0에서 Messages.create()의 temperature 인자가 빠져 Haiku가 TypeError로 죽던 결함을 extra_body 경유 전송으로 고쳤다(6a02a13). 러너 결함도 두 건 잡았다 — NPC 대화 러너의 발화 분류기 stub이 매 턴 재생성 2+폴백 1을 provider와 무관하게 만들던 것, gemma4:12b 채점기가 think 필드 생략 시 기본으로 thinking을 켜 판정 1건에 35초씩 걸리던 것(make_llm() 기본값 think=False로 통일).

평가 결과와 권고: Core PCA·극성·eval 게이트는 Sonnet 5·Opus 5 둘 다 통과, 지연 게이트는 Sonnet이 n=1↔n=3 사이 경계에서 흔들리고 Opus는 advisor p95가 로컬보다 38% 느려 미달. self-play 완주·폴백은 Opus·gemma4 대조군(35.0×5, GPU 경합으로 1526초) 전부 0, Sonnet은 planner의 beats maxItems가 Anthropic 구조화 출력에서 강제되지 않아 재생성 2·폴백 1(후속 과제로 기록). NPC 대화 의미 품질은 Haiku·Sonnet 둘 다 kanana의 지속 약점(“방금 들음 vs 기억”)을 개선해 비열등 이상. NPC 7세 정책은 1차(채점기 gemma3, VRAM 경합 추정)에서 Haiku 미달·Sonnet 2회 정지였으나, 채점기를 gemma4:12b(think off)로 통일해 재측정하니 kanana·Haiku·Sonnet 전부 4/5 통과(공통 약점은 항목 3 “3턴 망각”, Sonnet은 “유저가”라는 메타 표현 누출 1건). Gemini 무료 키는 하루 20요청 상한이 실제 제약이라(10 RPM 페이싱이 아니라) NPC 후보에서 제외. 권고: Core claude-sonnet-5 · NPC claude-haiku-4-5(최종 결정은 사용자 몫, Opus는 품질 우위 없이 느리고 비용만 2~3배). 기록: docs/model_evaluation.md 부록 A.19·상단 “측정 결과” 열, docs/metrics.yml 16줄. ANTHROPIC_API_KEY 제거는 사용자 조치로 남겨 뒀다(HANDOFF-26-09-16.md “남은 것” 참고).

테스터7 피드백 기록 (미추적 파일)

docs/review-verification/2026-09-16-tester7/tester7.md에 2건을 기록만 했다(상태 “진행 중”). F1 게임 출력 텍스트가 드래그로 선택되지 않게, F2 현재 장면에 없는 NPC는 딤 처리·선택 불가. 둘 다 미착수. 후보 판은 e7aa6a4f(10:33:45 생성), 완주 여부는 미확인.

프로덕션 도메인 연결 — 프론트 remakeday.com(Vercel) · 백엔드 api.remakeday.com(홈서버 터널)

09-15에 적은 “백엔드 t3.micro” 안은 쓰지 않았다. t3.micro에서 홈서버 Ollama로 가는 통로가 따로 필요해서, 백엔드를 홈서버에 그대로 두고 Cloudflare 터널로 공개했다.

  • DNS — remakeday.com 네임서버를 가비아에서 Cloudflare로 이전(존 Active, SSL Full). 기존 레코드(apex·www·blog·research)는 전부 DNS only로 옮겼다. 프록시를 켜면 Vercel·GitHub Pages 인증서 발급이 깨진다. 개발 문서 사이트는 GitHub Pages의 별도 서브도메인으로 확정 — 홈서버가 꺼져도 문서 사이트는 보이게 하려는 분리다
  • 백엔드 — cloudflared 터널 remakeday로 api.remakeday.com → 127.0.0.1:8500. Swagger 경로(/docs·/redoc·/openapi.json)는 외부 404. 사용자 systemd 서비스로 등록해 재부팅 시 자동 기동. main.py CORS에 https://remakeday.com·https://www.remakeday.com 추가, backend/.env의 프론트 주소와 구글 로그인 콜백을 프로덕션 값으로 교체. Google Console에 프로덕션 콜백 등록
  • 프론트 — Vercel 계정 beyondbob에 프로젝트 com-remakeday 신설(GitHub remakeday/com.remakeday, Root Directory frontend, NEXT_PUBLIC_API_BASE=https://api.remakeday.com). 기존 지킬용 Vercel 프로젝트에서 apex·www를 떼어 옮겼다. 대표 주소는 remakeday.com, www는 308로 apex 리다이렉트
  • 검증 — https://remakeday.com → /play 200, 빌드 청크에 https://api.remakeday.com만 포함(localhost 없음), api.remakeday.com/health 200(db ok), 프로덕션 오리진 CORS 프리플라이트 200, 구글 로그인 시작이 프로덕션 콜백으로 307. 사전 로컬 프로덕션 빌드 통과(라우트 7개)
  • 한계 — 첫 배포는 당시 GitHub main(09c3f23, 09-14) 기준이라 이후 작업이 빠진 상태였다. main에 푸시하면 Vercel이 자동 재배포한다. 실제 구글 계정 로그인 왕복은 사람 확인 필요. uvicorn은 아직 start_demo.sh의 nohup 기동이라 재부팅 시 수동 기동 필요

마무리 — 커밋 상태와 이월

  • 오늘 커밋 52건(c0231c7 14:50 ~ 06e0906 23:44), 그중 귀가 후 13건. main은 be42385(개발 로그인까지), feat/coherence-chain은 main보다 8커밋 앞선 상태로 미머지(6a02a13~06e0906, 평가 러너·어댑터). 미커밋은 테스터7 기록 폴더 하나 — 23:44 시점 기록. 이후 기록 커밋이 더해져 09-17 00:3x에 main으로 fast-forward 머지(아래 09-17 항목)
  • 이월(미완, 23:44 시점) — ①②④⑤는 자정 전후에 끝남(09-17 항목) · ① 오늘 Anthropic·Gemini 평가 결과를 model_evaluation.md 부록·metrics.yml에 정본으로 기록 ② Sonnet age7, gemma4 통일 D(셀프플레이 결과 확인)·E(Anthropic NPC age7 재측정) ③ Gemini 쿼터 리셋 후 80턴 전체 재실행 ④ feat/coherence-chain 머지 여부 결정 ⑤ 평가를 마치면 Anthropic 키 제거(운용 규칙) ⑥ F11 원숭이손 소원, 테스터7 F1·F2 ⑦ 배포 전 보안 점검 1건(M2, 09-17 수정 완료) ⑧ 09-15 이월분(Google Console redirect URI 등록, NPC 의미 품질 목표, 블라인드 평가·새 참가자 5회차 실플레이, 세 NPC 목소리) — 오늘 진행 여부는 확인하지 않았다

설계 결정 대기 6건 (오전 시점 기록 — 오후에 위와 같이 해소)

F2 첫 발화 동기 자백(채연 이송 공포 지식이 신뢰 조건 없이 프롬프트에 항상 실림), F7·F9 신의 질문 해금 단서 무맥락(리드 표 결정론 선택, 연결 문장 없음), F8 단서 기록 발견성과 단독 감각 단서, F10 관리자 역할(현재 hidden_truth를 아는 작중 통제자 ↔ 설계 의도는 NPC 지능 저하 방지 하네스), F11 원숭이손 부작용(고정 1종 예산 -1, 낮 화면에 드러나지 않음). 각 항목의 코드 근거와 제안 갈래는 기록 파일 B절.