Skip to content

Silex 0.12.0

Choose a tag to compare

@iasaol iasaol released this 06 Sep 20:57

Silex 0.12.0

Recommended install (official channel):

pip install silex-archaeology

The wheel attached to this release is an alternative path when pip install from PyPI is not available to you. PyPI is always the source of truth: https://pypi.org/project/silex-archaeology/

pip install https://github.com/silex-tec/silex/releases/latest/download/silex_archaeology-py3-none-any.whl

Fixed

  • The free tier never reaches Neo4j, Qdrant or a paid LLM (Azure APIM) by accident of environment. The decision is now made by tier, before any driver import or socket. Previously a .env plus a reachable endpoint made a free scan write to the graph (hours of linking) and community detection call a paid model once per class/module. Heavy stages now report skipped: true, reason: "tier_free"; progress-event shape unchanged. An unknown SILEX_TIER value is treated as free everywhere.
  • The community map now covers procedural code. Module-level functions join the map through the module identity (the file is the "class" for Python/JS). On Silex itself, Python chunks outside any community dropped from 70% to 0.05%, and silex.community.code_pack reaches that code with file:line anchors. Edges with ambiguous names are dropped and counted, never guessed.
  • Chunking faithful to the code. Decorated functions and classes become chunks; build/lib, *.egg-info, caches and Silex's own artifacts stay out of the scan; a full scan purges ghost chunks and canonicalizes the workspace id in the mirror (on Silex: 84,134 → 40,755 chunks, zero ghosts); god functions/methods land as a parent plus cohesive blocks (symbol_block, id {parent}#bNNN), and the code pack returns blocks instead of a single 15k-token chunk.
  • Freshness covers new, renamed and deleted files. The git hook now reads --name-status, so a newly committed file is ingested by the partial rescan without a full scan; renamed files leave no ghost chunks on the old path; deleted files are removed together with their edges. The hook reports added= renamed= deleted= modified= counts.

Added

  • SILEX_EXTRA_STORES=neo4j,qdrant — explicit, declared opt-in that re-enables the heavy stores on the free tier (comma-separated). It never enables the paid LLM provider. result["heavy_stores"] reports the decision.
  • Freshness git hook (silex-fresh-hook-install): post-commit/post-merge mark touched files as stale and re-ingest only those into the mirror. Works with a workspace rooted in a monorepo subdirectory.
  • scripts/measure_map_coverage.py — community-map coverage per language.
  • Smoke scenarios smoke-chunk/chunk-01..04, smoke-mcp/mcp-06 (procedural map), smoke-mcp/mcp-07 (free tier under a hostile environment with a network sentinel) and smoke-fresh/fresh-04 (hook ingests new/renamed/deleted files).

Changed

  • community_code_pack/v4: module members, god-symbol header plus ordered blocks; entity_pack and get_structural_findings resolve member → chunks through the same helper.
  • CONTRACT_DEVICE unset now means auto: cuda when a GPU is available, otherwise cpu; an explicit value always wins.
  • get_provider("azure") outside legacy/pro/enterprise raises LLMProviderBlockedInTier (code: "llm_provider_unavailable_in_tier"). Operations note: server-side enrichment and scripts that used APIM without declaring a tier now fall back to Ollama or a structured error — set SILEX_TIER=pro.
  • SqliteExtractorInput filters symbol_block; list_chunks(include_blocks=False) by default, so extractors, communities and retrieval receive the same set as before.

Since v0.11.42

0.12.0 is the first minor bump since 0.11.42. It is fully backward compatible for the free MCP kit (12 tools, same names and schemas); tool descriptions were regenerated for the public reference.

Site & docs: https://silex.tec.br