projectadg last reviewed 2026-05-20

Graphify trial on aspire-digital-group monorepo

Context

Evaluated safishamsi/graphify โ€” a codebase-to-knowledge-graph tool with 31 language extractors. Decision gate from aios-workflow: adopt if โ‰ฅ2 new cross-coupling facts surface; reject otherwise.

Detail

Run summary

MetricValue
Files extracted435
Words analyzed~154,954
Nodes2,209
Edges2,935
Communities220 (161 shown, 59 thin omitted)
Extraction quality98% extracted / 2% inferred / 0% ambiguous
Token cost$0 (AST-only, no LLM)
Wall-clock time~12 seconds
Output size3.3 MB total (graph.json 1.6 MB + graph.html 1.6 MB + GRAPH_REPORT.md 32 KB)
Commit baseline207d15be

Top god-nodes (most-connected core abstractions)

#SymbolEdgesWhereSignificance
1requireRole()32apps/aspire-staff-portal/src/lib/authz.ts:5Aspire Hub role-gating โ€” most depended-on code
2authenticate()27auth flow entrySecond-most depended-on
3hasScope()25OAuth scope checkThird-most
4cn()24packages/ui/lib/utils.tsTailwind class merge (expected)
5compilerOptions18TS configstsconfig inheritance
6ReportsPage()16Reports componentCross-app reuse worth investigating
7sendTelegramMessage()15Telegram helperConfirms Telegram is THE primary comms
8buildTodayPreset()15Date helperWidely reused date logic
9AGENTS.md (Aspire Hub)15Doc fileGraphify treats docs as nodes (15 backlinks)
10hashToken()14packages/utils/encryption.tsShared security primitive

Cross-coupling facts surfaced (gate criterion โ€” โ‰ฅ2 needed)

  1. โœ… NEW โ€” Aspire Hub's auth function blast radius is large + quantified for the first time. requireRole() 32 edges, authenticate() 27, hasScope() 25. Any refactor of authz touches ~80+ call sites.
  1. โœ… NEW โ€” Telegram comms is the single most-used comms primitive (sendTelegramMessage() 15 edges). Reinforces the Telegram Bot Pattern (LOCKED in MEMORY.md). Suggests an opportunity for a typed notify() abstraction in packages/notifications/.
  1. โœ… NEW โ€” 8 communities (3, 4, 6, 9, 10, 11, 12, 14) have near-identical @aspire/* dependency footprints. Possible interpretations:
  2. Consolidation opportunity (shared apps/_template/ or packages/app-shell/)
  3. OR confirmation of a stable shared-packages pattern (no action needed)
  4. Investigate before refactoring
  1. ๐ŸŸก Expected (not new): hashToken() shared across multiple OAuth endpoints.
  1. ๐ŸŸก Interesting (not actionable): AGENTS.md doc has 15 backlinks because graphify treats markdown sections as graph nodes.

Verdict

ADOPT as quarterly audit step. 3 of 5 reported findings were genuinely new (gate required โ‰ฅ2).

Operating rules

Next audit targets

  1. [ ] zinga-pms (largest Next.js standalone)
  2. [ ] alby-studio (auth + storefront + Stripe Connect coupling)
  3. [ ] MCP servers batch 1 (5-8 servers at a time)
  4. [ ] Re-run on aspire-digital-group after next major refactor

Open questions

  1. Should the 8-app shared-deps cluster be consolidated into a packages/app-shell/, or is it a stable healthy pattern?
  2. Does the auth-function blast radius warrant breaking authz into smaller modules, or is the centralization actually a feature?
  3. Worth merging multiple repo graphs via graphify merge-graphs to see cross-repo flows?

Provenance

Tool: graphifyy v0.8.13 (PyPI; CLI command graphify). Source repo: https://github.com/safishamsi/graphify. Trial output (gitignored): ~/Desktop/Claude/projects/aspire-digital-group/graphify-out/.

Related

๐Ÿ”— Relationships

graph LR graphify_trial_2026_05_20["graphify-trial-2026-05-20"]:::self graphify_trial_2026_05_20 --> aios_workflow["aios-workflow"] classDef self fill:#715EE3,color:#fff,stroke:#291F50;