CLAUDE.md 포팅 시대 문장·옛 이름·outbox 어휘·외부 언급 정리 (Fable 5.1 점검) - #63
Merged
Conversation
- 파싱 이관은 2026-07-08 에 끝났는데 "포팅 규율 (이관 기간 한정)" 절, "포팅 시 Kotlin 원본의 의도를 보존" 문장, "safeLogString 포팅본" 표기가 그대로 남아 있었다. 지금 코드는 포팅 대상이 아니라 이 repo 의 본체라 그 규율은 적용 대상이 없다 - 포팅 절에서 아직 살아 있는 규칙 하나(운영 상수는 @ConfigurationProperties 로 외부화)만 "설정값" 절로 남기고, 기본값 숫자는 코드가 정본이라 문서에 박지 않는다는 이 repo 의 SSOT 원칙에 맞춰 수치를 지웠다 - "TestConventionTest 는 3단계와 함께 이식한다"는 이미 support/TestConventionTest 가 존재해 사실이 아니었다. 현재 상태(./gradlew test 에 포함)로 고쳤다 - 옛 repo 이름 PIKI-Server 를 core 로 바꿨다 - 배경: Fable 5.1 하네스 점검. 모델은 문서를 그대로 따르므로 낡은 사실은 존재하지 않는 절차·이름으로 유도한다 Claude-Session: https://claude.ai/code/session_01Mg69sPkH9gHFqYZVSbf3ru
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Discord 스레드 연동용 메타데이터입니다. discord-pr-bot 워크플로가 자동 생성하며, 수정·삭제하면 PR 과 Discord 알림 연동이 끊깁니다. |
- 앞 커밋의 "설정값" 절은 이관 기간의 작업 지시("하드코딩 상수를 외부화")를 현행 규칙으로 승격시키면서, 그 작업 중에 뒤집힌 결론을 되살렸다. 수신 바이트·보존 문자·LLM 입력 상한은 튜닝 손잡이가 아니라 안전장치라 클래스 상수로 두기로 했고(FetchProperties Javadoc, PruningHtmlParser 주석: 설정이던 동안 아무도 지정하지 않아 키 이름만 드리프트할 자리가 생겼다), GeminiProperties 에는 LLM 입력 cap 필드가 없다
- 다음 세션이 그 줄을 읽고 MAX_FETCH_BYTES 를 FetchProperties 로 옮기면 코드가 명시적으로 거부한 변경을 규칙 준수라고 믿으며 하게 된다. 살아 있는 규칙(손잡이는 외부화)과 살아 있는 예외(안전 상한은 상수)를 함께 적었다
- 로깅의 URL 마스킹 줄은 "반드시" 를 뺀 자리에 이유(쿼리스트링에 토큰이 실릴 수 있다)를 넣어 강제성이 약해 보이지 않게 했다
- 발견 출처: 머지 전 reviewer 서브에이전트 전수검사
Claude-Session: https://claude.ai/code/session_01Mg69sPkH9gHFqYZVSbf3ru
- FetchProperties 에는 재시도 필드가 없다(userAgent·connectTimeout·readTimeout·connectionRequestTimeout·maxRedirects). "재시도" 를 "리다이렉트 횟수" 로 바꿨다 - 크기 상한을 상수로 되돌린 이력은 GeminiHtmlExtractor 에는 없고 HttpPageFetcher·PruningHtmlParser 의 상수 주석에만 있다. "각 상수의 Javadoc" 을 그 두 곳으로 좁혔다 Claude-Session: https://claude.ai/code/session_01Mg69sPkH9gHFqYZVSbf3ru
- docs/style-decisions.md 머리말이 "포팅 파리티 — CLAUDE.md 참조" 라고 적는데, 앞 커밋이 CLAUDE.md 에서 포팅 규율을 걷어내 참조가 끊겼다. 이 문서는 2026-07-20 시점의 결정 기록이라 본문은 그대로 두고, 머리말 한 곳만 "작성 당시엔 포팅 파리티 기간이기도 했다" 로 시점을 밝혔다 - 같은 문서의 22·41행(포팅 파리티 기간의 결정 기록)은 당시 결정의 기록이라 손대지 않았다 - 발견 출처: 머지 전 reviewer 서브에이전트 전수검사(범위 밖 발견 중 이 PR 이 만든 끊긴 참조만 반영) Claude-Session: https://claude.ai/code/session_01Mg69sPkH9gHFqYZVSbf3ru
- 옛 repo 이름 PIKI-Server 8곳(application.yml 6·test application.yml 1·GeminiProperties Javadoc 1)을 core 로, 텔레메트리 라벨 서술(application=PIKI)은 현행 piki-core 로 고쳤다. 전부 주석이라 동작 변화는 없다 - core 의 재시도·회수 원장은 outbox 가 아니라 item_snapshots 파싱 작업 큐다(core PR #844 로 표기 폐기). 이 repo 주석 6곳(application.yml·ImageStorage·ExtractionController·FallbackProductLinkExtractor·GeminiProperties·PageFetchException)과 CLAUDE.md 가 아직 outbox 라고 불러 신구 어휘가 섞여 있었다. 테스트 쪽은 이미 "파싱 작업 큐" 라 그쪽에 맞췄다 - Javadoc 문법 게이트(./gradlew javadoc error 0)는 verifier 서브에이전트가 확인했다 Claude-Session: https://claude.ai/code/session_01Mg69sPkH9gHFqYZVSbf3ru
- docs/style-decisions.md 가 특정 외부 팀의 저장소를 이름·링크·비교 기준으로 9곳에서 언급하고 있었다. 결정(채택·기각·보류)과 근거는 이 repo 의 것이라 그대로 두고, 제목·참고 기준 줄·표 머리·근거 문장에서 외부 이름만 걷어냈다 - "검토한 관례" 로 일반화했으므로 문서의 결정 목록은 출처 없이도 읽힌다 Claude-Session: https://claude.ai/code/session_01Mg69sPkH9gHFqYZVSbf3ru
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
핵심 (이 절만 읽어도 된다)
## 설정값절 세 줄. 운영 튜닝 손잡이(UA·타임아웃·리다이렉트 횟수)는@ConfigurationProperties로 외부화, 크기 안전 상한은 클래스 상수, 기본값 숫자는 문서에 적지 않음. 코드가 이미 그렇게 돼 있고 상수 주석이 이유를 남기고 있어 그대로 규칙으로 올렸다.safeLogString실재, Gemini 클라이언트 현행). 첫 초안의 오류(크기 상한까지 설정으로 옮기라고 읽힘)를 리뷰가 잡아 코드 설계대로 고쳤다. 주석 변경 뒤 Javadoc 게이트(./gradlew javadocerror 0)는 verifier 서브에이전트가 실행해 확인했다. 옛 이름·폐기 어휘·외부 언급은 repo 전수 grep 으로 0건 확인. CI 통과.Situation
Task
Action
safeLogString포팅본"safeLogString". "반드시" 를 뺀 자리에 이유(쿼리스트링에 토큰이 실릴 수 있다)를 넣었다support/TestConventionTest가./gradlew test에 포함된다"@ConfigurationProperties로 외부화한다. 크기 안전 상한(수신 바이트·보존 문자·LLM 입력)은 손잡이가 아니라 안전장치라 클래스 상수로 둔다. 기본값 숫자는 코드가 정본이라 문서에 적지 않는다.FetchPropertiesJavadoc 과PruningHtmlParser주석이 "설정이던 동안 아무도 지정하지 않아 키 이름만 드리프트할 자리가 생겼다" 며 상수로 되돌린 이력을 남기고 있고,GeminiProperties에는 LLM 입력 cap 필드가 없다. 문서를 코드 설계대로 고쳤다.application.yml(main 6·test 1)과GeminiPropertiesJavadoc 의 PIKI-Server 를 core 로, 텔레메트리 라벨 서술application=PIKI를 현행piki-core로 바꿨다.ImageStorage·ExtractionController·FallbackProductLinkExtractor·GeminiProperties·PageFetchException·application.yml의 outbox 를 "파싱 작업 큐" 로 바꿨다. 전부 주석이라 동작 변화는 없다.Result
HeadlessExtractionProperties의 "구 PIKI-HeadlessBrowser" 는 제외).safeLogString실재, Gemini 코드 현행. Javadoc 게이트 통과.연관 이슈