Skip to content

Commit c7f2415

Browse files
committed
chore(graph): refresh the code graph
Rebuilt from db43bc2 with graphify update: 413 nodes, 638 edges, 34 communities. GRAPH_REPORT.md is committed alongside it, it describes this exact graph and would state the old counts otherwise.
1 parent db43bc2 commit c7f2415

2 files changed

Lines changed: 7519 additions & 6181 deletions

File tree

graphify-out/GRAPH_REPORT.md

Lines changed: 74 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,34 @@
1-
# Graph Report - . (2026-08-17)
1+
# Graph Report - msk-shortener (2026-08-17)
22

33
## Corpus Check
4-
- cluster-only mode — file stats not available
4+
- 71 files · ~39,098 words
5+
- Verdict: corpus is large enough that graph structure adds value.
56

67
## Summary
7-
- 359 nodes · 594 edges · 30 communities (22 shown, 8 thin omitted)
8-
- Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 3 edges (avg confidence: 0.83)
9-
- Token cost: 1,005 input · 290 output
8+
- 413 nodes · 638 edges · 34 communities (25 shown, 9 thin omitted)
9+
- Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 6 edges (avg confidence: 0.67)
10+
- Token cost: 0 input · 0 output
1011

1112
## Graph Freshness
12-
- Built from commit: `917cb5e5`
13+
- Built from commit: `db43bc26`
1314
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
1415
- Run `graphify update .` after code changes (no API cost).
1516

1617
## Community Hubs (Navigation)
17-
- Link Redirection Logic
18+
- links.ts
1819
- TypeScript Configuration
19-
- Static Content Pages
20-
- Project Dependencies
21-
- Link Creation API
22-
- Link Statistics UI
20+
- Header.tsx
21+
- dependencies
22+
- index.ts
23+
- stats/[code]/page.tsx
2324
- Database Migrations
2425
- Development Dependencies
2526
- Package Metadata
26-
- Global Analytics
27-
- Link Management Service
28-
- Internationalization and Locales
29-
- Input Validation Schemas
30-
- Project Documentation
27+
- globalStats.ts
28+
- password/page.tsx
29+
- config.ts
30+
- MSK Shortener – Claude Projekt-Doku
31+
- pull_request_template.md
3132
- Installation Scripts
3233
- Abuse Prevention
3334
- Root Layout Configuration
@@ -42,18 +43,19 @@
4243
- Repository Mirroring Workflow
4344
- Release Automation Workflow
4445
- UI Screenshots
46+
- links
4547

4648
## God Nodes (most connected - your core abstractions)
4749
1. `compilerOptions` - 20 edges
4850
2. `getLinkByCode()` - 15 edges
4951
3. `execute()` - 12 edges
5052
4. `getGlobalStats()` - 12 edges
51-
5. `hashIp()` - 11 edges
52-
6. `StatsPage()` - 10 edges
53-
7. `trackClick()` - 10 edges
54-
8. `isLinkExpired()` - 10 edges
55-
9. `ApiError` - 10 edges
56-
10. `getPool()` - 9 edges
53+
5. `MSK Shortener – Claude Projekt-Doku` - 12 edges
54+
6. `hashIp()` - 11 edges
55+
7. `StatsPage()` - 10 edges
56+
8. `trackClick()` - 10 edges
57+
9. `isLinkExpired()` - 10 edges
58+
10. `ApiError` - 10 edges
5759

