Lookup First Ask Path¶
- Audit date:
2026-03-18(Asia/Tbilisi) - Repository root:
/home/standard/repo-sqlite-cli-final-FZKQlB - Local branch:
lookup-first-ask-20260318 - Observed
origin/master:a86dc7c
Scope¶
This audit covers the change that makes the default repository question-answering path use the repository-local Rust SQLite lookup before the broader Python retrieval and DSPy synthesis paths.
The turn also aligns the agent-facing guidance with that behavior:
uv run repo-rag ask --question "..."andmake ask QUESTION="..."now narrow on Rust lookup hits first, then fall back to broader retrieval when the direct hits are weakuv run repo-rag ask --question "..." --use-dspyandmake ask-dspy QUESTION="..."now reuse the same narrowing pass before DSPy synthesis- repository agent guidance and generated file-summary surfaces now describe the lookup-first contract instead of treating Rust lookup as only a manual side path
Executed Commands¶
Executed successfully in this turn:
uv run python -m compileall src testscargo build --manifest-path rust-cli/Cargo.tomluv run pytest tests/test_lookup_first.py tests/test_cli_and_dspy.py tests/test_utilities.py tests/test_repository_rag_bdd.py tests/test_hushwheel_fixture.pyuv run repo-rag retrieval-eval --top-k 4 --top-k-sweep 1,4 --minimum-pass-rate 1.0 --minimum-source-recall 1.0uv run repo-rag smoke-testmake qualitymake hooks-installmake rust-lookup QUERY='dspy training'uv run pytest tests/test_lookup_first.py tests/test_utilities.py tests/test_repository_rag_bdd.py tests/test_project_surfaces.pymake files-syncmake verify-surfaces
Results¶
uv run python -m compileall src tests: passedcargo build --manifest-path rust-cli/Cargo.toml: passeduv run pytest tests/test_lookup_first.py tests/test_cli_and_dspy.py tests/test_utilities.py tests/test_repository_rag_bdd.py tests/test_hushwheel_fixture.py: passed,35testsuv run repo-rag retrieval-eval --top-k 4 --top-k-sweep 1,4 --minimum-pass-rate 1.0 --minimum-source-recall 1.0: passed withpass_rate: 1.0,average_source_recall: 1.0, andthreshold_failures: []uv run repo-rag smoke-test: passed with:answer_contains_repository: truemcp_candidate_count: 1manifest_path: artifacts/azure/repo-rag-smoke.jsonmake quality: passed with134tests and87.36%total coveragemake hooks-install: passed and refreshed the managedpre-commitpluspre-pushhooksmake rust-lookup QUERY='dspy training': passed and returned ranked SQLite hits, led bysrc/repo_rag_lab/notebook_scaffolding.py,README.DSPY.MD, andsrc/repo_rag_lab/training_samples.pyuv run pytest tests/test_lookup_first.py tests/test_utilities.py tests/test_repository_rag_bdd.py tests/test_project_surfaces.py: passed,36testsmake files-sync: passed and refreshedFILES.md,FILES.csv, andAGENTS.md.d/FILES.mdmake verify-surfaces: passed withissue_count: 0
Current Verification Status¶
Configured and exercised in this turn:
- Python compile checks
- Rust wrapper build
- lookup-first retrieval coverage in targeted pytest suites
- repository utility, BDD, project-surface, and fixture coverage in targeted pytest suites
- smoke coverage through the default
repo-rag askpath - retrieval regression gating
- repo-wide lint, notebook lint, type checks, repository-surface verification, retrieval quality,
complexity reporting, pytest, and coverage through
make quality - hook installation and tracked-file inventory regeneration
- direct Rust SQLite lookup execution through the repo-native
make rust-lookupsurface
Not exercised in this turn:
- live Azure endpoint probes
- standalone
make coveragebeyond the coverage phase already included inmake quality - full notebook batch execution via
make notebook-report - post-push GitHub Actions evidence for this branch head
Verification categories not found as standalone repository checks:
- UI test suite
- browser or end-to-end integration suite
Notes¶
- The retrieval gate initially regressed because the new
rust_lookup.pymodule started surfacing for the benchmark question about what the repository researches. The turn corrected ranking with a targeted source adjustment insrc/repo_rag_lab/retrieval.pyrather than weakening thresholds. - The Rust lookup integration is intentionally limited to the repository root so fixture repos can continue using the existing full-corpus path without accidental cross-repo indexing.