Terminology

One word per concept in each language: the glossary of site terms (job names, honesty labels, bands) and the content tokens that carry them.

Foundation · stable · v1.0.0 · owner: Site system lead · contract 18 of 20 points (open: usage, no owned-class occurrences in built pages or metadata-token references in built CSS; application declarations and executed coverage are separate; figma)

Reference

Source reference; not an executed check.

See
見える化する
Shape
整える
Govern
守る
Run
運用する

Do and don't

2 positive / 2 negative authored documentation examples (2 each required); 1 reference (1 required); 0 failed. References and failures do not count; this is not behavior acceptance.

Do: Keep the English job name

Authored by terminology.ts

Rendered consumer example; not an executed correctness check. heading Isolated document follows the browser's colour and contrast preferences. The outer theme toolbar does not control this document.

Open example: Terminology · Do: Keep the English job name Use the full-page example to follow page links.

The actual heading uses the existing governed job term, rather than a new local synonym.

Do: Keep its existing Japanese term

Authored by terminology.ts

Rendered consumer example; not an executed correctness check. heading Isolated document follows the browser's colour and contrast preferences. The outer theme toolbar does not control this document.

Open example: Terminology · Do: Keep its existing Japanese term Use the full-page example to follow page links.

The native heading preserves the existing Japanese term for See. This example does not change the glossary's native-review-pending boundary.

Don't: One page renames the job

Authored by terminology.ts

Rule illustration; not an executed check. terminology / terms.one

Product navigation: See
A local page renames the same job: Discover
No terminology decision accompanies the new synonym.
Readers would have to infer that two names describe one job; the governed term should travel with its concept.

Don't: The same job receives inconsistent Japanese names

Authored by terminology.ts

Rule illustration; not an executed check. terminology / terms.one

Govern uses its existing term 守る in one location, but an unrelated translation is introduced elsewhere for the same job.
No glossary update or review explains the difference.
Locale consistency is a content obligation, not something the token identifiers or rendering engine can infer.

Rules

RuleWhyCheck
One term per concept per language.Consistency is comprehension.Automated: npm run site:copy (glossary rule)

API

No props.

Contract details

The full contract: identity, anatomy, variants, states, tokens, layout, motion, accessibility, content, tests

Identity

AspectValue
Idterminology
LayerFoundations
Categoryfoundation
OwnerSite system lead
Statusstable
Version1.0.0
Sourceapps/showcase/site/system/foundations/terminology.ts (private repository; the contract and the render function are this one module)
VersionDateChange
1.0.02026-10-26Terminology as one module: its markup moved out of the page builder (scripts/site) into the system.

Use when

  • Any product term in copy. Why: Two words for one thing make readers think there are two things.

Do not use when

  • Client terms. Why: Client vocabulary stays with the client.

Anatomy

PartWhat it is
glossaryapps/showcase/site/loom/content (glossary) and docs/launch/ja-glossary.md
tokenscontent tokens

Made of: nothing (a base element).

Used in: pages directly.

Variants

VariantWhenWhy
light and darkEvery page, following the reader's setting.The same roles resolve to light or dark values, so no element chooses its own.

States

StateRendered or not applicable
defaultThe specimen.
hoverNot applicable: A foundation is not interactive.
focus-visibleNot applicable: Not focusable.
activeNot applicable: Not interactive.
disabledNot applicable: Nothing to disable.
loadingNot applicable: Values are built into the stylesheet.
emptyNot applicable: The build fails if a value is missing.
errorNot applicable: Unresolved values fail the brand gate, not the reader.
currentNot applicable: No current item.
visitedNot applicable: Not a link.
expandedNot applicable: Does not open.

Tokens

PartToken
job.seeSee · 見える化する
job.shapeShape · 整える
job.governGovern · 守る
job.runRun · 運用する

Layout

AspectValue
breakpointsRequired review at 390, 768, 1024 and 1440 px; execution is not implied by this declaration; columns stack under 768 px; the wrap keeps a 16 px gutter on phones.
wrappingText wraps; nothing scrolls sideways.
textExpansionJapanese runs 20 to 40% longer; headings break between phrases (jaBreaks) and blocks grow downwards.

Spacing and rhythm

AspectValue
internalNot applicable: a foundation has no box of its own.
externalNot applicable.
rhythmApplies to every element that reads it.

Motion

AspectValue
NoneA foundation does not move.

Runtime and reuse

  1. Render-only element; mount any registered child enhancements separately. Preserve required Site CSS, fonts, responsive and locale rules from nativeElement.

Accessibility passport

AspectValue
roleNot rendered on the site; its specimen in the Library is a list
nameThe foundation's name
keyboardNot interactive.
focusNot focusable.
screenReaderThe specimen is a plain list of names and values.
contrastEvery text and ground pair in the palette is checked (check-brand).
targetNot a target.

Content

SlotLengthVoice
governed product termThe existing content token or glossary entry, not a local synonymOne term per concept per language. Resolve the term from the governed glossary; client vocabulary stays in the client's own context.

Good: “See · 見える化する” · “Govern · 守る”

Bad: “Renaming See to Discover on one page without a terminology decision” · “Using multiple translations for the same job name”

Japanese: Use the existing job tokens: 見える化する・整える・守る・運用する. The glossary records AI-reviewed terminology and native-review limits; these examples do not establish new native approval.

Icons and illustrations

None: this element uses no icon or illustration of its own.

Decisions and exceptions

Usage

0 owned-class occurrences in built pages plus metadata-token references in built CSS (measured by npm run site:system).

Application and coverage

Content policy (declared): The glossary and content tokens govern job labels and copy terms in both languages. copy-governance.ts calls checkTerms over collected samples and emits advisory warnings even for agreed terms; detecting hardcoded token candidates does not establish runtime token adoption.

Current check result: not assessed by this report. Declarations and source-file presence do not establish executed enforcement or accepted coverage.

Source authority and implementation (paths in the private checkout):

  • apps/showcase/site/loom/content/terms.json
  • apps/showcase/site/loom/content/tokens.json
  • docs/launch/ja-glossary.md
  • scripts/site/copy-governance.ts

Declared rules and checks (not execution results):

  • terms.one: One term per concept per language. Automated check declared: npm run site:copy (glossary rule)

Coverage still needed (not assessed here):

  • Retain actual avoided-term findings and existing English/Japanese canaries in tests/unit/site-content-governance.test.ts; inspect native job labels against their governed terms while preserving warning severity.
  • Complete human synonym/context review and native Japanese approval separately; advisory findings and token metadata are not universal adoption or language acceptance.

Tests

AspectValue
unittests/unit/site-system.test.ts: renders every do and don't example through the registry and checks the classes it owns
visualNot yet: there are no screenshot baselines; the Library page is checked for sideways scroll at 1440 px by tests/site/system.spec.ts
a11ytests/site/system.spec.ts: axe (0 serious or critical) on the element's Library page in light and dark
parityscripts/site/system/check.ts: Library examples are rendered by the same render function the site imports

Figma

not-yet: The Loom Site Figma library is the last stage of the plan; this element is not mapped yet.

Open in Storybook

Start with a conversation about your system.

We read your system, show you what we found, and agree with your team what to fix first.