Skip to content

Commit 12aa94c

Browse files
committed
graph
1 parent c753a3e commit 12aa94c

2 files changed

Lines changed: 8122 additions & 6183 deletions

File tree

graphify-out/GRAPH_REPORT.md

Lines changed: 118 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,167 +1,181 @@
1-
# Graph Report - . (2026-08-17)
1+
# Graph Report - msk-paste (2026-08-17)
22

33
## Corpus Check
4-
- cluster-only mode — file stats not available
4+
- Corpus is ~32,954 words - fits in a single context window. You may not need a graph.
55

66
## Summary
7-
- 343 nodes · 579 edges · 29 communities (19 shown, 10 thin omitted)
8-
- Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 5 edges (avg confidence: 0.82)
9-
- Token cost: 0 input · 0 output
10-
11-
## Graph Freshness
12-
- Built from commit: `2ffdb912`
13-
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
14-
- Run `graphify update .` after code changes (no API cost).
7+
- 400 nodes · 662 edges · 27 communities (23 shown, 4 thin omitted)
8+
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 27 edges (avg confidence: 0.81)
9+
- Token cost: 450,193 input · 0 output
1510

1611
## Community Hubs (Navigation)
17-
- paste.ts
18-
- pastes/route.ts
19-
- password/page.tsx
20-
- compilerOptions
21-
- index.ts
22-
- Production Dependencies
23-
- Database Migrations and Stats
24-
- Development Dependencies
25-
- Project Metadata
26-
- config.ts
27-
- Project Documentation
28-
- install.sh
29-
- npm Ecosystem
12+
- Repo Governance and CI
13+
- Paste API Routes
14+
- Interactive Paste Components
15+
- App Pages and Metadata
16+
- TypeScript Compiler Config
17+
- Database Layer and Scripts
18+
- Runtime Dependencies
19+
- Paste Business Logic
20+
- Dev Tooling Dependencies
21+
- Package Manifest
22+
- Locale and i18n
23+
- Server Install Script
24+
- Paste UI Screenshot
25+
- Syntax Highlighting
3026
- Root Layout and Fonts
31-
- ESLint Configuration
32-
- Backup Scripts
33-
- Next.js Configuration
34-
- Update Scripts
35-
- Funding Configuration
36-
- Issue Template Configuration
37-
- 001_create_pastes.sql
38-
- tailwind.config.ts
39-
- Bug Report Template
40-
- Feature Request Template
41-
- Mirror Workflow
42-
- Release Workflow
43-
- MSK Scripts Logo
27+
- Shortener Reference UI
28+
- ESLint Flat Config
29+
- MSK Logo Branding
30+
- Codeberg Mirror Workflow
31+
- Backup Script
32+
- Next Config and CSP
33+
- Release Automation
34+
- Update Script
35+
- Pastes Table Migration
36+
- Tailwind Config
4437

4538
## God Nodes (most connected - your core abstractions)
4639
1. `compilerOptions` - 20 edges
4740
2. `getPasteRow()` - 14 edges
48-
3. `isPasteExpired()` - 13 edges
49-
4. `pasteHasPassword()` - 13 edges
50-
5. `consumeView()` - 12 edges
51-
6. `POST()` - 11 edges
41+
3. `MSK Paste (project)` - 14 edges
42+
4. `isPasteExpired()` - 13 edges
43+
5. `pasteHasPassword()` - 13 edges
44+
6. `consumeView()` - 12 edges
5245
7. `POST()` - 11 edges
53-
8. `jsonError()` - 10 edges
54-
9. `execute()` - 10 edges
55-
10. `PastePage()` - 8 edges
46+
8. `POST()` - 11 edges
47+
9. `jsonError()` - 10 edges
48+
10. `execute()` - 10 edges
5649

5750
## Surprising Connections (you probably didn't know these)
58-
- `MSK Paste UI Screenshot` --references--> `MSK Paste README` [INFERRED]
59-
public/msk_paste.png → README.md
60-
- `MSK Shortener UI Screenshot` --references--> `MSK Paste README` [INFERRED]
61-
public/msk_shortener.png → README.md
62-
- `StatsPage()` --calls--> `getGlobalStats()` [EXTRACTED]
63-
app/stats/page.tsxsrc/lib/stats.ts
64-
- `PasswordPage()` --calls--> `getPasteRow()` [EXTRACTED]
65-
app/[id]/password/page.tsxsrc/lib/paste.ts
66-
- `PasswordPage()` --calls--> `isPasteExpired()` [EXTRACTED]
67-
app/[id]/password/page.tsx → src/lib/paste.ts
51+
- `Burn After Read` --semantically_similar_to--> `Cleanup Cron (expired paste deletion)` [INFERRED] [semantically similar]
52+
README.mddeployment/README.md
53+
- `GitHub Sponsors Funding Config` --references--> `MSK Paste (project)` [INFERRED]
54+
.github/FUNDING.yml → README.md
55+
- `Deny GPL-2.0 / GPL-3.0 Dependencies` --conceptually_related_to--> `AGPL-3.0-or-later License` [AMBIGUOUS]
56+
.github/workflows/dependency-review.ymlLICENSE.md
57+
- `CodeQL Advanced Workflow` --conceptually_related_to--> `Defensive Measures in Place` [INFERRED]
58+
.github/workflows/codeql.ymlSECURITY.md
59+
- `PastePage()` --calls--> `renderHighlightedHtml()` [EXTRACTED]
60+
app/[id]/page.tsx → src/lib/highlight.ts
6861

