Skip to content

search: retire the pre-qualified-names lexical retriever revision #1070

Description

@ScriptedAlchemy

Priority: P2 search correctness/provenance; needs an owner decision because it regenerates reviewed evidence.

What happened

8ecc5da76 (fix(search): publish canonical qualified-name fields) added qualified-name fields to the lexical projection and bumped QUERY_LEXICAL_RETRIEVER_REVISION_V1 from retriever.lexical.daemon.v1 to retriever.lexical.daemon.qualified-names.v1, with published_text_artifact_with_stale_search_revision_is_rebuilt pinning the old label as the stale one. The reconcile merge dd1ed055a kept the test but resolved the constant back to retriever.lexical.daemon.v1, so the test was red on the tip and the bump never shipped.

Why the bump is not a one-line fix

Restoring it on the tip (tried and reverted in d5a72b06c/9285bb470) cascades through the pinned evidence chain, because the lexical retriever revision is part of every ranked candidate's evidence identity:

  1. expected_query_fallback_digests in both workload copies (tests/fixtures/search_quality/query-semantic-candidate-workload-v1.json, crates/tracedecay-query/assets/runtime-root/…) — train c540bcd0…0bb9a050…, validation 0dcb390d…fee99346…;
  2. packaged::WORKLOAD_SHA256 (file digest 1859c709…5b584c43…) and the canonical workload digest pins in crates/tracedecay/tests/search_quality_suite/workload_fixture.rs and tracedecay-search-eval-direct.rs (a4c7d68b…62125128…);
  3. the packaged native qualification (packaged_native_qualification_bytes()), whose portable_evidence.report.workload_digest binds it to the old workload — accepted_profile_authority::validate_report_authority correctly rejects it once the workload digest moves (portable_report_requires_the_current_workload_digest). That artifact is reviewed qualification evidence produced by a real semantic run; it cannot be hand-edited.

Current state on the tip

The constant stays retriever.lexical.daemon.v1; the scheduler test now builds its stale artifact under retriever.lexical.daemon.v0 and asserts the label differs from the current constant, so the rebuild mechanism is still tested. Artifacts published before 8ecc5da76 therefore remain "current" and serve without qualified-name fields until they are rebuilt for another reason.

To close

  • Decide whether pre-qualified-name artifacts must be retired eagerly. If yes: restore the bump, re-pin items 1–2 (the direct evaluator's generate-candidates --profiles query-fallback prints the observed digests; the drift assertion now prints observed vs pinned), and regenerate the packaged native qualification through the real qualification journey — do not edit its digest by hand — then re-run tracedecay-search-eval --lib, tracedecay --test search_quality_suite, tracedecay-usecases --lib semantic_runtime.
  • If no: document in retrieval/mod.rs why the label is retained and what triggers the eventual rebuild.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions