Skip to content

v2.1.23

Choose a tag to compare

@github-actions github-actions released this 18 Aug 20:21
· 11 commits to main since this release
Immutable release. Only release title and notes can be modified.
v2.1.23
553c734

Cartograph v2.1.23

Cartograph v2.1.23 aligns OpenAI-compatible endpoint probing with live model
clients, makes the optional biomarker lifecycle explicit and non-blocking, and
bounds dead-code evidence early enough for large graphs while isolating digest
sections. This resolves
issue #147,
issue #148, and
issue #149.

Consistent model endpoints

  • Doctor's model-catalog probe now uses the shared endpoint normalizer used by
    embedding and reranking clients. An endpoint already ending in /v1
    requests /v1/models instead of the invalid /v1/v1/models path.
  • Known OpenAI-compatible operation suffixes are normalized through the same
    bounded URL builder, so doctor, smoke, embedding, and reranking retain one
    path contract without exposing credentials or relaxing loopback/TLS policy.

Explicit biomarker lifecycle

  • Biomarker stats, ranked/symbol reads, verbose status, and inline status
    rollups no longer trigger whole-generation detector computation. Before a
    complete exact relation exists they return a typed not_computed state;
    rollups preserve the rest of status and return an empty biomarker array, and
    review-risk does not mislabel that absence as a ready zero-finding lens.
  • cartograph admin biomarkers-refresh is a working dry-run-first boundary.
    Execute mode requires --no-dry-run --confirm and accepts a bounded
    --timeout-ms; MCP uses the equivalent dryRun, confirm, and timeoutMs
    fields. Validation and timeout failures carry actionable safe messages.
  • The stored relation remains generation- and input-fingerprint-fenced.
    Indexing continues to publish canonical graph facts without silently
    computing this optional derived relation.

Bounded dead-code and resilient digest

  • The deterministic dead-code query filters and materializes a
    PageRank-prioritized maxCandidates orphan window before outgoing-edge
    aggregation and source lookup. Framework, entry-point, public-container,
    test, and fixture exemptions remain inside that pre-enrichment boundary.
  • A PostgreSQL statement timeout is now surfaced as the typed
    dead_code_query_timeout error with bounded retry guidance instead of a
    generic tool failure.
  • Digest preserves all successful concurrent sections when one section times
    out or is unavailable. sectionStatus reports each outcome, failed sections
    receive safe empty/null fallbacks, and degraded identifies a partial digest.

Upgrade

Use the resumable project upgrade:

cartograph upgrade --apply --project-path <PATH> --json

Require completed: true. This release adds no database migration or generation
digest change. Restart or reopen an attached agent host only when the report
says restartRequired: true; an already-attached process cannot hot-load the
new binary.

Cartograph v2.1.23 remains native Rust and PostgreSQL-only. It does not bundle
PostgreSQL, ParadeDB, pgvector, a database, or a container image, and it has no
SQLite runtime, importer, optional feature, or fallback.

Full changelog: v2.1.22...v2.1.23