The seven global elements
The reusable chrome and sections: nodes 0.1 to 0.7. Not screens, so not the node template.
Source: docs/nodes/globals.md. Consolidated from the five cluster artifacts these seven were scattered across: navigation.md (GC1, GC2), core.md (GC3, GC4), alerts.md (GC5), account.md (GC6), pro.md (GC7). The real reader of this page is the next stage: Tokens and Components takes its component list from here, not from a screen.
The contract
A component has no URL, no SEO and no job of its own, so the eleven-point node template does not fit it. Seven points do, and they are fixed here the way node 1.1 fixed the template for screens.
- What it is, in one line.
- Where it appears, node by node.
- Content, in order. Back or menu, then the screen title or, on the app variant of the You tab, a greeting built from the address on file, then one contextual action slot.
- Variants.
- States.
- What it must never do, each rule traced.
- Who owns the strings, and what the next stage inherits.
GC1 App Header
The top strip of every steady-state screen: where you are, one way back, and at most one thing to do.
| # | Part, in order | Rule |
|---|---|---|
| 1 | Back or menu | An accessible name that says where back goes |
| 2 | The screen title | The name of the place, not a slogan |
| 3 | One contextual action slot | At most one, and never icon-only. On the Pro cluster it carries the plan chip instead of an action: status is not a thing to do |
Variants. App (title, with the tab bar below), detail (back plus title: nodes 2.7, 4.9, 5.12, 6.14, 6.15), minimal (node 4.10, nothing competing with the moment), light (node 4.11), onboarding (brand mark only), no-account-yet.
States. Onboarding, signed-in, no-account-yet.
The ? on no-account-yet closed on 2026-08-10. It was waiting on the auth model, which is now decided: the manual path runs with no account, so this is not a trial mode with an expiry, it is the steady state of everyone who came in through node 1.4. The shell differs in exactly two places: the You tab lands on node 6.16.1 instead of node 6.16, and the header carries no greeting, because a greeting needs an address and this person has not given one. Nothing counts down, nothing says the word trial, and nothing nags. Built on settings-no-account.
Never. Two actions at once: one thing at a time (principle 2). An icon with no label. A count, a notification dot, or any badge that moves: a number that climbs is the thing this product exists to quiet. On desktop it folds into the top of the left rail rather than staying a separate bar.
One static chip is the exception, decided 2026-08-10. The plan word, Free or Pro, in slot 3 on the Pro cluster: node 5.12 with its states, node 5.12.4 and node 5.13 with its states, including 5.13.3 from 2026-08-10, nine pages in all. It counts nothing and never changes on its own, microcopy.md already owns those three lines as status rather than as a label, and node 5.12.4 exists only because a person on Free has to see which side of the gate she is standing on. It stays forbidden where it was already retired for reading as an upsell: nodes 2.6 and 2.7, whose job is the calm view. Ground: docs/decisions.md.
GC2 Global Tab Bar
Four destinations, always the same four.
| # | Part, in order | Rule |
|---|---|---|
| 1 | Home, to node 2.6 | The root of the signed-in product |
| 2 | Trends, to node 5.12 | The same money over time. Added 2026-08-18 |
| 3 | Alerts, to node 3.8 | A quiet dot when something is new, never a count |
| 4 | You, to node 6.16 | The door to the account-and-trust cluster |
| — | Retired 2026-08-21. It was the FLAG 1 resolution, a state of Home rather than a screen, and that is exactly why it stopped being a destination. Its nudge is block 6b of node 2.6 |
Variants. Bottom bar on mobile, left rail on desktop. This is the main breakpoint delta of the whole product, decided once here so that no screen re-decides it.
States. Default with the current tab marked, hidden (onboarding), and a quiet dot on Alerts when something is new since the last visit.
Never. A fifth tab. A numeric badge. Red, anywhere, ever (D-Concept). A tab set that changes by persona or by plan: D3 gates what sits behind a destination, never the destination itself, and navigation that stays put is itself calming.
Save is not a destination either, since 2026-08-21. FLAG 1 asked where the Save tab should land and answered "Home, parameterized", which solved the build question and left the navigation one standing: a destination that is not a place. Measured, the state was 2099px tall at 390 with 331 of them its own, and nothing but the tab bar linked to it. The cancel candidates are now block 6b of node 2.6, shown only when they are true, and the bar carries four destinations instead of a door into a room you were already standing in.
GC3 Recurring Summary Strip
The count and the monthly total, and one line that gives them meaning.
| # | Part, in order | Rule |
|---|---|---|
| 1 | The subscription count | Plain money language: "you are paying for 14 subscriptions" |
| 2 | The monthly total | The biggest number on the screen, because it is the answer |
| 3 | One context line | The number never appears without meaning beside it (D1) |
Variants. One, "what you have signed up for". The savings variant retired 2026-08-21 with the Save tab: "you could save up to $X a month" made the calm view a savings pitch, and the figure is a fact about two rows rather than about the total, so it is stated on them in block 6b of node 2.6.
States. Populated, loading (a calm placeholder while the numbers resolve, not a spinner over them), empty (an invite, never a bare $0).
Never. A bare shock number with nothing beside it: D1 makes the reveal gradual and pairs the total with an action. A chart. Anything sold beside it, since the upsell was removed from node 2.6 on purpose and now lives on node 6.16.
Changed from core.md, 2026-08-04. That file lists node 5.12 as a third place this strip appears. It does not appear there: the strip states the present, node 5.12 states the past, and the trends screen already carries the current figure in its own text summary. Two renderings of one number on one screen is the duplication the calm principle exists to prevent. Recorded as a change, not left as drift.
GC4 Subscription List Item
One recurring charge, as a row. The most repeated object in the product.
| # | Part, in order | Rule |
|---|---|---|
| 1 | The merchant logo | Recognition before reading |
| 2 | The real merchant name | Not the bank string. That is what the decoder line on node 2.7 is for |
| 3 | The amount and the cycle | Together, so the amount is never ambiguous |
| 4 | When the next charge lands | "in 6 days" leads, the date follows |
| 5 | A quiet status tag | Gray by default (D-Concept) |
Variants. Default; attention (amber, when a price changed or a payment failed); cancel-candidate (in save focus, with an inline cancel affordance); unrecognized (the name could not be resolved, so the row says "tap to name this charge" instead of pretending); trial; cancelled (muted). Hero, on node 2.7.
States. As the variants, plus loading, which is a skeleton row.
Never. Red for a status: status is a quiet gray badge, a price change is amber, and only a genuine error is clay (D-Concept). A cryptic bank string shown as if it were a merchant name. A checkbox column. A row where only part of it is tappable.
The trend row is not GC4. Node 5.12 lists rows that carry a change rather than a next charge. They answer a different question, so they are a different component, specified in the round that builds cluster 5. Named here so the difference is a decision.
GC5 Alert Item
One thing that happened, in one plain sentence, with one thing to do about it.
| # | Part, in order | Rule |
|---|---|---|
| 1 | A type icon | The type before the text |
| 2 | One plain sentence | Active voice, first person for the product (M1) |
| 3 | The merchant and the amount | Numbers always in context (principle 3) |
| 4 | When | Days lead, dates follow, as on GC4 |
| 5 | Where it came from | An alert that cannot say this is a rumour |
| 6 | One inline action | An alert with no action is a notification |
Variants. Price change (the old price beside the new one and the difference), payment failed (desaturated clay), trial ending, upcoming charge, newly detected subscription.
States. Default, read, and gated for a free person on the Pro-only types.
Never. Passive voice: "we could not take your payment", never "payment declined" (master-research M1, a copy rule enforced on this component). A red dot or a count.
GC6 Data Source and Trust
Where this figure came from, when it was last checked, and what we can and cannot do with the connection.
| # | Part, in order | Rule |
|---|---|---|
| 1 | The current source, a bank or "added by you" | The manual path is a source, not a lesser mode |
| 2 | Read-only, and that we cannot move your money | Stated in the same breath as the bank, never in a policy |
| 3 | The last successful check | A freshness claim always has a date behind it |
| 4 | A link to the full answer on node 6.15 | One tap from anywhere the question arises |
Variants. Full row (a card per source), one line (inside another screen), short (a header strip).
States. Bank-connected, private and manual, needs-reauth.
Never. "Bank-level security" and any other reassurance that is a phrase instead of a fact: vague security language is precisely what this audience distrusts (master-research M2). A figure with no source.
The last successful check exists in none of the sources the bank read. It is the block that makes the difference on this component: a silently stale connection makes the whole calm view quietly wrong, and the person has no way to know.
GC7 Pro Gate and Plan Chip
Two things in one component, and saying so is the point: the chip states the plan, the gate offers the upgrade. They are never the same element and never in the same place.
| # | Part, in order | Rule |
|---|---|---|
| 1 | The chip: the plan name | And nothing else. It states, it does not sell |
| 2 | The gate: what this unlocks, in one line | At the moment the person wants the thing |
| 3 | The gate: an upgrade action into node 5.13 | Which then names the gate the person came from |
Variants. Chip (free, Pro) and gate (an inline block, and the full-screen lock on node 5.12).
States. Free (the gate is shown at gates), Pro (a badge, and no gate anywhere).
Never. A standing invitation to pay: the gate only ever appears where a person wants the thing it unlocks. At basic visibility, which is node 2.6 (D3). At the cancel moment, which is nodes 4.9 and 4.10 (D3). On the two alert types that carry J4, a price change and a failed payment, which are basic and free.
One lock treatment, and the contradiction that produced it (2026-08-04). pro.md locks "a real preview frame, not a fake blurred chart" for node 5.12. alerts.md locked the opposite for the same job: a Pro alert "rendered as a gated, blurred-with-label item". GC7 renders both, so it cannot hold both rules. Resolved to no blur anywhere, by applying the pro.md rule, which is the one grounded in principle 4: a blur pretends there is text being withheld, and on a money screen an anxious person fills that blur with something bad. The honest form states the type and the merchant, says that something was noticed, and holds back only the explanation: "We noticed something about Netflix. Tendd Pro explains what." alerts.md was corrected to match; if this is wrong, it is wrong visibly and in one place.
What this page hands over
Seven components, twenty-eight variants (6, 2, 2, 6, 5, 3, 4), and a written rule for each about what it must never do.
Tokens and Components builds from this list, the wireframes draw it, and nothing else in the project may invent an eighth global element without a row here. Two of the seven carry a rule that no source in the block bank had: the last successful check on GC6, and the source line on GC5.