release(02_2026): update, hardening, stabilize and release proposal.#16
Merged
Intrinsical-AI merged 28 commits intodevelopfrom Feb 15, 2026
Merged
release(02_2026): update, hardening, stabilize and release proposal.#16Intrinsical-AI merged 28 commits intodevelopfrom
Intrinsical-AI merged 28 commits intodevelopfrom
Conversation
- Use UV_CACHE_DIR=.uv-cache to avoid permission issues in restricted environments. - Use `uv run --active --no-sync` for lint/type/test so commands don't trigger implicit sync/build. - Keep targets compatible with the existing uv.lock-based workflow.
…tials
- Keep stable metric symbols even when prometheus-client isn't installed.
- Avoid invalid CORS config ("*" with credentials) by disabling credentials.
- Add a preflight test to assert headers are spec-compliant.
Move DI wiring into src/local_rag_backend/app/factory.py and keep src/local_rag_backend/app/dependencies.py as a thin re-export for backwards compatibility. Add local_rag_backend.bootstrap.bootstrap_rag_service() for library usage. Derive local_rag_backend.__version__ from dist metadata to avoid drift. Update unit tests to patch the new composition module.
…dexing tests Why: - sentence-transformers pulls torch + CUDA wheels on many platforms; this makes the default "dense" extra hard to install and test in constrained environments. What: - Split extras: "dense" = FAISS only; "dense-st" = SentenceTransformers. - Prefer OpenAI embeddings when OPENAI_API_KEY is configured; fall back to SentenceTransformers when installed. - Align bootstrap/build_index and API router with the same embedder-selection behavior. - Allow HistorySqlStorage to accept a session_factory for testability. - Replace the SentenceTransformers integration test with an OpenAIEmbedder integration test that stubs the SDK. - Add an end-to-end dense+hybrid test that works with the FAISS numpy fallback. - Strengthen build_index sparse integration assertions. Notes: - uv.lock was updated to reflect the new extras; regeneration requires network access.
- Disable OpenRouter by default in .env.example to avoid a not_ready configuration without an API key. - Update README badges and pip examples to use the actual dist name (rag-prototype). - Keep dense installation instructions consistent with the split extras. - Align architecture/advanced usage docs with current response shapes and messages.
…v if exists in root dir
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
This PR focuses on hardening the backend (API/service lifecycle, settings side-effects, persistence validation), improving CI/Docker reliability, and bringing docs in sync with the current implementation. It also adds an optional docs site scaffold (MkDocs) to match the existing
docsextra.What Changed
API / Runtime Behavior
GET /api/ready) is stricter for dense/hybrid:POST /api/docs) resets the cachedRagServiceso subsequent requests see newly ingested docs/index.DATA_DIRexists before SQLite is used.Settings / Side-Effects
Settingsis now side-effect free (no directory creation during import/instantiation).Providers / Embeddings / Vector Index
id_map.pklformat (must belist[int]).DevEx / Quality Gates
ruff format --check.UV_CACHE_DIR=.uv-cacheto avoid non-writable HOME issues.coverage.xml.ruff format --check(not black/isort).make clean.pydantic-settings.Docs
gemma3:1b.docs/*.OPENAI_API_KEYis set, otherwise SentenceTransformers.docs/architecture.md:src/local_rag_backend/core/ports/__init__.py.src/local_rag_backend/app/factory.pyas source of truth./api/docs,/api/ask_eval,/api/openrouter/generate, etc.).docs/custom_usage_guide.md:Path.mkdirforDATA_DIR.mkdocs.ymldocs/index.mdNotable Compatibility Notes
Settings(data_dir=...)creating directories automatically, it must now ensure the directory exists (the FastAPI app and bundled scripts already do).Testing
pytest(unit + integration + e2e)ruff check .mypy .Release Note
CHANGELOG.mdincludes a1.1.1section dated 2026-02-15.pyproject.tomlstill declaresversion = "1.1.0".1.1.1in this PR, or keep changelog as "next release" only.Commit List (develop..HEAD)