# Landometer Design System v0.9.1 playground — manual QA protocol

This record defines the human checks for artifact build `ui-20260902-08`. It is a release protocol, not an owner-approval record and not a Design System or artifact conformance claim. The normative source is `assets/downloads/landometer-design-system-v0.9.1.md` at authoring revision `0.9.1-r8`; machine-package identity `v0.9.1-mp7` is recorded for release identity only because its package bytes are not delivered by this repository.

**Gate status: `open_pending_execution`.** Every gate below remains open until it is executed against the exact `ui-20260902-08` immutable bytes. This protocol records no manual pass result.

## Bound release facts

- Design System: `0.9.1`
- ruleset: `lds-rules-0.9.1`
- Color Set: `color-srgb-05`, retained without normative value changes
- artifact build: `ui-20260902-08`
- supersedes UI artifact: `ui-20260902-07`; it, `ui-20260902-06`, `ui-20260902-05`, `ui-20260902-04`, `ui-20260902-03`, `ui-20260902-02`, `ui-20260902-01`, and `ui-20260901-01` remain append-only evidence
- latest standalone: `landometer-design-system-v0.9.1-standalone.html`
- immutable UI handoff: `landometer-design-system-v0.9.1-standalone.color-srgb-05.ui-20260902-08.html`
- defect closure: preserves ui-07's stable navigation, font-independent icons, generator-bound Color Atlas preview, and cache freshness; aligns calm with the selected Rebuild02 26% surface, 20% hairline, and `.72` content opacity; keeps the existing symbol asset in 54px/45px layout slots with `.558` optical artwork scale; and adds the Rebuild02-signature yellow CTA text sweep only as `200ms` hover/focus `state.direct` feedback without observer discovery, autoplay, flicker, or looping
- owner-selected artifact candidate: `rebuild02-navbar-handoff-r7-candidate`, source archive SHA-256 `47a26f9546316856357040d7a716619a8fa5289484851b4d25bdbb9501ef60fa`
- recorded NAV-01 divergence: five visible desktop controls including brand against the normative budget of four; artifact conformance remains `not_claimed`
- authoring master: 208,463 bytes, SHA-256 `64f5d6277b557176502285bc65890ecc4c81faf4b97946eb5e3a2ef2c0d90d19`
- retained immutable Color Set baseline: 2,141,429 bytes, SHA-256 `0788b25be195307821ac7c26159d5011e840c4c0da385ba6c9237e90fbaf7f1a`

## Required manual evidence still missing

- A continuous slow-scroll screen recording has not yet been reviewed for both Thai and English at desktop and mobile widths. It must show that supporting reveal is perceptible across the full reading journey without gating meaning.
- Native Safari review remains open for the prominent/calm transition, symbol optical size, CTA hover/focus sweep, menu, bookmark rail, and Back/Forward restoration.
- Assistive-technology review remains open in Thai and English, including confirmation that the CTA's decorative duplicate is absent from the accessibility tree.
- Transparent calm-surface contrast remains open over varied underlying content in Light and Dark; the selected 26% surface and 20% hairline are not certified by source inspection.
- Header identity authorization and Light/Dark contrast remain an open manual gate. The r7 source archive and its hash are artifact-reference evidence, not identity approval.

## Human review

### 1. Release truth and audience clarity

- Confirm the root page, standalone aliases, immutable UI handoff, Site Manifest, Build Card, implementation notes, and Color Delivery record resolve the same release tuple.
- Confirm the tuple remains Design System `0.9.1`, authoring revision `0.9.1-r8`, ruleset `lds-rules-0.9.1`, machine-package identity `v0.9.1-mp7` identity-only, Color Set `color-srgb-05`, artifact build `ui-20260902-08`, `source_limited`, `noindex`, and artifact conformance `not_claimed`.
- Confirm audience-facing page content contains no placeholder, TODO, debug output, validator message, unresolved approval workflow, local path, or unexplained package/schema residue.
- Confirm any real limitation is specific, plain-language, and adjacent to what it limits.
- Confirm the page does not imply that the owner-approved Design System automatically certifies this downstream artifact.

### 2. Learning arc and implementation examples

