런마다 다른 크리덴셜을 긴 수명 프로세스의 **설정 층**으로 주입하면, 그 층은 런보다 **거친 키**(디렉터리·프로젝트·워크스페이스)로 캐시돼서 **처음 본 토큰을 계속 쓴다** — 그런데 기능은 캐시로 멀쩡히 돌아가므로 표면에서는 절대 안 보인다. 유일한 센서는 **받는 쪽**이다: 토큰을 바꾼 뒤 서버에 요청이 **새로 오는가**를 봐라. 트리거 - per-run 토큰을 설정 파일/설정 API 로 주입, 긴 수명 데몬(serve·LSP·language…
테스트가 아닌 검사 — 부재 가드 · 완료 감지기 · 문서 전체를 훑는 단언 — 은 RED 를 먼저 보는 습관이 없어서, **구조상 한쪽 판정만 낼 수 있는 채로** 배포된다. 초록이면 "결함 없음"이 아니라 "빨개질 수 없음"이고, 타임아웃이면 "전파 안 됨"이 아니라 "성공을 감지할 수 없음"이다. 검사마다 **반대 판정을 한 번 강제로 보라.** 트리거 - `until`/폴링 대기 루프, 삭제 PR 의 부재 가드, dict/응답을 문자열로 합쳐 매칭하는…
측정해서 기각한 접근은 문서에 **평결**로 남는다("못 한다") — 그런데 실제로 유통기한이 있는 건 평결이 아니라 **그때의 조건**이다. 조건이 바뀌면 평결은 조용히 거짓이 되고, 아무도 다시 재지 않는다. 기각을 적을 땐 *무엇이 달라지면 이게 뒤집히는가*를 같이 적고, 선행조건이 닫히면 **기각된 레버부터 다시 재라.** 트리거 - 인수인계/이슈에 "측정 끝, 못 한다"가 적혀 있을 때, 차단 조건이 방금 해소됐을 때, 트랙 우선순위를 정할 때,…
공유 함수에 테스트를 붙이면 그 함수의 *계산*은 지켜지지만, 그걸 **부르는 쪽의 배선**은 무방비로 남는다. 인자를 틀리게 넘기거나 아예 안 넘겨도 스위트가 전부 초록이다. 감지기는 초록/빨강이 아니라 **호출 지점에서 전선을 끊었을 때도 빨개지는가**다. 호출자가 N 개면 테스트도 N 개 — 한쪽에 붙인 가드는 다른 쪽에 대해 아무 말도 안 한다. 트리거 - 공유 함수에 새 파라미터/콜백 추가, 두 곳 이상에서 같은 메커니즘을 배선, "계산은…
SQLite-only unit tests cannot catch PostgreSQL-only migration bugs. Add a fresh-PG smoke test that runs `alembic upgrade head` against an empty container so DROP DEFAULT, enum DDL listener collisions, and dependent-object errors fail at PR time instead of on…
재시도·재전달·재개 메커니즘을 설계할 때 첫 질문은 "언제 다시 보낼까"가 아니라 **"그때 입력을 아직 누가 들고 있나"**다. 요청의 일부는 *일부러* 저장되지 않는다 — 시크릿·수명이 짧은 토큰·요청 스코프 자격. 그걸 안 세고 백그라운드 스위퍼를 고르면, 설계가 조용히 "안 저장하기로 한 것을 저장하라"를 요구하게 되고 신뢰성 수정이 보안 회귀로 결제된다. 트리거 - 재전달/재시도/재개/리플레이 설계, "스위퍼가 훑어서 다시 보낸다",…
격리 플래그는 목표가 아니라 **메커니즘 하나**를 끈다 — `--setting-sources ""` 는 설정 파일을 끄지만 cwd 로 키잉된 auto-memory 는 못 끈다. 그래서 "호스트로부터 격리됨" 주석은 절반만 참인 채로 몇 달을 산다. 검증은 플래그를 세는 게 아니라 **보면 안 되는 것을 그대로 인용해 보라고 시키는 것**이다. 트리거 - 서브프로세스/샌드박스/에이전트 격리 주장, "--no-X 를 줬으니 안 들어온다", 벤더 CLI 를…
태스크마다 만들던 임시 디렉터리를 "아무도 안 쓰니까" 하나로 합치면, **그 경로로 키잉된 남의 상태**가 전부 하나로 합쳐진다 — 우연히 있던 격리가 사라지는데 런타임 동작 변화는 0으로 보인다. "안 쓰인다"를 내 코드에서만 grep 했기 때문이다. 트리거 - per-task/per-run 디렉터리 제거, "고정 cwd 하나로", 임시 디렉터리 정리 PR, 벤더 CLI/툴을 subprocess 로 띄우는 코드, 멀티테넌트 워커, "이 디렉터리는 아무도…