DEV Community

Our first 71 commit messages contain 251 words, and 42 of them are "made"

I ran a census of the commit history behind pub-trivia.app expecting to find something about the code. I found something about me instead.

87 commits. Two eras, and a 40-day gap between them.

Era one: 71 commits, 251 words

Here is the entire vocabulary of the first five months, ranked: made 42, changes 29, to 24, app 19, updates 12, fix 7, our 5, and 4, the 4, commit 3, update 3, page 3, ...

251 words across 71 subject lines. 89 of them distinct. Average subject length 19.9 characters.

50 distinct subjects for 71 commits, because these repeat:

  • 6x made changes to app
  • 5x made changes
  • 4x changes made
  • 4x made changes to our app
  • 3x updates made
  • 3x updates made to app
  • 2x updates to app
  • 2x initial commit

Two initial commits. The first at 17:42 and the second at 20:21 on the same evening, 2 hours 39 minutes apart, which I assume was a repository I started, disliked, and started again without deleting. Six commits that first day, ending at 22:01 with "quick fix".

The typos are their own genre: udpates made, made changes ot app, update publix route, uddate, and my favourite, quick fix es made, which reads like a verb tense nobody invented.

The shortest subject in the repository is three characters long and it is fix.

There are four pull requests in there too, numbered #1 to #4, all merged on the same day in June, all opened by me, against my own repository, with nobody to review them. Style plans loading page (#2) and Merge profile into settings (#1) are the two best messages of the entire first era, and they are good because GitHub wrote the format for me.

Three commits in the whole repository have a body. One of those is a merge commit, where git wrote the body.

The gap

28 July to 6 September. Forty days, nothing. The commit on the other side of it is:

Refactor scoring to per-question points and fix security issues

63 characters. Capitalised. An imperative verb. Two things named. I have no memory of deciding to write commit messages differently, and there is no commit that says so, which is funny given the subject.

Era two: 16 commits, 131 words

  • 2026-09-06 Refactor scoring to per-question points and fix security issues
  • 2026-09-14 Add SEO content clusters and Stripe Managed Payments
  • 2026-09-14 Remove em dashes from user-visible copy and add IndexNow
  • 2026-10-02 Update business structure to sole trader model
  • 2026-10-03 Update Nakodo description with multi-platform support and email
  • 2026-10-03 Establish CogniPrep Ltd as publisher of all apps
  • 2026-10-07 Extract game engine and move clock ownership to WS server
  • 2026-10-12 Add maintenance mode with graceful fallback
  • 2026-10-12 Remove drizzle-kit migrate from build script
  • 2026-10-13 Fix ws-server Railway build: pin pnpm and drop tsx
  • 2026-10-15 Build checkout line items from local plan prices
  • 2026-10-15 Remove legacy /webhook routes and point all webhooks at /api
  • 2026-10-15 Correct and clarify seed trivia questions and answers
  • 2026-10-15 Update site copy from five to thirteen question packs
  • 2026-10-18 Build checkout and pricing in visitor's local currency
  • 2026-10-18 Make plan changes through Checkout without a gap

16 commits, 16 distinct subjects, zero repeats. 131 words, 100 of them distinct. Average subject length 52.4 characters, up from 19.9.

Ten different opening verbs: Remove, Update, Add, Build, Refactor, Establish, Extract, Fix, Correct, Make.

The ratio that actually tells the story is words per commit. Era one spends 3.5 words on a commit. Era two spends 8.2. Not a huge budget either way. It turns out eight words is enough and three is not.

The part you can check

Here is why I think the second list is worth something and the first is not. Every line in era two is a claim about a public website, and you can go and test it.

"Remove em dashes from user-visible copy and add IndexNow" (14 September). I fetched all 72 URLs in the sitemap and counted U+2014 in every byte of markup: total em dashes across 72 live pages: 0

The IndexNow half of the same commit is just as checkable:

curl https://pub-trivia.app/2382c7da66fd467eb45e9c97aadf605a.txt

returns the verification key, in plain text, because that is what the protocol requires of it.

"Establish CogniPrep Ltd as publisher of all apps" (3 October). The about page names CogniPrep 26 times and carries the publisher into its Organization JSON-LD.

"Update site copy from five to thirteen question packs" (15 October). The <h1> on the question packs page reads "Thirteen question packs, included on every plan". It said five until that commit.

"Remove legacy /webhook routes and point all webhooks at /api" (15 October). robots.txt lost a Disallow line in the same change and now has seven.

Now try that with made changes to app. You cannot verify a claim that was never made.

One thing the history deliberately does not do

While I was in here I checked whether anything derives from the commit log. Nothing does, and the sitemap is the interesting case. A lastmod generated from git is an attractive idea and a bad one.

That 15 October copy commit touched 21 files in one go, so git would have us tell every crawler that 21 unrelated pages were revised at the same second, which is exactly the signal a lastmod is supposed to carry and exactly the one a crawler learns to ignore.

Ours comes from a date recorded per page in a content registry instead, and the three legal documents, which have no registry entry, fall back to the build clock. You can see both shapes in the XML: most entries sit at midnight UTC on a date somebody wrote down, three carry a build timestamp down to the millisecond.

What I take from it

I am not going to rewrite history, and I would not advise anyone to. The first 71 commits are an honest record of what the first five months were: a person building a thing in the evenings, with no reader in mind, because there was no reader.

What changed in September was not discipline. It was that the project started having a public surface that could contradict me. Once "add IndexNow" means a file a crawler fetches and "thirteen packs" means a heading somebody reads, a commit message is a testable statement, and a testable statement is worth eight words.

If you want to look at the surface the second era produced, it is at pub-trivia.app, and the free tier does not ask for a card. Go and check one of those four claims. Three of them are a curl away.

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.