<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>홍성주의 개발 노트</title><description>백엔드, 데이터, AI 시스템을 만들며 겪은 문제와 선택의 이유를 기록하는 개발자 홍성주의 기술 블로그입니다.</description><link>https://seongju.vercel.app/</link><item><title>CI는 성공했는데 ARM64 k3s가 이전 이미지를 실행한 이유</title><link>https://seongju.vercel.app/writing/arm64-gitops-image-drift/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/arm64-gitops-image-drift/</guid><description>AMD64 전용 OCI manifest를 시작점으로 build, registry, Git write-back, reconciliation, runtime을 각각 검증하게 된 배포 기록입니다.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>8초짜리 승인 요청을 비동기 intent로 바꾼 이유</title><link>https://seongju.vercel.app/writing/async-confirm-action-boundary/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/async-confirm-action-boundary/</guid><description>MCP confirm이 Tomcat 요청 스레드를 붙잡던 구조를 접수·상태 조회로 분리하고, 서로 다른 승인 action이 지워지던 범위 오류까지 함께 고친 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>단일 노드 운영 cluster를 건드리지 않고 Cilium FQDN egress를 검증한 방법</title><link>https://seongju.vercel.app/writing/cilium-fqdn-egress-lab/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/cilium-fqdn-egress-lab/</guid><description>폐기 가능한 kind lab에서 Pod identity별 toFQDNs와 Hubble drop을 증명하고, production CNI 교체는 명시적으로 보류한 보안 실험입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>CloudFront가 앞에 있어도 public ALB를 닫아야 했던 이유</title><link>https://seongju.vercel.app/writing/cloudfront-alb-origin-lockdown/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/cloudfront-alb-origin-lockdown/</guid><description>BFF를 먼저 HTTPS entry로 전환한 뒤 AWS 관리형 origin-facing prefix list로 ALB 직접 HTTP 우회 경로를 무중단 차단한 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>환불 규정은 LLM이 읽고 금액은 코드가 계산하게 한 이유</title><link>https://seongju.vercel.app/writing/deterministic-refund-calculator/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/deterministic-refund-calculator/</guid><description>자연어 취소 규정을 근거 구간으로 구조화하되 적용 구간·수수료·환불액은 결정론 엔진이 계산하고 애매하면 중단한 설계입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>공시 브리핑에서 숫자 하나도 추측하지 않게 만든 검증기</title><link>https://seongju.vercel.app/writing/disclosure-number-guardrail/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/disclosure-number-guardrail/</guid><description>유상증자·전환사채 공시를 쉽게 설명하되 모든 숫자를 원문과 exact match하고 투자 판단 표현은 차단한 fail-closed AI 설계입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>동일 좌석 100건을 외부 쓰기 1건으로 줄인 예약 큐</title><link>https://seongju.vercel.app/writing/durable-reservation-intent-queue/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/durable-reservation-intent-queue/</guid><description>비멱등 학교 시스템 쓰기를 Postgres intent, 짧은 claim lease, outbox와 좌석 단위 조정으로 보호한 동시성 설계입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>실패한 ECS 배포가 5시간 뒤까지 다음 배포를 막은 이유</title><link>https://seongju.vercel.app/writing/ecs-deployment-circuit-breaker/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/ecs-deployment-circuit-breaker/</guid><description>shell pipeline의 가려진 exit code, ECS launch backoff, 너무 짧은 health grace를 분리해 자동 rollback을 신뢰할 수 있게 만든 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>상담 로그 35건을 자동 게시하지 않고 FAQ 6개로 줄인 방법</title><link>https://seongju.vercel.app/writing/evidence-grounded-faq-pipeline/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/evidence-grounded-faq-pipeline/</guid><description>PII 마스킹과 근거 검증은 결정론 코드에 두고 LLM은 보수적인 의미 병합과 초안에만 사용한 FAQ 지식베이스 pipeline입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>X-Forwarded-For의 첫 IP를 믿자 rate limit이 무력화됐다</title><link>https://seongju.vercel.app/writing/forwarded-ip-trust-boundary/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/forwarded-ip-trust-boundary/</guid><description>ALB·BFF를 지나는 client IP 신뢰 경계를 재설계하고, 공격자가 만든 key로 rate limiter map이 무한히 커지던 문제까지 막은 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>5만 건 공간 데이터 적재를 재실행 가능하게 만든 경계</title><link>https://seongju.vercel.app/writing/geocoding-contract-and-idempotency/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/geocoding-contract-and-idempotency/</guid><description>좌표가 없는 공공 CSV를 geocoding해 PostGIS에 적재하면서 자연키, 증분 저장, API 계약 테스트로 운영 재실행을 안전하게 만든 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>기술 블로그를 정적 페이지와 Git 기반 관리자로 나눈 이유</title><link>https://seongju.vercel.app/writing/git-backed-blog-architecture/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/git-backed-blog-architecture/</guid><description>읽는 화면은 정적으로 유지하면서 글·카테고리·초안을 브라우저에서 관리하도록 Astro와 Keystatic의 책임을 나눈 기록입니다.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>작업 로그는 GitHub에, 해설은 블로그에 남기는 이유</title><link>https://seongju.vercel.app/writing/github-worklog-and-blog/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/github-worklog-and-blog/</guid><description>프로젝트의 모든 변경을 블로그에 복사하지 않고 Issues·작업 로그·ADR·트러블슈팅과 기술 글을 역할에 맞게 연결하는 기록 구조입니다.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>새 readiness probe와 옛 이미지가 만난 GitOps 교착</title><link>https://seongju.vercel.app/writing/gitops-stale-image-readiness/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/gitops-stale-image-readiness/</guid><description>GitHub repository redirect는 동작했지만 GHCR owner는 바뀌지 않아, 새 /ready probe와 옛 image의 404가 replacement Pod를 NotReady로 만들고 rollout을 정체시킨 Argo CD 배포 장애입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>모든 Pod가 받아야 하는 SSE 이벤트를 Kafka consumer group으로 설계하기</title><link>https://seongju.vercel.app/writing/kafka-sse-broadcast-cutover/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/kafka-sse-broadcast-cutover/</guid><description>Redis·PostgreSQL 기반 전달에서 Kafka KRaft로 전환하며 broadcast semantics, bean cutover 장애와 broker 중단 복구까지 검증한 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>승인 카드는 떴는데 예약은 실행되지 않은 이유</title><link>https://seongju.vercel.app/writing/langgraph-hitl-resume-boundary/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/langgraph-hitl-resume-boundary/</guid><description>MCP content block, LangGraph checkpoint fork와 stale action을 차례로 분리해 승인 이후까지 검증 가능한 HITL 상태머신으로 만든 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>LangGraph SSE에서 node 이름 대신 runnable tag를 신뢰한 이유</title><link>https://seongju.vercel.app/writing/langgraph-stream-routing-boundary/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/langgraph-stream-routing-boundary/</guid><description>mock과 달랐던 실제 event metadata, tool 전 narration 누출과 과거 턴 라우팅 오염을 streaming·message 경계에서 해결한 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>AI 학습 게임에서 LLM에게 게임 진행을 맡기지 않은 이유</title><link>https://seongju.vercel.app/writing/llm-grader-deterministic-engine/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/llm-grader-deterministic-engine/</guid><description>자유서술 답변의 네 단계 판정만 LLM에 맡기고 정답, 호감도, 재시도와 엔딩은 결정론 엔진이 소유하게 만든 자료구조 학습 게임입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>LLM이 다운로드 URL을 다시 말하게 하지 않은 이유</title><link>https://seongju.vercel.app/writing/lms-capability-link-terminal/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/lms-capability-link-terminal/</guid><description>LMS ZIP capability link가 최종 응답 전에 사라진 장애를 결정적 terminal formatter, URL allowlist와 안전한 anchor로 해결한 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>PDF 70개를 살리기 위해 전체 성공과 실패의 경계를 다시 그린 방법</title><link>https://seongju.vercel.app/writing/lms-partial-export-failure-boundary/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/lms-partial-export-failure-boundary/</guid><description>일반 첨부 4개의 실패가 정상 PDF 70개까지 폐기하던 LMS 내보내기에서 URL 신뢰 경계와 부분 성공 정책을 함께 설계한 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>공간 검색 p95 2.68초에서 인덱스 대신 CPU를 늘린 근거</title><link>https://seongju.vercel.app/writing/load-test-cpu-not-index/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/load-test-cpu-not-index/</guid><description>작은 production read-only 부하와 EXPLAIN을 분리해 공간 query의 CPU 병목과 별도 사용자 조회의 index 누락만 정확히 고친 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>대시보드는 정상인데 알림과 trace가 비어 있던 이유</title><link>https://seongju.vercel.app/writing/observability-label-and-autoconfig/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/observability-label-and-autoconfig/</guid><description>Prometheus label 계약과 Spring Boot tracing autoconfiguration을 live data에서 역으로 검증해 관측성의 조용한 실패를 고친 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>순차 자동채점기를 5.73초 병렬 pipeline으로 바꾼 과정</title><link>https://seongju.vercel.app/writing/posix-parallel-grader-pipeline/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/posix-parallel-grader-pipeline/</guid><description>학생별 pthread, fork/exec 전처리 overlap, 정답 cache와 buffered I/O를 결합하되 timeout과 결과 순서를 보존한 시스템 프로그래밍 과제 회고입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>PostGIS 공간 검색에서 만료 조건이 인덱스를 무력화할 때</title><link>https://seongju.vercel.app/writing/postgis-expiry-index/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/postgis-expiry-index/</guid><description>30만 합성 장소와 21만 제보의 실행계획을 비교해, 공간 GiST가 아니라 만료 제보 집계가 병목임을 좁힌 과정입니다.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>좌표는 geometry로 저장하고 미터 검색은 geography로 계산한 이유</title><link>https://seongju.vercel.app/writing/postgis-geometry-geography-index/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/postgis-geometry-geography-index/</guid><description>Hibernate·bounds 검색 호환성과 정확한 반경·kNN을 함께 얻기 위해 동일 표현식의 GiST 함수 인덱스를 설계한 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Redis 없이 3개 인스턴스에 실시간 급증을 전달한 방법</title><link>https://seongju.vercel.app/writing/postgres-notify-sse-surge/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/postgres-notify-sse-surge/</guid><description>PostgreSQL NOTIFY는 무효화 신호로만 쓰고 DB 재조회와 SSE snapshot 복구를 결합해 작은 ECS 서비스의 멀티 인스턴스 실시간 경계를 설계했습니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>3/3 연결인데 개인 도구가 열리지 않은 이유</title><link>https://seongju.vercel.app/writing/provider-grant-transaction-boundary/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/provider-grant-transaction-boundary/</guid><description>웹 로그인, provider credential, MCP session grant를 분리하고 실제 복사 성공만 연결 상태로 인정한 3서비스 인증 장애 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>429를 해결하자 비로소 보인 성공 경로의 버그</title><link>https://seongju.vercel.app/writing/rag-tpm-success-path/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/rag-tpm-success-path/</guid><description>RAG 임베딩 실패를 RPM이 아닌 TPM 문제로 좁히고, rate limit 뒤에 숨어 있던 Jackson 응답 계약까지 고친 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>API 한 번이 upstream 여섯 번이면 rate limit의 단위는 무엇이어야 하나</title><link>https://seongju.vercel.app/writing/rate-limit-fanout-unit/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/rate-limit-fanout-unit/</guid><description>정상 좌석 탐색도 429로 막던 제한을 논리 요청이 아닌 실제 upstream fan-out과 사용자 공정성 기준으로 다시 설계한 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>암호화하지 않은 RDS를 데이터 보존하며 교체한 절차</title><link>https://seongju.vercel.app/writing/rds-encrypted-snapshot-restore/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/rds-encrypted-snapshot-restore/</guid><description>in-place 변경이 불가능한 RDS storage encryption을 snapshot 복사·복원과 Terraform state 검증으로 수행하고 약 15분의 downtime을 검증한 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>JNA와 ZIP 임시 파일이 있는 JVM을 read-only root filesystem으로 운영하기</title><link>https://seongju.vercel.app/writing/readonly-rootfs-jna-scratch/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/readonly-rootfs-jna-scratch/</guid><description>쓰기 경로를 증거로 분류해 /tmp와 export PVC만 남기고, native library를 사용하는 Spring Pod의 이미지 루트를 읽기 전용으로 만든 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>렉서부터 AST 평가까지 만든 미니 언어, 그리고 코드 감사에서 찾은 문법 계약</title><link>https://seongju.vercel.app/writing/recursive-descent-tree-walk-interpreter/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/recursive-descent-tree-walk-interpreter/</guid><description>Python·C++ 재귀하향 인터프리터의 tokenizer·symbol table·tree-walk 구조를 설명하고, README와 실제 연산 의미의 불일치도 함께 검증한 학습 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>32비트 문자열에서 RISC-V fetch-decode-execute까지 구현하기</title><link>https://seongju.vercel.app/writing/riscv-two-pass-simulator/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/riscv-two-pass-simulator/</guid><description>R·I·S·B type bit field, sign extension과 두 번의 scan으로 branch label을 만든 뒤 제한된 가상 CPU에서 실행한 컴퓨터 구조 과제 회고입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>월 1회 수집에 분산락 서비스를 만들지 않은 이유</title><link>https://seongju.vercel.app/writing/scheduled-ingest-advisory-lock/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/scheduled-ingest-advisory-lock/</guid><description>EventBridge Scheduler Universal Target으로 ECS task를 실행하고, 같은 physical connection의 PostgreSQL advisory lock으로 수동·자동 수집을 직렬화한 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>좌표 클릭을 검증 가능한 상태 전이로 바꾼 이유</title><link>https://seongju.vercel.app/writing/semantic-kiosk-automation/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/semantic-kiosk-automation/</guid><description>소스 없는 Windows 키오스크를 UIA→OCR→승인 좌표 순으로 관찰하고, postcondition과 결제 경계로 물리 UI 자동화의 불확실성을 다룬 설계입니다.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>브라우저에서 MCP 도구까지, 세 서비스의 신원 경계를 맞춘 과정</title><link>https://seongju.vercel.app/writing/server-verified-principal-boundary/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/server-verified-principal-boundary/</guid><description>클라이언트가 주장한 principal을 버리고 서버 검증 subject와 명시 MCP 세션을 분리해 인증된 principal 소유 thread의 IDOR과 조용한 권한 강등을 막은 설계입니다.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>테스트는 통과했는데 운영에서만 Bearer 요청이 401이 된 이유</title><link>https://seongju.vercel.app/writing/spring-security-filter-chain-scope/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/spring-security-filter-chain-scope/</guid><description>Auth0용 Spring Security filter chain이 모든 경로를 선점해 다른 JWT를 거부한 운영 장애를 matcher 범위와 production-like 테스트로 해결한 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Linux가 숨긴 SQLite connection 누수를 Windows CI가 찾았다</title><link>https://seongju.vercel.app/writing/sqlite-context-manager-windows-lock/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/sqlite-context-manager-windows-lock/</guid><description>Python with sqlite3.Connection이 연결을 닫지 않아 WinError 32가 난 문제를 lifecycle·UTF-8·Path 의미 단위로 고친 이식성 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Set-Cookie 파싱 장애를 일회용 SSO code exchange로 없앤 과정</title><link>https://seongju.vercel.app/writing/sso-one-time-code-exchange/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/sso-one-time-code-exchange/</guid><description>다중 Set-Cookie와 프록시 경계에서 깨진 로그인 전달을 256-bit 일회용 코드, Redis 원자 소비와 same-origin 교환으로 재설계한 기록입니다.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>복제된 점수 규칙과 Stable Roommates를 계약 테스트로 지킨 방법</title><link>https://seongju.vercel.app/writing/stable-roommates-contract-testing/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/stable-roommates-contract-testing/</guid><description>FE·BE가 병렬 개발한 생활 습관 점수를 같은 fixture로 묶고, 매칭 알고리즘은 작은 brute-force oracle과 비교한 팀 프로젝트 검증 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>GitOps가 Synced인데 StatefulSet은 왜 옛 설정으로 남았나</title><link>https://seongju.vercel.app/writing/statefulset-nonready-rollout/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/statefulset-nonready-rollout/</guid><description>실패하는 probe와 OOM 설정을 Git에서 고친 뒤에도 non-Ready Pod가 교체되지 않은 Kafka·Tempo 운영 장애 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>생존 점수를 SQL과 Java 두 층으로 나눈 이유</title><link>https://seongju.vercel.app/writing/survival-score-sql-policy-boundary/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/survival-score-sql-policy-boundary/</guid><description>PostGIS 집계는 사실을 만들고 순수 함수는 정책을 적용하도록 분리해, 누락 데이터와 가중치 변경을 설명 가능한 점수로 만든 설계입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Testcontainers가 살아 있는데 Spring 테스트가 죽은 이유</title><link>https://seongju.vercel.app/writing/testcontainers-context-cache-lifecycle/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/testcontainers-context-cache-lifecycle/</guid><description>클래스 수명 container와 재사용되는 Spring context의 수명 불일치를 해결하고, 예약 worker가 fixture를 훔치던 두 번째 CI flake까지 제거한 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Production Ready인데 본진 주소가 이전 버전을 보여준 이유</title><link>https://seongju.vercel.app/writing/vercel-manual-alias-release/</link><guid isPermaLink="true">https://seongju.vercel.app/writing/vercel-manual-alias-release/</guid><description>Git과 Vercel 배포는 성공했지만 수동 .vercel.app alias가 과거 deployment에 고정돼 있던 문제를 진단하고 rollback 가능한 승격 절차로 바꾼 기록입니다.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item></channel></rss>