0.7.2
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)wherereliability_penalty = 0.5 × single_dim_driven + 0.5 × low_confidence_bucket. Survivors carrysigned_confidence_score,lda_alignment,reliability_penaltyper polygon. Fail-fast on patterns withoutlabel_aware_calibration(no silent fallback todelta_norm).chain_full_loop_summary(chain_id, chain_pattern_id, anchor_pattern_id, ...)— chain-side investigation orchestrator. Mirror ofinvestigate_entity. Composes seven chain primitives into one call with per-step{ok, error}envelopes. Top-levelsummaryreportsinvestigation_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 toaudit_pattern_dims. Fallback shape withauroc: nullon patterns without label-aware calibration.kind_mismatchwarning onsphere_overview.dim_quality_warnings— fires when akind='gaussian'dim shows|direction_component| < 0.05ANDcohens_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 flaggednegative_space.recommended_action="kind_mismatch_review"— new categorical value onaudit_pattern_dimsdecision tree, highest priority (preemptskeep/split/drop_low_separation/investigate_drift).dive_solid(..., counterfactual_frozen_population=True)— eachSolidSlicecarriesdelta_norm_frozen_popreporting per-slice L2 norm against the FIRST slice's raw shape. Answers the stationary-entity-vs-population-drift question. DefaultFalsepreserves return shape.Chain.to_dict()edge_potentials— per-consecutive-pair-hop Euclidean distance between endpoint delta vectors against a caller-supplied anchor pattern.nullon missing polygons or non-finite distances. Lengthlen(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-PRchangelog.d/<pkg>/<id>.<type>.mdfiles at repo root; aggregatorscripts/release/aggregate_changelog.py <version>folds at tag time. Eliminates the recurring[Unreleased]merge-conflict class. Outsidepackages/; mirrors never see fragments. Seechangelog.d/README.md.docs/refutations.md— five tested-and-closed hypotheses (σ-estimator swap × 2, lazy-chain sampled calibration, Bregman-basedis_anomalyflag, 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 theirtx_pattern—is_launderingcolumn on transactions activates the M1 builder hook from 0.7.1 (#511) on rebuild. Sphere format stamps3.1when the block is declared.audit_pattern_dimsreturns 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.