"네트워크가 실패하면 상대 서버보다 내 발밑을 먼저 봐야 한다"
로그인, 로그아웃, 세션 관리, 보호 라우트가 아무것도 없는 상태에서 구현을 시작했습니다. Codex가 Supabase SSR 클라이언트, 로그인 화면, Server Action을 작성해 보고했고, 코드 검토 중 Next.js 16에서 middleware.ts가 proxy.ts로 이름이 바뀐다는 점을 뒤늦게 발견해 정정을 지시했습니다. UI 문구가 영어로 되어 있어 한국어로 바꾸도록 지시한 것도 이 단계였습니다.
문제는 그다음이었습니다. 코드는 완성됐는데 실제 로그인 시도마다 100% fetch failed로 실패했습니다. 계정 상태(이메일 인증 여부)부터 환경변수 값, 네트워크 프록시, 카페 와이파이까지 순서대로 배제해봤지만 계속 실패했습니다. 이 과정에서 ENV_DIAG, AUTH_DIAG, HEALTH_DIAG, URL_DIAG 같은 임시 진단 로그를 단계적으로 추가하면서, 값 자체는 노출하지 않는 선에서 원인을 좁혀나갔습니다.
결국 Windows 방화벽에서 Codex 샌드박스가 만든 차단 규칙(codex_sandbox_offline_block_*) 3개를 발견했습니다. 여기서 그치지 않고, 같은 코드를 샌드박스 안과 밖에서 각각 실행해 결과를 대조하는 재현 실험까지 직접 진행해 인과관계를 확정했습니다. Codex의 "성공했습니다"라는 보고를 그대로 믿지 않고 매 단계 실제 로그와 화면을 요구한 것이 이번 진단의 핵심이었습니다.
원인이 확정된 뒤에야 임시 진단 코드(_DIAG 문자열)가 전량 제거됐는지 확인하고 커밋(bd34b220)했습니다. 이후 별도 환경에서 로그인, 로그아웃, 접근 차단, 오류 메시지, 한국어 표시까지 스크린샷 2건으로 실증 확인했습니다. 이번 케이스로 확인한 건, 네트워크 요청이 실패했을 때 상대 서버를 먼저 의심하기보다 내 발밑(로컬 환경)부터 점검해야 한다는 점이었습니다.
"말로만 확인하지 않는다"는 원칙을 이 과정 전체에 반복 적용했습니다. Codex가 "성공했습니다"라고 보고해도 그대로 믿지 않고, 매 단계 실제 로그·화면·명령 출력을 요구했습니다. 원인이 명확해지기 전까지는 커밋을 계속 보류했는데, 이는 원인 불명 상태에서의 커밋이 나중에 더 큰 디버깅 비용으로 돌아온다고 판단했기 때문입니다. Next.js 16에서 middleware.ts가 proxy.ts로 이름이 바뀐다는 점을 처음에 놓쳐 잘못 지시한 것도 이번에 함께 정정했습니다.
관련 프로젝트
프로젝트 개요 비즈니스 프로세스 트랜스포메이션(BPR)을 지원하는 한국어 기반 웹 애플리케이션. 컨설팅 프로젝트의 AS-IS 프로세스 분석부터 TO-BE 설계, Blueprint 승인까지의 전체 워크플로우를 디지털화하는 플랫폼으로, EPIC 단위로 구조화된 백로그를 기반으로 개발 중. 역할 및 워크플로우 PM / Architect / Reviewer 역할 수행 Codex(구현 담당)에게 Task 단위 구현 프롬프트 설계 Codex 구현 결과를 git log, git grep, git status로 직접 검증 후 승인 승인 전에는 Codex가 commit하지 않는 엄격한 게이팅 프로세스 운영 한 번에 하나의 Backlog Task만 진행, Task 완료 전 다음 Task 착수 금지 기술적 의사결정 및 성과 워크스페이스/프로젝트 접근 권한을 DB 레벨(복합 FK, SECURITY DEFINER 트리거)과 애플리케이션 레벨(Server Action 권한 검증)의 이중 방어 구조로 설계 Hard Delete 미구현 원칙 하에 배열 필드 전체교체(replace)를 단일 트랜잭션 RPC로 처리하는 패턴 확립 및 재사용 AS-IS 프로세스 그래프의 순환 참조 탐지에 Tarjan SCC 알고리즘 적용, 차단 오류(Error)와 경고(Warning)를 분리한 이중 Validator 아키텍처 설계 도메인 규칙 위반을 커스텀 Postgres 에러 코드 체계(SIA0104)로 문서화하여 거버넌스 문서와 코드베이스 간 정합성 유지 AI 생성 데이터와 사람이 검증한 데이터를 구분하는 generatedbyai / verified 메타데이터 패턴을 여러 도메인 테이블에 일관되게 적용 진행 상태 ✅ EPIC-01 (인증 / 워크스페이스 / 프로젝트 접근) ✅ EPIC-02 (조직 / 산업 / 프로젝트) 🚧 EPIC-03 (AS-IS 프로세스 그래프) — 그래프 검증, Input/Output 스키마, Business Rule 스키마 구현 완료