5860
## Surprising Connections (you probably didn't know these)
5961
- `MSK Logo` --references--> `MSK Shortener README` [INFERRED]
@@ -62,10 +64,10 @@
6264
public/msk_shortener.png → README.md
6365
- `GET()` --calls--> `getLinkByCode()` [EXTRACTED]
6466
app/api/links/[code]/qr/route.ts → src/lib/links.ts
65-
- `GET()` --calls--> `getLinkByCode()` [EXTRACTED]
66-
app/api/links/[code]/stats/route.ts → src/lib/links.ts
67-
- `POST()` --calls--> `createLink()` [EXTRACTED]
68-
app/api/links/route.ts → src/lib/links.ts
67+
- `RedirectPage()` --calls--> `getLinkByCode()` [EXTRACTED]
68+
app/[code]/page.tsx → src/lib/links.ts
69+
- `RedirectPage()` --calls--> `isLinkExpired()` [EXTRACTED]
70+
app/[code]/page.tsx → src/lib/links.ts
6971

7072
## Import Cycles
7173
- None detected.
@@ -74,35 +76,35 @@
7476
- **MSK Ecosystem Documentation** — readme, contributing, code_of_conduct, security, license [EXTRACTED 1.00]
7577
- **CI/CD Pipeline** — github_workflows_deploy, github_workflows_codeql, github_workflows_eslint, github_workflows_dependency_review [EXTRACTED 1.00]
7678

77-
## Communities (30 total, 8 thin omitted)
79+
## Communities (34 total, 9 thin omitted)
7880

79-
### Community 0 - "Link Redirection Logic"
80-
Cohesion: 0.14
81-
Nodes (25): GET(), POST(), POST(), PageProps, RedirectPage(), PageProps, PasswordPage(), PasswordPrompt() (+17 more)
81+
### Community 0 - "links.ts"
82+
Cohesion: 0.08
83+
Nodes (46): POST(), POST(), dynamic, PageProps, RedirectPage(), revalidate, BOT_PATTERNS, isBot() (+38 more)
8284

