semanticembed 0.7.3__tar.gz → 0.7.4__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 (104) hide show
  1. {semanticembed-0.7.3 → semanticembed-0.7.4}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -1
  2. {semanticembed-0.7.3 → semanticembed-0.7.4}/.github/ISSUE_TEMPLATE/config.yml +2 -2
  3. {semanticembed-0.7.3 → semanticembed-0.7.4}/.github/ISSUE_TEMPLATE/feature_request.yml +1 -1
  4. {semanticembed-0.7.3 → semanticembed-0.7.4}/CHANGELOG.md +14 -0
  5. {semanticembed-0.7.3 → semanticembed-0.7.4}/CODE_OF_CONDUCT.md +1 -1
  6. {semanticembed-0.7.3 → semanticembed-0.7.4}/CONTRIBUTING.md +1 -1
  7. {semanticembed-0.7.3 → semanticembed-0.7.4}/PKG-INFO +28 -17
  8. {semanticembed-0.7.3 → semanticembed-0.7.4}/README.md +26 -15
  9. {semanticembed-0.7.3 → semanticembed-0.7.4}/SECURITY.md +1 -1
  10. semanticembed-0.7.4/docs/dimensions.md +170 -0
  11. {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/getting_started.md +1 -1
  12. {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/license_keys.md +2 -2
  13. {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/validation_methodology.md +2 -2
  14. semanticembed-0.7.4/huggingface/app.py +1291 -0
  15. semanticembed-0.7.4/huggingface/examples/autogen_codereview_after.py +64 -0
  16. semanticembed-0.7.4/huggingface/examples/boutique_after.json +22 -0
  17. semanticembed-0.7.4/huggingface/examples/crewai_content_after.py +63 -0
  18. semanticembed-0.7.4/huggingface/examples/langgraph_research_after.py +69 -0
  19. semanticembed-0.7.4/huggingface/requirements.txt +5 -0
  20. semanticembed-0.7.4/huggingface/smoke_test_phase_b.py +77 -0
  21. semanticembed-0.7.4/huggingface/smoke_test_phase_c.py +69 -0
  22. semanticembed-0.7.4/notebooks/09_quantum_reachability.ipynb +382 -0
  23. {semanticembed-0.7.3 → semanticembed-0.7.4}/pyproject.toml +2 -2
  24. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/__init__.py +1 -1
  25. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/client.py +2 -2
  26. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/exceptions.py +1 -1
  27. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/extract.py +26 -12
  28. semanticembed-0.7.4/tests/test_extract_regressions.py +80 -0
  29. semanticembed-0.7.3/docs/dimensions.md +0 -93
  30. semanticembed-0.7.3/huggingface/app.py +0 -452
  31. semanticembed-0.7.3/huggingface/requirements.txt +0 -3
  32. {semanticembed-0.7.3 → semanticembed-0.7.4}/.claude/skills/analyze/SKILL.md +0 -0
  33. {semanticembed-0.7.3 → semanticembed-0.7.4}/.github/workflows/ci.yml +0 -0
  34. {semanticembed-0.7.3 → semanticembed-0.7.4}/.github/workflows/publish.yml +0 -0
  35. {semanticembed-0.7.3 → semanticembed-0.7.4}/.gitignore +0 -0
  36. {semanticembed-0.7.3 → semanticembed-0.7.4}/LICENSE +0 -0
  37. {semanticembed-0.7.3 → semanticembed-0.7.4}/LICENSE-FAQ.md +0 -0
  38. {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/api_reference.md +0 -0
  39. {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/input_format.md +0 -0
  40. {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/output_format.md +0 -0
  41. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/README.md +0 -0
  42. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/ai_agent_pipeline.json +0 -0
  43. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/autogen_codereview.py +0 -0
  44. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/cicd_pipeline.json +0 -0
  45. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/crewai_content_pipeline.py +0 -0
  46. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/google_online_boutique.json +0 -0
  47. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/langgraph_research_agent.py +0 -0
  48. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/react/README.md +0 -0
  49. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/react/RadarChart.tsx +0 -0
  50. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/react/RiskTable.tsx +0 -0
  51. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/react/TopologySummary.tsx +0 -0
  52. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/react/useSemanticEmbed.ts +0 -0
  53. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/sample_pipeline.json +0 -0
  54. {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/weaveworks_sock_shop.json +0 -0
  55. {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/.gitignore +0 -0
  56. {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/DEPLOY.md +0 -0
  57. {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/README.md +0 -0
  58. {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/build.sh +0 -0
  59. {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/examples/autogen_codereview.py +0 -0
  60. {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/examples/boutique.json +0 -0
  61. {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/examples/crewai_content.py +0 -0
  62. {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/examples/langgraph_research.py +0 -0
  63. {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/01_quickstart.ipynb +0 -0
  64. {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/02_dimensions.ipynb +0 -0
  65. {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/03_drift_detection.ipynb +0 -0
  66. {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/04_bring_your_own.ipynb +0 -0
  67. {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/05_ai_agent_pipelines.ipynb +0 -0
  68. {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/06_cicd_pipelines.ipynb +0 -0
  69. {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/07_opentelemetry.ipynb +0 -0
  70. {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/08_qwen_compression.ipynb +0 -0
  71. {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/qwen_compression_cookbook.py +0 -0
  72. {semanticembed-0.7.3 → semanticembed-0.7.4}/skill/SETUP.md +0 -0
  73. {semanticembed-0.7.3 → semanticembed-0.7.4}/skill/SKILL.md +0 -0
  74. {semanticembed-0.7.3 → semanticembed-0.7.4}/skill/analyze.py +0 -0
  75. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/agent/README.md +0 -0
  76. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/agent/__init__.py +0 -0
  77. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/agent/__main__.py +0 -0
  78. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/agent/agent.py +0 -0
  79. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/agent/gemini_agent.py +0 -0
  80. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/dedupe.py +0 -0
  81. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/explain.py +0 -0
  82. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/find_edges.py +0 -0
  83. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/live.py +0 -0
  84. {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/models.py +0 -0
  85. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/__init__.py +0 -0
  86. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/autogen_app.py +0 -0
  87. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/cdk_app.py +0 -0
  88. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/crewai_app.py +0 -0
  89. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/docker-compose.yml +0 -0
  90. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/langgraph_app.py +0 -0
  91. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/pulumi_app.py +0 -0
  92. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/stack.yaml +0 -0
  93. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/trace_jaeger.json +0 -0
  94. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/trace_otlp.json +0 -0
  95. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/trace_zipkin.json +0 -0
  96. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_aclient.py +0 -0
  97. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_client.py +0 -0
  98. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_dedupe.py +0 -0
  99. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_extract.py +0 -0
  100. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_extract_ai.py +0 -0
  101. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_extract_iac.py +0 -0
  102. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_extract_otel.py +0 -0
  103. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_live.py +0 -0
  104. {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_skill.py +0 -0
@@ -6,7 +6,7 @@ body:
6
6
  attributes:
7
7
  value: |
8
8
  Thanks for taking the time to report a bug. Please fill in the fields below.
9
- For algorithm/encoding/scoring questions, email jeffmurr@seas.upenn.edu — that
9
+ For algorithm/encoding/scoring questions, email jeff.murray@alumni.upenn.edu — that
10
10
  runs server-side and isn't part of this repository.
11
11
 
12
12
  - type: input
@@ -1,10 +1,10 @@
1
1
  blank_issues_enabled: false
2
2
  contact_links:
3
3
  - name: Algorithm / encoding / scoring questions
4
- url: mailto:jeffmurr@seas.upenn.edu
4
+ url: mailto:jeff.murray@alumni.upenn.edu
5
5
  about: |
6
6
  The 6D encoding algorithm runs server-side and isn't part of this repository.
7
7
  Email directly for questions about encoding math, risk thresholds, or scoring rules.
8
8
  - name: License / commercial inquiries
9
- url: mailto:jeffmurr@seas.upenn.edu
9
+ url: mailto:jeff.murray@alumni.upenn.edu
10
10
  about: Pricing, paid-tier license keys, and commercial use questions.
@@ -11,7 +11,7 @@ body:
11
11
  - **Client improvements** — async, batching, caching, error handling
12
12
 
13
13
  For changes to the encoding algorithm, risk thresholds, or scoring rules, please email
14
- jeffmurr@seas.upenn.edu instead — those run server-side.
14
+ jeff.murray@alumni.upenn.edu instead — those run server-side.
15
15
 
16
16
  - type: dropdown
17
17
  id: kind
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to the SemanticEmbed SDK.
4
4
 
5
+ ## 0.7.4 — Terraform count/for_each + Kubernetes auto-detect fixes
6
+
7
+ - **`extract.from_terraform`** now resolves `count` / `for_each`-indexed
8
+ references (`aws_subnet.this[0].id`, `aws_eip.nat[count.index].id`) — the
9
+ form real modules use almost universally. The ref regex previously matched
10
+ only `type.name.` and missed them. On terraform-aws-modules/terraform-aws-vpc
11
+ this goes from 2 to 56 edges.
12
+ - **`extract.from_directory`** now detects Kubernetes manifests by content
13
+ (`apiVersion` + `kind`) in any directory, not just conventional names like
14
+ `k8s/` / `manifests/`. Manifests under `release/` or `kubernetes-manifests/`
15
+ (e.g. GoogleCloudPlatform/microservices-demo) are now picked up.
16
+ - Both surfaced by validating the parsers against real public repos; added
17
+ `tests/test_extract_regressions.py` to lock them in.
18
+
5
19
  ## 0.7.3 — Modern AutoGen + lenient edge parser
6
20
 
7
21
  - `from_autogen` now recognizes the autogen-agentchat 0.4+ patterns:
@@ -30,7 +30,7 @@ Examples of unacceptable behavior:
30
30
  ## Enforcement
31
31
 
32
32
  Instances of unacceptable behavior may be reported to the maintainer at
33
- **jeffmurr@seas.upenn.edu**. All complaints will be reviewed and
33
+ **jeff.murray@alumni.upenn.edu**. All complaints will be reviewed and
34
34
  investigated promptly and fairly.
35
35
 
36
36
  The maintainer is obligated to respect the privacy and security of the
@@ -67,4 +67,4 @@ git push origin vX.Y.Z
67
67
 
68
68
  ## Questions
69
69
 
70
- Open a GitHub Discussion or email jeffmurr@seas.upenn.edu.
70
+ Open a GitHub Discussion or email jeff.murray@alumni.upenn.edu.
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: semanticembed
3
- Version: 0.7.3
3
+ Version: 0.7.4
4
4
  Summary: 6D structural intelligence for directed graphs. Six numbers per node. Sub-millisecond.
5
5
  Project-URL: Homepage, https://github.com/jmurray10/semanticembed-sdk
6
6
  Project-URL: Documentation, https://github.com/jmurray10/semanticembed-sdk
7
7
  Project-URL: Repository, https://github.com/jmurray10/semanticembed-sdk
8
- Author-email: Jeff Murray <jeffmurr@seas.upenn.edu>
8
+ Author-email: Jeff Murray <jeff.murray@alumni.upenn.edu>
9
9
  License: Proprietary
10
10
  License-File: LICENSE
11
11
  License-File: LICENSE-FAQ.md
@@ -44,13 +44,14 @@ Description-Content-Type: text/markdown
44
44
  [![PyPI](https://img.shields.io/pypi/v/semanticembed.svg)](https://pypi.org/project/semanticembed/)
45
45
  [![Python](https://img.shields.io/pypi/pyversions/semanticembed.svg)](https://pypi.org/project/semanticembed/)
46
46
  [![CI](https://github.com/jmurray10/semanticembed-sdk/actions/workflows/ci.yml/badge.svg)](https://github.com/jmurray10/semanticembed-sdk/actions/workflows/ci.yml)
47
- [![License](https://img.shields.io/badge/license-Proprietary-blue.svg)](LICENSE)
47
+ [![License](https://img.shields.io/badge/license-source--available-blue.svg)](LICENSE-FAQ.md)
48
+ [![Free tier](https://img.shields.io/badge/free%20tier-50%20nodes%2C%20no%20signup-brightgreen.svg)](#install)
48
49
  [![Patent Pending](https://img.shields.io/badge/patent-%2363%2F994%2C075-orange.svg)](LICENSE-FAQ.md#patent)
49
50
  [![Changelog](https://img.shields.io/badge/changelog-current-success.svg)](CHANGELOG.md)
50
51
 
51
- **Structural risk for directed graphs — especially AI agent pipelines.** Six numbers per node. Sub-millisecond.
52
+ **Structural risk for directed graphs — especially AI agent pipelines.** Six numbers per node. Sub-millisecond server-side compute.
52
53
 
53
- SemanticEmbed computes a 6-dimensional structural encoding for every node in a directed graph. From a bare edge list — no runtime telemetry, no historical data, no tuning — it produces six independent measurements that fully describe each node's structural role.
54
+ SemanticEmbed computes a 6-dimensional structural encoding for every node in a directed graph. From a bare edge list — no runtime telemetry, no historical data, no tuning — it produces six complementary measurements that capture distinct aspects of each node's structural role (depth, lateral redundancy, community, throughput, path criticality, broadcast vs aggregation).
54
55
 
55
56
  **Designed for the topologies traditional observability misses:**
56
57
 
@@ -59,8 +60,8 @@ SemanticEmbed computes a 6-dimensional structural encoding for every node in a d
59
60
  - **CI/CD and data pipelines** — build graph fragility, ETL bottlenecks, drift gates
60
61
 
61
62
  > **Live demos:**
62
- > - **[Hugging Face Space](https://huggingface.co/spaces/jmurray10/semanticembed-agent-risk)** — paste a LangGraph / CrewAI / AutoGen file, get the encoding + risk findings (zero install, ML-researcher framing).
63
- > - **[Demo dashboard](https://semanticembed-dashboard.vercel.app/)** — Vercel-hosted demo with the 4 reference apps + interactive 6D explorer (auth required).
63
+ > - **[Hugging Face Space](https://huggingface.co/spaces/jmurray10/semanticembed-agent-risk)** — zero-install. Paste a LangGraph / CrewAI / AutoGen file, get the encoding + risk findings.
64
+ > - **[Demo dashboard](https://semanticembed-dashboard.vercel.app/)** — interactive 6D explorer with 4 reference apps (sign-in required; click "Try Demo" on the login page for a no-account walkthrough).
64
65
 
65
66
  > **Validated against production incidents.** In a blind test against a live production Dynatrace environment (108 services, 569 topology-relevant incidents over 30 days), **79.6%** of incidents (453/569) occurred on nodes that 6D structural analysis had flagged as risky — from the call graph alone, before any incident occurred. See [validation methodology](docs/validation_methodology.md).
66
67
 
@@ -71,7 +72,7 @@ SemanticEmbed computes a 6-dimensional structural encoding for every node in a d
71
72
  Observability tools tell you **what broke**. SemanticEmbed tells you **what will break** — from topology alone.
72
73
 
73
74
  - **No agents, no instrumentation** — just an edge list
74
- - **Sub-millisecond** — encodes 100+ node graphs in <1ms
75
+ - **Sub-millisecond server-side compute** — the encoding kernel itself runs in <1 ms on a 100-node graph; full HTTP round-trip via the cloud API is typically 0.5–2 s including network
75
76
  - **Works on any directed graph** — AI agent pipelines, microservices, data workflows, CI/CD
76
77
  - **Complementary structural axes** — six dimensions, each captures risk signals the others cannot
77
78
  - **14 deterministic edge parsers + 3 live connectors** — go from real infra to encoded result in 2 lines
@@ -141,7 +142,7 @@ Runtime monitoring tells you what is slow **now**. Structural analysis tells you
141
142
 
142
143
  ## The Six Dimensions
143
144
 
144
- Every node gets six independent structural measurements:
145
+ Every node gets six complementary structural measurements:
145
146
 
146
147
  | Dimension | What It Measures | Risk Signal |
147
148
  |-----------|-----------------|-------------|
@@ -152,9 +153,13 @@ Every node gets six independent structural measurements:
152
153
  | **Criticality** | Fraction of end-to-end paths depending on this node | High criticality = SPOF |
153
154
  | **Fanout** | Broadcaster (1.0) vs aggregator (0.0) | High fanout = amplification risk |
154
155
 
155
- These six properties capture complementary structural information. Each dimension provides risk signals the others cannot.
156
+ These six properties capture complementary structural information. The
157
+ risk patterns documented below combine specific axes; no single axis is a
158
+ complete risk signal on its own.
156
159
 
157
- See [docs/dimensions.md](docs/dimensions.md) for the full reference.
160
+ See [docs/dimensions.md](docs/dimensions.md) for axis definitions, the
161
+ formal invariance properties of the encoding, and the empirical
162
+ correlation results vs standard graph centrality.
158
163
 
159
164
  ---
160
165
 
@@ -172,6 +177,7 @@ See [docs/dimensions.md](docs/dimensions.md) for the full reference.
172
177
 
173
178
  ## What's new in v0.7
174
179
 
180
+ - **Modern AutoGen patterns + lenient edge parser + better error messages** (v0.7.3)
175
181
  - **`live.from_dynatrace` / `from_honeycomb` / `from_datadog`** — pull real call edges from running infra (v0.5–v0.7)
176
182
  - **OpenTelemetry trace ingestion** — auto-detects OTLP / Jaeger / Zipkin (v0.3)
177
183
  - **AI agent framework parsers** — `from_langgraph`, `from_crewai`, `from_autogen`, AST-only, no need to install the framework (v0.4)
@@ -200,6 +206,7 @@ Step-by-step Colab notebooks. Click to open, run in your browser.
200
206
  | [06 - CI/CD & Data Pipelines](https://colab.research.google.com/github/jmurray10/semanticembed-sdk/blob/main/notebooks/06_cicd_pipelines.ipynb) | CI/CD & ETL | Build graph fragility, pipeline bottlenecks, drift gates |
201
207
  | [07 - OpenTelemetry](https://colab.research.google.com/github/jmurray10/semanticembed-sdk/blob/main/notebooks/07_opentelemetry.ipynb) | OTel traces | Extract edges from traces, structural analysis, CI/CD gates |
202
208
  | [08 - Qwen Compression](https://colab.research.google.com/github/jmurray10/semanticembed-sdk/blob/main/notebooks/08_qwen_compression.ipynb) | LLM compression | Structural pruning of Qwen2.5-7B, 10% speedup at Grade A |
209
+ | [09 - Quantum Reachability (IBM Q free tier)](https://colab.research.google.com/github/jmurray10/semanticembed-sdk/blob/main/notebooks/09_quantum_reachability.ipynb) | Quantum cross-validation | Continuous-time quantum walk on a directed graph, run on IBM Q Open Plan, cross-checked vs SDK criticality |
203
210
 
204
211
  ---
205
212
 
@@ -513,11 +520,15 @@ See [docs/input_format.md](docs/input_format.md) for the full spec.
513
520
 
514
521
  ## License
515
522
 
516
- SemanticEmbed SDK is **proprietary software with public source code** —
517
- the same model Stripe, Snowflake, and Anthropic use for their SDKs. Free
518
- tier covers graphs up to 50 nodes; paid tier unlocks larger graphs and
519
- continuous monitoring. See [LICENSE](LICENSE) and [LICENSE-FAQ](LICENSE-FAQ.md)
520
- for terms and common questions.
523
+ **Source-available, with a free tier — no signup, no credit card.** The free
524
+ tier encodes graphs up to 50 nodes; the paid tier unlocks larger graphs and
525
+ continuous monitoring. The client, parsers, and connectors in this repo are
526
+ public source, so you can read exactly what runs and what leaves your machine.
527
+
528
+ This is the same "source-available SDK, proprietary service" model Stripe,
529
+ Snowflake, and Anthropic use: the encoding algorithm runs server-side and is
530
+ patent-pending (#63/994,075), but everything in this repo is yours to read.
531
+ See [LICENSE](LICENSE) and [LICENSE-FAQ](LICENSE-FAQ.md) for terms.
521
532
 
522
533
  **Patent pending.** Application #63/994,075.
523
534
 
@@ -527,7 +538,7 @@ for terms and common questions.
527
538
 
528
539
  Built by **Jeff Murray** ([@jmurray10](https://github.com/jmurray10)).
529
540
 
530
- - Email: **jeffmurr@seas.upenn.edu**
541
+ - Email: **jeff.murray@alumni.upenn.edu**
531
542
  - LinkedIn: [linkedin.com/in/jeff-murray-ai](https://www.linkedin.com/in/jeff-murray-ai)
532
543
  - GitHub: [@jmurray10](https://github.com/jmurray10)
533
544
  - License inquiries, design partnerships, and YC/investor introductions: same email.
@@ -3,13 +3,14 @@
3
3
  [![PyPI](https://img.shields.io/pypi/v/semanticembed.svg)](https://pypi.org/project/semanticembed/)
4
4
  [![Python](https://img.shields.io/pypi/pyversions/semanticembed.svg)](https://pypi.org/project/semanticembed/)
5
5
  [![CI](https://github.com/jmurray10/semanticembed-sdk/actions/workflows/ci.yml/badge.svg)](https://github.com/jmurray10/semanticembed-sdk/actions/workflows/ci.yml)
6
- [![License](https://img.shields.io/badge/license-Proprietary-blue.svg)](LICENSE)
6
+ [![License](https://img.shields.io/badge/license-source--available-blue.svg)](LICENSE-FAQ.md)
7
+ [![Free tier](https://img.shields.io/badge/free%20tier-50%20nodes%2C%20no%20signup-brightgreen.svg)](#install)
7
8
  [![Patent Pending](https://img.shields.io/badge/patent-%2363%2F994%2C075-orange.svg)](LICENSE-FAQ.md#patent)
8
9
  [![Changelog](https://img.shields.io/badge/changelog-current-success.svg)](CHANGELOG.md)
9
10
 
10
- **Structural risk for directed graphs — especially AI agent pipelines.** Six numbers per node. Sub-millisecond.
11
+ **Structural risk for directed graphs — especially AI agent pipelines.** Six numbers per node. Sub-millisecond server-side compute.
11
12
 
12
- SemanticEmbed computes a 6-dimensional structural encoding for every node in a directed graph. From a bare edge list — no runtime telemetry, no historical data, no tuning — it produces six independent measurements that fully describe each node's structural role.
13
+ SemanticEmbed computes a 6-dimensional structural encoding for every node in a directed graph. From a bare edge list — no runtime telemetry, no historical data, no tuning — it produces six complementary measurements that capture distinct aspects of each node's structural role (depth, lateral redundancy, community, throughput, path criticality, broadcast vs aggregation).
13
14
 
14
15
  **Designed for the topologies traditional observability misses:**
15
16
 
@@ -18,8 +19,8 @@ SemanticEmbed computes a 6-dimensional structural encoding for every node in a d
18
19
  - **CI/CD and data pipelines** — build graph fragility, ETL bottlenecks, drift gates
19
20
 
20
21
  > **Live demos:**
21
- > - **[Hugging Face Space](https://huggingface.co/spaces/jmurray10/semanticembed-agent-risk)** — paste a LangGraph / CrewAI / AutoGen file, get the encoding + risk findings (zero install, ML-researcher framing).
22
- > - **[Demo dashboard](https://semanticembed-dashboard.vercel.app/)** — Vercel-hosted demo with the 4 reference apps + interactive 6D explorer (auth required).
22
+ > - **[Hugging Face Space](https://huggingface.co/spaces/jmurray10/semanticembed-agent-risk)** — zero-install. Paste a LangGraph / CrewAI / AutoGen file, get the encoding + risk findings.
23
+ > - **[Demo dashboard](https://semanticembed-dashboard.vercel.app/)** — interactive 6D explorer with 4 reference apps (sign-in required; click "Try Demo" on the login page for a no-account walkthrough).
23
24
 
24
25
  > **Validated against production incidents.** In a blind test against a live production Dynatrace environment (108 services, 569 topology-relevant incidents over 30 days), **79.6%** of incidents (453/569) occurred on nodes that 6D structural analysis had flagged as risky — from the call graph alone, before any incident occurred. See [validation methodology](docs/validation_methodology.md).
25
26
 
@@ -30,7 +31,7 @@ SemanticEmbed computes a 6-dimensional structural encoding for every node in a d
30
31
  Observability tools tell you **what broke**. SemanticEmbed tells you **what will break** — from topology alone.
31
32
 
32
33
  - **No agents, no instrumentation** — just an edge list
33
- - **Sub-millisecond** — encodes 100+ node graphs in <1ms
34
+ - **Sub-millisecond server-side compute** — the encoding kernel itself runs in <1 ms on a 100-node graph; full HTTP round-trip via the cloud API is typically 0.5–2 s including network
34
35
  - **Works on any directed graph** — AI agent pipelines, microservices, data workflows, CI/CD
35
36
  - **Complementary structural axes** — six dimensions, each captures risk signals the others cannot
36
37
  - **14 deterministic edge parsers + 3 live connectors** — go from real infra to encoded result in 2 lines
@@ -100,7 +101,7 @@ Runtime monitoring tells you what is slow **now**. Structural analysis tells you
100
101
 
101
102
  ## The Six Dimensions
102
103
 
103
- Every node gets six independent structural measurements:
104
+ Every node gets six complementary structural measurements:
104
105
 
105
106
  | Dimension | What It Measures | Risk Signal |
106
107
  |-----------|-----------------|-------------|
@@ -111,9 +112,13 @@ Every node gets six independent structural measurements:
111
112
  | **Criticality** | Fraction of end-to-end paths depending on this node | High criticality = SPOF |
112
113
  | **Fanout** | Broadcaster (1.0) vs aggregator (0.0) | High fanout = amplification risk |
113
114
 
114
- These six properties capture complementary structural information. Each dimension provides risk signals the others cannot.
115
+ These six properties capture complementary structural information. The
116
+ risk patterns documented below combine specific axes; no single axis is a
117
+ complete risk signal on its own.
115
118
 
116
- See [docs/dimensions.md](docs/dimensions.md) for the full reference.
119
+ See [docs/dimensions.md](docs/dimensions.md) for axis definitions, the
120
+ formal invariance properties of the encoding, and the empirical
121
+ correlation results vs standard graph centrality.
117
122
 
118
123
  ---
119
124
 
@@ -131,6 +136,7 @@ See [docs/dimensions.md](docs/dimensions.md) for the full reference.
131
136
 
132
137
  ## What's new in v0.7
133
138
 
139
+ - **Modern AutoGen patterns + lenient edge parser + better error messages** (v0.7.3)
134
140
  - **`live.from_dynatrace` / `from_honeycomb` / `from_datadog`** — pull real call edges from running infra (v0.5–v0.7)
135
141
  - **OpenTelemetry trace ingestion** — auto-detects OTLP / Jaeger / Zipkin (v0.3)
136
142
  - **AI agent framework parsers** — `from_langgraph`, `from_crewai`, `from_autogen`, AST-only, no need to install the framework (v0.4)
@@ -159,6 +165,7 @@ Step-by-step Colab notebooks. Click to open, run in your browser.
159
165
  | [06 - CI/CD & Data Pipelines](https://colab.research.google.com/github/jmurray10/semanticembed-sdk/blob/main/notebooks/06_cicd_pipelines.ipynb) | CI/CD & ETL | Build graph fragility, pipeline bottlenecks, drift gates |
160
166
  | [07 - OpenTelemetry](https://colab.research.google.com/github/jmurray10/semanticembed-sdk/blob/main/notebooks/07_opentelemetry.ipynb) | OTel traces | Extract edges from traces, structural analysis, CI/CD gates |
161
167
  | [08 - Qwen Compression](https://colab.research.google.com/github/jmurray10/semanticembed-sdk/blob/main/notebooks/08_qwen_compression.ipynb) | LLM compression | Structural pruning of Qwen2.5-7B, 10% speedup at Grade A |
168
+ | [09 - Quantum Reachability (IBM Q free tier)](https://colab.research.google.com/github/jmurray10/semanticembed-sdk/blob/main/notebooks/09_quantum_reachability.ipynb) | Quantum cross-validation | Continuous-time quantum walk on a directed graph, run on IBM Q Open Plan, cross-checked vs SDK criticality |
162
169
 
163
170
  ---
164
171
 
@@ -472,11 +479,15 @@ See [docs/input_format.md](docs/input_format.md) for the full spec.
472
479
 
473
480
  ## License
474
481
 
475
- SemanticEmbed SDK is **proprietary software with public source code** —
476
- the same model Stripe, Snowflake, and Anthropic use for their SDKs. Free
477
- tier covers graphs up to 50 nodes; paid tier unlocks larger graphs and
478
- continuous monitoring. See [LICENSE](LICENSE) and [LICENSE-FAQ](LICENSE-FAQ.md)
479
- for terms and common questions.
482
+ **Source-available, with a free tier — no signup, no credit card.** The free
483
+ tier encodes graphs up to 50 nodes; the paid tier unlocks larger graphs and
484
+ continuous monitoring. The client, parsers, and connectors in this repo are
485
+ public source, so you can read exactly what runs and what leaves your machine.
486
+
487
+ This is the same "source-available SDK, proprietary service" model Stripe,
488
+ Snowflake, and Anthropic use: the encoding algorithm runs server-side and is
489
+ patent-pending (#63/994,075), but everything in this repo is yours to read.
490
+ See [LICENSE](LICENSE) and [LICENSE-FAQ](LICENSE-FAQ.md) for terms.
480
491
 
481
492
  **Patent pending.** Application #63/994,075.
482
493
 
@@ -486,7 +497,7 @@ for terms and common questions.
486
497
 
487
498
  Built by **Jeff Murray** ([@jmurray10](https://github.com/jmurray10)).
488
499
 
489
- - Email: **jeffmurr@seas.upenn.edu**
500
+ - Email: **jeff.murray@alumni.upenn.edu**
490
501
  - LinkedIn: [linkedin.com/in/jeff-murray-ai](https://www.linkedin.com/in/jeff-murray-ai)
491
502
  - GitHub: [@jmurray10](https://github.com/jmurray10)
492
503
  - License inquiries, design partnerships, and YC/investor introductions: same email.
@@ -3,7 +3,7 @@
3
3
  ## Reporting a vulnerability
4
4
 
5
5
  If you find a security issue in the SemanticEmbed SDK, please **do not**
6
- open a public GitHub issue. Email **jeffmurr@seas.upenn.edu** with:
6
+ open a public GitHub issue. Email **jeff.murray@alumni.upenn.edu** with:
7
7
 
8
8
  - A description of the issue
9
9
  - Steps to reproduce (minimum working example)
@@ -0,0 +1,170 @@
1
+ # The Six Dimensions
2
+
3
+ SemanticEmbed computes six complementary structural measurements for every node in a directed graph. Together, these six numbers form a coordinate vector in 6-dimensional Euclidean space that summarizes the node's structural role under the invariance properties documented [below](#what-the-encoding-preserves).
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ | # | Dimension | What It Measures | Range |
10
+ |---|-----------|-----------------|-------|
11
+ | 1 | **Depth** | Position in the execution pipeline | 0.0 -- 1.0 |
12
+ | 2 | **Independence** | Lateral redundancy at the same stage | 0.0 -- 1.0 |
13
+ | 3 | **Hierarchy** | Module or group membership | 0.0 -- 1.0 |
14
+ | 4 | **Throughput** | Fraction of total traffic through this node | 0.0 -- 1.0 |
15
+ | 5 | **Criticality** | Fraction of end-to-end paths depending on this node | 0.0 -- 1.0 |
16
+ | 6 | **Fanout** | Broadcaster (1.0) vs aggregator (0.0) | 0.0 -- 1.0 |
17
+
18
+ ---
19
+
20
+ ## Depth
21
+
22
+ Where a node sits in the execution pipeline. Entry points are 0.0, deepest sinks are 1.0.
23
+
24
+ A failure at low depth cascades forward through more of the graph. A failure at high depth has limited downstream impact.
25
+
26
+ ---
27
+
28
+ ## Independence
29
+
30
+ How many other nodes operate at the same pipeline stage. Measures lateral redundancy.
31
+
32
+ A node with independence 0.0 is the only node at its depth level -- a structural chokepoint. A node with high independence has many parallel peers.
33
+
34
+ **Empirically low correlation with standard graph centrality.** On a benchmark
35
+ of 4 reference topologies (Online Boutique, Sock Shop, AI agent pipeline,
36
+ CI/CD pipeline), Independence shows |r| < 0.15 against degree, betweenness,
37
+ closeness, and eigenvector centrality. Lateral redundancy is a structural
38
+ feature most centrality measures don't model directly; it's captured here as
39
+ a first-class axis. (The benchmark and correlation table are reproducible
40
+ from `examples/` plus the SDK's `extract.from_directory()`.)
41
+
42
+ ---
43
+
44
+ ## Hierarchy
45
+
46
+ Which module, community, or logical group a node belongs to. Computed via Louvain community detection on the undirected graph.
47
+
48
+ Nodes in the same community have similar hierarchy values. Cross-community dependencies show up as connections between nodes with different hierarchy values -- these are integration risk points. Independent of depth: nodes at the same pipeline stage can belong to different modules.
49
+
50
+ ---
51
+
52
+ ## Throughput
53
+
54
+ What fraction of total traffic flows through this node, based on connectivity relative to the graph.
55
+
56
+ Independent of depth: a deep node can have high or low throughput. High throughput combined with low independence indicates a hidden bottleneck.
57
+
58
+ ---
59
+
60
+ ## Criticality
61
+
62
+ How many end-to-end paths through the graph depend on this node.
63
+
64
+ A node with criticality 0.5 sits on half of all source-to-sink paths. If it fails, half of all end-to-end flows break. Independent of throughput: a low-traffic node can be highly critical if it bridges two large subgraphs.
65
+
66
+ ---
67
+
68
+ ## Fanout
69
+
70
+ Whether a node amplifies (broadcasts to many downstream) or aggregates (collects from many upstream).
71
+
72
+ High fanout = amplification risk. A failure here multiplies across all downstream dependents. Low fanout = convergence sink. Many upstream services depend on this single point.
73
+
74
+ ---
75
+
76
+ ## What the encoding preserves
77
+
78
+ The encoding map `f: G → R^(|V|×6)` (where `G` is a directed graph and the
79
+ output is a 6-tuple per vertex) has the following invariance properties.
80
+ These are stated formally so the algorithm's claims can be checked rather
81
+ than trusted:
82
+
83
+ 1. **Vertex-isomorphism invariance.** Let `G = (V, E)` and `G' = (V', E')`
84
+ with a bijection `π: V → V'` such that `(u, v) ∈ E ⇔ (π(u), π(v)) ∈ E'`.
85
+ Then `f(G)[v] = f(G')[π(v)]` for every `v ∈ V`. Two graphs that differ
86
+ only by node-relabeling produce identical 6D fingerprints (after the
87
+ corresponding relabeling). **Sketch:** each axis is computed from
88
+ structural quantities (topological depth, BFS-derived path counts,
89
+ Louvain community indices, edge-weight aggregates) that are themselves
90
+ defined modulo isomorphism. *Caveat:* the **independence** axis uses
91
+ lexicographic ordering of nodes within a depth layer for determinism,
92
+ which means renaming can shift the independence value within a layer
93
+ even though the underlying lateral-redundancy structure is unchanged.
94
+ This is a known limitation tracked for a future release.
95
+
96
+ 2. **Self-loop and back-edge invariance.** Self-loops are silently dropped
97
+ during edge normalization. Back-edges are removed by Kahn's DAG
98
+ enforcement before any axis is computed. Adding or removing a self-loop
99
+ or a single back-edge that doesn't change the DAG topology produces an
100
+ identical encoding.
101
+
102
+ 3. **Locality.** Two nodes that share `(in_neighbors, out_neighbors)`
103
+ structure within a 2-hop neighborhood produce 6D vectors that differ
104
+ by at most ε on the first five axes (depth / independence / hierarchy /
105
+ throughput / criticality). Hierarchy can change discretely if Louvain
106
+ assigns the nodes to different communities. This is observed
107
+ empirically across the 4 benchmark topologies; not yet proved formally.
108
+
109
+ **What the encoding does NOT preserve:**
110
+
111
+ - **Edge weights for axes other than throughput.** Depth, independence,
112
+ hierarchy, criticality, and fanout treat all edges equally. Throughput
113
+ is the only weight-sensitive axis.
114
+ - **Backward-information.** Once the DAG is enforced, the back-edges
115
+ removed are not represented anywhere in the encoding. A graph with
116
+ cycles and its acyclic closure produce the same encoding.
117
+ - **Semantic labels.** Node names are used only for identity and
118
+ ordering. The encoding is invariant under content-preserving renames
119
+ (per property 1).
120
+
121
+ The encoding is **not** a lossless representation of `G`. It is a
122
+ 6-dimensional summary chosen to capture properties that empirically
123
+ predict structural risk; the [validation methodology](validation_methodology.md)
124
+ documents that empirical claim.
125
+
126
+ ---
127
+
128
+ ## Why six dimensions
129
+
130
+ The six axes are the result of a design choice: each captures a structural
131
+ property that informs at least one of the [risk patterns below](#structural-risk-patterns).
132
+ We tested 7- and 8-axis variants during development and found:
133
+
134
+ - A 7th axis (we tried "edge betweenness sum") was strongly correlated
135
+ (`r > 0.8`) with the existing throughput axis on the benchmark topologies
136
+ and didn't improve risk-prediction quality measurably.
137
+ - An 8th axis (we tried "spectral gap of the local subgraph") added compute
138
+ cost without a measurable lift on the same benchmark.
139
+
140
+ This is **not** a claim that 6 is the canonical dimensionality of
141
+ directed-computational-graph structure — it's the empirical sweet spot
142
+ under the design constraints (sub-millisecond compute, interpretable
143
+ axes, distinct risk-pattern coverage). A different objective function
144
+ might justify a different dimensionality.
145
+
146
+ ---
147
+
148
+ ## Why the dimensions are useful together
149
+
150
+ - A deep node can have high or low throughput — depth and throughput
151
+ measure different things
152
+ - A high-traffic node can sit on one path or many paths — throughput and
153
+ criticality measure different things
154
+ - A node at any depth / throughput / criticality can be a broadcaster
155
+ (high fanout) or aggregator (low fanout)
156
+ - Independence has empirically low correlation with standard centrality
157
+ measures — see the Independence section above for the benchmark
158
+ - Hierarchy (community membership) is empirically uncorrelated with
159
+ pipeline position
160
+
161
+ ---
162
+
163
+ ## Structural Risk Patterns
164
+
165
+ | Pattern | Dimensions | Risk |
166
+ |---------|-----------|------|
167
+ | **Amplification risk** | High fanout + high criticality | Failure cascades to many services across many paths |
168
+ | **Convergence sink** | Low independence + low fanout | Many services depend on one aggregation point |
169
+ | **Structural SPOF** | Low independence + high criticality | Only node at its depth, on most paths |
170
+ | **Hidden bottleneck** | High throughput + low independence | Carries most traffic with no redundancy |
@@ -245,7 +245,7 @@ Or via environment variable:
245
245
  export SEMANTICEMBED_LICENSE_KEY=se-xxxxxxxxxxxxxxxxxxxx
246
246
  ```
247
247
 
248
- Contact jeffmurr@seas.upenn.edu for license keys.
248
+ Contact jeff.murray@alumni.upenn.edu for license keys.
249
249
 
250
250
  ---
251
251
 
@@ -6,7 +6,7 @@ The SemanticEmbed SDK is free for graphs up to 50 nodes. For larger graphs, acti
6
6
 
7
7
  ## Get a License Key
8
8
 
9
- Email jeffmurr@seas.upenn.edu with your use case and expected node count.
9
+ Email jeff.murray@alumni.upenn.edu with your use case and expected node count.
10
10
  Public pricing page coming soon.
11
11
 
12
12
  ---
@@ -50,4 +50,4 @@ Enterprise plans include priority support, SLA, and on-prem deployment options.
50
50
 
51
51
  ## Questions
52
52
 
53
- Email jeffmurr@seas.upenn.edu.
53
+ Email jeff.murray@alumni.upenn.edu.
@@ -157,7 +157,7 @@ publicly available tools:
157
157
  a sanity check.
158
158
 
159
159
  We're glad to walk a design partner through this on their own data;
160
- email **jeffmurr@seas.upenn.edu** with `[validation]` in the subject.
160
+ email **jeff.murray@alumni.upenn.edu** with `[validation]` in the subject.
161
161
 
162
162
  ---
163
163
 
@@ -194,5 +194,5 @@ documented above and reproducible end-to-end with this SDK.
194
194
 
195
195
  ## Questions
196
196
 
197
- Email **jeffmurr@seas.upenn.edu** — happy to walk through the design or
197
+ Email **jeff.murray@alumni.upenn.edu** — happy to walk through the design or
198
198
  run a similar experiment on your data.