GitHub user alexisromtz-lab created a discussion: Public architecture graph of 
apache/airflow @ 37b6b04e — 769 files, 11 651 imports, no embeddings

I extracted a file-level import graph of `apache/airflow` at commit 
`37b6b04e7233ec47c193915d6cff04dac742d5fd` and published it as a sanitized 
JSON. Every number below is fully checkable against the bytes.

**Asset:** `public_graph_airflow_37b6b04e.json` — 2,132,257 bytes — sha256 
`98c4a676fa825c55482b60fbdc78a88ee9ed46f425499bbd0839040b951df5c1`
**Release:** 
https://github.com/alexisromtz-lab/platino-data-room/releases/tag/arch-index-20261029-batch2

### What is in the file
Two arrays and nothing else:
- `archivos`: 769 entries of `{rel, locus, sha256}` — repo-relative path, a 
digest of the declared root, and the file digest.
- `imports`: 11,651 entries of `{rel, modulo, nombre, modalidad}` — which file, 
which module, which symbol, and how it was written (`requerida` 10,748 · 
`type_checking` 853 · `except_import` 50).
- `n_ilegibles`: 0. Every file in the ingested perimeter parsed successfully.

There are no embeddings in the file — no vectors, no model, no tokens. What 
ships is pure structural coupling.

### What it costs
2,132,257 bytes for the entire perimeter. The 769 Python files it maps are 
6,300,100 bytes at that commit. The graph is **33.84% of the bytes it describes 
(66.16% less)**, at roughly **2,772 bytes per file**. 

To put this in perspective, this is not a claim that the source can be deleted. 
It is the cost of the *index* that sits beside it. It is the number that 
decides whether a full architecture audit runs on a laptop or requires a 
cluster. And because there are no vectors, when the code moves, there is 
nothing to re-embed. The file is simply regenerated by parsing.

### The perimeter, stated instead of implied
The graph maps 769 files, not the 8,486 `.py` files the repository has at that 
commit. The ingested root is `airflow-core/src/airflow`. The public projection 
deliberately omits the declared-roots list, so I am telling you exactly where 
the boundary sits rather than implying the graph covers the whole tree.

Two metrics you can verify
- **Fan-in:** 321 of the 769 files import 
`airflow.api_fastapi.common.parameters`; 235 import `airflow.sdk`.
- **Fan-out:** `models/taskinstance.py` pulls 196 distinct modules; 
`jobs/scheduler_job_runner.py` pulls 180.
*(These are in-degree and out-degree over declared bytes, not quality 
judgments).*

Cycles
The published JSON includes the signed SCC layer (`graph-input/1+scc/2`). Its 
declared definition is a component with more than one node or a self-loop. The 
asset reports **2 cyclic SCCs**, with **363 modules** in the largest. The 
component list is complete for this asset (`sccs_truncated: false`).

Why post it here
I am building deterministic AST extractors. No ML, no LLM, no service. I am 
publishing the output for ten major open-source repositories so the people who 
own the code can attack the method. 

Airflow is particularly interesting: 143 `pyproject.toml` files mean 143 
internal distribution boundaries. A boundary is precisely what a text search 
cannot cross. 

If the extraction is wrong somewhere — a missed import, a misread modality, a 
resolution that lands on the wrong file — I want the diff. I will re-issue the 
graph with the fix, and its new sha256, right here in this thread.

— Alexis Román, Founder, Platino Labs

GitHub link: https://github.com/apache/airflow/discussions/75995

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]

Reply via email to