6962
## Import Cycles
7063
- None detected.
7164

7265
## Hyperedges (group relationships)
73-
- **CI/CD Pipeline** — github_workflows_codeql, github_workflows_dependency_review, github_workflows_eslint [EXTRACTED 1.00]
74-
- **Project Governance & Contribution** — github_funding, github_pull_request_template, github_issue_template_bug_report, github_issue_template_feature_request, github_issue_template_config [INFERRED 0.90]
66+
- **Privacy-preserving paste lifecycle** — readme_privacy_by_default, readme_ip_hmac_hashing, readme_expiration_policy, readme_burn_after_read, deployment_readme_cleanup_cron [INFERRED 0.85]
67+
- **CI security and quality gate suite**_github_workflows_codeql_codeql_workflow, _github_workflows_eslint_eslint_workflow, _github_workflows_dependency_review_dependency_review_workflow, _github_dependabot_dependabot_config, contributing_pr_quality_gate [INFERRED 0.85]
68+
- **Push-to-production pipeline**_github_workflows_deploy_deploy_workflow, _github_workflows_deploy_scp_ssh_deploy, deployment_readme_github_secrets, deployment_readme_systemd_unit, deployment_readme_apache_reverse_proxy, deployment_readme_install_sh [EXTRACTED 1.00]
7569

76-
## Communities (29 total, 10 thin omitted)
70+
## Communities (27 total, 4 thin omitted)
7771

78-
### Community 0 - "paste.ts"
79-
Cohesion: 0.13
80-
Nodes (33): DELETE(), GET(), RouteContext, POST(), RouteContext, GET(), RouteContext, sanitizeFilename() (+25 more)
72+
### Community 0 - "Repo Governance and CI"
73+
Cohesion: 0.06
74+
Nodes (48): Dependabot Configuration, Group Minor and Patch Updates, Ignore Major Version Bumps, GitHub Sponsors Funding Config, Bug Report Template, Issue Template Config (blank issues disabled), Feature Request Template, Pull Request Template (+40 more)
8175

82-
### Community 1 - "pastes/route.ts"
83-
Cohesion: 0.09
84-
Nodes (29): MAX_PASTE_SIZE_BYTES, POST(), buildPasteUrl(), buildRawUrl(), envInt(), createPaste(), generateUniquePasteId(), PasteError (+21 more)
76+
### Community 1 - "Paste API Routes"
77+
Cohesion: 0.12
78+
Nodes (36): DELETE(), GET(), RouteContext, POST(), RouteContext, MAX_PASTE_SIZE_BYTES, POST(), GET() (+28 more)
8579

86-
### Community 2 - "password/page.tsx"
87-
Cohesion: 0.10
88-
Nodes (17): getOrigin(), PageProps, PasswordPage(), SECTIONS, dynamic, StatsPage(), Footer(), Header() (+9 more)
80+
### Community 2 - "Interactive Paste Components"
81+
Cohesion: 0.08
82+
Nodes (22): CopyButton(), CopyButtonProps, CreatePasteForm(), EXPIRES_IN_OPTIONS, DeletePasteButton(), DeletePasteButtonProps, PasswordPrompt(), PasswordPromptProps (+14 more)
83+
84+
### Community 3 - "App Pages and Metadata"
85+
Cohesion: 0.09
86+
Nodes (14): getOrigin(), PageProps, SECTIONS, dynamic, Footer(), Header(), HeaderProps, Logo() (+6 more)
8987

