Files
document-haness/docs/TechLog/tech-log-studio/failure-drawn-as-absence/case/case-one-cell-failing-took-its-neighbour-down.md
T
DongHyeonkaandClaude Opus 5 f6c825e858 docs(TechLog): 글감 56개를 기록으로 쓴다
주제 13개 · Case 28 · Concept 5 · Reference 15 · Question 4 · Decision 4.
계약의 노드마다 종류가 요구하는 칸을 채우고, 본문이 있는 두 종류에는 SSOT 가 이미
그려 둔 도식 셋(value-boundaries · decision-path-404 · topic-variant-model)을
tech-log-studio/ 로 옮겨 붙였다. 새로 그린 그림은 없다.

검사 셋 전부 통과한다.
  check_body.mjs      56 편 중 본문이 있는 33 편 PASS
  check_prose.mjs     56 편 error 0
  check_evidence.mjs  --repo 포함 문제 없음
  verify-tech-log-tree.py  프로젝트 5 · error 0 · warn 0

인용한 코드블록은 전부 SSOT 에서 찾아 대조했다. check_evidence.mjs 가 본문의 각 줄과
source 앵커와 계약 제목을 다시 확인한다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 15:29:33 +09:00

3.6 KiB

kind, slug, title, topic, topicName, project, status, lastVerifiedOn, sourceRevision, source
kind slug title topic topicName project status lastVerifiedOn sourceRevision source
CASE one-cell-failing-took-its-neighbour-down 한 칸의 실패가 옆 칸을 끌고 내려갔다 failure-drawn-as-absence 실패를 없음으로 그린다 TechLog 게시 전 2026-09-04 tech-log@2026-09-02
final/document.md#§10.2

한 칸의 실패가 옆 칸을 끌고 내려갔다

편집기가 질문과 결정을 하나로 묶어 읽고 있었다. 결정만 터지는데 멀쩡히 오던 질문 목록까지 「불러오지 못했습니다」가 됐다. 더 미묘한 변종도 있었다 — 호출이 동기적으로 던지면 묶는 중에 터져 거절 처리를 지나지도 못한다.

관계

  • 화면은 못 읽은 것을 없다고 말하지 않는다 같은 편집기에서 나온 짝이 되는 규칙이다.
  • 「이 프로젝트에 열린 질문이 없습니다」 — 실제로는 넷이 있었다 같은 편집기의 다른 부류 실패다.
  • 홈의 비교 구역이 세 번 바뀌었다 같은 판단을 주제 탭에 적용한 기록이다.

문제

홈 편집기가 질문과 결정을 한 번에 읽는다. 결정 쪽만 실패해도 화면 전체가 「불러오지 못했습니다」가 됐다.

질문 목록은 정상적으로 오고 있었다.

결론

두 요청을 하나로 묶어 기다리면 한쪽의 실패가 전체를 실패로 만든다. 둘을 따로 읽도록 갈랐다.

더 미묘한 변종이 하나 더 있었다.

Promise.all([gateway.foo()]) 은 foo 가 거절하는 것만 잡는다. 호출이 동기적으로 던지면 배열을 만드는 중에 터져 rejection handler 를 지나지 못하고, 그러면 홈 focus 한 칸 때문에 대시보드 전체가 빈 화면이 된다.

같은 판단을 주제 탭에도 적용했다. 탭 하나를 못 받아도 탭 줄과 나머지는 그대로 남고, 못 받은 탭에는 못 받았다고 적는다.

검증 환경

tech-log-frontend : 6e784ed · fd73bc8 · 3bb724b 확인 방식 : 한쪽 연산만 실패시키고 나머지가 그려지는지 확인

재현 조건

  1. 편집기가 부르는 두 연산 중 하나만 실패시킨다
  2. 화면에서 나머지 하나가 그려지는지 본다
  3. 실패하는 쪽을 동기적으로 던지게 바꾸고 다시 본다

본문

묶어 읽으면 한쪽이 전체를 끌고 내려간다

편집기가 질문 목록과 결정 목록을 하나로 묶어 기다리고 있었다. 결정 쪽 연산에 컨트롤러가 없어 404 가 났고, 화면은 두 목록을 다 못 받은 것으로 그렸다.

질문 목록은 정상적으로 오고 있었다. 둘을 따로 읽도록 갈랐다.

동기적으로 던지면 거절 처리를 지나지 않는다

Promise.all([gateway.foo()]) 은 foo 가 거절하는 것만 잡는다. 호출이 동기적으로 던지면 배열을 만드는 중에 터져 rejection handler 를 지나지 못하고, 그러면 홈 focus 한 칸 때문에 대시보드 전체가 빈 화면이 된다.

거절과 던짐이 다른 경로를 탄다. 배열을 만드는 표현식 안에서 던지면 그 표현식이 완성되지 않으므로 거절 처리기가 붙을 대상이 없다.

탭에도 같은 판단을

탭 줄은 목록 하나로 그리고 상세는 고른 탭만 받는다. 상세 하나를 못 받아도 탭 줄과 나머지 탭은 그대로 그리고, 못 받은 탭에는 못 받았다고 적는다.

확인하지 못한 것

같은 모양으로 묶어 읽는 곳을 전수로 세지 않았다. 갈라 놓은 것은 홈 편집기와 주제 탭 둘이다.