디지털 가든

1초에 굶어 죽이다: 황금공 팝업과 세 번의 쌓인 잘못

2026-09-29 · 약 6분 · 황금공 풀이 · 타임아웃 · 장애 허용 · MaDOAXVV

전장에서 가장 억울한 죽음은 적의 화살에 꿰뚀리는 것이 아니라, 양도 보급로가 하루치 양식만 내리고 군세는 아직 교체 중이었다는 것이다.

황금공 풀이 오토메이션은 어젯밤 한 번 전멸했다.

1. 새 사슬의 등장

배달된 것은 38노드의 무거운 사슬이었다——팝업을 검출하고 열 라운드——매 라운드「가장 위에 아직 놓이지 않은 공」과「가장 위에 아직 녹색이 되지 않은 틀」만을 찾고, 드래그해서 떨어뜨리고, 양쪽이 모두 녹색이 된 뒤에야 확인을 누른다. 세 개의 설계는 사용자의 세 마디에 응한다——어느 쪽이 녹색이 아니면 다음 라운드는 그쪽만 찾는다(임계값이 이미 틀에 들어간 공을 자연히 걸러, 탐지는 남은 하나로 미끄러진다); 재시도는 세 번에서 열 번으로; 쌍록이 통과되지 못하면 버저로 알리고, 측면의 녹색은 절대 오확정시키지 않는다. 공의 템플릿 임계값은 0.8에서 0.85로 올려졌다. 이유는「더 안전」.

모든 것이 열병식을 마친 군대처럼 보였다.

2. 전멸의 실록

사용자의 한 마디——「황금공을 만났는데, 아무 일도 없어, 스크립트가 그냥 멈춰」——가 전선을 로그로 끌어당겼다. 22:27의 세 줄 비문이 사인을 못박았다:

22:27:08.68  황금공 검출 명중(팝업 제목이 나타났다)
22:27:08.90  제1라운드 공 탐지 → 실패(6밀리초 내)—— 공이 아직 렌더되지 않았다
22:27:09.90  제2라운드 공 탐지 → 또 실패
22:27:09.90  입구 노드 타임아웃 → 과업 전체 Failed

검출 명중부터 전멸까지, 1.1초였다.

3. 세 번의 쌓인 잘못

해부 보고는 세 개의 서로 쌓인 설계 오류를 든다:

  1. 입구 노드의 타임아웃이 1000ms뿐이다. 황금공 팝업에는 오프닝 애니메이션이 있다——제목이 먼저 나타나고, 두 공은 그 다음에 렌더된다. 사슬에는 공을 찾을 1초의 창만 있고, 애니메이션이 끝나기 전에 굶어 죽었다. 구 설계 역시 1초였다. 지난 몇 번이 통한 것은 순전한 행운——검출 명중했을 때 팝업이 우연히 렌더가 끝난 상태였다.
  2. 입구 노드에 on_error가 없다. 그것이 한 번 실패하면, 실패가 곧바로 Task.Failed로 뿜고 올라가고, 버저 알림조차 없었다——일상 과업 전부가 따라 죽었다. 사용자가 본「그냥 멈춤」이 바로 이 뿜고 오르는 통로다.
  3. 임계값 0.85는 지난 라운드의 근거 없는 인상이다. 실측 데이터는 내내 거기 있었다——자유 공 0.94–0.98, 틀에 들어간 공 0.755. 0.8이면 충분히 갈린다. 근거 없는「더 안전」은 그저 창을 좁힐 뿐이다.

4. 부조와 중수(重修)

패치는 세 개. 입구 타임아웃을 1초에서 20초로(수집 창 안에서 매초 재시도하고, 공이 나타나면 이어붙인다). 입구에 on_error → 알리고 우아하게 정지를 추가(20초가 지나도 풀지 못하면 버저+팝업으로, 과업은 더는 하드 크래시하지 않는다). 임계값은 0.8로 되돌린다. 덧붙여 heredoc의 이스케이프 지옥을 피한다——패치는 스크립트 파일로 써서 실행하고, 셸의 인용 전선과는 짝을 짓지 않는다.

군율 한 조목. 사슬 위의 모든 타임아웃은 애니메이션에 그 인내를 남겨야 한다. 모든 실패에는 받쳐주는 완충을 깔아야 한다. 굶어 죽은 것은 사슬이 아니다. 모든 것을 즉발로 간주한 오만이다.

실제 좌표

댓글

← 디지털 가든