- Confirm the page makes the difference between a retained principle and a v0.9.1 implementation improvement obvious before the reader reaches the extended library.
- Confirm six alternating copy-and-visual chapters appear in this order: shared method/distinct product truths; consistent human/machine claim meaning; calm-by-hierarchy navigation; cross-format promise parity; incompatibility as a valid result; rejected motion with recovery.
- Confirm the first chapter shows shared Locale Insight architecture with separate Land, Location, and Living packs and does not merge their product truth.
- Confirm the parity chapter shows an Initial HTML → Visible page → Hydrated state route with one claim/source/time/limitation.
- Confirm the navigation chapter shows prominent and calm anatomy while preserving the same 44 × 44 direct targets.
- Confirm the format chapter shows Web, PDF, deck, and social conceptual outputs with truth, identity, evidence boundary, locale proposition, and action promise held invariant.
- Confirm the analytical chapter keeps parcel and neighbourhood grain incompatibility visible and does not imply observed data.
- Confirm the rejected motion chapter is a static, bounded REJECTED → SOURCE → FINAL storyboard paired with a visible recovery.
- Confirm every new case visibly says in Thai and English that it is conceptual and not product evidence.

### 3. Shared and product-specific evidence boundaries

- Confirm Locale Insight is used only at portfolio, methodology, and product-architecture level across Land, Location, and Living.
- Confirm named-product data, capability, permission, workflow, score, model, audience, voice, and claim remain in a named-product layer.
- Confirm no CityMETER, CityWiki, CityChat, ijji, municipality, retail, or F&B example is presented as portfolio-wide truth.
- Confirm cross-product or cross-city comparison uses compatible schema/release/unit/grain or displays incompatibility beside the comparison.

### 4. Navigation, side bookmark, focus, and direct targets

- At 1440 and 1024 CSS pixels, confirm the desktop header exposes exactly Brand, CityMETER, CityWiki, Sign in, and Menu. Record this owner-selected five-control artifact choice as a NAV-01 divergence; do not report it as normative conformance.
- At 390, 360, and 320 CSS pixels, confirm the mobile header exposes no more than two visible controls including brand.
- Confirm mobile exposes only Brand and Menu in the header, while the open disclosure contains the primary action, the same six page anchors, ecosystem routes, and utilities in labelled groups.
- Confirm the surface and row remain 76 CSS pixels on desktop and 68 CSS pixels on mobile in both prominent and calm states, with a 560ms visual-state transition. Record this literal target-stability adaptation instead of describing Rebuild02's observed 29px/27px calm contraction as copied behavior.
- Confirm calm keeps the row full-width, the control cluster right-aligned, complete inner visual surfaces at `.82` scale, content opacity at `.72`, the surface mix at `26%`, and the hairline mix at `20%`, while the sticky semantic container and direct targets do not contract or move.
- Confirm the existing `assets/images/landometer-symbol-transparent.png` binary is unchanged, stays in a 54px desktop and 45px mobile layout slot, and uses `.558` artwork scale to match the Rebuild02 optical footprint without replacing, redrawing, or newly authorizing an identity asset.
- Confirm every direct interactive header, menu, and bookmark target is at least 44 × 44 CSS pixels.
- Confirm the header starts prominent, becomes visually calm only during downward reading, and returns to prominent at the top, on upward-scroll intent, pointer intent, focus within the header, or while the menu is open.
- Measure the same semantic link/button bounds and target centers in prominent and calm states; confirm surface/emphasis changes do not shrink, reposition, proxy, or replace the direct targets.
- Confirm each visible inner control remains one coherent component while calming: icon/text, border, background, and radius scale together without leaving unscaled chrome around scaled content.
- Confirm the first click activates the intended link/button in either state without a wake-first click or coordinate-forwarding overlay.
- With reduced motion, confirm the header remains in the stable prominent state.
- Confirm the menu is a semantic button with `aria-expanded`, opens and closes without focus loss, closes with Escape, and returns focus to the opener.
- With the menu open and focus on the language control, switch locale and confirm focus stays on that control rather than moving to the first menu item.
- Confirm `navigation.sideBookmark: selected` and `navigation.sideBookmarkUserBenefit` are sibling scalars, and `composition.componentIds` contains `component.bookmark.side.01` exactly once.
- Confirm the desktop rail remains visible before the first tracked section and while traversing long intervening content; it must not wait for one of its anchors to become active before appearing.
- Confirm the rail and mobile page-section group contain exactly these real anchors in the same order: `#top`, `#v091-additions`, `#play`, `#implementation-library`, `#complete-color-atlas`, `#library-resources`.
- Confirm exactly one visible page-location entry uses programmatic `current: location`; current state uses shape, surface, and label, not color or filled glyph alone.
- Confirm the rail hides at widths of 600px or less and viewport heights of 560px or less without losing the mirrored disclosure route or covering content.
- Confirm the Landometer ecosystem route owns page-current state while the side bookmark owns location-current state; the brand link must not duplicate either current-state claim.
- Confirm each deep link lands below the sticky header and the target remains visible and focusable.
- Confirm deep links use one header-offset mechanism; no strip of the previous section remains because scroll padding and target margin were added together.

