landometerBuild:
  release:
    dsVersion: 0.9.1
    authoringRevision: 0.9.1-r8
    ruleset: lds-rules-0.9.1
    machinePackageIdentity: v0.9.1-mp7
    machinePackageDelivery: identity_only
    artifactBuildId: ui-20260902-08
    supersedesArtifactBuildId: ui-20260902-07
    retainedPriorArtifactBuildIds: [ui-20260902-07, ui-20260902-06, ui-20260902-05, ui-20260902-04, ui-20260902-03, ui-20260902-02, ui-20260902-01, ui-20260901-01]
    changeClass: ui_artifact_revision_color_set_unchanged
    defectClosure: >-
      Preserves the ui-20260902-07 Safari, icon, Color Atlas preview, and cache
      corrections while applying three owner-selected Rebuild02 navbar details.
      Calm preserves ui-07's full-width row and target dimensions, removes its
      remaining vertical-centre shift by keeping the 76px/68px target row, and
      uses a 26% surface, 20% hairline, and .72 content opacity. The existing
      symbol asset remains unchanged inside 54px desktop and 45px mobile layout
      slots, with a .558 artwork scale that matches the Rebuild02 optical
      footprint. The Sign in CTA receives the Rebuild02-signature yellow text
      sweep only as 200ms hover/focus state.direct feedback; it is not observer
      discovery, autoplay, flicker, or a loop. Color Set color-srgb-05 is
      unchanged, and ui-20260902-07 and earlier builds remain byte-for-byte
      append-only evidence.
    sourceRef: assets/downloads/landometer-design-system-v0.9.1.md
    sourceBytes: 208463
    sourceSha256: 64f5d6277b557176502285bc65890ecc4c81faf4b97946eb5e3a2ef2c0d90d19
    approvalBoundary: >-
      The source records an active, effective, owner-approved normative release.
      This repository projection does not publish or claim validation of the
      v0.9.1-mp7 machine-package bytes.

  schemas:
    buildCardRecord: 0.9.1
    siteManifest: 2.1
    carriedTokenProjection: 6

  artifact:
    id: landometer-design-identity-playground-v0.9.1
    name: Landometer Design System v0.9.1 Implementation Playground
    product: landometer
    portfolioScope: shared
    profile: brand.public
    pageKind: design_system_reference_with_implementation_library
    deliveryMode: internal_demo_through_public_projection
    deliveryConformance: not_claimed
    visibility: public
    indexable: false
    evidenceStatus: source_limited
    machineValidation: pending
    fullLivingReference: false
    canonicalUrl: https://montri-th.github.io/Landometer/
    primaryLocale: th
    additionalLocales: [en]

  authority:
    normativeDesignSystem:
      ref: assets/downloads/landometer-design-system-v0.9.1.md
      revision: 0.9.1-r8
      sha256: 64f5d6277b557176502285bc65890ecc4c81faf4b97946eb5e3a2ef2c0d90d19
      status: owner_approved_effective_source
    predecessor:
      ref: assets/downloads/landometer-design-system-v0.9.0.md
      sha256: 52ef41f1b231f8b84955a40c21a018991a114a4f5eaabd8c5111816bf8d645b1
      role: historical predecessor and retained-foundation evidence
    artifactApplication:
      ref: implementation-notes.v0.9.1.md
      authority: non_normative
    ownerSelectedArtifactCandidate:
      id: rebuild02-navbar-handoff-r7-candidate
      sourceLabel: Unified navbar design handoff r7.zip
      sha256: 47a26f9546316856357040d7a716619a8fa5289484851b4d25bdbb9501ef60fa
      authority: non_normative_artifact_reference
      selectedScope: navbar anatomy, disclosure grouping, side bookmark, calm transparency, optical brand proportion, CTA state feedback, and visual rhythm
      normativeEffect: none
      identityAuthorization: not_provided_by_candidate
      headerIdentityManualGate: open_pending_execution
    claimOwner: Landometer portfolio truth for shared guidance; named-product owners for product facts
    evidenceBoundary: >-
      Implementation examples are conceptual design-system teaching fixtures,
      not product evidence, product capability claims, or city facts.

  experience:
    oneJob: >-
      Show how v0.9.1 improves implementation while preserving the trusted
      foundations and complete Color Atlas.
    dominantObject: landometer-design-system@0.9.1
    entryQuestion: What changes in implementation, and what remains stable?
    firstAha: >-
      The same truth can become easier to discover, read, act on, and carry
      across formats without collapsing shared and product-specific layers.
    primaryAction:
      labelTh: ดูตัวอย่างใหม่
      labelEn: See the new examples
      destination: "#v091-additions"
      outcome: Opens the v0.9.1 implementation examples on the same page
    secondaryAction:
      labelTh: เปิด Color Atlas
      labelEn: Open Color Atlas
      destination: "#complete-color-atlas"
      outcome: Opens the retained complete color reference on the same page
    cleanCompletion: >-
      The reader can identify a retained principle, see the improved v0.9.1
      implementation move, and choose the next relevant reference.

  sharedLayer:
    portfolioFrame: Locale Insight
    domains: [Land, Location, Living]
    allowedScope:
      - portfolio framing
      - methodology
      - product architecture
      - shared design-system behavior
    productSpecificScope:
      - product data and schemas
      - product capabilities and permissions
      - product claims and evidence
      - product workflows, scores, models, audiences, and voice
    comparisonRule: >-
      Cross-product or cross-city comparison requires compatible schema,
      release, unit, and grain; otherwise incompatibility stays visible.

  implementationExamples:
    status: conceptual_no_product_evidence
    sourceVersion: v0.9.1-mp7
    presentation:
      authority: non_normative_artifact_decision
      structure: alternating_copy_and_visual_stage
      conceptualBoundaryVisible: true
    cases:
      - id: v091-layers
        title: One shared method, distinct product truths
        visualChapter: Locale Insight architecture with separate Land, Location, and Living packs
        ruleAuthority: [LAYER-01, AUTHORITY-01, EVIDENCE-01]
      - id: v091-parity
        title: One claim, consistent meaning for people and machines
        visualChapter: Synthetic claim canvas with Initial HTML to Visible page to Hydrated state route
        ruleAuthority: [DISCOVERY-01, DISCOVERY-02, DISCOVERY-03, PARITY-01]
      - id: v091-calm-nav
        title: Calm by hierarchy, not by hiding controls
        visualChapter: Prominent and calm header anatomy with identical direct-target geometry
        ruleAuthority: [NAV-01, NAV-02, BOOKMARK-01, CTA-01, CTA-02, MOTION-01, MOTION-03]
      - id: v091-format
        title: Change the format, preserve the promise
        visualChapter: Web, PDF, deck, and social canvases with one invariant ribbon
        ruleAuthority: [FORMAT-PARITY-01, WEBFMT-01, PDFFMT-01, DECKFMT-01, SOCIALFMT-01]
      - id: v091-incompatibility
        title: Incompatibility is a valid result
        visualChapter: Parcel and neighbourhood grain fixtures with explicit incompatibility
        ruleAuthority: [COMPARE-01]
      - id: v091-rejected-motion
        title: "Rejected: motion gates the proof"
        visualChapter: Static REJECTED to SOURCE to FINAL storyboard with the bounded v0.9.1 recipe
        ruleAuthority: [MOTION-01, MOTION-02, MOTION-03, A11Y-01]
        recovery: Source final state; explicit supporting roles; finite cue; reduced-motion and observer-failure final state

  composition:
    componentIds:
      - component.bookmark.side.01

  navigation:
    ecosystemPropertyPageSeparation: true
    desktopVisibleControlBudgetIncludingBrand: 4
    artifactDesktopVisibleControlsIncludingBrand: 5
    mobileVisibleControlBudgetIncludingBrand: 2
    minimumDirectTargetCssPx: 44
    visibleAnatomy:
      desktop: [brand_symbol_and_wordmark, CityMETER, CityWiki, Sign_in, Menu]
      mobile: [brand_symbol_and_wordmark, Menu]
      mobileDisclosure: [primary_action, page_sections, ecosystem, utilities]
    candidateApplication:
      id: rebuild02-navbar-handoff-r7-candidate
      sha256: 47a26f9546316856357040d7a716619a8fa5289484851b4d25bdbb9501ef60fa
      ownerSelection: explicit
      normativeDivergence:
        ruleId: NAV-01
        artifactChoice: five visible desktop controls including brand
        normativeBudget: four visible desktop controls including brand
        consequence: deliveryConformance remains not_claimed
      safetyDeviationsFromCandidate:
        - direct semantic targets remain at least 44 by 44 CSS pixels
        - no wake-first interaction or coordinate-forwarding overlay
        - no infinite or replaying attention cue
        - selected icons remain FILL 0 and use shape, surface, and label channels
        - identity approval is not inferred from candidate files
    geometry:
      prominentBlockDesktopCssPx: 76
      prominentBlockMobileCssPx: 68
      calmVisualDesktopCssPx: 76
      calmVisualMobileCssPx: 68
      contentCalmScale: 0.82
      contentCalmOpacity: 0.72
      calmSurfaceAlpha: 0.26
      calmHairlineAlpha: 0.20
      calmRowWidth: full
      calmControlClusterAlignment: right
      scaleBoundary: inner_visual_wrappers_only
      stateDurationMs: 560
      scrollIntentDeltaCssPx: 4
      topThresholdCssPx: 24
      brandSymbol:
        asset: assets/images/landometer-symbol-transparent.png
        assetChanged: false
        desktopLayoutSlotCssPx: 54
        mobileLayoutSlotCssPx: 45
        artworkScale: 0.558
        purpose: match_rebuild02_optical_footprint_without_replacing_identity_asset
      rebuild02HeightSafetyDivergence:
        observedCandidateCalmDesktopCssPx: 29
        observedCandidateCalmMobileCssPx: 27
        artifactCalmDesktopCssPx: 76
        artifactCalmMobileCssPx: 68
        reason: preserve_literal_direct_target_rects_and_centres_without_coordinate_forwarding
    disclosureControl:
      element: button
      stateAttribute: aria-expanded
      escapeReturnsFocus: true
    sideBookmark: selected
    sideBookmarkUserBenefit: >-
      Keeps readers oriented in a long reference and provides a direct route
      to each stable teaching territory without replacing global navigation.
    sideBookmarkImplementation:
      desktop: real_anchor_locations
      mobile: exact_order_mirror_inside_disclosure
      anchorIds: [top, v091-additions, play, implementation-library, complete-color-atlas, library-resources]
      hideAtOrBelowWidthCssPx: 600
      hideAtOrBelowViewportHeightCssPx: 560
      currentSemantics: location
      visibleBeforeFirstTrackedAnchor: true
      pageCurrentAndLocationCurrentSeparated: true
      iconCount: 6
      iconDelivery: inline_outline_svg
      fontPaintDependency: none
    prominentCalmHeader:
      policy: visual_prominence_changes_semantic_targets_do_not
      prominentWhen:
        - page_start_or_within_24px
        - upward_scroll_intent
        - pointer_inside_header
        - focus_inside_header
        - menu_open
      calmWhen: downward_reading_without_pointer_focus_or_open_menu
      reducedMotion: stable_prominent_state
      directTargetGeometryStable: true
      directTargetPositionsStable: true
      completeInnerVisualSurfaceScales: true
      wakeFirstClickAllowed: false
      coordinateForwardingOverlayAllowed: false
      localeChangeWhileOpen: preserve_current_focus
      deepLinkOffset: one_scroll_padding_mechanism
    ctaStateFeedback:
      target: Sign_in
      reference: rebuild02_signature_yellow_text_sweep
      policy: state.direct
      triggers: [hover, focus_visible]
      durationMs: 200
      decorativeLayer: locale_matched_text_duplicate
      decorativeLayerAriaHidden: true
      decorativeLayerPointerInert: true
      realActionRemainsReadableAndClickable: true
      observerDiscovery: false
      autoplay: false
      flicker: false
      loop: false
      reducedMotion: no_decorative_sweep

  icon:
    setId: icon-rounded-outline-01
    governedReferenceFamily: Material Symbols Rounded
    governedReferenceVariation: "FILL 0, wght 300, GRAD 0, opsz 24"
    artifactDelivery: inline_outline_svg
    artifactStrokeBehavior: non_scaling_round_cap_round_join
    fontPaintDependency: none
    filledSelectedStateAllowed: false
    selectedStateChannels: [surface, container, label]

  typography:
    setId: type-script-aware-02
    boundary: >-
      Thai display line-height 1.16 is not a universal value. Validate the
      actual size, script mixture, target, and output format.

  motion:
    setId: motion-riddim-approach-02
    policy: role_gated_fail_open
    sourceFinalStateVisible: true
    componentCoverage:
      status: complete_runtime_audit
      policyVocabulary:
        - reveal.supporting
        - settle.visible
        - state.direct
        - state.disclosure
        - static.critical
        - static.evidence
        - container.orchestrates
        - contained.inherited
      behaviorByFamily:
        supportingEditorial: role_gated_once_only_reveal_in_each_major_reading_territory
        visibleTeachingCards: eligible_supporting_children_reveal_protected_content_stays_immediate
        directControls: component_owned_state
        disclosures: surface_only_settle_content_immediate
        criticalContent: static_immediate
        evidenceIdentityAtlas: static_immediate
        containers: orchestrate_or_inherit
      proofSemanticText: immediate_static
      receiptSemanticText: immediate_static_surface_settle_only
      print: final_state_immediate
      perceptualCadence:
        longReadingTerritoriesCovered: true
        protectedDescendantHandling: split_eligible_supporting_children_without_hiding_parent
        slowScrollRecordingGate: open_pending_execution
    assignedRoles:
      - approach.soft
      - approach.inline-start
      - approach.inline-end
      - media.arrival
      - stagger.child
    constants:
      opacityDurationMs: 760
      transformDurationMs: 920
      mediaDurationMs: 900
      blockDistanceCssPx: 32
      logicalInlineDistanceCssPx: 36
      scaleFrom: 0.985
      staggerStepMs: 150
      staggerCapMs: 450
      maximumStaggerBeats: 4
      enterEasing: "cubic-bezier(.16,1,.3,1)"
      settleEasing: "cubic-bezier(.2,.9,.25,1.08)"
      observerThreshold: 0.14
      observerRootMargin: "0px 0px -12% 0px"
      safetyAuditMs: 2400
      reachedContentAudit: two_animation_frames
      observerModel: one_shared_observer_unobserve_after_first_landing
    protectedFromHiddenEntrance:
      - hero and LCP media
      - H1
      - first answer
      - primary proof
      - primary action
      - task-critical state
      - status
      - deep-link target
      - focus target
    excludedAssignments:
      - closed disclosures and hidden panels
      - broad every-card or every-heading selectors
      - unsynchronized nested reveals
      - identity, evidence, map, chart, UI capture, and provider content
      - parallax
    ctaDiscoveryCue: finite_one_time
    ctaDiscoveryCueRecipe:
      durationMs: 540
      maximumDurationMs: 600
      easing: "cubic-bezier(.16,1,.3,1)"
      highlightBandPercent: 28
      travel: "translateX(-120%) to translateX(120%)"
      repetitionsPerPageLoad: 1
      pointerInert: true
      ariaHidden: true
      contentOpacityRemainsOne: true
      layoutMovement: none
    reducedMotion: final_state_immediate
    observerFailure: final_state_visible

  formatParity:
    setId: layout-cross-format-01
    primaryFormat: web_public_reference
    equivalentFormats: [document, pdf, deck, social_static, app]
    invariant:
      - truth
      - identity
      - evidence boundary
      - action promise
      - locale proposition
    representationMayChange:
      - navigation
      - bookmark
      - disclosure
      - motion

  colorDelivery:
    registryId: color-srgb-05
    registryPath: assets/data/color-delivery.v0.9.1.json
    range: SDR
    colorSpace: sRGB IEC 61966-2-1
    normativeColorValuesChangedFromV090R7: false
    newColorSetMinted: false
    tokenProjection:
      path: assets/data/tokens.json
      sha256: 00863492782b2fb1f93e6229f644fa0c092bde0e8c5d1093619c3120d73a71fc
    scaleReference:
      path: assets/data/scales.json
      sha256: daf8e5219f1da9229d7fb474fdaba3957f37c0cfe18eef7527e551c37d88d235
    immutableColorBaseline:
      path: landometer-design-system-v0.9.0-standalone.color-srgb-05.html
      bytes: 2141429
      sha256: 0788b25be195307821ac7c26159d5011e840c4c0da385ba6c9237e90fbaf7f1a
      status: preserved_byte_for_byte
    currentArtifactBuild:
      id: ui-20260902-08
      supersedes: ui-20260902-07
      latestPath: landometer-design-system-v0.9.1-standalone.html
      immutablePath: landometer-design-system-v0.9.1-standalone.color-srgb-05.ui-20260902-08.html
      changeClass: ui_artifact_revision_color_set_unchanged
      offlineStandaloneIdentity: approved_favicon_embedded
    mainPagePreview:
      family: identity_and_energy
      source: generated_from_complete_atlas_identity_records
      count: 7
      tokenIds:
        - brand.blue
        - brand.beige
        - dark.brand.beige
        - energy.sky
        - energy.mint
        - energy.coral
        - energy.yellow
      values: ["#1D4497", "#F2F1DF", "#D8CFB2", "#59D2FE", "#0AD69C", "#FF5A5F", "#FFBC1F"]
      categoricalSubstitutionAllowed: false

  retainedFoundations:
    - truth, evidence, and product boundaries first
    - protected brand lines and one headline role
    - color-srgb-05 values and semantic ownership
    - script-aware font families and semantic type roles
    - spacing, radius, container, gutter, and breakpoint scales
    - one job, dominant object, first AHA, primary action, and clean completion
    - accessibility, resilience, privacy, permissions, and external-effect receipts
    - data-visualization and map evidence discipline
    - Build Card to profiles and capabilities to QA resolution
    - complete Color Atlas and its recorded source limits

  exclusions:
    - no named product is represented as portfolio-wide truth
    - no conceptual fixture is product evidence
    - no comparison hides schema, release, unit, or grain incompatibility
    - no unpublished v0.9.1 machine-package bytes are claimed as repository delivery
    - no artifact-level conformance is claimed by Design System approval alone
    - no Color Set identifier is minted for non-color changes

  publication:
    canonicalUrl: https://montri-th.github.io/Landometer/
    pagesRoot: deployment
    latestStandalone: landometer-design-system-v0.9.1-standalone.html
    immutableStandalone: landometer-design-system-v0.9.1-standalone.color-srgb-05.ui-20260902-08.html
    siteManifest: site-manifest.v0.9.1.json
    implementationNotes: implementation-notes.v0.9.1.md
    manualQaRecord: qa/v0.9.1-manual-gates.md
    historicalRecordsRemainFrozen: true
    latestAliasFreshness:
      manifestFetchCache: no-store
      comparisonField: artifact.artifactBuildId
      mismatchRecovery: one_time_build_qualified_reload
      standaloneApplies: false
