Skip to content

Commit 0999000

Browse files
howethomasclaude
andcommitted
Add .vcon-repo/graph.json internal knowledge graph
Machine-readable map of this repo's internals for robot navigation. Part of the vCon ecosystem knowledge graph (vconic/vconic-docs). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 1f460bc commit 0999000

2 files changed

Lines changed: 395 additions & 0 deletions

File tree

.vcon-repo/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# .vcon-repo
2+
3+
Machine-readable internal knowledge graph for this repository.
4+
5+
- **graph.json** — Nodes (components, capabilities, interfaces, datastores) and edges (dependencies, data flows) describing this repo's internals. Generated by `vconic-docs/scripts/generate_internal_graph.py`.
6+
- **annotations.yaml** — Optional hand-maintained enrichments (subsystem groupings, purpose descriptions, data flow narratives).
7+
8+
## For Robots
9+
10+
Load `graph.json` to navigate this repo's internals. Each node has a `file` path and optional `line` number. Edges trace how components connect. The `subsystems` array groups related nodes by feature.
11+
12+
This graph is part of the [vCon ecosystem knowledge graph](https://github.com/vconic/vconic-docs).

.vcon-repo/graph.json

Lines changed: 383 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,383 @@
1+
{
2+
"schema_version": "1.0.0",
3+
"repo": "scittles",
4+
"repo_version": "0.1.0",
5+
"archetype": "python-library",
6+
"generated_at": "2026-04-16T15:15:45.275282+00:00",
7+
"stats": {
8+
"node_count": 48,
9+
"edge_count": 10
10+
},
11+
"nodes": [
12+
{
13+
"id": "dependency:pycose",
14+
"type": "dependency",
15+
"name": "pycose",
16+
"file": "pyproject.toml"
17+
},
18+
{
19+
"id": "dependency:cbor2",
20+
"type": "dependency",
21+
"name": "cbor2",
22+
"file": "pyproject.toml"
23+
},
24+
{
25+
"id": "dependency:cryptography",
26+
"type": "dependency",
27+
"name": "cryptography",
28+
"file": "pyproject.toml"
29+
},
30+
{
31+
"id": "dependency:fastapi",
32+
"type": "dependency",
33+
"name": "fastapi",
34+
"file": "pyproject.toml"
35+
},
36+
{
37+
"id": "dependency:uvicorn",
38+
"type": "dependency",
39+
"name": "uvicorn",
40+
"file": "pyproject.toml"
41+
},
42+
{
43+
"id": "dependency:pydantic",
44+
"type": "dependency",
45+
"name": "pydantic",
46+
"file": "pyproject.toml"
47+
},
48+
{
49+
"id": "dependency:pydantic-settings",
50+
"type": "dependency",
51+
"name": "pydantic-settings",
52+
"file": "pyproject.toml"
53+
},
54+
{
55+
"id": "dependency:aiosqlite",
56+
"type": "dependency",
57+
"name": "aiosqlite",
58+
"file": "pyproject.toml"
59+
},
60+
{
61+
"id": "dependency:asyncpg",
62+
"type": "dependency",
63+
"name": "asyncpg",
64+
"file": "pyproject.toml"
65+
},
66+
{
67+
"id": "dependency:opentelemetry-api",
68+
"type": "dependency",
69+
"name": "opentelemetry-api",
70+
"file": "pyproject.toml"
71+
},
72+
{
73+
"id": "dependency:opentelemetry-sdk",
74+
"type": "dependency",
75+
"name": "opentelemetry-sdk",
76+
"file": "pyproject.toml"
77+
},
78+
{
79+
"id": "dependency:opentelemetry-instrumentation-fastapi",
80+
"type": "dependency",
81+
"name": "opentelemetry-instrumentation-fastapi",
82+
"file": "pyproject.toml"
83+
},
84+
{
85+
"id": "dependency:opentelemetry-instrumentation-sqlite3",
86+
"type": "dependency",
87+
"name": "opentelemetry-instrumentation-sqlite3",
88+
"file": "pyproject.toml"
89+
},
90+
{
91+
"id": "dependency:opentelemetry-exporter-otlp-proto-grpc",
92+
"type": "dependency",
93+
"name": "opentelemetry-exporter-otlp-proto-grpc",
94+
"file": "pyproject.toml"
95+
},
96+
{
97+
"id": "dependency:opentelemetry-exporter-prometheus",
98+
"type": "dependency",
99+
"name": "opentelemetry-exporter-prometheus",
100+
"file": "pyproject.toml"
101+
},
102+
{
103+
"id": "dependency:structlog",
104+
"type": "dependency",
105+
"name": "structlog",
106+
"file": "pyproject.toml"
107+
},
108+
{
109+
"id": "class:TransparencyServiceAPI",
110+
"type": "class",
111+
"name": "TransparencyServiceAPI",
112+
"file": "src/api/endpoints.py",
113+
"line": 19
114+
},
115+
{
116+
"id": "class:TransparencyConfiguration",
117+
"type": "class",
118+
"name": "TransparencyConfiguration",
119+
"file": "src/api/models.py",
120+
"line": 6
121+
},
122+
{
123+
"id": "class:RegistrationResponse",
124+
"type": "class",
125+
"name": "RegistrationResponse",
126+
"file": "src/api/models.py",
127+
"line": 15
128+
},
129+
{
130+
"id": "class:RegistrationPending",
131+
"type": "class",
132+
"name": "RegistrationPending",
133+
"file": "src/api/models.py",
134+
"line": 23
135+
},
136+
{
137+
"id": "class:ReceiptResponse",
138+
"type": "class",
139+
"name": "ReceiptResponse",
140+
"file": "src/api/models.py",
141+
"line": 30
142+
},
143+
{
144+
"id": "class:ErrorResponse",
145+
"type": "class",
146+
"name": "ErrorResponse",
147+
"file": "src/api/models.py",
148+
"line": 40
149+
},
150+
{
151+
"id": "class:Settings",
152+
"type": "class",
153+
"name": "Settings",
154+
"file": "src/config.py",
155+
"line": 5
156+
},
157+
{
158+
"id": "class:MerkleTree",
159+
"type": "class",
160+
"name": "MerkleTree",
161+
"file": "src/core/merkle.py",
162+
"line": 14
163+
},
164+
{
165+
"id": "class:MerkleTreeBuilder",
166+
"type": "class",
167+
"name": "MerkleTreeBuilder",
168+
"file": "src/core/merkle.py",
169+
"line": 189
170+
},
171+
{
172+
"id": "class:ReceiptGenerator",
173+
"type": "class",
174+
"name": "ReceiptGenerator",
175+
"file": "src/core/receipts.py",
176+
"line": 20
177+
},
178+
{
179+
"id": "class:StatementValidator",
180+
"type": "class",
181+
"name": "StatementValidator",
182+
"file": "src/core/receipts.py",
183+
"line": 195
184+
},
185+
{
186+
"id": "function:verify_inclusion",
187+
"type": "function",
188+
"name": "verify_inclusion",
189+
"file": "src/core/verification.py",
190+
"line": 7
191+
},
192+
{
193+
"id": "function:create_app",
194+
"type": "function",
195+
"name": "create_app",
196+
"file": "src/main.py",
197+
"line": 14
198+
},
199+
{
200+
"id": "function:main",
201+
"type": "function",
202+
"name": "main",
203+
"file": "src/main.py",
204+
"line": 75
205+
},
206+
{
207+
"id": "function:add_trace_context",
208+
"type": "function",
209+
"name": "add_trace_context",
210+
"file": "src/observability/logging.py",
211+
"line": 14
212+
},
213+
{
214+
"id": "function:setup_logging",
215+
"type": "function",
216+
"name": "setup_logging",
217+
"file": "src/observability/logging.py",
218+
"line": 26
219+
},
220+
{
221+
"id": "function:get_logger",
222+
"type": "function",
223+
"name": "get_logger",
224+
"file": "src/observability/logging.py",
225+
"line": 62
226+
},
227+
{
228+
"id": "class:Metrics",
229+
"type": "class",
230+
"name": "Metrics",
231+
"file": "src/observability/metrics.py",
232+
"line": 7
233+
},
234+
{
235+
"id": "function:get_metrics",
236+
"type": "function",
237+
"name": "get_metrics",
238+
"file": "src/observability/metrics.py",
239+
"line": 89
240+
},
241+
{
242+
"id": "class:ObservabilityMiddleware",
243+
"type": "class",
244+
"name": "ObservabilityMiddleware",
245+
"file": "src/observability/middleware.py",
246+
"line": 20
247+
},
248+
{
249+
"id": "function:setup_opentelemetry",
250+
"type": "function",
251+
"name": "setup_opentelemetry",
252+
"file": "src/observability/otel.py",
253+
"line": 35
254+
},
255+
{
256+
"id": "function:get_tracer",
257+
"type": "function",
258+
"name": "get_tracer",
259+
"file": "src/observability/otel.py",
260+
"line": 98
261+
},
262+
{
263+
"id": "function:get_meter",
264+
"type": "function",
265+
"name": "get_meter",
266+
"file": "src/observability/otel.py",
267+
"line": 103
268+
},
269+
{
270+
"id": "function:setup_prometheus_exporter",
271+
"type": "function",
272+
"name": "setup_prometheus_exporter",
273+
"file": "src/observability/prometheus.py",
274+
"line": 15
275+
},
276+
{
277+
"id": "function:get_metrics_endpoint",
278+
"type": "function",
279+
"name": "get_metrics_endpoint",
280+
"file": "src/observability/prometheus.py",
281+
"line": 46
282+
},
283+
{
284+
"id": "class:StorageBackend",
285+
"type": "class",
286+
"name": "StorageBackend",
287+
"file": "src/storage/base.py",
288+
"line": 5
289+
},
290+
{
291+
"id": "class:PostgresStore",
292+
"type": "class",
293+
"name": "PostgresStore",
294+
"file": "src/storage/postgres_store.py",
295+
"line": 19
296+
},
297+
{
298+
"id": "class:SQLiteStore",
299+
"type": "class",
300+
"name": "SQLiteStore",
301+
"file": "src/storage/sqlite_store.py",
302+
"line": 16
303+
},
304+
{
305+
"id": "interface:scittles",
306+
"type": "interface",
307+
"name": "scittles",
308+
"description": "CLI: src.main:main",
309+
"file": "pyproject.toml"
310+
},
311+
{
312+
"id": "config:OTEL_EXPORTER_OTLP_ENDPOINT",
313+
"type": "config",
314+
"name": "OTEL_EXPORTER_OTLP_ENDPOINT",
315+
"file": "src/observability/otel.py"
316+
},
317+
{
318+
"id": "artifact:docker-image",
319+
"type": "artifact",
320+
"name": "Docker image",
321+
"file": "Dockerfile"
322+
},
323+
{
324+
"id": "document:readme-md",
325+
"type": "document",
326+
"name": "README.md",
327+
"file": "README.md"
328+
}
329+
],
330+
"edges": [
331+
{
332+
"from": "class:TransparencyConfiguration",
333+
"to": "class:BaseModel",
334+
"type": "inherits"
335+
},
336+
{
337+
"from": "class:RegistrationResponse",
338+
"to": "class:BaseModel",
339+
"type": "inherits"
340+
},
341+
{
342+
"from": "class:RegistrationPending",
343+
"to": "class:BaseModel",
344+
"type": "inherits"
345+
},
346+
{
347+
"from": "class:ReceiptResponse",
348+
"to": "class:BaseModel",
349+
"type": "inherits"
350+
},
351+
{
352+
"from": "class:ErrorResponse",
353+
"to": "class:BaseModel",
354+
"type": "inherits"
355+
},
356+
{
357+
"from": "class:Settings",
358+
"to": "class:BaseSettings",
359+
"type": "inherits"
360+
},
361+
{
362+
"from": "class:ObservabilityMiddleware",
363+
"to": "class:BaseHTTPMiddleware",
364+
"type": "inherits"
365+
},
366+
{
367+
"from": "class:StorageBackend",
368+
"to": "class:ABC",
369+
"type": "inherits"
370+
},
371+
{
372+
"from": "class:PostgresStore",
373+
"to": "class:StorageBackend",
374+
"type": "inherits"
375+
},
376+
{
377+
"from": "class:SQLiteStore",
378+
"to": "class:StorageBackend",
379+
"type": "inherits"
380+
}
381+
],
382+
"subsystems": []
383+
}

0 commit comments

Comments
 (0)