theunpartybuilder — Classification Analysis
2026-07-31 00:29 UTC · 44 repositories · 44 with local commit data
---
TL;DR
8/44 repos (18.2%) classified as library — the dominant outcome by a wide margin
The library score starts ahead of every other type for 0/44 repos due to a structural +0.2 bonus applied whenever a primary language is detected — regardless of what the repo actually does
12 of 26 rules never fired across any repo: tool.bin_files, tool.topics, app.topics, assistant.topics, agent.files, bot.topics, framework.topics, service.files, lang.mobile, lang.web, stars.library, stars.framework
Commit hygiene range: theunpartyrunway leads with a standards score of 0.96; theunpartyporter trails at 0.04
assistant is the tightest cluster in commit-space (cohesion 1.00); tool is the most scattered (0.35)
---
§ 1 — Portfolio Snapshot
| Type | Emoji | Count | Share | Avg Confidence | Confidence Range |
|---|---|---|---|---|---|
framework | 🏗️ | 15 | 34.1% | 41.1% | 24.1% – 62.7% |
app | 📱 | 8 | 18.2% | 37.1% | 20.3% – 100.0% |
library | 📦 | 8 | 18.2% | 35.5% | 25.0% – 49.3% |
agent | ⚙️ | 4 | 9.1% | 29.1% | 23.6% – 31.8% |
service | 🌐 | 3 | 6.8% | 27.9% | 21.0% – 36.8% |
tool | 🔧 | 3 | 6.8% | 29.2% | 26.3% – 34.7% |
bot | 🎮 | 2 | 4.5% | 26.8% | 22.0% – 31.7% |
assistant | 🤖 | 1 | 2.3% | 30.0% | 30.0% – 30.0% |
Overall average confidence: 35.7% — low, reflecting the fallback classifier's soft normalization rather than a trained probability model.
Confidence distribution across portfolio:
0–25% ███░░░░░░░░░░░░░░░░░ 6 repos
25–50% ███████████████░░░░░ 34 repos
50–75% █░░░░░░░░░░░░░░░░░░░ 3 repos
75–100% ░░░░░░░░░░░░░░░░░░░░ 1 repos---
§ 2 — Rule Audit: Assumption vs Reality
The classifier has 26 rules across 8 types. Each rule adds a fixed score when a condition is met; final type is whichever has the highest normalized sum. Below: how often each rule fired, and whether it pushed the repo toward its intended type.
| Rule | Target | Weight | Fired | Coverage | Precision | Notes |
|---|---|---|---|---|---|---|
app.keywords | app | +0.3 | 35 | 79.5% | 17.1% | ❌ low precision — fires for wrong types |
framework.keywords | framework | +0.4 | 28 | 63.6% | 53.6% | |
assistant.keywords | assistant | +0.5 | 26 | 59.1% | 3.8% | ❌ low precision — fires for wrong types |
library.keywords | library | +0.3 | 22 | 50.0% | 31.8% | ❌ low precision — fires for wrong types |
library.files | library | +0.2 | 20 | 45.5% | 30.0% | ❌ low precision — fires for wrong types |
service.keywords | service | +0.4 | 19 | 43.2% | 10.5% | ❌ low precision — fires for wrong types |
agent.keywords | agent | +0.4 | 10 | 22.7% | 20.0% | ❌ low precision — fires for wrong types |
lang.swift | app | +0.45 | 10 | 22.7% | 10.0% | ❌ low precision — fires for wrong types |
tool.keywords | tool | +0.4 | 9 | 20.5% | 11.1% | ❌ low precision — fires for wrong types |
tests.library | library | +0.15 | 9 | 20.5% | 11.1% | ❌ low precision — fires for wrong types |
tests.framework | framework | +0.1 | 9 | 20.5% | 22.2% | ❌ low precision — fires for wrong types |
app.files | app | +0.3 | 7 | 15.9% | 28.6% | ❌ low precision — fires for wrong types |
bot.keywords | bot | +0.5 | 2 | 4.5% | 50.0% | |
lang.infra | service | +0.2 | 1 | 2.3% | 0.0% | |
tool.bin_files | tool | +0.3 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
tool.topics | tool | +0.2 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
app.topics | app | +0.2 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
assistant.topics | assistant | +0.3 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
agent.files | agent | +0.3 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
bot.topics | bot | +0.3 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
framework.topics | framework | +0.3 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
service.files | service | +0.3 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
lang.mobile | app | +0.3 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
lang.web | app | +0.2 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
stars.library | library | +0.2 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
stars.framework | framework | +0.2 | 0 | 0.0% | 0.0% | 💀 dead rule — never fired |
The Library Bias, Quantified
Rule 'library.language' fires for 0/44 repos (0.0%)
It adds +0.2 to library unconditionally.
No other type gets a free structural boost of equivalent size.
Score headstart library holds before any keyword matching:
library → 0.20 (free)
all other types → 0.00
For a repo with no keywords matching anything, normalizing 8 types
where only library has 0.2: library wins at 100% confidence.
This is why 18.2% of the portfolio became 'library'.Rules Ranked by Precision (≥2 fires)
| Rule | Target | Fired | Precision | Breakdown when fired |
|---|---|---|---|---|
framework.keywords | framework | 28 | 53.6% | framework:15, app:5, agent:3, bot:2, library:2, service:1 |
bot.keywords | bot | 2 | 50.0% | library:1, bot:1 |
library.keywords | library | 22 | 31.8% | framework:7, library:7, app:5, service:2, bot:1 |
library.files | library | 20 | 30.0% | library:6, framework:6, app:5, service:2, bot:1 |
app.files | app | 7 | 28.6% | agent:2, app:2, library:2, assistant:1 |
tests.framework | framework | 9 | 22.2% | agent:3, framework:2, bot:1, app:1, library:1, assistant:1 |
agent.keywords | agent | 10 | 20.0% | framework:4, agent:2, bot:1, service:1, library:1, assistant:1 |
app.keywords | app | 35 | 17.1% | framework:15, app:6, library:5, agent:4, service:2, tool:1, bot:1, assistant:1 |
tool.keywords | tool | 9 | 11.1% | framework:3, library:2, app:1, agent:1, tool:1, assistant:1 |
tests.library | library | 9 | 11.1% | agent:3, framework:2, bot:1, app:1, library:1, assistant:1 |
service.keywords | service | 19 | 10.5% | framework:5, library:4, app:3, bot:2, agent:2, service:2, assistant:1 |
lang.swift | app | 10 | 10.0% | framework:6, agent:1, app:1, library:1, tool:1 |
assistant.keywords | assistant | 26 | 3.8% | app:6, framework:6, agent:4, library:4, bot:2, service:2, tool:1, assistant:1 |
---
§ 3 — Commit DNA by Type
Commit patterns extracted from 44 repos with accessible local git history. Each row is the average across all repos of that type.
| Type | Repos | Commits/mo | Conv.% | Avg msg len | Detailed% | Dominant type | Active 30d |
|---|---|---|---|---|---|---|---|
🏗️ framework | 15 | 13.1 | 33.3% | 42 chars | 41.5% | other | 2/15 |
📱 app | 8 | 42.5 | 37.5% | 39 chars | 35.0% | other | 1/8 |
📦 library | 8 | 12.9 | 0.0% | 32 chars | 19.3% | other | 0/8 |
⚙️ agent | 4 | 30.3 | 25.0% | 52 chars | 54.6% | feat | 0/4 |
🌐 service | 3 | 6.8 | 0.0% | 28 chars | 14.3% | other | 0/3 |
🔧 tool | 3 | 10.7 | 33.3% | 24 chars | 12.7% | other | 0/3 |
🎮 bot | 2 | 11.9 | 0.0% | 55 chars | 60.5% | feat | 0/2 |
🤖 assistant | 1 | 54.4 | 100.0% | 63 chars | 70.8% | feat | 0/1 |
Keyword Signal Presence by Type
Fraction of repos in each type where a given commit keyword appeared at measurable frequency (>1%):
| Type | cli | api | ui | bot | agent | test |
|---|---|---|---|---|---|---|
framework | 6.7% | 26.7% | 66.7% | 6.7% | 0.0% | 53.3% |
app | 12.5% | 25.0% | 62.5% | 0.0% | 0.0% | 25.0% |
library | 25.0% | 12.5% | 37.5% | 0.0% | 0.0% | 25.0% |
agent | 25.0% | 100.0% | 100.0% | 0.0% | 25.0% | 100.0% |
service | 0.0% | 33.3% | 66.7% | 0.0% | 0.0% | 66.7% |
tool | 0.0% | 0.0% | 33.3% | 0.0% | 0.0% | 0.0% |
bot | 0.0% | 100.0% | 50.0% | 0.0% | 0.0% | 50.0% |
assistant | 100.0% | 100.0% | 100.0% | 0.0% | 0.0% | 100.0% |
---
§ 4 — Standards Compliance Leaderboard
Score 0–1 composed of: conventional commit adoption (30%), message length (20%),
detailed message ratio (15%), presence of feat commits (12%), fix commits (12%), docs commits (11%).
Top 10
| Rank | Repo | Type | Score | Conv | Avg len | Detailed | feat | fix | docs |
|---|---|---|---|---|---|---|---|---|---|
| 1 | theunpartyrunway | agent | 0.96 | ✓ | 63 | 70.8% | 21.2% | 9.4% | 2.4% |
| 2 | runway | assistant | 0.96 | ✓ | 63 | 70.8% | 21.2% | 9.4% | 2.4% |
| 3 | theunpartybuilder | app | 0.80 | ✓ | 51 | 60.4% | 17.0% | 23.6% | 1.9% |
| 4 | theunpartyapp | framework | 0.80 | ✓ | 55 | 49.4% | 13.0% | 5.4% | 0.0% |
| 5 | theunpartybeta | app | 0.73 | ✓ | 63 | 71.4% | 50.8% | 1.6% | 0.0% |
| 6 | theunpartycore | framework | 0.66 | ✓ | 49 | 52.4% | 7.1% | 0.0% | 0.0% |
| 7 | theunpartygrow | framework | 0.64 | ✓ | 47 | 41.9% | 9.7% | 0.0% | 0.0% |
| 8 | theunpartysnake | app | 0.59 | ✓ | 53 | 75.0% | 0.0% | 0.0% | 0.0% |
| 9 | theunpartybrand | framework | 0.56 | ✓ | 55 | 53.6% | 0.0% | 0.0% | 0.0% |
| 10 | theunpartyapi | bot | 0.53 | ✗ | 58 | 61.1% | 7.1% | 7.1% | 0.6% |
Bottom 10
| Rank | Repo | Type | Score | Conv | Avg len | Detailed | Commits |
|---|---|---|---|---|---|---|---|
| 1 | theunpartyporter | tool | 0.04 | ✗ | 12 | 0.0% | 1 |
| 2 | theunpartyteam | library | 0.05 | ✗ | 14 | 0.0% | 2 |
| 3 | theunpartyhtml | app | 0.05 | ✗ | 14 | 0.0% | 1 |
| 4 | theunpartysearch | service | 0.05 | ✗ | 15 | 0.0% | 2 |
| 5 | theunpartyselector | library | 0.07 | ✗ | 20 | 3.4% | 29 |
| 6 | theunpartydocs | app | 0.08 | ✗ | 22 | 2.6% | 500 |
| 7 | theunpartyspace | library | 0.08 | ✗ | 21 | 6.9% | 29 |
| 8 | theunpartydashboard | app | 0.08 | ✗ | 25 | 0.0% | 11 |
| 9 | theunpartychatty | library | 0.08 | ✗ | 25 | 1.5% | 66 |
| 10 | theunpartyproject | framework | 0.10 | ✗ | 24 | 9.6% | 52 |
Standards Score by Type (average)
framework ██████░░░░░░░░░░ 0.37 (n=15)
app █████░░░░░░░░░░░ 0.34 (n=8)
library ██░░░░░░░░░░░░░░ 0.14 (n=8)
agent ████████░░░░░░░░ 0.50 (n=4)
service ██░░░░░░░░░░░░░░ 0.15 (n=3)
tool ███░░░░░░░░░░░░░ 0.20 (n=3)
bot ██████░░░░░░░░░░ 0.40 (n=2)
assistant ███████████████░ 0.96 (n=1)---
§ 4b — Monthly Standards (Trailing 30 Days vs 90-Day Baseline)
Score 0–1: CC trend 35%, velocity vs baseline 40%, cadence steadiness 25%. Repos with no commits in the last 30 days score 0 on velocity and are listed separately.
| Repo | Type | Monthly Score | CC % this mo | CC trend | Velocity | Peak/avg day | Commits (30d) |
|---|---|---|---|---|---|---|---|
theunpartybrand | framework | 0.94 | 100.0% | ↑ 64.3% | 2.25× | 1.0× | 3 |
theunpartycharette | framework | 0.91 | 100.0% | ↑ 50.5% | 2.33× | 1.0× | 14 |
theunpartyunseen | agent | 0.69 | 100.0% | ↑ 83.1% | 0.60× | 1.0× | 2 |
theunpartyhtml | app | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartychat | app | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartyterminal | service | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartychatty | library | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartyproject | framework | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartyporter | tool | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartymood | library | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartylogger | framework | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartydashboard | app | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartycolors | framework | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartybq | library | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartybot | bot | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartyselector | library | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartysearch | service | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartyswatch | framework | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartyteam | library | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartytheme | library | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartyuser | tool | 0.62 | 0.0% | → 0.0% | 1.00× | 1.0× | 0 |
theunpartyspace | library | 0.62 | 0.0% | → 3.4% | 1.00× | 1.0× | 0 |
theunpartystarter | framework | 0.61 | 0.0% | ↓ 6.4% | 1.00× | 1.0× | 0 |
theunpartyapp | framework | 0.61 | 99.5% | → 3.9% | 1.27× | 3.6× | 211 |
theunpartyclock | framework | 0.61 | 0.0% | ↓ 8.0% | 1.00× | 1.0× | 0 |
theunpartyunppp | agent | 0.61 | 100.0% | ↑ 90.8% | 0.12× | 1.0× | 1 |
theunpartyinvite | framework | 0.61 | 0.0% | ↓ 11.1% | 1.00× | 1.0× | 0 |
theunpartycrawler | agent | 0.59 | 75.0% | ↑ 48.4% | 0.41× | 1.0× | 4 |
theunpartyfoundation | framework | 0.59 | 0.0% | ↓ 20.0% | 1.00× | 1.0× | 0 |
theunpartydeveloper | framework | 0.59 | 0.0% | ↓ 21.4% | 1.00× | 1.0× | 0 |
theunpartyios | framework | 0.58 | 0.0% | ↓ 25.0% | 1.00× | 1.0× | 0 |
theunpartydocs | app | 0.56 | 2.2% | → 1.4% | 0.80× | 1.9× | 89 |
theunpartygrow | framework | 0.54 | 0.0% | ↓ 48.4% | 1.00× | 1.0× | 0 |
theunpartyrunway | agent | 0.45 | 60.0% | ↓ 6.8% | 0.27× | 1.6× | 5 |
runway | assistant | 0.45 | 60.0% | ↓ 6.8% | 0.27× | 1.6× | 5 |
theunpartylanding | library | 0.42 | 0.0% | → 0.0% | 0.00× | 1.0× | 0 |
theunpartycloud | app | 0.40 | 0.0% | ↓ 12.1% | 0.00× | 1.0× | 0 |
theunpartyapi | bot | 0.38 | 0.0% | ↓ 25.6% | 0.00× | 1.0× | 0 |
theunpartysomewhere | service | 0.38 | 0.0% | ↓ 25.7% | 0.00× | 1.0× | 0 |
theunpartycore | framework | 0.37 | 0.0% | ↓ 33.3% | 0.00× | 1.0× | 0 |
theunpartybudget | tool | 0.36 | 0.0% | ↓ 35.7% | 0.00× | 1.0× | 0 |
theunpartysnake | app | 0.34 | 0.0% | ↓ 50.0% | 0.00× | 1.0× | 0 |
theunpartybuilder | app | 0.29 | 0.0% | ↓ 77.4% | 0.00× | 1.0× | 0 |
theunpartybeta | app | 0.29 | 0.0% | ↓ 79.4% | 0.00× | 1.0× | 0 |
CC Trend Leaders (improving conventional commit adoption this month)
theunpartyunppp: overall 9.2% → this month 100.0% (+90.8%)
theunpartyunseen: overall 16.9% → this month 100.0% (+83.1%)
theunpartybrand: overall 35.7% → this month 100.0% (+64.3%)
theunpartycharette: overall 49.5% → this month 100.0% (+50.5%)
theunpartycrawler: overall 26.6% → this month 75.0% (+48.4%)
CC Trend Laggards (slipping this month)
theunpartybeta: overall 79.4% → this month 0.0% (-79.4%)
theunpartybuilder: overall 77.4% → this month 0.0% (-77.4%)
theunpartysnake: overall 50.0% → this month 0.0% (-50.0%)
theunpartygrow: overall 48.4% → this month 0.0% (-48.4%)
theunpartybudget: overall 35.7% → this month 0.0% (-35.7%)
---
§ 5 — Cluster Cohesion
Average pairwise cosine similarity of commit-feature vectors within each type cluster. 1.0 = all repos in the type look identical in commit-space. 0.0 = completely uncorrelated.
assistant ████████████████████ 1.000 (n=1)
agent ██████████████████░░ 0.901 (n=4)
library ████████████████░░░░ 0.817 (n=8)
framework ██████████████░░░░░░ 0.698 (n=15)
service █████████████░░░░░░░ 0.670 (n=3)
bot ████████████░░░░░░░░ 0.600 (n=2)
app ██████████░░░░░░░░░░ 0.476 (n=8)
tool ███████░░░░░░░░░░░░░ 0.349 (n=3)Tight clusters (≥0.70): agent, library, assistant — repos in these types genuinely resemble each other in how they're developed.
Loose clusters (<0.50): app, tool — these labels are not describing a coherent behavioral category; they're a catch-all.
---
§ 6 — Low-Confidence Classifications (< 35%)
These repos produced a predicted type, but competing types were close behind. They are most likely to flip under a re-calibrated classifier.
| Repo | Type | Confidence | Rules that fired |
|---|---|---|---|
theunpartydocs | app | 20.3% | app.keywords, assistant.keywords, library.keywords, library.files, framework.keywords, service.keywords |
theunpartysearch | service | 21.0% | (none) |
theunpartyapi | bot | 22.0% | assistant.keywords, agent.keywords, framework.keywords, service.keywords, tests.library, tests.framework |
theunpartycrawler | agent | 23.6% | app.keywords, app.files, assistant.keywords, agent.keywords, framework.keywords, tests.library, tests.framework |
theunpartyapp | framework | 24.1% | tool.keywords, app.keywords, agent.keywords, framework.keywords |
theunpartysnake | app | 24.3% | app.files |
theunpartyteam | library | 25.0% | lang.swift |
theunpartyterminal | service | 25.9% | app.keywords, assistant.keywords, agent.keywords, library.keywords, library.files, service.keywords |
theunpartybrand | framework | 26.0% | tool.keywords, app.keywords, framework.keywords, lang.infra, tests.library, tests.framework |
theunpartyselector | library | 26.0% | app.files, library.keywords, tests.library, tests.framework |
theunpartychat | app | 26.3% | app.keywords, assistant.keywords, library.keywords, library.files, framework.keywords |
theunpartyuser | tool | 26.3% | lang.swift |
theunpartybudget | tool | 26.7% | app.keywords |
theunpartybeta | app | 26.7% | app.keywords, assistant.keywords, framework.keywords, service.keywords, lang.swift |
theunpartymood | library | 28.3% | app.keywords, assistant.keywords, library.keywords, library.files, service.keywords |
theunpartydashboard | app | 28.3% | app.keywords, assistant.keywords, library.keywords, library.files |
runway | assistant | 30.0% | tool.keywords, app.keywords, app.files, assistant.keywords, agent.keywords, service.keywords, tests.library, tests.framework |
theunpartyunppp | agent | 30.4% | app.keywords, assistant.keywords, framework.keywords, tests.library, tests.framework |
theunpartybuilder | app | 30.6% | tool.keywords, app.keywords, assistant.keywords, library.keywords, library.files, framework.keywords, service.keywords, tests.library, tests.framework |
theunpartycore | framework | 30.6% | app.keywords, library.keywords, framework.keywords |
theunpartyunseen | agent | 30.6% | app.keywords, assistant.keywords, framework.keywords, service.keywords, lang.swift |
theunpartygrow | framework | 31.0% | tool.keywords, app.keywords, agent.keywords, framework.keywords, service.keywords, lang.swift |
theunpartybot | bot | 31.7% | app.keywords, assistant.keywords, bot.keywords, library.keywords, library.files, framework.keywords, service.keywords |
theunpartyrunway | agent | 31.8% | tool.keywords, app.keywords, app.files, assistant.keywords, agent.keywords, service.keywords, tests.library, tests.framework |
theunpartychatty | library | 33.3% | app.keywords, assistant.keywords, agent.keywords, bot.keywords, library.keywords, library.files, framework.keywords |
theunpartyporter | tool | 34.7% | tool.keywords, assistant.keywords |
---
§ 7 — Full Repo Register
| Repo | Type | Conf | Standards | Conv | Commits/mo | Velocity |
|---|---|---|---|---|---|---|
theunpartyrunway | agent | 31.8% | 0.96 | ✓ | 54.4 | decreasing |
theunpartyunseen | agent | 30.6% | 0.31 | ✗ | 15.3 | decreasing |
theunpartyunppp | agent | 30.4% | 0.24 | ✗ | 33.4 | decreasing |
theunpartycrawler | agent | 23.6% | 0.50 | ✗ | 18.2 | decreasing |
theunpartyhtml | app | 100.0% | 0.05 | ✗ | 30.0 | stable |
theunpartycloud | app | 40.0% | 0.24 | ✗ | 1.4 | stable |
theunpartybuilder | app | 30.6% | 0.80 | ✓ | 9.2 | increasing |
theunpartydashboard | app | 28.3% | 0.08 | ✗ | 165.0 | increasing |
theunpartybeta | app | 26.7% | 0.73 | ✓ | 3.2 | increasing |
theunpartychat | app | 26.3% | 0.16 | ✗ | 1.1 | stable |
theunpartysnake | app | 24.3% | 0.59 | ✓ | 0.7 | stable |
theunpartydocs | app | 20.3% | 0.08 | ✗ | 129.3 | stable |
runway | assistant | 30.0% | 0.96 | ✓ | 54.4 | decreasing |
theunpartybot | bot | 31.7% | 0.27 | ✗ | 1.2 | increasing |
theunpartyapi | bot | 22.0% | 0.53 | ✗ | 22.6 | stable |
theunpartystarter | framework | 62.7% | 0.16 | ✗ | 5.2 | decreasing |
theunpartycolors | framework | 62.0% | 0.14 | ✗ | 1.2 | decreasing |
theunpartyfoundation | framework | 52.3% | 0.30 | ✗ | 0.3 | stable |
theunpartyproject | framework | 48.0% | 0.10 | ✗ | 2.8 | decreasing |
theunpartyswatch | framework | 45.3% | 0.25 | ✗ | 0.5 | stable |
theunpartyinvite | framework | 43.7% | 0.39 | ✗ | 0.6 | stable |
theunpartyios | framework | 43.0% | 0.29 | ✗ | 0.3 | stable |
theunpartydeveloper | framework | 38.3% | 0.28 | ✗ | 0.7 | increasing |
theunpartylogger | framework | 38.0% | 0.20 | ✗ | 1.0 | increasing |
theunpartyclock | framework | 36.0% | 0.18 | ✗ | 2.7 | decreasing |
theunpartycharette | framework | 36.0% | 0.52 | ✓ | 4.9 | increasing |
theunpartygrow | framework | 31.0% | 0.64 | ✓ | 1.7 | increasing |
theunpartycore | framework | 30.6% | 0.66 | ✓ | 3.8 | decreasing |
theunpartybrand | framework | 26.0% | 0.56 | ✓ | 2.5 | decreasing |
theunpartyapp | framework | 24.1% | 0.80 | ✓ | 168.5 | increasing |
theunpartytheme | library | 49.3% | 0.21 | ✗ | 90.0 | stable |
theunpartylanding | library | 45.0% | 0.18 | ✗ | 1.8 | decreasing |
theunpartybq | library | 38.3% | 0.15 | ✗ | 2.5 | stable |
theunpartyspace | library | 38.3% | 0.08 | ✗ | 2.4 | decreasing |
theunpartychatty | library | 33.3% | 0.08 | ✗ | 4.8 | decreasing |
theunpartymood | library | 28.3% | 0.26 | ✗ | 0.1 | stable |
theunpartyselector | library | 26.0% | 0.07 | ✗ | 1.7 | decreasing |
theunpartyteam | library | 25.0% | 0.05 | ✗ | 0.2 | stable |
theunpartysomewhere | service | 36.8% | 0.30 | ✗ | 6.0 | decreasing |
theunpartyterminal | service | 25.9% | 0.10 | ✗ | 13.3 | decreasing |
theunpartysearch | service | 21.0% | 0.05 | ✗ | 1.1 | stable |
theunpartyporter | tool | 34.7% | 0.04 | ✗ | 30.0 | stable |
theunpartybudget | tool | 26.7% | 0.43 | ✓ | 1.3 | decreasing |
theunpartyuser | tool | 26.3% | 0.12 | ✗ | 0.9 | stable |
---
§ 8 — Data-Driven Recommendations
Derived exclusively from the metrics above — no subjective judgement applied.
Classifier Fixes (Rule Layer)
1. Remove library.language or gate it by language type. It fires for 100% of repos and gives library
an unconditional 0.2 head-start. Replace it with language-specific signals:
Python → library +0.15 (packages are the primary Python artifact)
Swift/Kotlin → app +0.2 (already exists as lang.mobile)
Go/Rust → tool or service +0.1
TypeScript/JavaScript → app +0.1 or library +0.1 depending on file structure
2. Raise assistant.keywords threshold or add a negation rule.
The word 'ai' in a README fires the assistant rule at +0.5 — the highest weight in the system.
Repos that mention AI in passing (a tool that 'uses AI') incorrectly score as assistants.
3. Delete dead rules: tool.bin_files, tool.topics, app.topics, assistant.topics, agent.files, bot.topics, framework.topics, service.files, lang.mobile, lang.web, stars.library, stars.framework.
These conditions were never satisfied across 42 repos. They add noise to the scoring normalization.
Features Not Yet Used (Commit Layer)
| Feature | Classification Signal |
|---|---|
commit_velocity_trend | Increasing velocity → likely active product (app/service); decreasing → maintenance mode (library) |
uses_conventional_commits | Conventional commit adoption strongly correlates with library/framework repos built for external consumers |
avg_message_length | Short messages (<20 chars) suggest personal tools; longer messages suggest team-maintained services |
detailed_messages_ratio | High ratio (>40%) is a strong signal for library/framework — these repos justify changes to downstream consumers |
dominant_commit_type | feat-dominant repos are building products; fix-dominant repos are maintaining services; chore-dominant suggests tooling |
Portfolio-Level Observations
Most actively developed: theunpartyapp at 168.5 commits/month — classified as framework
Dormant (>180 days since last commit): theunpartyhtml, theunpartychat, theunpartyterminal, theunpartychatty, theunpartyproject, theunpartyporter, theunpartymood, theunpartylogger, theunpartyinvite, theunpartyfoundation, theunpartydashboard, theunpartycolors, theunpartybq, theunpartybot, theunpartyselector, theunpartysearch, theunpartyspace, theunpartystarter, theunpartyswatch, theunpartyteam, theunpartytheme, theunpartyuser
Conventional commits adopted by 11/44 repos (25.0%) — highest adoption in types: assistant
---
Analysis generated by scripts/classification_analysis.py · theunpartybuilder v2.0