fix(sweep): close small gaps and doc drift (bare event.listen, kb --version, llm UX)#37
Merged
Conversation
…ersion, llm UX) Cleanup cycle: every small leftover found across the recent cycles, in one pass. Functional micro-features: - events: the bare 'from sqlalchemy.event import listen [as alias]; listen(...)' call-form is now extracted when the import table proves the called name IS sqlalchemy.event.listen (precision-first; any other bare listen stays skipped). Closes the last call-form documented gap; events extractor_version 2 -> 3 (semantic extension, ids recompute idempotently); Tier-1 events oracle grows the bare registration. - kb --version (eager typer callback over the dynamic kb.__version__). - GitHubPRProvider memoizes successful fetches (one network call per PR per run; failures never stick). CLI UX: - describe/mine fail with a friendly 'install the llm extra' message when the SDK is missing (was a raw ModuleNotFoundError in slim installs/images); the 'no LLM API key' message names the SELECTED provider (KB_LLM_PROVIDER) instead of implying either key works. Regression closed: - Tier-1 API gate: two routes stacked on ONE handler sharing ONE response model (identical evidence spans) are TWO artifacts with distinct ids - the fastapi twin of the events/entities identity-v1 collision, flagged 'fix when convenient' when identity v2 shipped. Docs drift: - README: 'future business-process extractor' de-futured; events gap list updated; Quickstart documents the llm extra, KB_LLM_MODEL and the OpenAI-compatible OPENAI_BASE_URL path (OpenRouter, verified live); Docker section states describe/mine need EXTRAS='--extra llm'. DESIGN events rows updated; cli.py docstrings mention mine --prs. Suite 122 -> 124 passed; headline HARD gates stay fifteen.
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.
What
A cleanup cycle: every small leftover found across recent cycles, closed in one pass (12 audited findings).
Functional micro-features
from sqlalchemy.event import listen [as alias]; listen(...)call-form is now extracted when the import table proves the called name ISsqlalchemy.event.listen(precision-first; any other barelistenstays skipped). Closes the last call-form documented gap; eventsextractor_version2 → 3; Tier-1 events oracle grows the bare registration (12 → 13 tests).kb --version— eager typer callback over the dynamickb.__version__.GitHubPRProvider): one network call per PR per run; failures never stick.CLI UX
describe/mine: friendly "install thellmextra" message when the SDK is missing (was a rawModuleNotFoundError); the "no LLM API key" message names the selected provider.Regression closed
Docs drift
README ("future" business-process extractor de-futured; events gaps;
llmextra +KB_LLM_MODEL+OPENAI_BASE_URL/OpenRouter path — verified live this session; DockerEXTRAS="--extra llm"note), DESIGN events rows, CLI docstrings (mine --prs).Checks
Suite 122 → 124 passed, 1 skipped; headline HARD gates stay fifteen;
ruff+mypy --strictclean;kb --version→ 0.8.0.