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
| Surface | Form | Yes | No |
|---|---|---|---|
| Buttons, menu actions | Imperative, base form | Confirm Trial Balance | Confirming Trial Balance |
| Checklist and task items | Imperative, base form | Reconcile accounts | Account reconciliation |
| Page and section titles | Noun phrase | Trial balance | Viewing the roster |
| Table column headers | Noun phrase | Source File | The File It Came As |
| In-progress status | Gerund | Reconciling… | Reconcile in progress |
| Completed status | Past participle | Report sent | Sends report |
2–9 — What a label may not do
| Rule | Instead of | Write |
|---|---|---|
| 2 · no gerund where somebody acts | Publishing Grades | Publish Grades |
| 3 · no nominalized verb | Enrollment of Students | Enroll Students |
| 4 · no relative clause | Lessons the Class Has Completed | Completed Lessons |
| 5 · no stranded preposition | The Unit This Belongs To | Parent Unit |
| 6 · one voice per screen | Send Report beside Sends Report | pick one, hold it |
| 7 · front-load the difference | View Student Progress | Student Progress |
| 8 · no articles | Open the Gradebook | Open Gradebook |
| 9 · verb + object, nothing more | Send Reminder to Students With Missing Work | Send 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
| Surface | Case | Example |
|---|---|---|
| Buttons, menu actions | Title Case | Confirm Trial Balance |
| Table column headers | Title Case | Source File |
| Page and section titles | Sentence case | Trial balance |
| Checklist and task items | Sentence case | Reconcile accounts |
| Status text | Sentence case | Report sent |
| Helper and body text | Sentence case | Entries 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.