> ## Documentation Index
> Fetch the complete documentation index at: https://docs.invoca.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Capitalization and punctuation

> Divergences, open decisions, and undocumented gaps for Capitalization and punctuation.

See [Capitalization and punctuation](/invoca-design-system/content/capitalization-and-punctuation) for the decided part of this page.

## Known issues

| ID                                                                             | Kind       | What                                                                                                                                                                                                      |
| ------------------------------------------------------------------------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [**TITAN-DIV-23**](/invoca-design-system/foundations/divergences#titan-div-23) | Divergence | The theme's naive every-word capitalization doesn't implement title case's function-word exceptions — also tracked on [Button's open issues](/invoca-design-system/components/actions/button/open-issues) |

zeroheight states plainly, for button labels specifically: **"Label text should be title
case,"** with an explicit **"Label text should not be sentence case"** don't — the source both
pages here are built from.

## Gaps in the current rules

| Gap                                                                                                                                                                                                                                                                                         | Why it matters                                                                                                                                                                                                                                                          | Status |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
| **No casing rule for page titles, headings, table column headers, menu items, or tab labels.** Confirmed for exactly two content types (buttons, error messages); everything else is inferred or unconfirmed.                                                                               | The most common failure mode for a casing rule is not having one — every other content type in the product needs one of these, whether the answer is title case, sentence case, or something else.                                                                      | Open   |
| **Field labels' casing is Proposed, not confirmed.**                                                                                                                                                                                                                                        | If a real source states otherwise, [this page's own constraint](/invoca-design-system/content/capitalization-and-punctuation#constraints) and [FieldLabel's](/invoca-design-system/components/forms/field-label#constraints) content rule both need to change together. | Open   |
| **No stated rule for ellipsis on actions that open a further step** (e.g., "Export…"). Common in other design systems, not confirmed for Titan.                                                                                                                                             | A missing rule here means every author decides independently whether "Export" needs the ellipsis.                                                                                                                                                                       | Open   |
| **AP style's other conventions are assumed, not verified.** The source states exactly one exception (Oxford comma); whether every other AP convention (number spelling, quotation punctuation, etc.) is actually followed in shipped product copy hasn't been checked against real screens. | An assumed baseline is only as good as the one exception anyone has bothered to write down — there could be more that nobody's documented.                                                                                                                              | Open   |

## Constraints Titan should enforce

These are real, currently-true rules. Nothing in code stops a builder from violating them today — each is a placeholder for a guardrail Titan hasn't built, not a decision still being made.

| ID                | Constraint                                                                                                                          | Would be enforced by                                                                                                                         |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| **TITAN-CASE-01** | Button labels are title case, with short function words (articles/conjunctions/short prepositions) lowercased unless first or last. | A shared title-case formatter utility applied to button label props, or a content-lint rule checking casing against the exception word list. |
| **TITAN-CASE-02** | Error messages and other full-sentence copy are sentence case.                                                                      | A sentence-case content-lint rule (e.g. a Vale-style rule) run against error/helper-text strings.                                            |
| **TITAN-CASE-03** | Lists of three or more items use the Oxford comma.                                                                                  | A prose/content linter's serial-comma rule.                                                                                                  |
| **TITAN-CASE-04** | Labels carry no terminal punctuation; full-sentence messages carry sentence punctuation.                                            | A lint rule flagging trailing periods on label-typed strings and requiring terminal punctuation on message-typed strings.                    |
| **TITAN-CASE-05** | Field labels are sentence case (Proposed).                                                                                          | The same sentence-case linter as the one above, scoped to FieldLabel's `label` prop.                                                         |
