Sample honesty

Every number and screen says where it comes from: real output, recorded output or sample data, in one caption style with fixed words.

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.

sample
Sample data
recorded
Recording of real output
real
Real audit output

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: Sample provenance is explicit

Authored by sample-honesty.ts

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

Open example: Sample honesty · Do: Sample provenance is explicit Use the full-page example to follow page links.

The actual native caption says that its data is synthetic, rather than letting a working renderer imply client evidence.

Do: Recorded output keeps its real-source obligation

Authored by sample-honesty.ts

Rule illustration; not an executed check. caption / caption.honesty

Use "Recording of real output" only alongside an actual retained recording and its source.
A scripted replay instead says that its sequence is scripted; this wording example is itself neither a recording nor execution evidence.
The labels preserve the difference between recorded execution and a script. Merely showing the recorded label would not authenticate a run.

Don't: A vague caption hides the data origin

Authored by sample-honesty.ts

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

Open example: Sample honesty · Don't: A vague caption hides the data origin Use the full-page example to follow page links.

The actual renderer accepts this wording, but the reader cannot tell whether the data is sample, scripted or real. It is a rendered misuse, not a valid source claim.

Don't: A synthetic example claims live client data

Authored by sample-honesty.ts

Rule illustration; not an executed check. sample-honesty / honesty.caption

Caption: "Live client data"
Source: a made-up organisation and scripted results.
A source caption must disclose the real boundary. Synthetic inputs cannot earn client-result language from the fact that the UI runs.

Rules

RuleWhyCheck
Every showcase and demo section carries an honesty caption.Truthfulness (AGR-0001); the content review found 11 demo sections without one.Automated: npm run site:copy and scripts/site/system/check-pages.ts

API

No props.

Contract details

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

Identity

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

Use when

  • Every figure, showcase and screen. Why: A demo must never be mistaken for a client's live data.

Do not use when

  • Never skipped. Why: Uncaptioned evidence is a claim nobody can check.

Anatomy

PartWhat it is
captionCaption atom, honesty variant
tokenscaption.sample, caption.scripted, caption.real-output; recorded-source wording belongs to the consuming caption, with no shared recording token

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
caption.sampleSample data.
caption.scriptedScripted example.
caption.real-outputReal audit output.

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
provenance captionCaption's existing two-sentence guidance: what it shows, then its source and limitsUse caption.sample, caption.scripted or caption.real-output for their actual meanings. Recordings retain the consuming element's recorded-source wording; they are not relabelled as scripted examples. A working renderer does not make sample data live client evidence.

Good: “Sample data. The organisation and its rules are made up.” · “Recording of real output” · “Real audit output”

Bad: “Illustrative” · “Live client data (when the source is a synthetic sample)”

Japanese: Use the existing caption.sample, caption.scripted and caption.real-output Japanese values where authored; these remain AI drafts pending native review. Recorded-source captions retain their own meaning and explicit English source-language annotation for engine output. This guidance does not promote any translation's review state.

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): Caption and owning ProductScreen/Replay consumers supply sample, scripted or real-output wording. copy-governance.ts checks supported demo disclosures and caption strings; site-honesty-captions is accepted/error and supported error findings block strict copy checks. Caption presence cannot authenticate a recording, client evidence or the truth of its provenance; recordings retain consumer-owned wording.

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/system/atoms/caption.ts
  • scripts/site/copy-governance.ts
  • scripts/site/check-copy.ts
  • scripts/site/system/check-pages.ts
  • apps/showcase/site/loom/rules/site-honesty-captions.json

Declared rules and checks (not execution results):

  • honesty.caption: Every showcase and demo section carries an honesty caption. Automated check declared: npm run site:copy and scripts/site/system/check-pages.ts

Coverage still needed (not assessed here):

  • Retain current strict-copy results and missing-disclosure canaries in tests/unit/site-copy-enforcement.test.ts; inspect actual consumer captions in both languages.
  • Review each source-kind claim against its real evidence. A renderer or disclosure check cannot establish client outcomes, an actual recording or external provenance.

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.