기록을 많이 남겼는데 더 찾기 어려워졌다 — 파일을 옮기지 않고 Retrieval Layer를 만든 이유
History가 커지자 기록 부족보다 검색 비용이 문제가 됐다. 원문을 프로젝트별로 재배치하는 대신 provenance를 보존하고 catalog, query, purpose-specific projection을 위에 얹은 과정을 정리한다.
WRITING / SORUNE TECHNICAL JOURNAL
제품을 만들고, 오래된 시스템을 고치고, 직접 운영하면서 바뀐 생각과 근거를 남깁니다.
PhotoGram · PaaS / Server Ops / Security Guard · CharaWeave · AI-assisted engineering
LATEST
History가 커지자 기록 부족보다 검색 비용이 문제가 됐다. 원문을 프로젝트별로 재배치하는 대신 provenance를 보존하고 catalog, query, purpose-specific projection을 위에 얹은 과정을 정리한다.
PROJECT JOURNALS
기능 목록보다 실제 구현과 운영에서 생긴 결정의 흐름을 묶어 봅니다.
PRODUCT / MODERNIZATION
검색, Place, 미디어 처리, 인증과 제품 정책을 실제 서비스 경계로 다시 다듬는 과정.
LATESTUploader는 Creator가 아니다 — PhotoGram에서 C2PA와 저작권 주장을 분리한 이유
RUNTIME / OPERATIONS / SECURITY
홈 서버의 배포, 관측, runtime authority와 보안 집행 경계를 기계적으로 연결하는 과정.
LATESTPRIMARY가 바뀌어도 도메인은 바뀌면 안 된다 — 홈 PaaS에서 Control Plane과 Data Plane을 나눈 이유
SDK / RUNTIME
캐릭터의 의미 모델과 실행 환경을 분리하고 여러 host에서 같은 contract를 유지하는 실험.
LATEST캐릭터를 움직이는 것과 살아 있게 만드는 것은 다르다 — CharaWeave Character Core 설계
RECENT WRITING
발행 시각 순서. 글의 형식보다 어떤 문제에서 출발했는지를 우선합니다.
PaaS, PhotoGram, CharaWeave, Workspace Ops를 한꺼번에 아키텍처로 펼쳐보니 문제는 프로젝트 개수가 아니었다. 서로 다른 상태 모델과 authority를 머릿속에서 반복해 재구성하던 비용이 실제 병목이었다.
문제는 Python 자체가 아니었다. 작은 구현 편의가 현재 코드에 남고, 다음 AI가 그것을 정상 아키텍처로 해석하면서 Human이 승인하지 않은 선례가 누적되는 과정을 정리한다.
AI가 디자인을 구현하는 과정에서 visual detail보다 더 쉽게 사라지는 것은 global/local hierarchy, interaction identity, route semantics 같은 의미였다. 디자인 의도를 implementation contract로 보존하는 방법을 PhotoGram 사례로 정리한다.
빌드와 브라우저 테스트가 모두 통과한 UI가 실제로는 부자연스러웠다. 기술적 correctness와 perceptual coherence를 분리하고, AI의 첫 구현과 Human review 사이에 self-review를 넣게 된 과정을 정리한다.
실행 프롬프트와 handoff를 크게 줄인 뒤 실제 context 비용도 줄었는지 측정했다. 결과는 단순했다. 전송량을 줄이는 것과 모델이 다시 읽는 정보량을 줄이는 것은 다른 문제였다.
코드를 직접 쓰는 시간은 줄었는데 개발한다는 감각은 오히려 강해졌다. CharaWeave와 workspace-ops를 만들던 하루를 돌아보며 AI가 구현량을 맡은 뒤 내가 더 많이 하게 된 일을 정리했다.
Ghost는 훌륭한 CMS지만, 글의 원본과 발행 권한까지 CMS 하나에 묶을 필요는 없다. Git을 canonical source로 두고 Ghost는 Draft delivery surface로 사용한 publishing pipeline의 경계와 이유를 정리한다.
여러 AI를 하나의 최적 응답으로 수렴시키는 대신, 서로 다른 관점을 의도적으로 보존하고 충돌시킨 뒤 실제 실행 단계에서 강하게 통제하는 개발 방식을 정리한다.
CharaWeave에서 Runtime Foundation과 Character System을 분리한 이유를 정리한다. 움직임, 표현, 성격, 욕구, 기억을 하나의 상태 머신으로 섞지 않고 의미의 소유권을 나누는 설계 이야기다.
PhotoGram을 Java 17에서 Java 25로 옮기며 실제 워크로드를 비교했다. 여러 지표가 좋아졌지만 결론은 NO CLEAR DIFFERENCE였다. 측정값과 해석을 분리한 이유를 정리한다.
ABOUT THIS JOURNAL
제품을 만들고, 기존 시스템을 고치고, 직접 운영하면서 생긴 실패한 가정과 검증 근거를 기록합니다. 완성된 정답처럼 정리하기보다 당시 무엇을 알았고 무엇을 몰랐는지 구분해서 남깁니다.