### 5. CTA and motion

- Confirm each CTA starts with a clear verb, names one truthful destination/outcome, remains untruncated, and has no hidden side effect.
- Confirm the navbar Sign in CTA keeps the real link independently readable and directly clickable, and that its locale-matched decorative text duplicate is `aria-hidden` and pointer-inert.
- Confirm the Rebuild02-signature yellow text clipping sweep appears only for `200ms` on hover or `focus-visible` as `state.direct` feedback. Confirm it has no observer trigger, autoplay, flicker track, loop, independent replay, content-opacity change, or layout movement.
- Confirm reduced motion suppresses the navbar CTA sweep while preserving the readable, focusable real action and its visible focus state.
- Confirm the discovery cue is finite and occurs no more than once per page load.
- Confirm the separate body discovery CTA cue remains a pointer-inert, `aria-hidden` 28% highlight band moving from `-120%` to `120%` in `540ms` with `cubic-bezier(.16,1,.3,1)`, with no loop, content-opacity change, layout movement, or replay on re-entry. Do not treat this observer-based cue as the navbar CTA's `200ms` direct-state feedback.
- Confirm only `approach.soft`, `approach.inline-start`, `approach.inline-end`, `media.arrival`, and `stagger.child` receive entrance treatment.
- Confirm every semantic component family resolves to one declared policy: `reveal.supporting`, `settle.visible`, `state.direct`, `state.disclosure`, `static.critical`, `static.evidence`, `container.orchestrates`, or `contained.inherited`.
- Confirm every major reading territory after the hero contains at least one perceptible eligible supporting reveal or an explicit justified-static state.
- Confirm a protected descendant does not downgrade all editorial content in its parent: eligible supporting children may reveal, while protected content and the parent meaning remain immediately visible.
- Record and review one uninterrupted slow-scroll capture in Thai and one in English at 1440px and 390px. Until those recordings are reviewed, perceptual motion quality remains `open_pending_execution`.
- Confirm disclosures animate only their surface, and critical/evidence/identity/map/chart/provider/Color Atlas content remains static and immediate.
- Confirm proof status/source/boundary/limitation and CTA receipt text never dim or translate; only supporting cues or a non-content surface may settle.
- Confirm the rendered constants are opacity `760ms`, transform `920ms`, media `900ms`, block distance `32px`, logical inline distance `36px`, scale from `.985`, stagger `150ms` capped at `450ms`, enter easing `cubic-bezier(.16,1,.3,1)`, and settle easing `cubic-bezier(.2,.9,.25,1.08)`.
- Confirm one shared observer uses threshold `.14` and root margin `0px 0px -12% 0px`, unobserves after first landing, and a `2400ms` two-frame reached-content audit fails open.
- Confirm hero/LCP media, H1, first answer, primary proof, primary action, task-critical state, status, deep-link target, and focus target are never hidden behind motion.
- Confirm closed disclosures and hidden panels are not enrolled; no broad every-card/every-heading selector, unsynchronized nested reveal, parallax, or entrance assignment to identity, evidence, map, chart, UI capture, or provider content is present.
- Confirm source HTML contains the final meaning and remains fully usable with JavaScript disabled.
- Confirm `prefers-reduced-motion: reduce` and missing observer support show the final state immediately.
- Confirm motion never gates evidence, action, reading order, or focus recovery.

### 6. Icon delivery and selected state

- Confirm Menu, Close, and each of the six side-bookmark locations contains a visible inline outline SVG with round caps and joins and a non-scaling stroke; no icon may depend on font glyph paint.
- Confirm the six bookmark drawings remain distinguishable at their rendered size and selected/unselected states. Selection must be carried by surface, border, shape, and label rather than a filled or heavier icon.
- Block webfont requests and confirm Menu, Close, and all six bookmark icons remain recognizable at every tested viewport, theme, locale, and no-network standalone state; measuring the control box alone is not sufficient.
- Confirm selected state uses surface, container, and label changes; no filled glyph appears.
- Confirm icon-only controls have a locale-correct accessible name and a 44 × 44 circular target.
- Confirm the existing header symbol and wordmark have explicit public-use authority and acceptable Light/Dark contrast. Keep this gate open unless the owner-approved identity record is cited; the r7 archive itself is not that approval.

### 7. Thai, English, and layout resilience

