second-brain/tests
Travis Herbranson d40f25c99d config: load settings.local.toml as a section-level overlay
The base settings.toml is tracked; the new sibling settings.local.toml
is gitignored (entry already at .gitignore:32 — it was aspirational
until now, since the loader only read one file).

`load_config()` now overlays the local file on top of the base via a
new `_overlay_sections` helper that merges one level deep: for each
section in the local file, its keys are merged onto the base section's
keys, so a local `[database] url = "..."` no longer wipes other
`[database]` keys in the base. Sections present in only one file pass
through untouched.

Overlay is resolved as a sibling of whichever base file was chosen, so
SECOND_BRAIN_CONFIG=/etc/sb/settings.toml also picks up the matching
/etc/sb/settings.local.toml.

This is the dev-side ergonomic fix: Travis's interactive shell can keep
the lovebug password in a gitignored, 0600 settings.local.toml instead
of needing SECOND_BRAIN_DATABASE_URL exported on every manual `process`
run. Existing _merge is untouched (shallow), so the per-section
property merges in Config keep current semantics.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 17:09:57 -04:00
..
__init__.py project init 2026-05-22 19:08:22 -04:00
test_claim.py deploy/tower + claim race + transcribe smoke tests 2026-05-25 10:20:46 -04:00
test_config_overlay.py config: load settings.local.toml as a section-level overlay 2026-05-25 17:09:57 -04:00
test_playlist.py playlists: queue-time YouTube fan-out via yt-dlp extract_flat 2026-05-25 13:59:35 -04:00
test_smoke_embedding.py test: smoke test reads embedding model from config, not hardcoded literal 2026-05-24 22:58:30 -04:00
test_source_edit_retry.py web+cli: edit-mode for source metadata + retry/re-run actions 2026-05-25 16:08:26 -04:00
test_transcribe.py transcripts: capture segment-level output into a new JSONB column 2026-05-25 13:40:49 -04:00