Skip to content

v2.1.27

Choose a tag to compare

@github-actions github-actions released this 25 Aug 21:43
· 6 commits to main since this release
Immutable release. Only release title and notes can be modified.
v2.1.27
d2d4d15

Cartograph v2.1.27

Cartograph v2.1.27 adds first-class Ada/SPARK and VHDL code intelligence,
improves the precision of Rust numerical hazards, and makes the whole-generation
biomarker refresh timeout explicit and large-project capable.

Ada, SPARK, and VHDL

  • Ada .adb, .ads, and .ada files use a pinned native grammar and a
    dedicated bounded walker for packages, subprograms, types, objects, calls,
    and with/use compilation context. SPARK source uses this Ada mode.
  • VHDL .vhd and .vhdl files extract entities, architectures, packages,
    functions/procedures, components, types, signals/constants/variables, calls,
    instantiations, and library/use context.
  • Basic identifiers are canonicalized case-insensitively. Ada and VHDL imports
    resolve by declared compilation-unit name rather than a filename guess;
    declaration files win over bodies, and duplicate unit declarations remain
    unresolved instead of choosing one.
  • The production registry now contains 132 modes: 66 pinned grammar-backed
    modes and 66 bounded custom/scanner modes. The frozen 73-language,
    163-extension v1 boundary is unchanged.

Numerical-analysis precision

  • Epsilon literals and epsilon/tolerance-named bounds still produce
    absolute_only_tolerance; general abs(x) <= bound containment and
    magnitude predicates are retained as none_observed evidence instead.
  • Finite numeric clamp, min, and max guard sites remain queryable without
    being counted as nan_ordering_unknown hazards.
  • asin, acos, log, and square-root calls recognize direct guards and
    same-block immutable clamp/floor bindings. Guarded sites retain explicit
    non-finite/input-provenance unknowns, while unguarded calls remain hazards.

This resolves #154 without suppressing numerical extraction or weakening the
static-evidence boundary.

Biomarker refresh timeout

  • databaseQueryTimeoutMs and the generated
    --database-query-timeout-ms flag now explicitly control the inner
    PostgreSQL statement timeout for biomarkers-refresh, from 1 ms through 30
    minutes.
  • The old timeoutMs/--timeout-ms spelling remains an exclusive legacy
    alias. Passing both is rejected.
  • Dry-run and execution output disclose the exact timeout and its source. The
    generated CLI deadline automatically stays beyond the chosen database
    deadline; MCP callers are told to provide a longer client deadline.

This resolves #153 while preserving dry-run-first and explicit-confirmation
mutation semantics.

Dependencies and storage contract

  • The lockfile updates combine from 4.6.7 to 4.6.8 and syn from 3.0.3 to
    3.0.4, and adds exact-pinned tree-sitter-ada 0.1.0 and
    arborium-vhdl 2.18.1 grammar bindings.
  • Generation digest V15 fences Ada/VHDL resolver facts and the revised
    numerical classification. Append-only migration 40 admits V15; unchanged
    source indexed by an older binary is stale until a normal index publishes
    current-contract facts.

Upgrade

Use the resumable project upgrade:

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

Require completed: true. 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.27 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.26...v2.1.27