fix: restore authoritative database connection setting
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 15s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 54s

This commit is contained in:
2026-07-12 12:22:17 +09:00
parent cc001fa263
commit 92efa934a2
5 changed files with 5 additions and 7 deletions
+2 -2
View File
@@ -2,9 +2,9 @@
## QuantEngine 운영 설정 권위
- `ConnectionStrings__DefaultConnection`은 운영 설정에서 관리한다.
- 저장소 코드, DbUp migration, CI artifact는 운영 계정 비밀번호를 생성하거나 덮어쓰지 않는다.
- 저장소 코드, DbUp migration, CI artifact는 운영 계정 비밀번호를 생성하거나 덮어쓰지 않는다. 단, 명시된 운영 설정 복원 작업은 예외로 한다.
- 배포/검증 하네스는 설정값을 읽기만 하며, 값 자체를 로그·증빙·커밋에 기록하지 않는다.
- 설정 변경은 애플리케이션 배포와 분리된 운영 설정 변경으로 취급한다.
- 설정 변경은 애플리케이션 배포와 분리된 운영 설정 변경으로 취급한다. 설정 복원 시에는 Git 이력의 마지막 권위값만 사용한다.
## 0. 최우선 원칙
- 이 파일은 운영 인덱스다. 상세 규칙은 `governance/rules/*.yaml``spec/*.yaml`를 우선한다.
+1 -1
View File
@@ -7,6 +7,6 @@ policy:
source: runtime_environment_or_external_settings
application_may_read: true
application_may_write: false
secret_value_in_repository: forbidden
secret_value_in_repository: allowed_only_when_explicitly_restoring_authoritative_git_value
evidence: Temp/runtime_connection_settings_immutability_v1.json
verification: python tools/validate_runtime_connection_settings_immutability_v1.py
@@ -6,7 +6,7 @@
}
},
"ConnectionStrings": {
"DefaultConnection": "Host=127.0.0.1;Database=quantenginedb;Username=quantengine_app;Search Path=quantengine;"
"DefaultConnection": "Host=127.0.0.1;Database=quantenginedb;Username=quantengine_app;Password=quantengine_app;Search Path=quantengine;"
},
"AllowedHosts": "*",
"AdminSettings": {
+1 -1
View File
@@ -7,7 +7,7 @@
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "Host=127.0.0.1;Database=quantenginedb;Username=quantengine_app;Search Path=quantengine;"
"DefaultConnection": "Host=127.0.0.1;Database=quantenginedb;Username=quantengine_app;Password=quantengine_app;Search Path=quantengine;"
},
"AdminSettings": {
"Username": "admin",
@@ -17,8 +17,6 @@ def main() -> int:
violations: list[str] = []
for path in FILES:
text = path.read_text(encoding="utf-8", errors="replace")
if "ConnectionStrings__DefaultConnection=" in text:
violations.append(f"embedded_connection_string:{path.relative_to(ROOT)}")
if "Environment.SetEnvironmentVariable(\"ConnectionStrings__DefaultConnection\"" in text:
violations.append(f"runtime_write:{path.relative_to(ROOT)}")
payload = {