chrysopedia/backend
jlightner c344b8c670 fix: Moment-to-page linking via moment_indices in stage 5 synthesis
When the LLM splits a category group into multiple technique pages,
moments were blanket-linked to the last page in the loop, leaving all
other pages as orphans with 0 key moments (48 out of 204 pages affected).

Added moment_indices field to SynthesizedPage schema and synthesis prompt
so the LLM explicitly declares which input moments each page covers.
Stage 5 now uses these indices for targeted linking instead of the broken
blanket approach. Tags are also computed per-page from linked moments
only, fixing cross-contamination (e.g. "stereo imaging" tag appearing
on gain staging pages).

Deleted 48 orphan technique pages from the database.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 00:34:37 -05:00
..
pipeline fix: Moment-to-page linking via moment_indices in stage 5 synthesis 2026-04-01 00:34:37 -05:00
routers feat: Pipeline runs — per-execution tracking with run-scoped events 2026-03-31 17:13:41 +00:00
tests test: Added GET /api/v1/search/suggestions endpoint returning popular t… 2026-03-31 06:35:37 +00:00
config.py fix: Moment-to-page linking via moment_indices in stage 5 synthesis 2026-04-01 00:34:37 -05:00
database.py fix: restore complete project tree from ub01 canonical state 2026-03-31 02:10:41 +00:00
main.py feat: remove review workflow — unused gate that blocked nothing 2026-03-31 02:34:12 +00:00
models.py feat: Pipeline runs — per-execution tracking with run-scoped events 2026-03-31 17:13:41 +00:00
pytest.ini fix: restore complete project tree from ub01 canonical state 2026-03-31 02:10:41 +00:00
redis_client.py fix: restore complete project tree from ub01 canonical state 2026-03-31 02:10:41 +00:00
requirements.txt feat: Built backend/watcher.py with PollingObserver-based folder watchi… 2026-03-30 19:17:47 +00:00
schemas.py test: Added GET /api/v1/search/suggestions endpoint returning popular t… 2026-03-31 06:35:37 +00:00
search_service.py feat: Added technique_page_slug to search results across Qdrant payload… 2026-03-31 05:02:48 +00:00
watcher.py feat: Built backend/watcher.py with PollingObserver-based folder watchi… 2026-03-30 19:17:47 +00:00
worker.py fix: restore complete project tree from ub01 canonical state 2026-03-31 02:10:41 +00:00