Skip to content

0.7.2

Choose a tag to compare

@karol-kedzia karol-kedzia released this 21 May 11:51
· 3 commits to main since this release
a3ae942

hypertopos is a Python library that transforms relational data into a geometric space where structure, anomalies and change become directly observable — without training machine learning models. Every entity gets a coordinate derived from its typed relationships, calibrated against the population. Distance from center reveals anomalies. Proximity reveals similarity. Movement over time reveals drift. The library ships with a CLI for building spheres from YAML configuration, a Python API for programmatic access, and an MCP server (hypertopos-mcp) that exposes the geometry as tools for AI agents. Research-stage project — benchmarks, methodology and reproduction scripts are included.


hypertopos-py 0.7.2 — composition orchestrators + signed-confidence ranking

0.7.2 turns the label-aware calibration foundation from 0.7.1 into operational primitives that agents can compose. The release ships the strategic-gap-analysis §5 0.7.2-row headline features: signed-confidence ranking that fuses three already-shipped signals (delta_norm_signed + Fisher LDA direction + reliability_flags) into one confidence-weighted score, and chain_full_loop_summary — the chain-side mirror of investigate_entity that collapses six manual primitives into one MCP call. Two new label-aware dim auditors land: audit_label_alignment reports Fisher LDA direction discrimination as AUROC against labels with the top-N most label-discriminating dims, and a new kind_mismatch warning class on sphere_overview.dim_quality_warnings flags gaussian-declared dims whose Fisher direction is near-zero while raw class moments separate — surfacing dims whose variance is captured by another dim's axis. A counterfactual frozen-population trajectory primitive on dive_solid answers "is this entity's apparent shift a real change or just population drift around a stationary entity?" — a stationary entity yields delta_norm_frozen_pop = 0 across all slices. Chain anomaly signal gains edge_potentials per consecutive-pair hop — Euclidean distance between endpoint delta vectors that surfaces high-distance behavioural jumps inside multi-hop chains. Infrastructure: a new changelog.d/ fragment convention at repo root eliminates the recurring [Unreleased] merge-conflict class on every sibling PR.

Highlights

  • find_anomalies(rank_by="signed_confidence") — confidence-weighted anomaly ranking: score = delta_norm_signed × |lda_alignment| × (1 − reliability_penalty) where reliability_penalty = 0.5 × single_dim_driven + 0.5 × low_confidence_bucket. Survivors carry signed_confidence_score, lda_alignment, reliability_penalty per polygon. Fail-fast on patterns without label_aware_calibration (no silent fallback to delta_norm).
  • chain_full_loop_summary(chain_id, chain_pattern_id, anchor_pattern_id, ...) — chain-side investigation orchestrator. Mirror of investigate_entity. Composes seven chain primitives into one call with per-step {ok, error} envelopes. Top-level summary reports investigation_strength ∈ {strong, moderate, weak}, recommended_action, derived score, one-sentence rationale.
  • GDSNavigator.audit_label_alignment(pattern_id, *, top_n=10) — Fisher LDA direction AUROC + top-N most label-discriminating dims by |direction_component|. Sibling to audit_pattern_dims. Fallback shape with auroc: null on patterns without label-aware calibration.
  • kind_mismatch warning on sphere_overview.dim_quality_warnings — fires when a kind='gaussian' dim shows |direction_component| < 0.05 AND cohens_d_pos_neg >= 0.3. The dim's variance is captured by another dim's Fisher axis — re-declaring kind or splitting recommended. Suppressed for dims already flagged negative_space.
  • recommended_action="kind_mismatch_review" — new categorical value on audit_pattern_dims decision tree, highest priority (preempts keep / split / drop_low_separation / investigate_drift).
  • dive_solid(..., counterfactual_frozen_population=True) — each SolidSlice carries delta_norm_frozen_pop reporting per-slice L2 norm against the FIRST slice's raw shape. Answers the stationary-entity-vs-population-drift question. Default False preserves return shape.
  • Chain.to_dict() edge_potentials — per-consecutive-pair-hop Euclidean distance between endpoint delta vectors against a caller-supplied anchor pattern. null on missing polygons or non-finite distances. Length len(keys) − 1; empty for single-entity chains.
  • engine.counterfactual.recompute_delta_norm_against_frozen(shape, mu_frozen, sigma) — pure-NumPy helper for the frozen-trajectory path.
  • SolidSlice.delta_norm_frozen_pop — new optional model field, populated by the frozen-trajectory path.
  • changelog.d/ fragments convention — per-PR changelog.d/<pkg>/<id>.<type>.md files at repo root; aggregator scripts/release/aggregate_changelog.py <version> folds at tag time. Eliminates the recurring [Unreleased] merge-conflict class. Outside packages/; mirrors never see fragments. See changelog.d/README.md.
  • docs/refutations.md — five tested-and-closed hypotheses (σ-estimator swap × 2, lazy-chain sampled calibration, Bregman-based is_anomaly flag, cycle-compression methodology). Each entry: hypothesis, dataset, numeric verdict, root cause, closure rule.
  • docs/patent-implementation-map.md — nine architectural-claim clusters mapped to their shipped surfaces. Descriptive cluster names only; no internal tracker IDs.

Builder + label-aware activation

  • AML HI-small + LI-small spheres ship with label_audit: declared on their tx_patternis_laundering column on transactions activates the M1 builder hook from 0.7.1 (#511) on rebuild. Sphere format stamps 3.1 when the block is declared. audit_pattern_dims returns the full per-class field path (mu_pos / sigma_pos / mu_neg / sigma_neg / cohens_d_pos_neg / direction_component) instead of the fallback shape.

Breaking changes

None. delta_norm_frozen_pop, edge_potentials, kind_mismatch warning, recommended_action: "kind_mismatch_review", rank_by="signed_confidence" — all additive surfaces. Chain.to_dict() gains a new optional kwarg delta_by_key with None default preserving existing behaviour.

Infrastructure

  • README badge for CI test workflow on the public mirror.

See CHANGELOG.md for the full list of changes.