refactor(S15P11A705-96): 공개 설정의 정본을 코드로 옮긴다 - #36
Merged
Conversation
설정값을 비밀/공개로 가르고, 공개 값은 코드가 정본이 되게 한다.
비밀 DATABASE_URL · GMS_API_KEY · INTERNAL_SHARED_SECRET
GMS_BASE_URL — 값은 비밀이 아니나 배포마다 달라 주입받는다
공개 PINLOG_EMBEDDING_* 넷 · JUDGE_MODEL · TOP_K · FLOOR · EXPIRY
공개 값 중 EMBEDDING 넷만 기본값이 없었다. 나머지는 이미 기본값을 갖고 있었으므로
새 규칙을 만든 것이 아니라 어긋나 있던 넷을 규칙에 맞춘 것이다.
값이 배포 설정에만 있으면 교체가 git 이력도 리뷰도 남기지 않는다. Profile 변경은
기존 임베딩을 전부 조회 대상에서 빼는 결정인데(05 §9.3) 콘솔 편집 한 번으로
가능했다. 값 자체는 공용 계약 05 §7.1 표에 공개돼 있어 숨겨진 적도 없다.
원 논거("배포 설정 누락이 조용한 Profile 불일치가 된다")는 주입이 필수라는 전제
위에 있다. 주입을 덮어쓰기로 낮추면 "누락"이라는 상태가 사라진다. 불일치 탐지는
기동 시 _profile_consistency 와 런타임 §3.1 이 그대로 맡는다.
봉인 대상도 7종에서 3종으로 줄인다 — 정본이 이미지에 있으면 주입할 것이 없다.
등록된 Actions Secret 은 지우지 않아도 되며 workflow 가 읽지 않을 뿐이다.
공용 계약 개정(docs#27, f7740b0)이 선행이다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…6-public-config-defaults # Conflicts: # docs/WORKLOG.md
P45 가 주장하는 것에 각각 근거를 붙인다. - 넷을 주입하지 않아도 뜬다 → 주입은 필수가 아니다 - 기본값끼리도 정합해야 한다 → 정본을 코드로 옮긴 이상 정합도 코드 책임이다. 정합 검사가 주입값에만 걸린다고 오해하면, 기본값이 어긋난 채 배포됐을 때 아무도 주입하지 않은 환경에서만 기동이 죽는 상황이 생긴다 - 덮어쓰기가 이긴다 → alias 를 유지한 이유 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
6 tasks
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.
요약
설정값을 비밀 / 공개로 가르고, 공개 값은 코드가 정본이 되게 합니다. 공용 계약 개정(docs#27,
f7740b0)이 선행이며 이미 머지됐습니다.공개 값 중 EMBEDDING 넷만 기본값이 없었습니다. 나머지는 이미 갖고 있었으므로, 새 규칙을 만든 것이 아니라 어긋나 있던 넷을 규칙에 맞춘 것입니다.
Jira
S15P11A705-96— [AI] dev 배포용 GMS·모델·bootstrap·관측 계약 확정왜
값이 배포 설정에만 있으면 교체가 git 이력도 리뷰도 남기지 않습니다. Profile 변경은 기존 임베딩을 전부 조회 대상에서 빼는 결정인데(
05 §9.3검색 필터의embedding_profile일치 조건), 그것이 콘솔 편집 한 번으로 가능했습니다. 값 자체는05 §7.1표에 이미 공개돼 있어 숨겨진 적도 없습니다.모델 교체 절차가 이렇게 바뀝니다.
변경 사항
app/core/config.pyalias유지 — 덮어쓰기 경로는 그대로.env.exampledocs/spec/model-profile.md§2.1.github/workflows/seal-ai-secrets.ymldocs/proposals/P45-…tests/test_unit.py설계 결정 — 기각한 대안
config/*.yaml계층 도입. 목적은 같게 달성하지만 설정 소스가 셋(yaml → env → Secret)이 되어, 장애를 볼 때마다 *"이 값이 어디서 왔나"*를 역추적해야 합니다.pydantic-settings를 이미 쓰므로 필드 기본값만으로 같은 이익이 나옵니다.원 규정 유지. *"기본값이 있으면 배포 설정 누락이 조용한 Profile 불일치가 된다"*가 원 논거인데, 그것은 주입이 필수라는 전제 위에 있습니다. 주입을 덮어쓰기로 낮추면 "누락"이라는 상태 자체가 없어집니다.
테스트 / 검증
test_public_settings_fall_back_to_code_defaults— 넷을 지우고도 기동test_code_defaults_satisfy_profile_consistency— 기본값끼리도 정합test_injection_overrides_code_defaults— 덮어쓰기 우선GMS_BASE_URLfail-fast 테스트 전부 유지리뷰 포인트
절차에 대해
처음에 하위 명세(
model-profile.md)만 고치고 공용 계약을 그대로 뒀습니다.CONTRIBUTING.md가 *"공용 계약과 충돌하면 소유 파트와 합의한 뒤 양쪽 문서를 갱신한다"*고 요구하는데, 하위만 고치면 두 문서가 어긋난 채 남습니다. 커밋 전에 발견해 되돌리고docs#27을 먼저 올렸습니다.미결 / 후속
05 §7.1이-135시점 결정으로 명시적으로 유예했습니다. 소비자가 없는 상태에서 정하면 붙일 때 뒤집힙니다🤖 Generated with Claude Code