- Confirm Thai and English communicate the same governed meaning without treating one global Thai display line-height as safe at every size.
- Inspect Thai, Latin, and mixed-script fixtures at their actual sizes, outputs, and weights for clipping, combining marks, baseline drift, and false bold.
- Review both locales at 320, 360, 390, 768, 1024, and 1440 CSS pixels, at 130% Thai text and 200% zoom.
- Confirm no root horizontal overflow, clipped action, unreadable table, or overlapping fixed navigation.

### 8. Color Atlas preservation

- Confirm the Color Atlas remains a first-class destination from the hero, header/menu, retained-foundations callout, and library.
- Confirm the home-page preview is marked as the Identity and Energy family and contains exactly seven swatches in this order: `brand.blue` `#1D4497`, `brand.beige` `#F2F1DF`, `dark.brand.beige` `#D8CFB2`, `energy.sky` `#59D2FE`, `energy.mint` `#0AD69C`, `energy.coral` `#FF5A5F`, and `energy.yellow` `#FFBC1F`.
- Compare the preview against the corresponding generated complete-Atlas swatches in explicit Light and Dark. Confirm token IDs and values match and no categorical-series color substitutes for this preview.
- In Light and Dark, confirm 17 foundation pairs, 7 semantic states, 7 shared atmosphere gradients, 3 asset-only motif records, 4 product-gradient families/8 theme specimens, 10 categorical pairs, 18 analytical scale records/738 LUT cells/378 class cells, 8 map pairs, 8 opacity values, and 6 depth roles.
- Confirm the concise sampler still shows all six sequential and three diverging families at exact 5/7/9 classes.
- Confirm Color Set `color-srgb-05` values and semantic ownership remain unchanged and the v0.9.0 immutable Color Set baseline remains byte-identical.
- Confirm the new visual chapters introduce no new Color Set identity and do not alter any Color Atlas token, scale, LUT, class, map-pair, opacity, or depth record.
- Confirm analytical scales retain their recorded source/version boundary and never become named-product evidence by implication.

### 9. Standalone and delivery parity

- Open the latest and immutable v0.9.1 standalones with network access blocked; confirm embedded fonts, logo, content images, language, theme, menu, disclosures, and the complete Color Atlas remain usable.
- Confirm the approved compact favicon is embedded in each standalone and produces no network request when offline.
- Confirm the Color Set stability code sample names and links to `landometer-design-system-v0.9.1-standalone.color-srgb-05.ui-20260902-08.html`.
- Confirm the Implementation Library standalone resource link resolves to the ui-08 immutable handoff rather than an earlier build or unversioned substitute.
- Confirm the footer artifact receipt reports `ui-20260902-08`; historical prose may name earlier builds, but no current handoff link or receipt may identify ui-07 or an earlier build as current.
- Confirm the `ui-20260902-07`, `ui-20260902-06`, `ui-20260902-05`, `ui-20260902-04`, `ui-20260902-03`, `ui-20260902-02`, `ui-20260902-01`, and `ui-20260901-01` immutable files remain byte-identical while `ui-20260902-08` is the current artifact build.
- Serve a stale latest-alias document while the no-store Site Manifest reports `ui-20260902-08`; confirm the page performs one build-qualified reload, preserves locale/theme/work/view/lens/surface/stage query state and the hash, and does not loop. Confirm matching builds, fetch failure, immutable UI handoffs, and offline standalones do not reload.
- Confirm the hosted root and latest standalone are equivalent after expected standalone embedding and canonical-link transformations.
- Confirm latest and immutable UI standalones are equivalent after normalizing only their build-channel marker.
- Before cross-device color review, record DS version, Color Set, artifact build, resolved theme, token SHA-256, scale SHA-256, and artifact SHA-256. Compare only matching immutable bytes in explicit Light, then explicit Dark.
- After deployment, verify the returned root and every critical asset byte-for-byte against the merged source commit.

### 10. Accessibility and recovery

- Complete the keyboard route from skip link through header/menu, implementation examples, disclosures, Color Atlas, resources, and return paths.
- Confirm visible focus, logical order, locale-correct names, 44 × 44 direct targets, and stable state under Back/Forward restoration.
- Verify supported screen readers in Thai and English, with reduced motion, high zoom, no JavaScript, offline standalone, and interrupted/restored history.
- Confirm every interactive error or unavailable state preserves a clear edit, retry, cancel, close, copy, or return route appropriate to the action.

## Interpretation boundary

Passing a source or package check proves only the thing tested. The public page remains `source_limited`, `noindex`, and artifact conformance is not claimed. Product capability, product evidence, city truth, or cross-product comparability requires its own approved, compatible, and current evidence release.
