이미 다 돼 있는 걸 다시 만들 뻔한 걸 막았습니다
"새로 만들기 전에, 진짜 빠진 한 조각만 찾았다"
개발 여정과 기록을 모아놓은 빌드 로그입니다.
"새로 만들기 전에, 진짜 빠진 한 조각만 찾았다"
"Node position만 바꿔도 CASCADE로 하위 데이터가 통째로 삭제됐다"
"메모리가 말하는 것과 실제 파일 상태는 다를 수 있다"
"supabase db push는 이미 기록된 버전을 재적용하지 않는다"
"진짜 문제는 유저 생성이지 픽스처 공유가 아니다"
"Parallel Gateway가 관여하는 Cycle은 정의상 종료조건이 있을 수 없다"
"판단하지 않는다는 게, 이 단계 설계의 핵심 의도였다"
"이상 징후가 보여도 감이 아니라 같은 검증 도구로 확인한다"
"막을 수 있는 걸 일부러 안 막았다는 걸 증명하는, 보통과는 반대 방향의 검증"
"문서화된 불변조건을 옮기는 것과 새 규칙을 발명하는 것은 다르다"
"Project는 삭제 금지, Process는 조건부 허용 — 그 구분을 RLS로 옮겼다"
"회귀라 부를 대상 자체가 존재하지 않았다"
"트리거는 코드 리뷰가 아니라 실제로 막아봐야 믿을 수 있다"
"테스트가 통과했다고 mock이 현실을 반영하는 건 아니다"
"unit test가 통과해도 눌러보기 전까진 모른다"
"문자열이 남아있다고 로직이 맞는다는 뜻은 아니다"
"삭제해도 되는가 전에, 이게 뭔지부터 알아야 한다"
"커밋됐다는 것과 원격에 반영됐다는 건 다른 사실이다"
"Sign-off는 코드가 아니라 기록이 완성되는 순간 끝난다"
"같은 명령도 실행 환경에 따라 다르게 동작한다"
"텍스트 파일이 텍스트가 아니게 된 사고의 증거는 한 줄이었다"
"테스트 통과 보고와 실제 DB 반영은 다른 이야기다"
"시나리오를 몰아넣으면 실패할 때 반드시 대가를 치른다"
"못 만든 이유와 고칠 지점을 코드·문서·테스트 3곳에 남긴다"
"RLS를 켜는 것과 Policy를 만드는 건 다르다"
"안전장치를 만들면 어딘가에 새로운 제약이 반드시 생긴다"
"테이블 필드는 완전하게, 책임 경계는 절대 섞지 않는다"
"지금 안 옮기면 파일 3개가 아니라 300개가 된다"
"AI가 만든 결과물을 검증 없이 받아들이지 않는다"는 원칙은, 코드뿐 아니라 결제 청구서에도 똑같이 적용된다.
"만들 수 있다는 것과 만들 가치가 있다는 건 다른 문제입니다. 이번엔 만들어놓은 기능이 실제로 쓸만한지, 제가 직접 써보면서 확인했습니다."