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.
- {semanticembed-0.7.3 → semanticembed-0.7.4}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -1
- {semanticembed-0.7.3 → semanticembed-0.7.4}/.github/ISSUE_TEMPLATE/config.yml +2 -2
- {semanticembed-0.7.3 → semanticembed-0.7.4}/.github/ISSUE_TEMPLATE/feature_request.yml +1 -1
- {semanticembed-0.7.3 → semanticembed-0.7.4}/CHANGELOG.md +14 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/CODE_OF_CONDUCT.md +1 -1
- {semanticembed-0.7.3 → semanticembed-0.7.4}/CONTRIBUTING.md +1 -1
- {semanticembed-0.7.3 → semanticembed-0.7.4}/PKG-INFO +28 -17
- {semanticembed-0.7.3 → semanticembed-0.7.4}/README.md +26 -15
- {semanticembed-0.7.3 → semanticembed-0.7.4}/SECURITY.md +1 -1
- semanticembed-0.7.4/docs/dimensions.md +170 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/getting_started.md +1 -1
- {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/license_keys.md +2 -2
- {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/validation_methodology.md +2 -2
- semanticembed-0.7.4/huggingface/app.py +1291 -0
- semanticembed-0.7.4/huggingface/examples/autogen_codereview_after.py +64 -0
- semanticembed-0.7.4/huggingface/examples/boutique_after.json +22 -0
- semanticembed-0.7.4/huggingface/examples/crewai_content_after.py +63 -0
- semanticembed-0.7.4/huggingface/examples/langgraph_research_after.py +69 -0
- semanticembed-0.7.4/huggingface/requirements.txt +5 -0
- semanticembed-0.7.4/huggingface/smoke_test_phase_b.py +77 -0
- semanticembed-0.7.4/huggingface/smoke_test_phase_c.py +69 -0
- semanticembed-0.7.4/notebooks/09_quantum_reachability.ipynb +382 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/pyproject.toml +2 -2
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/__init__.py +1 -1
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/client.py +2 -2
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/exceptions.py +1 -1
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/extract.py +26 -12
- semanticembed-0.7.4/tests/test_extract_regressions.py +80 -0
- semanticembed-0.7.3/docs/dimensions.md +0 -93
- semanticembed-0.7.3/huggingface/app.py +0 -452
- semanticembed-0.7.3/huggingface/requirements.txt +0 -3
- {semanticembed-0.7.3 → semanticembed-0.7.4}/.claude/skills/analyze/SKILL.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/.github/workflows/ci.yml +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/.github/workflows/publish.yml +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/.gitignore +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/LICENSE +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/LICENSE-FAQ.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/api_reference.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/input_format.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/docs/output_format.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/README.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/ai_agent_pipeline.json +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/autogen_codereview.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/cicd_pipeline.json +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/crewai_content_pipeline.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/google_online_boutique.json +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/langgraph_research_agent.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/react/README.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/react/RadarChart.tsx +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/react/RiskTable.tsx +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/react/TopologySummary.tsx +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/react/useSemanticEmbed.ts +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/sample_pipeline.json +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/examples/weaveworks_sock_shop.json +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/.gitignore +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/DEPLOY.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/README.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/build.sh +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/examples/autogen_codereview.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/examples/boutique.json +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/examples/crewai_content.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/huggingface/examples/langgraph_research.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/01_quickstart.ipynb +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/02_dimensions.ipynb +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/03_drift_detection.ipynb +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/04_bring_your_own.ipynb +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/05_ai_agent_pipelines.ipynb +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/06_cicd_pipelines.ipynb +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/07_opentelemetry.ipynb +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/08_qwen_compression.ipynb +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/notebooks/qwen_compression_cookbook.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/skill/SETUP.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/skill/SKILL.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/skill/analyze.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/agent/README.md +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/agent/__init__.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/agent/__main__.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/agent/agent.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/agent/gemini_agent.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/dedupe.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/explain.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/find_edges.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/live.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/src/semanticembed/models.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/__init__.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/autogen_app.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/cdk_app.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/crewai_app.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/docker-compose.yml +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/langgraph_app.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/pulumi_app.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/stack.yaml +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/trace_jaeger.json +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/trace_otlp.json +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/fixtures/trace_zipkin.json +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_aclient.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_client.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_dedupe.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_extract.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_extract_ai.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_extract_iac.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_extract_otel.py +0 -0
- {semanticembed-0.7.3 → semanticembed-0.7.4}/tests/test_live.py +0 -0
- {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
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
**
|
|
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
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: semanticembed
|
|
3
|
-
Version: 0.7.
|
|
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 <
|
|
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
|
[](https://pypi.org/project/semanticembed/)
|
|
45
45
|
[](https://pypi.org/project/semanticembed/)
|
|
46
46
|
[](https://github.com/jmurray10/semanticembed-sdk/actions/workflows/ci.yml)
|
|
47
|
-
[](LICENSE-FAQ.md)
|
|
48
|
+
[](#install)
|
|
48
49
|
[](LICENSE-FAQ.md#patent)
|
|
49
50
|
[](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
|
|
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)** —
|
|
63
|
-
> - **[Demo dashboard](https://semanticembed-dashboard.vercel.app/)** —
|
|
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** —
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
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: **
|
|
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
|
[](https://pypi.org/project/semanticembed/)
|
|
4
4
|
[](https://pypi.org/project/semanticembed/)
|
|
5
5
|
[](https://github.com/jmurray10/semanticembed-sdk/actions/workflows/ci.yml)
|
|
6
|
-
[](LICENSE-FAQ.md)
|
|
7
|
+
[](#install)
|
|
7
8
|
[](LICENSE-FAQ.md#patent)
|
|
8
9
|
[](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
|
|
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)** —
|
|
22
|
-
> - **[Demo dashboard](https://semanticembed-dashboard.vercel.app/)** —
|
|
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** —
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
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: **
|
|
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 **
|
|
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 |
|
|
@@ -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
|
|
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
|
|
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 **
|
|
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 **
|
|
197
|
+
Email **jeff.murray@alumni.upenn.edu** — happy to walk through the design or
|
|
198
198
|
run a similar experiment on your data.
|