기록이 지식이 되는 층위.
오늘의 배움을 TIL로 남기고, 다시 꺼내 쓸 만한 것은 Knowledge로 다듬습니다. 기록이 쌓일수록 생각이 선명해지는 블로그입니다.
하루의 기록이 그대로 흩어지지 않도록, 세 단계 파이프라인으로 다듬습니다. 스크롤하면 각 단계가 차례로 밝아집니다.
요구사항에 없던 엣지케이스가 조용히 새는 문제를 실제 버그 4개로 진단하고, 경우의 수 나열을 기계에게 넘기고 AI는 빈칸 판정만 하게 만든 스킬 개편기를 초심자 눈높이로 정리한 글
AI가 만든 TypeScript를 수용할지 거절할지 매번 같은 기준으로 판정하기 위해, 타입이 소유하는 범위를 못 박고 사다리로 과설계를 탈락시키고 컴파일러 증거를 남기는 방법을 정리한 글
같은 요청에도 매번 다른 코드를 내놓는 AI를 테스트·린트·스크립트 같은 결정론적 장치 여러 겹으로 검수하고, 모듈화로 검수 단위를 잘게 쪼개는 워크플로우를 단계별로 풀어 쓴 글
컬럼 배열에서 정렬 키 union을 파생하고, 도메인마다 다른 행 타입을 합성 컴포넌트 조각들까지 전달하면서 배운 것 — 그리고 그 과정에서 계속 튀어나온 변성 이야기
코드 생성 도구에게 작업을 맡길 때 판정 기준을 문서로 먼저 못 박고, 코드·화면·리뷰 의견을 증거로 강등하며, 확신이 부족하면 멈추게 만드는 설계를 정리했다
분리된 확장 실행 공간에서 메시지 기반 RPC로 저장을 요청하고, 변경 신호와 쿼리 무효화로 다른 화면이 단일 원본을 다시 읽게 한 흐름을 정리했다
assertNever, satisfies Record, 패턴 매칭 라이브러리 세 계층 중 무엇을 언제 쓸지와, catch-all 기본 분기가 누락을 숨기는 이유
Record가 약속하는 totality, 검사하지 않는 type predicate, 실행 시점이 다른 wrapper의 ReturnType, sanitizer로 착각하는 excess property check처럼 구현이 지키지 않는 것을 타입이 약속하는 패턴들
파생 가능한 값은 저장하지 않고, 라이브러리가 이미 소유한 union은 복사하지 않고, 그래도 남는 client 상태만 union으로 만드는 순서와, 상태에 action을 넣으면 안 되는 이유
매일의 문제 해결이 그대로 축적된 기록.
재사용 가능한 개념으로 승격된 문서.
이번 달에도 기록은 계속 쌓이는 중.