Product language

Rules for text inside the product: headings, buttons, actions, column headers and status. They are about FORM, not subject matter — the examples come in two domains for that reason. Rules 2, 3, 4, 5, 8, 9 and 11 are enforced by problems(text, surface), so a label that breaks one fails a test rather than a review.

1 — Match the form to the surface

SurfaceFormYesNo
Buttons, menu actionsImperative, base formConfirm Trial BalanceConfirming Trial Balance
Checklist and task itemsImperative, base formReconcile accountsAccount reconciliation
Page and section titlesNoun phraseTrial balanceViewing the roster
Table column headersNoun phraseSource FileThe File It Came As
In-progress statusGerundReconciling…Reconcile in progress
Completed statusPast participleReport sentSends report

2–9 — What a label may not do

RuleInstead ofWrite
2 · no gerund where somebody actsPublishing GradesPublish Grades
3 · no nominalized verbEnrollment of StudentsEnroll Students
4 · no relative clauseLessons the Class Has CompletedCompleted Lessons
5 · no stranded prepositionThe Unit This Belongs ToParent Unit
6 · one voice per screenSend Report beside Sends Reportpick one, hold it
7 · front-load the differenceView Student ProgressStudent Progress
8 · no articlesOpen the GradebookOpen Gradebook
9 · verb + object, nothing moreSend Reminder to Students With Missing WorkSend Reminder

The article that hides is the one in the middle: “Confirm the Trial Balance” breaks rule 8 as surely as “The Roster” does.

11 — Case

SurfaceCaseExample
Buttons, menu actionsTitle CaseConfirm Trial Balance
Table column headersTitle CaseSource File
Page and section titlesSentence caseTrial balance
Checklist and task itemsSentence caseReconcile accounts
Status textSentence caseReport sent
Helper and body textSentence caseEntries post to the current period.

Inside Title Case, every word takes a capital except articles, coordinating conjunctions and prepositions of four letters or fewer — unless the word leads or closes.

10 — When a rule and clarity conflict

Clarity wins, and the exception gets logged. A rule broken quietly and often is a rule that needs revising. problems() returns findings rather than throwing for exactly that reason — a caller can record the exception instead of being stopped by it.

What the check cannot see

Rules 6 and 7 are about a SCREEN rather than a label — one voice across a surface, and the distinguishing word landing first among siblings. Neither is visible in a single string, so neither is enforced. A checker that skipped them while reporting “passed” would be worse than one that says what it looked at.