8385
### Community 1 - "TypeScript Configuration"
8486
Cohesion: 0.06
8587
Nodes (32): ./app/*, dom, dom.iterable, esnext, next-env.d.ts, .next/types/**/*.ts, node_modules, **/*.ts (+24 more)
8688

87-
### Community 2 - "Static Content Pages"
88-
Cohesion: 0.08
89-
Nodes (12): CreateLinkForm(), DeleteForm(), DeleteFormProps, State, DeleteLinkButton(), Header(), HeaderProps, Logo() (+4 more)
89+
### Community 2 - "Header.tsx"
90+
Cohesion: 0.07
91+
Nodes (12): dynamic, dynamic, CreateLinkForm(), DeleteForm(), DeleteFormProps, State, DeleteLinkButton(), Header() (+4 more)
9092

91-
### Community 3 - "Project Dependencies"
93+
### Community 3 - "dependencies"
9294
Cohesion: 0.07
93-
Nodes (28): GET(), bcryptjs, dotenv, mysql2, nanoid, next, next-intl, dependencies (+20 more)
95+
Nodes (27): bcryptjs, dotenv, mysql2, nanoid, next, next-intl, dependencies, bcryptjs (+19 more)
9496

95-
### Community 4 - "Link Creation API"
97+
### Community 4 - "index.ts"
9698
Cohesion: 0.13
97-
Nodes (16): QR_OPTIONS, RouteContext, DELETE(), RouteContext, LinkResult(), LinkResultProps, Props, jsonError() (+8 more)
99+
Nodes (14): GET(), QR_OPTIONS, RouteContext, LinkResult(), LinkResultProps, PasswordForm(), Props, jsonError() (+6 more)
98100

99-
### Community 5 - "Link Statistics UI"
100-
Cohesion: 0.18
101-
Nodes (19): GET(), RouteContext, formatDate(), PageProps, parseDays(), StatsPage(), QRCodeDisplay(), QRCodeDisplayProps (+11 more)
101+
### Community 5 - "stats/[code]/page.tsx"
102+
Cohesion: 0.16
103+
Nodes (22): GET(), RouteContext, dynamic, formatDate(), PageProps, parseDays(), revalidate, StatsPage() (+14 more)
102104

103105
### Community 6 - "Database Migrations"
104106
Cohesion: 0.15
105-
Nodes (21): main(), ensureMigrationsTable(), getExecutedMigrations(), main(), MIGRATIONS_DIR, runMigration(), ClickContext, extractClickContext() (+13 more)
107+
Nodes (20): main(), ensureMigrationsTable(), getExecutedMigrations(), main(), MIGRATIONS_DIR, runMigration(), ClickContext, normalizeDeviceType() (+12 more)
106108

107109
### Community 7 - "Development Dependencies"
108110
Cohesion: 0.09
@@ -112,33 +114,33 @@ Nodes (23): autoprefixer, eslint, eslint-config-next, devDependencies, autoprefi
112114
Cohesion: 0.10
113115
Nodes (20): description, engines, node, license, name, overrides, brace-expansion, eslint (+12 more)
114116

115-
### Community 9 - "Global Analytics"
116-
Cohesion: 0.18
117-
Nodes (14): GET(), GlobalStatsPage(), AggregateBars(), AggregateBarsProps, aggregateBrowsersGlobal(), aggregateOsGlobal(), countClicksLast7Days(), countClicksToday() (+6 more)
117+
### Community 9 - "globalStats.ts"
118+
Cohesion: 0.16
119+
Nodes (16): GET(), dynamic, GlobalStatsPage(), revalidate, AggregateBars(), AggregateBarsProps, aggregateBrowsersGlobal(), aggregateOsGlobal() (+8 more)
118120

119-
### Community 10 - "Link Management Service"
120-
Cohesion: 0.25
121-
Nodes (13): queryOne(), createLink(), CreateLinkOptions, CreateLinkResult, LinkServiceError, DEFAULT_LENGTH, generateDeleteToken(), generateShortCode() (+5 more)
121+
### Community 10 - "password/page.tsx"
122+
Cohesion: 0.11
123+
Nodes (15): DELETE(), GET(), RouteContext, dynamic, PageProps, PasswordPage(), revalidate, LanguageSwitcher() (+7 more)
122124

123-
### Community 11 - "Internationalization and Locales"
124-
Cohesion: 0.28
125-
Nodes (8): POST(), LanguageSwitcher(), isLocale(), Locale, LOCALE_FLAGS, LOCALE_LABELS, LOCALES, getCurrentLocale()
125+
### Community 11 - "config.ts"
126+
Cohesion: 0.29
127+
Nodes (9): POST(), DEFAULT_LOCALE, isLocale(), Locale, LOCALE_COOKIE, LOCALE_FLAGS, LOCALE_LABELS, LOCALES (+1 more)
126128

127-
### Community 12 - "Input Validation Schemas"
128-
Cohesion: 0.18
129-
Nodes (10): CreateLinkInput, createLinkSchema, customCodeSchema, DeleteLinkInput, deleteLinkSchema, expiresAtSchema, passwordSchema, urlSchema (+2 more)
129+
### Community 12 - "MSK Shortener – Claude Projekt-Doku"
130+
Cohesion: 0.13
131+
Nodes (14): 💬 Arbeitsweise, `clicks`, 🗄️ Datenbank-Schema, 🌍 Deployment, 📦 Features, `links`, 🎨 MSK Design-System, MSK Shortener – Claude Projekt-Doku (+6 more)
130132

131-
### Community 13 - "Project Documentation"
132-
Cohesion: 0.25
133-
Nodes (9): Code of Conduct, Contributing Guidelines, Deployment Guide, Deploy Workflow, GNU Affero General Public License v3.0, MSK Logo, MSK Shortener UI Screenshot, MSK Shortener README (+1 more)
133+
### Community 13 - "pull_request_template.md"
134+
Cohesion: 0.13
135+
Nodes (15): Code of Conduct, Contributing Guidelines, Deployment Guide, Additional Notes, Checklist, Description, Related Issue, Screenshots (+7 more)
134136

135137
### Community 14 - "Installation Scripts"
136138
Cohesion: 0.43
137139
Nodes (7): DEBIAN_FRONTEND, log_err(), log_info(), log_ok(), log_step(), log_warn(), install.sh script
138140

139141
### Community 15 - "Abuse Prevention"
140-
Cohesion: 0.48
141-
Nodes (6): AbuseCheckResult, addBlockedDomain(), BLOCKED_DOMAINS, BLOCKED_TLDS, checkUrlForAbuse(), SHORTENER_DOMAINS
142+
Cohesion: 0.29
143+
Nodes (4): AbuseCheckResult, BLOCKED_DOMAINS, BLOCKED_TLDS, SHORTENER_DOMAINS
142144

143145
### Community 16 - "Root Layout Configuration"
144146
Cohesion: 0.33
@@ -157,24 +159,24 @@ Cohesion: 0.50
157159
Nodes (3): csp, nextConfig, withNextIntl
158160

159161
## Knowledge Gaps
160-
- **127 isolated node(s):** `PageProps`, `PageProps`, `RouteContext`, `QR_OPTIONS`, `RouteContext` (+122 more)
162+
- **163 isolated node(s):** `PageProps`, `dynamic`, `revalidate`, `PageProps`, `dynamic` (+158 more)
161163
These have ≤1 connection - possible missing edges or undocumented components.
162-
- **8 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
164+
- **9 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
163165

164166
## Suggested Questions
165167
_Questions this graph is uniquely positioned to answer:_
166168

167-
- **Why does `dependencies` connect `Project Dependencies` to `Package Metadata`?**
168-
_High betweenness centrality (0.235) - this node is a cross-community bridge._
169-
- **Why does `GET()` connect `Project Dependencies` to `Link Redirection Logic`, `Link Creation API`?**
170-
_High betweenness centrality (0.220) - this node is a cross-community bridge._
171-
- **What connects `PageProps`, `PageProps`, `RouteContext` to the rest of the system?**
172-
_127 weakly-connected nodes found - possible documentation gaps or missing edges._
173-
- **Should `Link Redirection Logic` be split into smaller, more focused modules?**
174-
_Cohesion score 0.14393939393939395 - nodes in this community are weakly interconnected._
169+
- **Why does `Header()` connect `Header.tsx` to `globalStats.ts`, `stats/[code]/page.tsx`?**
170+
_High betweenness centrality (0.018) - this node is a cross-community bridge._
171+
- **Why does `dependencies` connect `dependencies` to `Package Metadata`?**
172+
_High betweenness centrality (0.017) - this node is a cross-community bridge._
173+
- **Why does `getLinkByCode()` connect `stats/[code]/page.tsx` to `links.ts`, `password/page.tsx`, `index.ts`?**
174+
_High betweenness centrality (0.015) - this node is a cross-community bridge._
175+
- **What connects `PageProps`, `dynamic`, `revalidate` to the rest of the system?**
176+
_163 weakly-connected nodes found - possible documentation gaps or missing edges._
177+
- **Should `links.ts` be split into smaller, more focused modules?**
178+
_Cohesion score 0.07532467532467532 - nodes in this community are weakly interconnected._
175179
- **Should `TypeScript Configuration` be split into smaller, more focused modules?**
176180
_Cohesion score 0.06060606060606061 - nodes in this community are weakly interconnected._
177-
- **Should `Static Content Pages` be split into smaller, more focused modules?**
178-
_Cohesion score 0.08275862068965517 - nodes in this community are weakly interconnected._
179-
- **Should `Project Dependencies` be split into smaller, more focused modules?**
180-
_Cohesion score 0.07142857142857142 - nodes in this community are weakly interconnected._
181+
- **Should `Header.tsx` be split into smaller, more focused modules?**
182+
_Cohesion score 0.06951871657754011 - nodes in this community are weakly interconnected._

0 commit comments

Comments
 (0)