수정 2026-08-04
v1.36.97
가장 많이 물리는 축을 가장 얕게 묻고 있었다 (P-0011)
측정부터 했다.
핵심 변경
**계약 · 실패·복구 · 관측 가능성** 3축을 각 12문항으로 신설(KO/EN 동수). 반례는 되도록 이 저장소에서 실제로 물린 사건으로 채웠다 — 상한을 UTF-16 코드 단위로 세어 한글 문서에서 512KB 주장이 실제 1,152KB 였던 일(계약: 단위를 안 적은 대가), 깊이 상한 너머를 원본 그대로 통과시켜 상한이 곧 우회 경로가 된 일(복구: 문제는 상한이 아니라 실패 방향), stderr 전문을 끝까지 읽고서야 "환경 탓"이 내 문법 오류였음을 안 일(관측: 첫 줄만 남기면 그 진단이 불가능하다).
**axes 8축 경량 점검** — 나머지 축은 한 축당 한 문항. 이미 깊은 렌즈가 있는 축(순서·동시성 → database, 신뢰·보안 → security, 인간 요소 → design/docs)은 중복 서술 대신 그 렌즈로 넘긴다(같은 내용을 두 곳에 적으면 한쪽이 반드시 낡는다).
**소환은 내용 기반** — 경로에 단서가 없는 파일도 켜진다. 신호는 낱말이 아니라 **"코드 모양으로 쓰였는가"** 다: 빈 catch · .catch(() => {}) · backoff:/maxRetries = 같은 대입·옵션 문맥 · new AbortController · SIGTERM 핸들러(복구), logger.error · catch **블록** 안의 console.error · traceId/x-request-id · metrics.inc( · @opentelemetry/(관측), 라우트 정의 · res.status(4xx) · zod/Joi 스키마 · @deprecated · protobuf IDL(계약).