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
framework
Emoji
🏗️
Count
15
Share
34.1%
Avg Confidence
41.1%
Confidence Range
24.1% – 62.7%

Overall average confidence: 35.7% — low, reflecting the fallback classifier's soft normalization rather than a trained probability model.

Confidence distribution across portfolio:

code
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
app.keywords
Target
app
Weight
+0.3
Fired
35
Coverage
79.5%
Precision
17.1%
Notes
❌ low precision — fires for wrong types

The Library Bias, Quantified

code
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
framework.keywords
Target
framework
Fired
28
Precision
53.6%
Breakdown when fired
framework:15, app:5, agent:3, bot:2, library:2, service: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
🏗️ framework
Repos
15
Commits/mo
13.1
Conv.%
33.3%
Avg msg len
42 chars
Detailed%
41.5%
Dominant type
other
Active 30d
2/15

Keyword Signal Presence by Type

Fraction of repos in each type where a given commit keyword appeared at measurable frequency (>1%):

Type
framework
cli
6.7%
api
26.7%
ui
66.7%
bot
6.7%
agent
0.0%
test
53.3%

---

§ 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
1
Repo
theunpartyrunway
Type
agent
Score
0.96
Conv
✓
Avg len
63
Detailed
70.8%
feat
21.2%
fix
9.4%
docs
2.4%

Bottom 10

Rank
1
Repo
theunpartyporter
Type
tool
Score
0.04
Conv
✗
Avg len
12
Detailed
0.0%
Commits
1

Standards Score by Type (average)

code
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
theunpartybrand
Type
framework
Monthly Score
0.94
CC % this mo
100.0%
CC trend
↑ 64.3%
Velocity
2.25×
Peak/avg day
1.0×
Commits (30d)
3

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.

code
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
theunpartydocs
Type
app
Confidence
20.3%
Rules that fired
app.keywords, assistant.keywords, library.keywords, library.files, framework.keywords, service.keywords

---

§ 7 — Full Repo Register

Repo
theunpartyrunway
Type
agent
Conf
31.8%
Standards
0.96
Conv
✓
Commits/mo
54.4
Velocity
decreasing

---

§ 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
commit_velocity_trend
Classification Signal
Increasing velocity → likely active product (app/service); decreasing → maintenance mode (library)

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