DaemonConfig.from_env() now best-effort loads a .env file (find_dotenv usecwd, load_dotenv override=False) so operators can manage daemon env vars via .env, with real OS env taking precedence. Add python-dotenv dependency, gitignore .env, ship .env.example, and add config tests (load / OS-env precedence / absence regression / missing-DSN guard). Verification: 78 passed, ruff clean, .env ignored + .env.example tracked, and a .env-only DaemonConfig smoke. Processed via the minor-change fast path: REQ-010 (Configuration) -> Implemented, BAT-003 (batch-lite, no design) -> release-candidate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1003 B
1003 B
BAT-003 Verification
- Status: confirmed
- Batch: BAT-003
Acceptance Mapping
- REQ-010:
- AC1 .env 로드 →
test_loads_values_from_dotenv+ 스모크(dsn/total/port). PASS - AC2 OS env 우선 →
test_os_env_takes_precedence_over_dotenv(override=False). PASS - AC3 .env 부재 회귀 →
test_no_dotenv_uses_os_env_only+test_missing_dsn_raises. PASS - AC4 gitignore/.env.example →
git check-ignore:.envignored,.env.exampletrackable. PASS
- AC1 .env 로드 →
Evidence
- Test:
pytest tests/runtime/test_config_dotenv.py4 passed; 전체 78 passed; ruff clean. - Manual:
git check-ignore .env→ ignored,.env.example→ trackable../.env단독 로드 스모크.
no architecture impact confirmed
- batch-lite, planning Design Gate=no. 구조/인터페이스/런타임 흐름 변경 없음(기동 시 env 소스 추가뿐). baseline 문서 영향 없음 → 동기화 evidence 불요.
Result
- Ready for Release: true
- Blocking Issues:
- 없음.