Skip to content

v0.3.0

Choose a tag to compare

@malkreide malkreide released this 27 Jul 12:50
· 168 commits to main since this release
3aa1cc6

[0.3.0] — 2026-07-26

Closes the last two open audit findings from the 0.2.0 hardening pass.

Added

  • search_procurements_detailed — aggregated tool that runs a search and
    fetches the full detail record for the top n hits in parallel
    (asyncio.gather), so the anchor query is answered in a single call instead of a
    search-then-N-details chain (ARCH-007). Bounded by top_n (1–5).
  • EnrichedSearchResponse model (count, total_matched, match_type,
    results: list[ProcurementDetail]).

Changed

  • Attribution now states the data-reuse basis: the tenders are official
    public-procurement announcements and simap.ch publishes no explicit open-data
    licence, so reuse follows the simap.ch terms. Source/operator/terms are named in
    ATTRIBUTION, the README Credits and every response's source (CH-004).
  • Refactored shared search-param building and detail mapping into _build_search_params
    and _detail_from_payload (used by both the single and aggregated tools).