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