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]