90-
### Community 3 - "compilerOptions"
88+
### Community 4 - "TypeScript Compiler Config"
9189
Cohesion: 0.06
9290
Nodes (32): ./app/*, dom, dom.iterable, esnext, next-env.d.ts, .next/types/**/*.ts, node_modules, **/*.ts (+24 more)
9391

94-
### Community 4 - "index.ts"
95-
Cohesion: 0.11
96-
Nodes (21): CopyButton(), CopyButtonProps, CreatePasteForm(), EXPIRES_IN_OPTIONS, DeletePasteButton(), DeletePasteButtonProps, PasswordPrompt(), PasswordPromptProps (+13 more)
92+
### Community 5 - "Database Layer and Scripts"
93+
Cohesion: 0.16
94+
Nodes (20): GET(), StatsPage(), main(), ensureMigrationsTable(), getExecutedMigrations(), main(), MIGRATIONS_DIR, IMPORTANT: dotenv MUST be loaded before anything else so that ENV variables (+12 more)
9795

98-
### Community 5 - "Production Dependencies"
96+
### Community 6 - "Runtime Dependencies"
9997
Cohesion: 0.08
10098
Nodes (25): bcryptjs, dotenv, mysql2, nanoid, next, next-intl, dependencies, bcryptjs (+17 more)
10199

102-
### Community 6 - "Database Migrations and Stats"
103-
Cohesion: 0.19
104-
Nodes (18): GET(), main(), ensureMigrationsTable(), getExecutedMigrations(), main(), MIGRATIONS_DIR, IMPORTANT: dotenv MUST be loaded before anything else so that ENV variables, runMigration() (+10 more)
100+
### Community 7 - "Paste Business Logic"
101+
Cohesion: 0.12
102+
Nodes (20): CreatedPaste, createPaste(), CreatePasteParams, generateUniquePasteId(), PasteError, isReservedId(), RESERVED_PASTE_IDS, CUSTOM_ID_MAX (+12 more)
105103

106-
### Community 7 - "Development Dependencies"
104+
### Community 8 - "Dev Tooling Dependencies"
107105
Cohesion: 0.10
108106
Nodes (21): autoprefixer, eslint, eslint-config-next, devDependencies, autoprefixer, eslint, eslint-config-next, postcss (+13 more)
109107

110-
### Community 8 - "Project Metadata"
108+
### Community 9 - "Package Manifest"
111109
Cohesion: 0.10
112110
Nodes (19): description, engines, node, license, name, overrides, eslint, postcss (+11 more)
113111

114-
### Community 9 - "config.ts"
115-
Cohesion: 0.26
112+
### Community 10 - "Locale and i18n"
113+
Cohesion: 0.21
116114
Nodes (10): POST(), LanguageSwitcher(), DEFAULT_LOCALE, isLocale(), Locale, LOCALE_COOKIE, LOCALE_FLAGS, LOCALE_LABELS (+2 more)
117115

118-
### Community 10 - "Project Documentation"
119-
Cohesion: 0.22
120-
Nodes (9): Code of Conduct, Contributing Guide, Deployment Guide, Deployment Workflow, GNU Affero General Public License v3, MSK Paste UI Screenshot, MSK Shortener UI Screenshot, MSK Paste README (+1 more)
121-
122-
### Community 11 - "install.sh"
116+
### Community 11 - "Server Install Script"
123117
Cohesion: 0.43
124118
Nodes (7): DEBIAN_FRONTEND, log_err(), log_info(), log_ok(), log_step(), log_warn(), install.sh script
125119

126-
### Community 12 - "npm Ecosystem"
127-
Cohesion: 0.29
128-
Nodes (7): GitHub Actions Ecosystem, Dependabot Configuration, Pull Request Template, CodeQL Workflow, Dependency Review Workflow, ESLint Workflow, npm Ecosystem
120+
### Community 12 - "Paste UI Screenshot"
121+
Cohesion: 0.36
122+
Nodes (8): MSK Paste Wordmark and Tagline, Content Textarea With Byte Counter, Create Paste Form, MSK Dark Theme With Green Accent, MSK Paste Landing Page Screenshot, 1 MB Paste Size Limit (1048576 bytes), Syntax Highlighting Promise, Optional Title Field
129123

130-
### Community 13 - "Root Layout and Fonts"
124+
### Community 13 - "Syntax Highlighting"
125+
Cohesion: 0.43
126+
Nodes (6): getHighlighter(), renderHighlightedHtml(), isSupportedLanguage(), LANGUAGE_EXTENSIONS, SUPPORTED_LANGUAGES, SupportedLanguage
127+
128+
### Community 14 - "Root Layout and Fonts"
131129
Cohesion: 0.33
132130
Nodes (4): inter, jetbrainsMono, metadata, viewport
133131

134-
### Community 14 - "ESLint Configuration"
132+
### Community 15 - "Shortener Reference UI"
133+
Cohesion: 0.53
134+
Nodes (6): Hero Headline: 'Long URLs? Make them short.', MSK Dark Design Language (dark surface, green accent), Privacy Tagline: no cookies, no trackers, no signup, MSK Shortener as UI Reference Implementation for MSK Paste, MSK Shortener Landing Page Screenshot, Long URL Input Card with Placeholder
135+
136+
### Community 16 - "ESLint Flat Config"
135137
Cohesion: 0.40
136138
Nodes (4): compat, __dirname, eslintConfig, __filename
137139

138-
### Community 15 - "Backup Scripts"
140+
### Community 17 - "MSK Logo Branding"
141+
Cohesion: 0.60
142+
Nodes (5): Site Favicon / Header Logo Asset, Stylized Letter M Wordmark, MSK Brand Identity, MSK Green Accent Color, MSK Logo (public/logo.png)
143+
144+
### Community 18 - "Codeberg Mirror Workflow"
145+
Cohesion: 0.50
146+
Nodes (4): Mirror to Codeberg Workflow, Exact Mirror with --prune, origin/HEAD Deletion Before Push, Codeberg Config Stored as Secrets, not Variables
147+
148+
### Community 19 - "Backup Script"
139149
Cohesion: 0.83
140150
Nodes (3): log_err(), log_ok(), backup.sh script
141151

142-
### Community 16 - "Next.js Configuration"
152+
### Community 20 - "Next Config and CSP"
143153
Cohesion: 0.50
144154
Nodes (3): csp, nextConfig, withNextIntl
145155

156+
## Ambiguous Edges - Review These
157+
- `AGPL-3.0-or-later License``Deny GPL-2.0 / GPL-3.0 Dependencies` [AMBIGUOUS]
158+
.github/workflows/dependency-review.yml · relation: conceptually_related_to
159+
146160
## Knowledge Gaps
147-
- **131 isolated node(s):** `PageProps`, `PageProps`, `RouteContext`, `RouteContext`, `MAX_PASTE_SIZE_BYTES` (+126 more)
161+
- **125 isolated node(s):** `PageProps`, `PageProps`, `RouteContext`, `RouteContext`, `MAX_PASTE_SIZE_BYTES` (+120 more)
148162
These have ≤1 connection - possible missing edges or undocumented components.
149-
- **10 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
163+
- **4 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
150164

151165
## Suggested Questions
152166
_Questions this graph is uniquely positioned to answer:_
153167

154-
- **Why does `dependencies` connect `Production Dependencies` to `Project Metadata`?**
155-
_High betweenness centrality (0.021) - this node is a cross-community bridge._
156-
- **Why does `devDependencies` connect `Development Dependencies` to `Project Metadata`?**
157-
_High betweenness centrality (0.019) - this node is a cross-community bridge._
158-
- **Why does `execute()` connect `Database Migrations and Stats` to `paste.ts`, `pastes/route.ts`?**
159-
_High betweenness centrality (0.015) - this node is a cross-community bridge._
168+
- **What is the exact relationship between `AGPL-3.0-or-later License` and `Deny GPL-2.0 / GPL-3.0 Dependencies`?**
169+
_Edge tagged AMBIGUOUS (relation: conceptually_related_to) - confidence is low._
170+
- **Why does `dependencies` connect `Runtime Dependencies` to `Package Manifest`?**
171+
_High betweenness centrality (0.016) - this node is a cross-community bridge._
172+
- **Why does `devDependencies` connect `Dev Tooling Dependencies` to `Package Manifest`?**
173+
_High betweenness centrality (0.014) - this node is a cross-community bridge._
174+
- **Why does `execute()` connect `Database Layer and Scripts` to `Paste API Routes`, `Paste Business Logic`?**
175+
_High betweenness centrality (0.011) - this node is a cross-community bridge._
160176
- **What connects `PageProps`, `PageProps`, `RouteContext` to the rest of the system?**
161-
_131 weakly-connected nodes found - possible documentation gaps or missing edges._
162-
- **Should `paste.ts` be split into smaller, more focused modules?**
163-
_Cohesion score 0.12896405919661733 - nodes in this community are weakly interconnected._
164-
- **Should `pastes/route.ts` be split into smaller, more focused modules?**
165-
_Cohesion score 0.09206349206349207 - nodes in this community are weakly interconnected._
166-
- **Should `password/page.tsx` be split into smaller, more focused modules?**
167-
_Cohesion score 0.0957983193277311 - nodes in this community are weakly interconnected._
177+
_125 weakly-connected nodes found - possible documentation gaps or missing edges._
178+
- **Should `Repo Governance and CI` be split into smaller, more focused modules?**
179+
_Cohesion score 0.05585106382978723 - nodes in this community are weakly interconnected._
180+
- **Should `Paste API Routes` be split into smaller, more focused modules?**
181+
_Cohesion score 0.11818181818181818 - nodes in this community are weakly interconnected._

0 commit comments

Comments
 (0)