Part of the ADR-0003 epic #1105. Plan: docs/operations/proposals/advisor-qp-direct-retrieval.md (PR #1104). Decision: ADR-0003.
Goal: Own query construction once — avoid forking it (ADR-0003 cost #1).
Scope:
- Extract "semantic filter + ranked dotted field paths →
LIFQuery{filter, selected_fields}" into a shared brick.
- semantic-search builds a GraphQL string today (
components/lif/semantic_search_service/core.py:411-422); the resolver builds LIFQuery JSON (components/lif/openapi_to_graphql/type_factory.py:807-809). Refactor both to construct LIFQuery through the brick.
Size: M · Depends on: B
Part of the ADR-0003 epic #1105. Plan:
docs/operations/proposals/advisor-qp-direct-retrieval.md(PR #1104). Decision: ADR-0003.Goal: Own query construction once — avoid forking it (ADR-0003 cost #1).
Scope:
LIFQuery{filter, selected_fields}" into a shared brick.components/lif/semantic_search_service/core.py:411-422); the resolver buildsLIFQueryJSON (components/lif/openapi_to_graphql/type_factory.py:807-809). Refactor both to constructLIFQuerythrough the brick.Size: M · Depends on: B