Skip to content

fix(sweep): close small gaps and doc drift (bare event.listen, kb --version, llm UX)#37

Merged
v0ropaev merged 1 commit into
masterfrom
chore/small-sweep
Jul 10, 2026
Merged

fix(sweep): close small gaps and doc drift (bare event.listen, kb --version, llm UX)#37
v0ropaev merged 1 commit into
masterfrom
chore/small-sweep

Conversation

@v0ropaev

Copy link
Copy Markdown
Owner

What

A cleanup cycle: every small leftover found across recent cycles, closed in one pass (12 audited findings).

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; Tier-1 events oracle grows the bare registration (12 → 13 tests).
  • kb --version — eager typer callback over the dynamic kb.__version__.
  • PR-fetch memoization (GitHubPRProvider): one network call per PR per run; failures never stick.

CLI UX

  • describe/mine: friendly "install the llm extra" message when the SDK is missing (was a raw ModuleNotFoundError); the "no LLM API key" message names the selected provider.

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" back when identity v2 shipped (fix(ids): fold logical_key into artifact_id (identity rule v2) #24). Proven safe, pinned by a gate.

Docs drift

README ("future" business-process extractor de-futured; events gaps; llm extra + KB_LLM_MODEL + OPENAI_BASE_URL/OpenRouter path — verified live this session; Docker EXTRAS="--extra llm" note), DESIGN events rows, CLI docstrings (mine --prs).

Checks

Suite 122 → 124 passed, 1 skipped; headline HARD gates stay fifteen; ruff + mypy --strict clean; kb --version → 0.8.0.

…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.
@v0ropaev v0ropaev merged commit abbd739 into master Jul 10, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant