hypertopos 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. hypertopos-0.2.0/.gitignore +40 -0
  2. hypertopos-0.2.0/CHANGELOG.md +156 -0
  3. hypertopos-0.2.0/LICENSE.md +83 -0
  4. hypertopos-0.2.0/PKG-INFO +26 -0
  5. hypertopos-0.2.0/README.md +120 -0
  6. hypertopos-0.2.0/ROADMAP.md +73 -0
  7. hypertopos-0.2.0/SECURITY.md +15 -0
  8. hypertopos-0.2.0/docs/README.md +38 -0
  9. hypertopos-0.2.0/docs/api-reference.md +444 -0
  10. hypertopos-0.2.0/docs/architecture.md +326 -0
  11. hypertopos-0.2.0/docs/benchmark/LICENSE +190 -0
  12. hypertopos-0.2.0/docs/benchmark/README.md +129 -0
  13. hypertopos-0.2.0/docs/benchmark/berka/README.md +287 -0
  14. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/SUMMARY.md +271 -0
  15. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r1/0.1.0-exp-a-report.md +421 -0
  16. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r1/0.1.0-exp-a-scoring.md +14 -0
  17. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r1/0.1.0-exp-b-report.md +409 -0
  18. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r1/0.1.0-exp-b-scoring.md +17 -0
  19. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r1/0.1.0-settings.md +38 -0
  20. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r2/0.1.0-exp-a-report.md +391 -0
  21. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r2/0.1.0-exp-a-scoring.md +75 -0
  22. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r2/0.1.0-exp-b-report.md +433 -0
  23. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r2/0.1.0-exp-b-scoring.md +17 -0
  24. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r2/0.1.0-settings.md +37 -0
  25. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r3/0.1.0-exp-a-report.md +322 -0
  26. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r3/0.1.0-exp-a-scoring.md +114 -0
  27. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r3/0.1.0-exp-b-report.md +484 -0
  28. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r3/0.1.0-exp-b-scoring.md +19 -0
  29. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r3/0.1.0-settings.md +38 -0
  30. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r4/0.1.0-exp-a-report.md +158 -0
  31. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r4/0.1.0-exp-a-scoring.md +114 -0
  32. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r4/0.1.0-exp-b-report.md +329 -0
  33. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r4/0.1.0-exp-b-scoring.md +19 -0
  34. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r4/0.1.0-settings.md +39 -0
  35. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r5/0.1.0-exp-a-report.md +208 -0
  36. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r5/0.1.0-exp-a-scoring.md +128 -0
  37. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r5/0.1.0-exp-b-report.md +419 -0
  38. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r5/0.1.0-exp-b-scoring.md +25 -0
  39. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r5/0.1.0-settings.md +39 -0
  40. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r6/0.1.0-exp-a-report.md +281 -0
  41. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r6/0.1.0-exp-a-scoring.md +100 -0
  42. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r6/0.1.0-exp-b-report.md +413 -0
  43. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r6/0.1.0-exp-b-scoring.md +26 -0
  44. hypertopos-0.2.0/docs/benchmark/berka/results/0.1.0/r6/0.1.0-settings.md +47 -0
  45. hypertopos-0.2.0/docs/benchmark/berka/sphere/prepare_accounts.py +195 -0
  46. hypertopos-0.2.0/docs/benchmark/berka/sphere/prepare_cpty_banks.py +20 -0
  47. hypertopos-0.2.0/docs/benchmark/berka/sphere/prepare_districts.py +24 -0
  48. hypertopos-0.2.0/docs/benchmark/berka/sphere/prepare_loan_accounts.py +20 -0
  49. hypertopos-0.2.0/docs/benchmark/berka/sphere/prepare_operations.py +20 -0
  50. hypertopos-0.2.0/docs/benchmark/berka/sphere/prepare_orders.py +40 -0
  51. hypertopos-0.2.0/docs/benchmark/berka/sphere/prepare_transactions.py +51 -0
  52. hypertopos-0.2.0/docs/benchmark/berka/sphere/prepare_tx_types.py +20 -0
  53. hypertopos-0.2.0/docs/benchmark/berka/sphere/sphere.yaml +222 -0
  54. hypertopos-0.2.0/docs/benchmark/ibm-aml/README.md +349 -0
  55. hypertopos-0.2.0/docs/benchmark/ibm-aml/_layer2_cross_eval.py +292 -0
  56. hypertopos-0.2.0/docs/benchmark/ibm-aml/_layer3_cross_eval.py +335 -0
  57. hypertopos-0.2.0/docs/benchmark/ibm-aml/hi_small_sphere/prepare_accounts.py +210 -0
  58. hypertopos-0.2.0/docs/benchmark/ibm-aml/hi_small_sphere/prepare_currencies.py +31 -0
  59. hypertopos-0.2.0/docs/benchmark/ibm-aml/hi_small_sphere/prepare_payment_formats.py +31 -0
  60. hypertopos-0.2.0/docs/benchmark/ibm-aml/hi_small_sphere/prepare_transactions.py +94 -0
  61. hypertopos-0.2.0/docs/benchmark/ibm-aml/hi_small_sphere/sphere.yaml +202 -0
  62. hypertopos-0.2.0/docs/benchmark/ibm-aml/layer1_passive_scan.py +419 -0
  63. hypertopos-0.2.0/docs/benchmark/ibm-aml/layer2_xgboost_sweep.py +381 -0
  64. hypertopos-0.2.0/docs/benchmark/ibm-aml/layer3_typology_filter.py +292 -0
  65. hypertopos-0.2.0/docs/benchmark/ibm-aml/li_small_sphere/prepare_accounts.py +210 -0
  66. hypertopos-0.2.0/docs/benchmark/ibm-aml/li_small_sphere/prepare_currencies.py +31 -0
  67. hypertopos-0.2.0/docs/benchmark/ibm-aml/li_small_sphere/prepare_payment_formats.py +31 -0
  68. hypertopos-0.2.0/docs/benchmark/ibm-aml/li_small_sphere/prepare_transactions.py +94 -0
  69. hypertopos-0.2.0/docs/benchmark/ibm-aml/li_small_sphere/sphere.yaml +202 -0
  70. hypertopos-0.2.0/docs/benchmark/ibm-aml/passive-scan-calibration.md +232 -0
  71. hypertopos-0.2.0/docs/benchmark/nyc-taxi/README.md +291 -0
  72. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/SUMMARY.md +281 -0
  73. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r1/0.1.0-exp-a-report.md +301 -0
  74. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r1/0.1.0-exp-a-scoring.md +23 -0
  75. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r1/0.1.0-exp-b-report.md +321 -0
  76. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r1/0.1.0-exp-b-scoring.md +20 -0
  77. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r1/0.1.0-exp-c-report.md +492 -0
  78. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r1/0.1.0-settings.md +84 -0
  79. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r2/0.1.0-exp-a-report.md +269 -0
  80. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r2/0.1.0-exp-a-scoring.md +42 -0
  81. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r2/0.1.0-exp-b-report.md +253 -0
  82. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r2/0.1.0-exp-b-scoring.md +20 -0
  83. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r2/0.1.0-exp-c-report.md +388 -0
  84. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r2/0.1.0-settings.md +91 -0
  85. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r3/0.1.0-exp-a-report.md +331 -0
  86. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r3/0.1.0-exp-a-scoring.md +24 -0
  87. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r3/0.1.0-exp-b-report.md +335 -0
  88. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r3/0.1.0-exp-b-scoring.md +20 -0
  89. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r3/0.1.0-exp-c-report.md +455 -0
  90. hypertopos-0.2.0/docs/benchmark/nyc-taxi/results/0.1.0/r3/0.1.0-settings.md +91 -0
  91. hypertopos-0.2.0/docs/benchmark/nyc-taxi/sphere/prepare_trips.py +203 -0
  92. hypertopos-0.2.0/docs/benchmark/nyc-taxi/sphere/sphere.yaml +159 -0
  93. hypertopos-0.2.0/docs/benchmarks.md +64 -0
  94. hypertopos-0.2.0/docs/concepts.md +265 -0
  95. hypertopos-0.2.0/docs/configuration.md +980 -0
  96. hypertopos-0.2.0/docs/data-format.md +197 -0
  97. hypertopos-0.2.0/docs/images/build-pipeline.svg +83 -0
  98. hypertopos-0.2.0/docs/images/core-objects.svg +131 -0
  99. hypertopos-0.2.0/docs/images/cutting-plane.svg +42 -0
  100. hypertopos-0.2.0/docs/images/directory-layout.svg +98 -0
  101. hypertopos-0.2.0/docs/images/hypertopos-overview.svg +172 -0
  102. hypertopos-0.2.0/docs/images/model-lifecycle.svg +110 -0
  103. hypertopos-0.2.0/docs/images/navigation-primitives.svg +113 -0
  104. hypertopos-0.2.0/docs/images/three-scales.svg +96 -0
  105. hypertopos-0.2.0/docs/quickstart.md +113 -0
  106. hypertopos-0.2.0/hypertopos/__init__.py +19 -0
  107. hypertopos-0.2.0/hypertopos/builder/__init__.py +25 -0
  108. hypertopos-0.2.0/hypertopos/builder/_stats.py +351 -0
  109. hypertopos-0.2.0/hypertopos/builder/_writer.py +248 -0
  110. hypertopos-0.2.0/hypertopos/builder/builder.py +3708 -0
  111. hypertopos-0.2.0/hypertopos/builder/derived.py +828 -0
  112. hypertopos-0.2.0/hypertopos/builder/mapping.py +243 -0
  113. hypertopos-0.2.0/hypertopos/cli/__init__.py +14 -0
  114. hypertopos-0.2.0/hypertopos/cli/__main__.py +10 -0
  115. hypertopos-0.2.0/hypertopos/cli/build.py +972 -0
  116. hypertopos-0.2.0/hypertopos/cli/info.py +63 -0
  117. hypertopos-0.2.0/hypertopos/cli/main.py +110 -0
  118. hypertopos-0.2.0/hypertopos/cli/schema.py +850 -0
  119. hypertopos-0.2.0/hypertopos/cli/sources.py +230 -0
  120. hypertopos-0.2.0/hypertopos/engine/__init__.py +4 -0
  121. hypertopos-0.2.0/hypertopos/engine/aggregation.py +2418 -0
  122. hypertopos-0.2.0/hypertopos/engine/calibration.py +125 -0
  123. hypertopos-0.2.0/hypertopos/engine/chains.py +491 -0
  124. hypertopos-0.2.0/hypertopos/engine/composition.py +180 -0
  125. hypertopos-0.2.0/hypertopos/engine/datafusion_agg.py +602 -0
  126. hypertopos-0.2.0/hypertopos/engine/forecast.py +327 -0
  127. hypertopos-0.2.0/hypertopos/engine/geometry.py +1036 -0
  128. hypertopos-0.2.0/hypertopos/engine/invalidation.py +4 -0
  129. hypertopos-0.2.0/hypertopos/engine/investigation.py +61 -0
  130. hypertopos-0.2.0/hypertopos/engine/subprocess_agg.py +742 -0
  131. hypertopos-0.2.0/hypertopos/model/__init__.py +4 -0
  132. hypertopos-0.2.0/hypertopos/model/manifest.py +42 -0
  133. hypertopos-0.2.0/hypertopos/model/objects.py +123 -0
  134. hypertopos-0.2.0/hypertopos/model/sphere.py +313 -0
  135. hypertopos-0.2.0/hypertopos/navigation/__init__.py +4 -0
  136. hypertopos-0.2.0/hypertopos/navigation/navigator.py +8461 -0
  137. hypertopos-0.2.0/hypertopos/navigation/scanner.py +832 -0
  138. hypertopos-0.2.0/hypertopos/sphere.py +295 -0
  139. hypertopos-0.2.0/hypertopos/storage/__init__.py +4 -0
  140. hypertopos-0.2.0/hypertopos/storage/_schemas.py +50 -0
  141. hypertopos-0.2.0/hypertopos/storage/cache.py +30 -0
  142. hypertopos-0.2.0/hypertopos/storage/reader.py +1311 -0
  143. hypertopos-0.2.0/hypertopos/storage/writer.py +931 -0
  144. hypertopos-0.2.0/hypertopos/utils/__init__.py +4 -0
  145. hypertopos-0.2.0/hypertopos/utils/arrow.py +111 -0
  146. hypertopos-0.2.0/pyproject.toml +50 -0
  147. hypertopos-0.2.0/tests/.gitkeep +0 -0
  148. hypertopos-0.2.0/tests/conftest.py +83 -0
  149. hypertopos-0.2.0/tests/fixtures/generate_fixtures.py +275 -0
  150. hypertopos-0.2.0/tests/test_aggregation_engine.py +1884 -0
  151. hypertopos-0.2.0/tests/test_arrow_utils.py +183 -0
  152. hypertopos-0.2.0/tests/test_builder.py +1810 -0
  153. hypertopos-0.2.0/tests/test_builder_alias.py +103 -0
  154. hypertopos-0.2.0/tests/test_builder_derived.py +1228 -0
  155. hypertopos-0.2.0/tests/test_builder_edges.py +147 -0
  156. hypertopos-0.2.0/tests/test_cache.py +41 -0
  157. hypertopos-0.2.0/tests/test_calibration.py +279 -0
  158. hypertopos-0.2.0/tests/test_chains.py +435 -0
  159. hypertopos-0.2.0/tests/test_cli.py +129 -0
  160. hypertopos-0.2.0/tests/test_cli_alias.py +257 -0
  161. hypertopos-0.2.0/tests/test_cli_sources.py +343 -0
  162. hypertopos-0.2.0/tests/test_compaction.py +4 -0
  163. hypertopos-0.2.0/tests/test_composition.py +60 -0
  164. hypertopos-0.2.0/tests/test_continuous_event_dims.py +533 -0
  165. hypertopos-0.2.0/tests/test_data_quality_prop.py +291 -0
  166. hypertopos-0.2.0/tests/test_datafusion_agg.py +788 -0
  167. hypertopos-0.2.0/tests/test_detection.py +406 -0
  168. hypertopos-0.2.0/tests/test_edge_table.py +189 -0
  169. hypertopos-0.2.0/tests/test_engine.py +2119 -0
  170. hypertopos-0.2.0/tests/test_forecast.py +317 -0
  171. hypertopos-0.2.0/tests/test_fts.py +511 -0
  172. hypertopos-0.2.0/tests/test_geometric_path.py +582 -0
  173. hypertopos-0.2.0/tests/test_geometry_stats.py +354 -0
  174. hypertopos-0.2.0/tests/test_hybrid_search.py +284 -0
  175. hypertopos-0.2.0/tests/test_incremental.py +233 -0
  176. hypertopos-0.2.0/tests/test_invalidation.py +4 -0
  177. hypertopos-0.2.0/tests/test_investigation.py +71 -0
  178. hypertopos-0.2.0/tests/test_mapping.py +386 -0
  179. hypertopos-0.2.0/tests/test_model.py +938 -0
  180. hypertopos-0.2.0/tests/test_mvcc_session.py +261 -0
  181. hypertopos-0.2.0/tests/test_navigation.py +7633 -0
  182. hypertopos-0.2.0/tests/test_navigator_alerts.py +49 -0
  183. hypertopos-0.2.0/tests/test_observability.py +1361 -0
  184. hypertopos-0.2.0/tests/test_precision_stack.py +870 -0
  185. hypertopos-0.2.0/tests/test_reputation.py +76 -0
  186. hypertopos-0.2.0/tests/test_row_id_cache.py +205 -0
  187. hypertopos-0.2.0/tests/test_scanner.py +647 -0
  188. hypertopos-0.2.0/tests/test_sphere.py +205 -0
  189. hypertopos-0.2.0/tests/test_sphere_overview_perf.py +75 -0
  190. hypertopos-0.2.0/tests/test_stats_guard.py +41 -0
  191. hypertopos-0.2.0/tests/test_storage.py +3354 -0
  192. hypertopos-0.2.0/tests/test_streaming_reads.py +144 -0
  193. hypertopos-0.2.0/tests/test_subprocess_agg.py +961 -0
  194. hypertopos-0.2.0/tests/test_temporal_centroids.py +358 -0
  195. hypertopos-0.2.0/tests/test_trajectory_ann.py +259 -0
  196. hypertopos-0.2.0/tests/test_witness_set.py +56 -0
@@ -0,0 +1,40 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.pyo
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ .venv/
9
+ venv/
10
+
11
+ # Testing
12
+ .pytest_cache/
13
+ .coverage
14
+ htmlcov/
15
+
16
+ # Type checking
17
+ .mypy_cache/
18
+
19
+ # Linting
20
+ .ruff_cache/
21
+
22
+ # IDE
23
+ .idea/
24
+ .vscode/
25
+ .cursor/
26
+ *.iml
27
+
28
+ # Claude Code
29
+ .claude/
30
+ .worktrees/
31
+ .agents/
32
+
33
+ # Generated test fixtures
34
+ tests/fixtures/gds/
35
+
36
+ # Built spheres (output of hypertopos build)
37
+ **/sphere/gds_*/
38
+
39
+ # Build CLI cache (source parquet + chain pickle)
40
+ .cache/
@@ -0,0 +1,156 @@
1
+ # Changelog
2
+
3
+ All notable changes to hypertopos will be documented in this file.
4
+
5
+ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
+ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.2.0] — 2026-04-10
9
+
10
+ ### Added
11
+
12
+ **Edge Table**
13
+ - Lance-based edge table per event pattern — auto-emitted at build time from FK data
14
+ - BTREE indexes on `from_key`/`to_key` — O(log n) lookups at any scale
15
+ - `GDSWriter.write_edges()`, `append_edges()`, `create_edge_indexes()`
16
+ - `GDSReader.read_edges()`, `has_edge_table()`, `edge_table_stats()`
17
+ - MVCC session pinning for edge tables
18
+ - YAML `edge_table` config (optional, auto-detected from graph_features/relations)
19
+ - `--no-edges` CLI flag
20
+
21
+ **Navigation**
22
+ - `find_geometric_path()` — beam search with geometric/anomaly/shortest/amount scoring
23
+ - `discover_chains()` — runtime temporal BFS on edge table (no build-time extraction needed)
24
+ - `find_counterparties()` — edge table fast path with BTREE lookup and amount aggregates
25
+ - `entity_flow()` — net flow per counterparty via edge table
26
+ - `contagion_score()` / `contagion_score_batch()` — anomaly neighborhood scoring via edge table
27
+ - `degree_velocity()` — temporal connection velocity (degree change over time buckets)
28
+ - `investigation_coverage()` — agent guidance: explored vs unexplored counterparty coverage
29
+ - `propagate_influence()` — BFS influence propagation with geometric decay and tx_count weighting
30
+ - `cluster_bridges()` — geometry+graph fusion: find entities bridging geometric clusters
31
+ - `anomalous_edges()` — event-level scoring between entity pairs (uses event geometry, not anchor)
32
+ - Amount-weighted scoring mode for `find_geometric_path` — `scoring="amount"`
33
+ - Lazy adjacency expansion — never loads full edge table into memory
34
+ - Anchor pattern resolution for geometric scoring (event pattern edge table → anchor pattern deltas)
35
+ - Score interpretation hint in `find_geometric_path` summary
36
+
37
+ **PassiveScanner**
38
+ - `"graph"` source type — contagion scoring via edge table + geometry anomaly check
39
+ - `add_graph_source()` — register graph contagion source with configurable threshold
40
+ - `auto_discover()` — auto-detects graph sources for event patterns with edge tables
41
+
42
+ **MCP Tools**
43
+ - `find_geometric_path` — path finding with geometric coherence scoring (+ amount mode)
44
+ - `discover_chains` — runtime chain discovery without pre-built chain lines
45
+ - `edge_stats` — edge table statistics (row count, degree, timestamp/amount range)
46
+ - `entity_flow` — net flow analysis per counterparty
47
+ - `contagion_score` / `contagion_score_batch` — anomaly neighborhood scoring
48
+ - `degree_velocity` — temporal connection velocity
49
+ - `investigation_coverage` — agent guidance for investigation coverage
50
+ - `propagate_influence` — BFS influence propagation with geometric decay and tx_count weighting
51
+ - `cluster_bridges` — geometry+graph fusion cluster bridge analysis
52
+ - `anomalous_edges` — event-level edge scoring between entity pairs
53
+ - Output cap (top 20 paths / top 100 influenced) with warning when truncated
54
+
55
+ **Builder**
56
+ - Edge table emission in all build paths (standard, streaming, chunked)
57
+ - Adjacency deduplication — one entry per unique neighbor
58
+ - Self-loop filtering in graph traversal and temporal chain BFS
59
+ - Edge stats cached at build time (`_gds_meta/edge_stats/`) for instant reads
60
+ - Timestamp string parsing with sample-based format detection (6 formats supported)
61
+ - Windows timezone database fallback in timestamp parsing
62
+ - Edge table auto-detect infers `timestamp_col` and `amount_col` from common column names (`timestamp`/`ts`/`event_time`/`created_at`/`tx_date`/`date` and `amount_received`/`amount`/`amount_paid`/`value`/`total`/`amt`) when not explicitly configured
63
+ - `sphere.json` edge_table metadata persists full config (`from_col`, `to_col`, plus `timestamp_col`/`amount_col` when set)
64
+
65
+ ---
66
+
67
+ ## [0.1.0] — 2026-04-07
68
+
69
+ First public release. Core GDS stack.
70
+
71
+ ### Added
72
+
73
+ **Sphere Builder**
74
+ - Declarative YAML config (`sphere.yaml`) with CLI: `hypertopos build`, `validate`, `info`
75
+ - Three source tiers: single file (CSV/Parquet), multi-file join, Python script
76
+ - Derived dimensions (count, sum, avg, windowed metrics, IET)
77
+ - Precomputed dimensions with `edge_max` continuous mode
78
+ - Graph features: `in_degree`, `out_degree`, `reciprocity`, `counterpart_overlap`
79
+ - Composite lines (multi-key entities)
80
+ - Chain lines (temporal BFS extraction with parallel processing)
81
+ - Aliases with cutting-plane sub-populations
82
+ - Temporal snapshot builder
83
+ - `dimension_weights: kurtosis` automatic weighting
84
+ - Incremental update (`GDSBuilder.incremental_update()`)
85
+
86
+ **Navigation (π1–π12)**
87
+ - π1 `walk_line` — step along a line
88
+ - π2 `jump_polygon` — cross to related line via edge
89
+ - π3 `dive_solid` — enter temporal history
90
+ - π4 `emerge` — return to surface
91
+ - π5 `attract_anomaly` — find outliers in population
92
+ - π6 `attract_boundary` — find entities near alias boundary
93
+ - π7 `attract_hub` — find most connected entities
94
+ - π8 `attract_cluster` — discover geometric archetypes (k-means++)
95
+ - π9 `attract_drift` — find entities with highest temporal drift
96
+ - π10 `attract_trajectory` — find entities with similar trajectory (ANN)
97
+ - π11 `attract_population_compare` — compare geometry across time windows
98
+ - π12 `attract_regime_change` — detect structural shifts in population
99
+
100
+ **Analysis & Investigation**
101
+ - `explain_anomaly` — structured explanation with witness set, repair set, severity, reputation
102
+ - `contrast_populations` — dimension-by-dimension comparison (Cohen's d)
103
+ - `find_similar_entities` — ANN search in delta-space
104
+ - `centroid_map` — group centroids for sub-population positioning
105
+ - `composite_risk` — cross-pattern risk scoring (Fisher's method)
106
+ - `cross_pattern_profile` — multi-pattern risk view for one entity
107
+ - Full-text search (`search_entities_fts`) and hybrid search (semantic + FTS with RRF)
108
+ - 10 detection recipes: cross-pattern discrepancy, neighbor contamination, trajectory anomaly, segment shift, event rate anomaly, hub concentration, subgroup inflation, collective drift, temporal burst, data quality
109
+
110
+ **Forecasting**
111
+ - Trajectory extrapolation (exponentially-weighted linear regression)
112
+ - `forecast_anomaly_status` — predict future anomaly state
113
+ - `forecast_segment_crossing` — predict boundary crossings
114
+ - Pluggable `ForecastProvider` protocol for external backends
115
+
116
+ **Model**
117
+ - Point, Edge, Polygon, Solid, SolidSlice
118
+ - Line, Pattern, Alias, Manifest, Contract
119
+ - CalibrationTracker (online Welford drift detection)
120
+ - MVCC sessions (version-pinned reads per agent)
121
+
122
+ **Engine**
123
+ - Delta vector computation with z-score normalization
124
+ - Anomaly detection: theta threshold + conformal p-values
125
+ - Mahalanobis variant (ellipsoidal boundary via Cholesky decomposition)
126
+ - K-means++ clustering with automatic k selection (silhouette)
127
+ - DTW trajectory comparison
128
+ - Reputation scoring (Beta distribution posterior)
129
+ - Investigation engine (witness set, anti-witness, severity classification)
130
+ - Composition: Fisher's method for p-value combination, co-dispersion (Spearman)
131
+
132
+ **Storage**
133
+ - Arrow IPC format with Lance vector index (IVF-PQ)
134
+ - BTREE, BITMAP, FTS indices on points
135
+ - Append-only writes, LRU polygon cache
136
+ - Geometry stats cache, temporal centroid cache, trajectory ANN index
137
+ - Optional DataFusion SQL aggregation (~30x speedup on 5M+ events)
138
+
139
+ **PassiveScanner**
140
+ - Multi-source batch screening: geometry, borderline, points, compound sources
141
+ - `auto_discover` — automatic source registration from sphere structure
142
+ - Density boost, weighted scoring mode
143
+ - 4 operating stages
144
+
145
+ **Validation**
146
+ - Berka banking benchmark (skill calibration, 6 runs)
147
+ - NYC Yellow Taxi benchmark (domain generalization, 3 runs)
148
+ - IBM AML benchmark (3-layer pipeline with cross-validation)
149
+
150
+ **Documentation**
151
+ - Quick Start guide
152
+ - Core Concepts with mathematical foundation
153
+ - API Reference with navigation primitive families
154
+ - Configuration YAML reference with aliases
155
+ - Physical data format reference
156
+ - Architecture overview
@@ -0,0 +1,83 @@
1
+ # Business Source License 1.1
2
+
3
+ **Licensor:** Karol Kędzia
4
+
5
+ **Licensed Work:** hypertopos
6
+ Copyright (c) 2026 Karol Kędzia.
7
+
8
+ **Additional Use Grant:** You may make production use of the Licensed Work,
9
+ provided that you do not offer the Licensed Work to third parties on a hosted
10
+ or embedded basis as a competitive offering.
11
+
12
+ For purposes of this License:
13
+
14
+ - **Competitive offering** means a Product offered to third parties on a paid
15
+ basis, including through paid support arrangements, that significantly
16
+ overlaps with the capabilities of the Licensor's paid version(s) of the
17
+ Licensed Work. If your Product is not a competitive offering when first made
18
+ generally available, it does not become a competitive offering later merely
19
+ because the Licensor releases new versions with additional capabilities.
20
+ - **Product** means software offered to end users to run in their own
21
+ environments or offered as a service on a hosted basis.
22
+ - **Embedded** means including source code or executable code from the Licensed
23
+ Work in a competitive offering, or packaging a competitive offering in a way
24
+ that requires the Licensed Work to be accessed or downloaded for the offering
25
+ to operate.
26
+ - **Internal use** within an organization is not a competitive offering. Your
27
+ organization includes entities under common control.
28
+
29
+ **Change Date:** 2029-04-09
30
+
31
+ **Change License:** Apache License, Version 2.0
32
+
33
+ Commercial licensing inquiries: contact@hypertopos.com
34
+
35
+ ---
36
+
37
+ ## Terms
38
+
39
+ The Licensor grants you the right to copy, modify, create derivative works,
40
+ redistribute, and make non-production use of the Licensed Work. The Licensor
41
+ may make an Additional Use Grant, above, permitting limited production use.
42
+
43
+ Effective on the Change Date, or the third anniversary of the first publicly
44
+ available distribution of a specific version of the Licensed Work under this
45
+ License, whichever comes first, the rights granted above terminate and the
46
+ Change License applies instead.
47
+
48
+ If your use of the Licensed Work does not comply with the requirements in
49
+ effect under this License, you must obtain a commercial license from the
50
+ Licensor, its affiliates, or authorized resellers, or stop using the Licensed
51
+ Work.
52
+
53
+ All copies of the original and modified Licensed Work, and derivative works of
54
+ the Licensed Work, remain subject to this License. This License applies
55
+ separately to each version of the Licensed Work, and the Change Date may vary
56
+ by version.
57
+
58
+ You must conspicuously display this License on each original or modified copy
59
+ of the Licensed Work. If you receive a copy of the Licensed Work under a
60
+ different license, the terms of that license do not override this License.
61
+
62
+ Any use of the Licensed Work in violation of this License terminates the rights
63
+ granted under this License for the current and all other versions of the
64
+ Licensed Work.
65
+
66
+ This License does not grant you any right in any trademark or logo of the
67
+ Licensor or its affiliates, except where this License expressly requires it.
68
+ TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON AN
69
+ "AS IS" BASIS. THE LICENSOR DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS OR
70
+ IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
71
+ PURPOSE, NON-INFRINGEMENT, AND TITLE.
72
+
73
+ This License text may be used to license your own works, and may be referred to
74
+ as "Business Source License" provided you follow the public guidance published
75
+ by MariaDB. Copying this License without modification is permitted as long as
76
+ you keep the original text intact. Modifications to this License are not
77
+ permitted.
78
+
79
+ ---
80
+
81
+ License text copyright (c) 2024 MariaDB plc, All Rights Reserved.
82
+ "Business Source License" is a trademark of MariaDB plc.
83
+
@@ -0,0 +1,26 @@
1
+ Metadata-Version: 2.4
2
+ Name: hypertopos
3
+ Version: 0.2.0
4
+ Summary: Navigate your data like space.
5
+ Project-URL: Homepage, https://github.com/hypertopos/hypertopos-py
6
+ Project-URL: Documentation, https://github.com/hypertopos/hypertopos-py/tree/main/docs
7
+ Project-URL: Repository, https://github.com/hypertopos/hypertopos-py
8
+ Project-URL: Issues, https://github.com/hypertopos/hypertopos-py/issues
9
+ Author: Karol Kędzia
10
+ License: BSL-1.1
11
+ License-File: LICENSE.md
12
+ Requires-Python: >=3.12
13
+ Requires-Dist: numpy>=1.26
14
+ Requires-Dist: pyarrow>=14.0
15
+ Requires-Dist: pylance>=0.20
16
+ Requires-Dist: pyyaml>=6.0
17
+ Provides-Extra: datafusion
18
+ Requires-Dist: datafusion>=40.0; extra == 'datafusion'
19
+ Provides-Extra: dev
20
+ Requires-Dist: mypy; extra == 'dev'
21
+ Requires-Dist: pytest; extra == 'dev'
22
+ Requires-Dist: pytest-cov; extra == 'dev'
23
+ Requires-Dist: ruff; extra == 'dev'
24
+ Provides-Extra: mcp
25
+ Requires-Dist: mcp[cli]>=1.20; extra == 'mcp'
26
+ Requires-Dist: tzdata>=2024.1; extra == 'mcp'
@@ -0,0 +1,120 @@
1
+ # hypertopos
2
+
3
+ > **Navigate your data like space.**
4
+
5
+ [![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
6
+ [![License: BSL 1.1](https://img.shields.io/badge/license-BSL%201.1-orange.svg)](LICENSE.md)
7
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.19482069.svg)](https://doi.org/10.5281/zenodo.19482069)
8
+ [![PyArrow](https://img.shields.io/badge/format-PyArrow-red.svg)](https://arrow.apache.org/docs/python/)
9
+ [![Lance](https://img.shields.io/badge/storage-Lance-blueviolet.svg)](https://github.com/lancedb/lancedb)
10
+ [![MCP](https://img.shields.io/badge/MCP-compatible-green.svg)](https://modelcontextprotocol.io)
11
+ [![Version](https://img.shields.io/badge/version-0.2.0-blue.svg)](pyproject.toml)
12
+
13
+ **hypertopos** transforms relational data into navigable geometric space.
14
+
15
+ Every entity — customer, vendor, transaction — accumulates a **polygon** built from its typed relationships: who it connects to, through which channels, how often, and with what properties filled or missing. The shape of that polygon is the entity's geometric identity.
16
+
17
+ A **pattern** calibrates what "typical" looks like for a population: the mean shape (μ), the spread per dimension (σ), and a threshold (θ) derived from the empirical distribution. The resulting coordinate space supports clustering, population comparison, similarity search, hub analysis, boundary exploration, drift tracking, and anomaly detection — no model training, no labeled data, no tuning.
18
+
19
+ Over time, polygons deform into **solids** — temporal stacks that capture how an entity's geometry evolves. Drift, trajectory similarity, and regime shifts become measurable geometric quantities.
20
+
21
+ Twelve **navigation primitives** (π1–π12) let AI agents walk lines, jump across relationships, discover clusters, compare populations, find hubs, and track temporal change — all as stateful, composable geometric operations.
22
+
23
+ ```bash
24
+ pip install hypertopos
25
+ ```
26
+
27
+ ![hypertopos overview](docs/images/hypertopos-overview.svg)
28
+
29
+ ## Under the Hood
30
+
31
+ At its core, the system builds a population-calibrated coordinate space from typed relationships and entity properties — and enables agents to navigate it.
32
+
33
+ Each entity occupies a position derived from statistical normalization (μ and σ per dimension), producing a shared coordinate system in ℝ^D.
34
+
35
+ Navigation primitives turn this space into a stateful, step-by-step workspace, where clustering, anomaly detection, drift tracking, and temporal analysis are performed as geometric operations — without model training or learned embeddings.
36
+
37
+ ## What Makes It Different
38
+
39
+ - **Geometry, not queries** — entities live in a population-calibrated coordinate space (μ, σ, θ). Position tells you what's typical. Distance reveals what's unusual, what's similar, and where clusters form.
40
+ - **Navigate, don't search** — twelve primitives (π1–π12) let agents walk lines, jump across relationships, cluster populations, compare groups, find hubs, and track drift. Stateful, composable, geometric.
41
+ - **Graph meets geometry** — edge tables give runtime graph traversal with geometric path scoring. Find paths scored by witness overlap and anomaly propagation — not just hop count. Lazy chain discovery without build-time extraction.
42
+ - **Time is built in** — polygons accumulate into solids. Trajectory similarity, regime change detection, and drift analysis are first-class — not bolted on.
43
+ - **Agents first** — designed for MCP tool-calling. Smart detection recipes, investigation workflows. The sphere is the agent's workspace.
44
+ - **Zero training** — no ML models, no labels, no training pipeline. Population statistics and empirical thresholds. Deploy in minutes.
45
+
46
+ > **Full power via MCP.** The core library provides the Python API. For the complete experience — guided investigation, smart detection, 66 tools exposed to AI agents — use **[hypertopos-mcp](https://github.com/hypertopos/hypertopos-mcp)** (`pip install hypertopos-mcp`). The MCP server turns navigation primitives into agent-callable tools with automatic context management, tool visibility phases, and detection recipes that chain multiple primitives into end-to-end investigative workflows.
47
+
48
+ ## How It Compares
49
+
50
+ | | hypertopos | Neo4j GDS | Vector DBs | PyGOD |
51
+ |---|---|---|---|---|
52
+ | **Geometry from** | Entity's own relationships | Graph algorithms | External embeddings (ML) | Graph neural networks |
53
+ | **Training required** | No | No | Embedding model needed | Yes |
54
+ | **Population-relative** | Yes (μ, σ, θ per population) | No | No | No |
55
+ | **Temporal** | Built-in (solids, drift, regimes) | Snapshot-based | No | No |
56
+ | **Navigation** | 12 stateful primitives | Query-based | KNN search | N/A |
57
+ | **Multi-hop** | Edge table (runtime graph + lazy chains) + pre-computed chain geometry | Native (Cypher, ad-hoc) | No | No |
58
+ | **Anomaly propagation** | Contagion scoring + influence BFS in delta-space | No | No | Local neighborhood only |
59
+ | **Agent-native (MCP)** | Yes | No | No | No |
60
+ | **Explains why** | Witness sets, dimension ranking | Centrality scores | Nearest neighbors | Anomaly scores |
61
+
62
+ hypertopos is not a graph database, a vector store, or an ML framework. It is a **geometric coordinate system** built from relational structure — designed for AI agents to navigate, not for humans to query.
63
+
64
+ ## Why This Matters
65
+
66
+ Most systems either:
67
+
68
+ - operate on raw relationships (queries, traversals), or
69
+ - rely on trained models (embeddings, ML pipelines)
70
+
71
+ This approach provides a third option:
72
+
73
+ - a persistent, interpretable coordinate system
74
+ - consistent across time
75
+ - usable for multiple analytical tasks without retraining
76
+
77
+ This enables simpler, more transparent analysis of complex relational systems.
78
+
79
+ ## Documentation
80
+
81
+ | | |
82
+ |---|---|
83
+ | **[Quick Start](docs/quickstart.md)** | Install, build a sphere, navigate — in one page |
84
+ | **[Core Concepts](docs/concepts.md)** | GDS mental model, objects, mathematical foundation |
85
+ | **[API Reference](docs/api-reference.md)** | Python API — classes, methods, navigation primitives, errors |
86
+ | **[Configuration](docs/configuration.md)** | Sphere builder YAML reference |
87
+ | **[Data Format](docs/data-format.md)** | Physical storage — directory layout, Arrow schemas |
88
+ | **[Architecture](docs/architecture.md)** | Package structure, layers, runtime flow |
89
+ | **[Benchmarks](docs/benchmarks.md)** | Validation results — banking, AML, transportation |
90
+
91
+ ## Tech Stack
92
+
93
+ | Technology | Role |
94
+ |------------|------|
95
+ | Python 3.12+ | Core language |
96
+ | PyArrow | Arrow IPC format, in-memory transport |
97
+ | NumPy | Vector operations, delta computation, DTW |
98
+ | Lance | Vector index (IVF-PQ), scalar indices, predicate pushdown |
99
+ | PyYAML | Sphere builder YAML config |
100
+
101
+ ## License
102
+
103
+ Licensed under the [Business Source License 1.1](LICENSE.md).
104
+
105
+ | Question | Answer |
106
+ |----------|--------|
107
+ | Can I use it internally? | Yes |
108
+ | Development, testing, research? | Yes |
109
+ | Host as a service for third parties? | Not if it competes with the Licensor's paid offering |
110
+ | Embed in a commercial product? | Not if competitive |
111
+ | When does it become Apache 2.0? | On the Change Date or third anniversary, whichever comes first |
112
+
113
+ For commercial licensing: [contact@hypertopos.com](mailto:contact@hypertopos.com)
114
+
115
+ ## Contributing
116
+
117
+ **Core library** — requires a Contributor License Agreement (CLA).
118
+ **MCP server & docs** — DCO sign-off only (`Signed-off-by: Name <email>`).
119
+
120
+ Bug reports, feature requests, and discussion via [GitHub Issues](https://github.com/hypertopos/hypertopos-py/issues).
@@ -0,0 +1,73 @@
1
+ # hypertopos — Roadmap
2
+
3
+ > Planned direction. Priorities may change based on feedback.
4
+
5
+ ## Current: 0.2.0
6
+
7
+ **Graph meets geometry.** The main theme is the unified **edge table** — a Lance-based adjacency index per event pattern with BTREE lookups, auto-emitted at build time, giving runtime graph traversal at O(log n) scale.
8
+
9
+ - **Edge table** — one Lance dataset per event pattern, BTREE indexes on `from_key`/`to_key`, MVCC session pinning, YAML `edge_table` config (auto-detected from `graph_features`/relations), `--no-edges` CLI flag
10
+ - **11 new navigation functions** — `find_geometric_path` (beam search with geometric/anomaly/shortest/amount scoring), `discover_chains` (runtime temporal BFS, no build-time extraction), `entity_flow` (net flow per counterparty), `contagion_score` / `contagion_score_batch` (anomaly neighborhood scoring), `degree_velocity`, `investigation_coverage`, `propagate_influence` (BFS with geometric decay), `cluster_bridges` (geometry+graph fusion), `anomalous_edges` (event-level scoring)
11
+ - **`find_counterparties` fast path** — edge table BTREE lookup with amount aggregates when `pattern_id` given
12
+ - **PassiveScanner graph source** — `"graph"` source type for contagion scoring, `add_graph_source()`, `auto_discover()` auto-detects edge tables
13
+ - **11 new MCP tools** — edge table tools available in Phase 2 (immediately after `open_sphere`), no `sphere_overview` needed. Total: 66 MCP tools (55 → 66)
14
+ - **7 fraud investigation recipes** added to `gds-fraud-investigator` skill — Mirror Transaction, Pass-Through, Burst Detection, Weighted Reciprocity, Financial Profile, Concentration Risk, Benford's Law
15
+ - **All 8 skills updated** — edge table tools integrated across `gds-analyst`, `gds-detective`, `gds-explorer`, `gds-fraud-investigator`, `gds-investigator`, `gds-monitor`, `gds-scanner`, `gds-sphere-designer`
16
+ - **Builder improvements** — adjacency deduplication, self-loop filtering, edge stats cached at build time (`_gds_meta/edge_stats/`), timestamp string parsing with 6-format sample-based detection, Windows timezone database fallback
17
+ - **Performance** — `passive_scan` 84s → <10s, `detect_pattern` 86s → <15s, `cluster_bridges` 31s → <5s
18
+ - **Fixes** — `find_anomalies` Lance duplicate row deduplication, zero-variance `tracked_properties` cleanup in AML benchmark spheres
19
+
20
+ ---
21
+
22
+ ## 0.1.0
23
+
24
+ Core GDS stack — sphere build, geometry, navigation, MCP server, storage/performance, and maintainability.
25
+
26
+ - Sphere builder — declarative YAML config, CLI (`build`, `validate`, `info`), Tier 1-3 sources, derived/precomputed/graph dimensions, composite lines, chain lines
27
+ - Navigation primitives π1–π12 — walk, jump, dive, emerge, attract (anomaly, boundary, hub, cluster), drift, trajectory, population compare, regime change
28
+ - Aliases — cutting-plane sub-populations with derived geometry (W vector, bias, direction)
29
+ - Temporal snapshots — deformation history, solid construction, temporal centroids
30
+ - Investigation — `explain_anomaly`, witness set, anti-witness, reputation scoring
31
+ - Forecasting — trajectory extrapolation, anomaly forecast, segment crossing prediction, pluggable `ForecastProvider` protocol
32
+ - Full-text search — FTS index on points, `search_entities_fts`, hybrid search (semantic + FTS with reciprocal rank fusion)
33
+ - CalibrationTracker — online Welford drift detection with soft/hard thresholds
34
+ - MVCC sessions — Manifest/Contract version pinning, isolated reads per agent
35
+ - PassiveScanner — multi-source batch screening (geometry, borderline, points, compound), auto-discover, density boost
36
+ - Incremental update — `GDSBuilder.incremental_update()` for appending without full rebuild
37
+ - MCP server (55 tools, smart detection mode, 3-phase tool visibility)
38
+ - Validation suite — Berka (skill calibration), NYC Taxi (domain generalization), IBM AML (3-layer benchmark)
39
+ - Storage — Lance vector index, Arrow IPC, LRU cache, append-only writes
40
+ - Docs — quickstart, concepts, architecture, configuration, API reference, data format
41
+
42
+ ---
43
+
44
+ ## Plan: 0.3.0
45
+
46
+ **Storage / performance:**
47
+ - Upgrade `pylance 2.0.1 → 3.0.1` — format 2.2, ~300% faster scans, LZ4/zstd compression
48
+ - Replace `shutil.copytree` with `lance.dataset.clone()` in test fixtures (O(1) metadata clone)
49
+ - Builder: incremental rebuild (geometry-only without `--force` wipe)
50
+
51
+ **Code refactoring:**
52
+ - Break up oversized modules into smaller, domain-focused components
53
+ - Reduce coupling between core layers by replacing private cross-layer access with explicit interfaces where practical
54
+ - Tighten error handling in hot paths so failures are surfaced more consistently
55
+ - Consolidate repeated orchestration logic into shared helpers instead of duplicating it across modules
56
+ - Make the refactor pass incremental: preserve behavior, improve structure, then revisit deeper architectural boundaries
57
+
58
+ **PassiveScanner evolution:**
59
+ - Native temporal source support for direct temporal inputs, without requiring manual dataset plumbing in benchmark scripts
60
+ - Optional weighted scoring mode that uses continuous intensity instead of binary counts
61
+ - **SphereProfiler** — autonomous sphere scanner that profiles all patterns, runs calibration sweeps across source combinations, proposes optimal PassiveScanner composition for Layer 1 surveillance. Core loop: enumerate patterns → single-source anomaly scans → greedy multi-source combination → ranked composition report. No labeled GT needed; optional GT file unlocks supervised calibration.
62
+
63
+ **Anomaly detection quality:**
64
+ - Confidence scoring, robust estimators, multi-scale resolution — improve anomaly precision and reduce false positives on heavy-tail and multi-modal populations
65
+
66
+ ---
67
+
68
+ ## Future
69
+
70
+ - Cross-sphere comparison — dimensionless metrics across independently calibrated coordinate spaces
71
+ - What-if analysis — hypothetical edge changes producing modified coordinate vectors
72
+ - Dimension access control — per-agent visibility constraints on delta dimensions
73
+ - Runtime latency benchmarks in package docs
@@ -0,0 +1,15 @@
1
+ # Security
2
+
3
+ ## Current version: 0.2.x
4
+
5
+ hypertopos runs locally. No network services, no auth layer, no multi-tenancy.
6
+
7
+ ## What to watch for
8
+
9
+ - **Pickle files** — chain cache (`.cache/chains_*.pkl`) uses pickle. Don't load cache files from untrusted sources.
10
+ - **Sphere paths** — `HyperSphere.open(path)` reads from the local filesystem. Don't point it at user-controlled paths without validation.
11
+ - **MCP server** — communicates over stdio. Not designed for network exposure.
12
+
13
+ ## Reporting
14
+
15
+ If you find a security issue: [GitHub private vulnerability reporting](https://github.com/hypertopos/hypertopos-py/security/advisories/new) or email [contact@hypertopos.com](mailto:contact@hypertopos.com).
@@ -0,0 +1,38 @@
1
+ # hypertopos Documentation
2
+
3
+ > Package documentation for hypertopos — the AI-first geometric data sphere.
4
+
5
+ ## Reading Paths
6
+
7
+ **New to hypertopos?** Start here:
8
+
9
+ 1. [Quick Start](quickstart.md) — install, build, navigate
10
+ 2. [Core Concepts](concepts.md) — the GDS mental model
11
+ 3. [Configuration](configuration.md) — sphere.yaml reference
12
+
13
+ **Building a sphere?**
14
+ → [Configuration](configuration.md) — full YAML reference with examples
15
+
16
+ **Writing Python code?**
17
+ → [API Reference](api-reference.md) — classes, methods, error types
18
+
19
+ **Understanding the format?**
20
+ → [Data Format](data-format.md) — directory layout, Arrow schemas, sphere.json
21
+
22
+ **Understanding the design?**
23
+ → [Architecture](architecture.md) — package structure, runtime flow
24
+
25
+ **Checking the evidence?**
26
+ → [Benchmarks](benchmarks.md) — validation results across three domains
27
+
28
+ ## All Documents
29
+
30
+ | Document | Description |
31
+ |----------|-------------|
32
+ | [quickstart.md](quickstart.md) | From zero to navigating a sphere |
33
+ | [concepts.md](concepts.md) | Core GDS mental model and vocabulary |
34
+ | [architecture.md](architecture.md) | Package structure, layers, design principles |
35
+ | [configuration.md](configuration.md) | Sphere builder YAML reference |
36
+ | [api-reference.md](api-reference.md) | Python API — classes, methods, errors |
37
+ | [data-format.md](data-format.md) | Physical storage format on disk |
38
+ | [benchmarks.md](benchmarks.md) | Validation results — Berka, IBM AML, NYC Taxi |