Motivation: ERD acceptance item 589 requires hard-dropped sources to remain persisted for audit while being excluded from search paging.
Constraints:
Runtime behavior remains stored-procedure driven.
Validation must prove both audit persistence and page exclusion in a single ingest flow.
Dependency rationale:
No new dependencies were added.
Alternative considered: only assert search_page_item exclusion. Rejected because ERD also requires auditable persistence (search_filter_decision and dropped context scoring).
Decision:
Added integration test search_result_ingest_dropped_sources_are_persisted_but_excluded_from_pages in crates/revaer-data/src/indexers/search_results.rs.
Test setup creates a request-scope policy set with a hard drop title-regex rule, executes ingest, and asserts:
no search_page_item rows are produced for the request,
canonical_torrent_source_context_score.is_dropped is true,
search_filter_decision records drop_canonical with observation linkage and canonical/source ids.
Consequences:
Positive outcomes:
ERD dropped-source behavior is covered by a deterministic regression test.
Paging remains free of dropped sources while audit evidence is retained.
Risks or trade-offs:
Test depends on request-policy ingestion path and policy schema conventions.
Follow-up:
Test coverage summary:
Verified with just ci and just ui-e2e.
Observability updates:
No telemetry schema changes.
Risk and rollback:
Rollback is isolated to test/checklist/docs updates.
Review checkpoints:
Continue with next unchecked ERD acceptance item after 589.