diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index c8968c4..8a6121e 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -14,6 +14,7 @@
/design-engineering/reference-profiles/ @changeroa
/game-ui/ @changeroa
/platform-guides/ @changeroa
+/state-management/ @changeroa
/consumer-reference/ @changeroa
/consumer-reference/adapters/ @changeroa
/consumer-reference/generated/ @changeroa
diff --git a/AGENTS.md b/AGENTS.md
index a742fd5..9d0a382 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -6,7 +6,7 @@ description: Rules coding agents must follow when editing this governed multi-do
# Agent Instructions
-This repository is StyleGallery: a governed gallery with Layout, Motion, Design Engineering, Game UI, and Platform Guides domains. Read [StyleGallery Domains](DOMAINS.md) before adding a domain, changing a domain boundary, or adapting an external source.
+This repository is StyleGallery: a governed gallery with Layout, Motion, Design Engineering, Game UI, Platform Guides, and State Management domains. Read [StyleGallery Domains](DOMAINS.md) before adding a domain, changing a domain boundary, or adapting an external source.
Before editing generated artifacts, validators, lifecycle state, or ownership policy, read [Governance, Lifecycle, And Docs-As-Code](GOVERNANCE.md).
@@ -23,6 +23,8 @@ Before editing generated artifacts, validators, lifecycle state, or ownership po
- Treat `consumer-reference/policies/lifecycle-dispositions.json` as the lifecycle index. Preserve named owners, caller status `unknown`, deadlines, extension dispositions, and immutable archive bindings until their machine gate authorizes a transition.
- Treat `patterns/**`, `recipes/**`, `GUIDE.md`, and `CATALOG.md` as the Layout corpus at their existing paths.
- Treat the Layout domain as a layout pattern library, not a visual design system.
+- Treat `state-management/**` as the State Management corpus. Keep its canonical guidance framework-neutral, domain-local, and separate from Layout pattern generation and consumer implementation state.
+- Keep logical application-state transitions in State Management, transition animation in Motion, spatial consequences in Layout, and product-level visual or interaction-state decisions in Design Engineering.
- Start with semantic HTML before adding layout classes.
- Keep DOM order, reading order, and focus order logical.
- Keep each pattern focused on one primary spatial problem.
@@ -41,6 +43,16 @@ Before editing generated artifacts, validators, lifecycle state, or ownership po
The remaining pattern, CSS, naming, token, checklist, and verification rules apply to the Layout domain. Non-Layout domain documents may discuss product-layer behavior, but they do not authorize decorative or motion properties in reusable Layout pattern CSS.
+## State Management Boundary Gate
+
+Before adding a State Management pattern or recipe, check [State Management Decision Tree](state-management/guides/decision-tree.md) and [State Brief](state-management/guides/state-brief.md).
+
+- Name one authoritative owner, lifetime, reset boundary, readers, writers, accepted events, and failure behavior.
+- Derive values when existing authority determines them; do not create a mirrored writable copy without a synchronization contract.
+- For asynchronous work, declare cancellation, ordering, stale-result, conflict, and recovery behavior where applicable.
+- Add a pattern only when an existing State Management pattern or recipe does not already cover the responsibility.
+- Keep library-specific APIs as bounded examples rather than canonical contracts.
+
## Pattern Boundary Gate
Before adding a new pattern or changing reusable pattern CSS, check [Layout Decision Tree](guides/decision-tree.md) and [Layout Brief Template](guides/layout-brief.md).
diff --git a/DOMAINS.md b/DOMAINS.md
index 03198b8..bd45417 100644
--- a/DOMAINS.md
+++ b/DOMAINS.md
@@ -19,6 +19,7 @@ This manifest is the source of truth for top-level StyleGallery domains. A domai
| Design Engineering | [Design Engineering](design-engineering/index.md) | `experimental` | Product-layer craft questions and evidence-bearing decisions. | A second shared principle system or taste as proof. | Design Engineering domain owner |
| Game UI | [Game UI](game-ui/index.md) | `experimental` | Game-interface classification, hierarchy, reference records, and implementation guides nested by engine. | Reusable Layout CSS or claims that one engine structure is universal. | Game UI domain owner |
| Platform Guides | [Platform Guides](platform-guides/index.md) | `experimental` | Comparative references for a named platform and version context. | Affiliation, brand imitation, or authority over web standards. | Platform Guides domain owner |
+| State Management | [State Management](state-management/index.md) | `experimental` | Framework-neutral application-state ownership, lifetime, derivation, logical transitions, synchronization, recovery, and verification. | Spatial Layout, transition animation, visual component states, backend consistency, product business rules, or universal library prescriptions. | State Management domain owner |
## Page Manifest
@@ -29,14 +30,15 @@ This manifest is the source of truth for top-level StyleGallery domains. A domai
| Design Engineering | `design-engineering/index.md` | `design-engineering/interface-craft.md`, `design-engineering/consumer-migration-readiness.md`, `design-engineering/reference-profiles/index.md`, `design-engineering/reference-profiles/governed-local/index.md`, `design-engineering/reference-profiles/external-adaptation/index.md` |
| Game UI | `game-ui/index.md` | `game-ui/classification.md`, `game-ui/screen-hierarchy.md`, `game-ui/reference-record.md`, `game-ui/unity/architecture.md`, `game-ui/unity/ui-systems.md`, `game-ui/unity/cli-loop.md`, `game-ui/unity/repository-map.md`, `game-ui/unity/org-wiki.md` |
| Platform Guides | `platform-guides/index.md` | `platform-guides/apple-interaction.md` |
+| State Management | `state-management/index.md` | `state-management/catalog.md`, `state-management/guides/planning-workflow.md`, `state-management/guides/decision-tree.md`, `state-management/guides/state-brief.md`, `state-management/guides/verification-matrix.md`, `state-management/patterns/index.md`, `state-management/patterns/ownership/local-draft-state.md`, `state-management/patterns/ownership/url-owned-state.md`, `state-management/patterns/ownership/server-state-cache.md`, `state-management/patterns/derivation/derived-state.md`, `state-management/patterns/transitions/explicit-transition-model.md`, `state-management/patterns/synchronization/optimistic-mutation.md`, `state-management/recipes/index.md`, `state-management/recipes/pattern-to-recipe-matrix.md`, `state-management/recipes/search-and-filter.md`, `state-management/recipes/editable-form.md`, `state-management/recipes/optimistic-list.md` |
## Shared Non-Domain Infrastructure
-[Consumer Reference](consumer-reference/index.md) is shared schema, provenance, routing, evidence, lifecycle, and machine-retrieval infrastructure outside the five-domain contract. Its source-bound material v2 index classifies admitted pages by these five domains but does not own their prose. It owns no profile implementation, visual values, or product CSS and cannot add a sixth domain row. Consumer or profile records may depend on Layout; Layout and its generated corpus cannot import consumer-reference, profile, material-registry, or transport records.
+[Consumer Reference](consumer-reference/index.md) is shared schema, provenance, routing, evidence, lifecycle, and machine-retrieval infrastructure outside the six-domain contract. Its source-bound material v2 index classifies admitted pages by these six domains but does not own their prose. It owns no profile implementation, visual values, application-state behavior, or product CSS and cannot add another domain row. Consumer or profile records may depend on Layout; Layout and its generated corpus cannot import consumer-reference, profile, material-registry, or transport records.
## External Adaptation Contract
-The initial five domain leaves are independent method rewrites inspired by [emilkowalski/skills](https://github.com/emilkowalski/skills) at snapshot `220e8607c90b17337d210125777b7b695f26c221`. Other adapted leaves record their own repositories and revisions in page metadata.
+The externally adapted leaves in the initial five-domain snapshot are independent method rewrites inspired by [emilkowalski/skills](https://github.com/emilkowalski/skills) at snapshot `220e8607c90b17337d210125777b7b695f26c221`. Other adapted leaves record their own repositories and revisions in page metadata. State Management leaves are locally authored StyleGallery methods with `provenance_kind: local` and no upstream source fields.
- Each externally adapted leaf records `source_repository`, exact `source_path`, and the full `source_revision`. Locally authored synthesis leaves state that boundary in their attribution section and omit upstream metadata.
- A full SHA identifies source content; it does not prove publisher authenticity or local quality.
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index 0281f8b..50b05e8 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -42,6 +42,7 @@ Use this file before editing repository documentation. It names which file is au
| Design Engineering domain guidance | `design-engineering/*.md` | Manual | None | `experimental` | Upstream revision, evidence boundary, or guidance changes. | `scripts/validate-domains.mjs` | Design Engineering domain owner |
| Game UI domain guidance | `game-ui/**/*.md` | Manual | None | `experimental` | Classification, hierarchy, engine implementation, evidence boundary, or route changes. | `scripts/validate-domains.mjs` | Game UI domain owner |
| Platform Guides domain guidance | `platform-guides/*.md` | Manual | None | `experimental` | Platform version, upstream revision, evidence boundary, or guidance changes. | `scripts/validate-domains.mjs` | Platform Guides domain owner |
+| State Management domain guidance | `state-management/**/*.md` | Manual | None | `experimental` | Authority, lifetime, transition, synchronization, recovery, pattern composition, evidence boundary, or route changes. | `scripts/validate-domains.mjs`, `scripts/validate-ia.mjs` | State Management domain owner |
| Pattern data and examples | `scripts/pattern-data.mjs` | Manual data source | `patterns/**/*.md`, `patterns/**/index.md`, `patterns/index.md`, `CATALOG.md` | `generated` output from `stable` source | Source-lineage URL changes, generated drift, category changes, or pattern count changes. | `scripts/validate-patterns.mjs`, `scripts/validate-catalog.mjs`, `scripts/validate-governance.mjs` | Pattern-data owner |
| Pattern generator | `scripts/generate-patterns.mjs` | Manual code source | `patterns/**/*.md`, `patterns/**/index.md`, `patterns/index.md`, `CATALOG.md` | `stable` generator, `generated` output | Generated structure changes, generated-warning changes, or generated metadata changes. | `node -c scripts/generate-patterns.mjs`, generated drift check, `scripts/validate-governance.mjs` | Pattern-data owner |
| Validation scripts | `scripts/validate-*.mjs`, `scripts/test-validate-*.mjs` | Manual code source | CI validation output | `stable` | Validator scope changes, fixture changes, or CI parity changes. | `node -c`, matching fixture tests, `.github/workflows/validate.yml` | Validation owner |
@@ -98,7 +99,7 @@ Use these states in reviews and governance notes. Do not invent new lifecycle la
Default lifecycle:
- Root docs, guides, recipes, quality docs, validators, and CI are `stable` unless a page explicitly says otherwise.
-- `DOMAINS.md`, the scope decision, and `layout/index.md` are `stable`; domain leaves under `motion/`, `design-engineering/`, `game-ui/`, and `platform-guides/` begin `experimental`.
+- `DOMAINS.md`, the scope decision, and `layout/index.md` are `stable`; domain leaves under `motion/`, `design-engineering/`, `game-ui/`, `platform-guides/`, and `state-management/` begin `experimental`.
- Generated pattern docs, generated pattern indexes, and `CATALOG.md` are `generated`.
- Draft research artifacts under `.omo/` are `draft` or `experimental` and are not contributor-facing source of truth.
@@ -125,6 +126,7 @@ Consumer-reference ownership records the current truth as `owner.enforcement: "p
| `tests/**`, `playwright.config.mjs`, `consumer-reference/baselines/**`, `scripts/*baseline*.mjs`, `scripts/*sentinel*.mjs`, `scripts/*renderer-purity.mjs` | Repository governance owner with Validation owner | Pure rendering, computed semantics before screenshots, immutable browser pins, required consumer-conformance semantics, optional raster capture, calibration cardinality, and pending owner approval. |
| `game-ui/**` | Game UI domain owner | Player-task classification, hierarchy responsibility, reference records, engine-specific subtrees, and cross-engine boundaries. |
| `platform-guides/**` | Platform Guides domain owner | Platform/source/version limits, comparison boundaries, and stale review. |
+| `state-management/**` | State Management domain owner | Application-state authority, lifetime, derivation, logical transitions, synchronization, recovery, framework neutrality, and verification boundaries. |
| `scripts/validate-*.mjs`, `scripts/test-validate-*.mjs`, `.github/workflows/validate.yml`, `.github/workflows/evidence-freshness.yml` | Validation owner | Validator scope, negative fixtures, blocking/advisory boundaries, CI parity. |
## Shared Promotion Governance
diff --git a/README.md b/README.md
index 33f9378..d36d887 100644
--- a/README.md
+++ b/README.md
@@ -7,18 +7,18 @@ description: Governed gallery of portable interface knowledge organized by domai
# StyleGallery
-
+
-StyleGallery is a governed gallery of portable interface knowledge. It separates reusable spatial patterns, product-layer motion guidance, design-engineering practice, and platform-specific references into explicit domains with different evidence and ownership boundaries.
+StyleGallery is a governed gallery of portable interface knowledge. It separates reusable spatial patterns, product-layer motion guidance, design-engineering practice, game and platform references, and application-state contracts into explicit domains with different evidence and ownership boundaries.
Primary role: repository guide.
The existing Layout corpus remains a gallery of minimal, portable CSS layout patterns at its current paths. Each pattern documents one primary spatial problem and the smallest robust HTML/CSS structure that solves it. Motion, visual treatment, and platform guidance do not expand reusable Layout pattern CSS; they live in their own domains and carry explicit evidence boundaries.
-[Consumer Reference](consumer-reference/index.md) is shared non-domain infrastructure for optional consumer-owned reference handoffs. It carries schema, routing, provenance, and evidence metadata without owning profiles, visual values, components, or a sixth domain.
+[Consumer Reference](consumer-reference/index.md) is shared non-domain infrastructure for optional consumer-owned reference handoffs. It carries schema, routing, provenance, and evidence metadata without owning profiles, visual values, components, or another governed domain.
-[Agent-Native StyleGallery](consumer-reference/agent-native/README.md) is the machine-facing entry point over that governed knowledge. Frozen v1 provides claim/evidence/governance records through `sg` and its MCP; isolated material v2 indexes admitted Markdown and exposes `sg-material` plus a separate read-only MCP. Lifecycle records own extension and archive dispositions. These material, trust/conformance, transport, and extension planes do not create a sixth domain, replace the Markdown corpus, permit mutation, or feed visual defaults back into Layout.
+[Agent-Native StyleGallery](consumer-reference/agent-native/README.md) is the machine-facing entry point over that governed knowledge. Frozen v1 provides claim/evidence/governance records through `sg` and its MCP; isolated material v2 indexes admitted Markdown and exposes `sg-material` plus a separate read-only MCP. Lifecycle records own extension and archive dispositions. These material, trust/conformance, transport, and extension planes do not create another governed domain, replace the Markdown corpus, permit mutation, or feed visual defaults back into Layout.
## Quick Start
@@ -115,6 +115,7 @@ CLI와 MCP의 상세 사용법은 [Agent-Native StyleGallery 가이드](consumer
| [Design Engineering](design-engineering/index.md) | Product-layer craft decisions and verification questions. | A second universal principle set or taste as evidence. |
| [Game UI](game-ui/index.md) | Game-interface classification, hierarchy, reference records, and engine-specific implementation guides. | Reusable Layout CSS or claims that one engine structure is universal. |
| [Platform Guides](platform-guides/index.md) | Bounded comparison with named platform conventions. | Affiliation, imitation, or authority over web and accessibility contracts. |
+| [State Management](state-management/index.md) | Framework-neutral application-state ownership, lifetime, derivation, transitions, synchronization, recovery, and verification. | Layout, animation, visual component states, backend consistency, or universal library prescriptions. |
The canonical domain manifest and provenance policy are in [StyleGallery Domains](DOMAINS.md).
@@ -137,6 +138,7 @@ Use each root hub for one primary job.
| [Design Engineering](design-engineering/index.md) | Design Engineering domain hub | You need product-level interface-craft decision guidance. |
| [Game UI](game-ui/index.md) | Game UI domain hub | You need to classify a game interface or understand its screen hierarchy. |
| [Platform Guides](platform-guides/index.md) | Platform Guides domain hub | You need a bounded platform comparison. |
+| [State Management](state-management/index.md) | State Management domain hub | You need to classify application state, choose an owner, compose state patterns, or verify failure and recovery behavior. |
## Task Routes
@@ -151,6 +153,7 @@ Each common task has one primary route. Use secondary links only after the prima
| `compare adversarial consumer identities` | [Reference Profiles](design-engineering/reference-profiles/index.md) | It keeps non-default product values in related Design Engineering examples over one pinned Layout source. |
| `classify a game interface or map it to an engine` | [Game UI](game-ui/index.md) | It separates engine-neutral roles from implementation-specific guidance. |
| `compare a named platform convention` | [Platform Guides](platform-guides/index.md) | It requires platform and evidence boundaries before adaptation. |
+| `plan or review application state` | [State Management](state-management/index.md) | It routes authority, lifetime, derivation, transitions, synchronization, and recovery before library selection. |
| `turn raw content into a homepage or ordinary webpage` | [Webpage Generation Workflow](guides/webpage-generation-workflow.md) | It starts with use case, content-to-layout fit, harmony, and handoff. |
| `plan a screen before the layout problem is obvious` | [Layout Planning Guide](GUIDE.md) | It sequences task, content, scroll, recipe, and verification choices. |
| `choose a pattern when the name is unknown` | [Decision Tree](guides/decision-tree.md) | It routes from constraints to pattern categories. |
@@ -177,7 +180,7 @@ Each common task has one primary route. Use secondary links only after the prima
## How To Use This Repository
- Start with [StyleGallery Domains](DOMAINS.md) when the owning domain is not already clear.
-- Use [Layout](layout/index.md), [Motion](motion/index.md), [Design Engineering](design-engineering/index.md), [Game UI](game-ui/index.md), or [Platform Guides](platform-guides/index.md) as the domain-local entry point.
+- Use [Layout](layout/index.md), [Motion](motion/index.md), [Design Engineering](design-engineering/index.md), [Game UI](game-ui/index.md), [Platform Guides](platform-guides/index.md), or [State Management](state-management/index.md) as the domain-local entry point.
- Start with [Layout Planning Guide](GUIDE.md) when you are designing a screen before a layout problem is obvious.
- Use the [Webpage Generation Workflow](guides/webpage-generation-workflow.md) when raw content needs to become a homepage or ordinary webpage before a layout recipe is obvious.
- Use the [Documentation Mode Taxonomy](guides/documentation-mode-taxonomy.md) when adding or reviewing docs so each page has a clear primary reading mode.
diff --git a/assets/stylegallery-hero-infographic-v2.png b/assets/stylegallery-hero-infographic-v2.png
new file mode 100644
index 0000000..ccd7eba
Binary files /dev/null and b/assets/stylegallery-hero-infographic-v2.png differ
diff --git a/consumer-reference/agent-native/v2/admission-policy.json b/consumer-reference/agent-native/v2/admission-policy.json
index 0c04911..b32cd06 100644
--- a/consumer-reference/agent-native/v2/admission-policy.json
+++ b/consumer-reference/agent-native/v2/admission-policy.json
@@ -633,6 +633,96 @@
"repository_path": "recipes/saas-settings.md",
"domain": "layout",
"lifecycle": "stable"
+ },
+ {
+ "repository_path": "state-management/catalog.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/guides/decision-tree.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/guides/planning-workflow.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/guides/state-brief.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/guides/verification-matrix.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/index.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/patterns/derivation/derived-state.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/patterns/index.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/patterns/ownership/local-draft-state.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/patterns/ownership/server-state-cache.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/patterns/ownership/url-owned-state.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/patterns/synchronization/optimistic-mutation.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/patterns/transitions/explicit-transition-model.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/recipes/editable-form.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/recipes/index.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/recipes/optimistic-list.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/recipes/pattern-to-recipe-matrix.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
+ },
+ {
+ "repository_path": "state-management/recipes/search-and-filter.md",
+ "domain": "state-management",
+ "lifecycle": "experimental"
}
],
"exclusions": [
@@ -712,5 +802,5 @@
"code": "material_path_internal_excluded"
}
],
- "version_id": "sg:policy/material-admission-v2@sha256:017b5de61c5e98779ec9b32880b3cd897c5f7012e726bdb73392572800b1f837"
+ "version_id": "sg:policy/material-admission-v2@sha256:1421527cf60a23b16689dd40d4b013b89680d6acf68efe990de4404b205031ee"
}
diff --git a/consumer-reference/agent-native/v2/material-registry.json b/consumer-reference/agent-native/v2/material-registry.json
index 6ebcebe..bae1dc2 100644
--- a/consumer-reference/agent-native/v2/material-registry.json
+++ b/consumer-reference/agent-native/v2/material-registry.json
@@ -1 +1 @@
-{"admission_policy_ref":"sg:policy/material-admission-v2","admission_policy_version_id":"sg:policy/material-admission-v2@sha256:017b5de61c5e98779ec9b32880b3cd897c5f7012e726bdb73392572800b1f837","materials":[{"byte_length":3583,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/page-grid.md","schema_version":"2.0","source_sha256":"a5b73ad6e01e85a93f2f585f520ea7e02f8b3677fa286236c20011873d4e7b9b","stable_ref":"sg:material/path-sha256-002803d65d057faaa4e8c1bb3e32ef3f41032b011251fc9f0f7b1db907b01ceb","version_id":"sg:material/path-sha256-002803d65d057faaa4e8c1bb3e32ef3f41032b011251fc9f0f7b1db907b01ceb@sha256:a5b73ad6e01e85a93f2f585f520ea7e02f8b3677fa286236c20011873d4e7b9b"},{"byte_length":3464,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/pagination.md","schema_version":"2.0","source_sha256":"a7afa87a24aae9797f299a7e4b4b96e2ca26d511a7ba2dcdbe1dc78600532a5b","stable_ref":"sg:material/path-sha256-00ae3be01fcc4add55bd98eff34737037c54c0a7f2f128239a2afbe698936c8f","version_id":"sg:material/path-sha256-00ae3be01fcc4add55bd98eff34737037c54c0a7f2f128239a2afbe698936c8f@sha256:a7afa87a24aae9797f299a7e4b4b96e2ca26d511a7ba2dcdbe1dc78600532a5b"},{"byte_length":4786,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/claim-records/samples.md","schema_version":"2.0","source_sha256":"c2a3acefcad07f0ace47c9d054b601da0f4447a0fc8d5ee0ef272dd45075e81b","stable_ref":"sg:material/path-sha256-021f96adf1d1647d17f99011af6b1e7fa370dddbbad96b384731ed0256f74984","version_id":"sg:material/path-sha256-021f96adf1d1647d17f99011af6b1e7fa370dddbbad96b384731ed0256f74984@sha256:c2a3acefcad07f0ace47c9d054b601da0f4447a0fc8d5ee0ef272dd45075e81b"},{"byte_length":858,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/index.md","schema_version":"2.0","source_sha256":"05da91c5514d03e82c19a03c494fdad21a92a2ba7b88ec6dca5e7836c1f133a2","stable_ref":"sg:material/path-sha256-040de79bdf5af768663bf1aaa9d7451aa0d79bfaa0d5e982cceec4058f7715e4","version_id":"sg:material/path-sha256-040de79bdf5af768663bf1aaa9d7451aa0d79bfaa0d5e982cceec4058f7715e4@sha256:05da91c5514d03e82c19a03c494fdad21a92a2ba7b88ec6dca5e7836c1f133a2"},{"byte_length":5367,"domain":"design-engineering","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"design-engineering/interface-craft.md","schema_version":"2.0","source_sha256":"ba71e914027abd783e9769a5b91efb764cc7335a6479c69ca4e70ab05a64e941","stable_ref":"sg:material/path-sha256-04afb6013755c328be25b08637961e5f20fa67705cfcbd6e996ba6ada944f571","version_id":"sg:material/path-sha256-04afb6013755c328be25b08637961e5f20fa67705cfcbd6e996ba6ada944f571@sha256:ba71e914027abd783e9769a5b91efb764cc7335a6479c69ca4e70ab05a64e941"},{"byte_length":501,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/stacking/index.md","schema_version":"2.0","source_sha256":"9b60182a25c4c07b7b482b3981dec17d515f95915cc618411282f988dca4ada2","stable_ref":"sg:material/path-sha256-04fa96b121ed2a48be80851efc72289752d1c4c12bd6433c2d5002d6d82a54ed","version_id":"sg:material/path-sha256-04fa96b121ed2a48be80851efc72289752d1c4c12bd6433c2d5002d6d82a54ed@sha256:9b60182a25c4c07b7b482b3981dec17d515f95915cc618411282f988dca4ada2"},{"byte_length":6853,"domain":"motion","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"motion/vocabulary.md","schema_version":"2.0","source_sha256":"b2796979aaa1b194ff3006469cbeaec71cbd80d1484e3a5089e03295a43b464d","stable_ref":"sg:material/path-sha256-07b5ed44416e4d40efd213a7e944f214a338aa83201e52ba58c6dcf2a81e5675","version_id":"sg:material/path-sha256-07b5ed44416e4d40efd213a7e944f214a338aa83201e52ba58c6dcf2a81e5675@sha256:b2796979aaa1b194ff3006469cbeaec71cbd80d1484e3a5089e03295a43b464d"},{"byte_length":1619,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/visual-evidence.md","schema_version":"2.0","source_sha256":"17f7430f1cd1847c74c737ee9341120be6b49e827ec4228be5b6868669d27fd3","stable_ref":"sg:material/path-sha256-085c94936dece089fd31864c482d1a19e4da562951adbaa7d459e0126486d149","version_id":"sg:material/path-sha256-085c94936dece089fd31864c482d1a19e4da562951adbaa7d459e0126486d149@sha256:17f7430f1cd1847c74c737ee9341120be6b49e827ec4228be5b6868669d27fd3"},{"byte_length":54,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/claim-records/index.md","schema_version":"2.0","source_sha256":"b9bb90f0928f7f408c615ce2dc323425640ef4b83b62de0c0dee6dcd4bf7e3bb","stable_ref":"sg:material/path-sha256-08c3095acfdc040b75071e94644db6a32b655817c4b79eabfa4339b59c9f0b22","version_id":"sg:material/path-sha256-08c3095acfdc040b75071e94644db6a32b655817c4b79eabfa4339b59c9f0b22@sha256:b9bb90f0928f7f408c615ce2dc323425640ef4b83b62de0c0dee6dcd4bf7e3bb"},{"byte_length":4089,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/harmony-evaluation.md","schema_version":"2.0","source_sha256":"efee2c0ff6a662bc3efb360ee8c80defc5113a00d8b36e1c36c45eb63d330270","stable_ref":"sg:material/path-sha256-0a43f2af49d24f33b8ff06829d431f9e7608de57760c3f2c7de8c3e4126869f3","version_id":"sg:material/path-sha256-0a43f2af49d24f33b8ff06829d431f9e7608de57760c3f2c7de8c3e4126869f3@sha256:efee2c0ff6a662bc3efb360ee8c80defc5113a00d8b36e1c36c45eb63d330270"},{"byte_length":3804,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/scroll-body-shell.md","schema_version":"2.0","source_sha256":"f9f8269f42afdc453f2e226a03c1ea23566b4b9362939a4f485aee20d150cee8","stable_ref":"sg:material/path-sha256-10f553c3d6a39c31ca1a5b8f56db6afb75709d8706d125c6f0d891f46b1f11b4","version_id":"sg:material/path-sha256-10f553c3d6a39c31ca1a5b8f56db6afb75709d8706d125c6f0d891f46b1f11b4@sha256:f9f8269f42afdc453f2e226a03c1ea23566b4b9362939a4f485aee20d150cee8"},{"byte_length":4959,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/homepage.md","schema_version":"2.0","source_sha256":"09203c0de8824db3a8f678add95b0de363035ead7cfe5d44ae79353ef36b1193","stable_ref":"sg:material/path-sha256-14e127a7c719ee8494096a98b25b32d26363c1845bddcd912f50f6b1e2b84b46","version_id":"sg:material/path-sha256-14e127a7c719ee8494096a98b25b32d26363c1845bddcd912f50f6b1e2b84b46@sha256:09203c0de8824db3a8f678add95b0de363035ead7cfe5d44ae79353ef36b1193"},{"byte_length":3430,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/overlay-exception/overlay-stack.md","schema_version":"2.0","source_sha256":"ffe57e891cbaa2eefcd3f642818d6f955b9f51f9028eed48ca2769e1ad75fd89","stable_ref":"sg:material/path-sha256-15dd8f3d84fb50f1442bd8c9732356759849f7d87f1d66b004eeb5d9ea75a4a9","version_id":"sg:material/path-sha256-15dd8f3d84fb50f1442bd8c9732356759849f7d87f1d66b004eeb5d9ea75a4a9@sha256:ffe57e891cbaa2eefcd3f642818d6f955b9f51f9028eed48ca2769e1ad75fd89"},{"byte_length":901,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/design-rationale.md","schema_version":"2.0","source_sha256":"f2215fa79133af7f7282fff9a2da490d1a5dd58dd3ea0fc56255872268fbd163","stable_ref":"sg:material/path-sha256-162d7fd4521ddaf5ee59166c9cb56d8cbcb7d3b9bacaf9cd75883c1586108369","version_id":"sg:material/path-sha256-162d7fd4521ddaf5ee59166c9cb56d8cbcb7d3b9bacaf9cd75883c1586108369@sha256:f2215fa79133af7f7282fff9a2da490d1a5dd58dd3ea0fc56255872268fbd163"},{"byte_length":3452,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/breadcrumb.md","schema_version":"2.0","source_sha256":"666bf05329f85a0a19d8ee42fd91b6149895d7c1ed62528f3b36051015210b9c","stable_ref":"sg:material/path-sha256-16eeb4385f9c3ed3ee536baa50271a5afda69eb267e6e240f45eea88c675c9cc","version_id":"sg:material/path-sha256-16eeb4385f9c3ed3ee536baa50271a5afda69eb267e6e240f45eea88c675c9cc@sha256:666bf05329f85a0a19d8ee42fd91b6149895d7c1ed62528f3b36051015210b9c"},{"byte_length":3426,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/cluster.md","schema_version":"2.0","source_sha256":"39a8b4e529fa82338de96528ed1f7ec0a1646286243dfb7df71be3666c46ed82","stable_ref":"sg:material/path-sha256-176a6bff0fef909def0e8d71cb7c567b867a180ff8ff11dc71f96187e6fb4b75","version_id":"sg:material/path-sha256-176a6bff0fef909def0e8d71cb7c567b867a180ff8ff11dc71f96187e6fb4b75@sha256:39a8b4e529fa82338de96528ed1f7ec0a1646286243dfb7df71be3666c46ed82"},{"byte_length":935,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/index.md","schema_version":"2.0","source_sha256":"5cfb5a5586709a5c32f6f01e8d0e768850b57111c0a653363ced0eeddbca4f88","stable_ref":"sg:material/path-sha256-1bbc62c02480ddef71cbe2b8723ae3da595efdfcfcf8f0bbbfd4dad8d417d2a7","version_id":"sg:material/path-sha256-1bbc62c02480ddef71cbe2b8723ae3da595efdfcfcf8f0bbbfd4dad8d417d2a7@sha256:5cfb5a5586709a5c32f6f01e8d0e768850b57111c0a653363ced0eeddbca4f88"},{"byte_length":3725,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/split-screen.md","schema_version":"2.0","source_sha256":"a6c48700334e6e3e611acee525be7a89e6aa73c0df0494d5f4a5555790d237a8","stable_ref":"sg:material/path-sha256-1c3948243f01f30bcd55ac3cb3c9935bce15060224b1837fdf1b3be2684ecc74","version_id":"sg:material/path-sha256-1c3948243f01f30bcd55ac3cb3c9935bce15060224b1837fdf1b3be2684ecc74@sha256:a6c48700334e6e3e611acee525be7a89e6aa73c0df0494d5f4a5555790d237a8"},{"byte_length":3334,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/containment/box.md","schema_version":"2.0","source_sha256":"d64aedd87ff612e6bb50293653cf5076ed952c1d4833abc54416b1bc60ef8680","stable_ref":"sg:material/path-sha256-1c4c0582a35fac69c8274a72f86ad5075a755d30f0924adbc3ff66fc616d9430","version_id":"sg:material/path-sha256-1c4c0582a35fac69c8274a72f86ad5075a755d30f0924adbc3ff66fc616d9430@sha256:d64aedd87ff612e6bb50293653cf5076ed952c1d4833abc54416b1bc60ef8680"},{"byte_length":3380,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/stacking/stack.md","schema_version":"2.0","source_sha256":"0e9d1bd2fb0345bd28efc04502c88fb64f6cdb721a5792473d2822907de1baa1","stable_ref":"sg:material/path-sha256-1f6bb0dc8098df4cb643ddb7941fc7997bfc34e8c4c4ba8b473ebd19b43da69e","version_id":"sg:material/path-sha256-1f6bb0dc8098df4cb643ddb7941fc7997bfc34e8c4c4ba8b473ebd19b43da69e@sha256:0e9d1bd2fb0345bd28efc04502c88fb64f6cdb721a5792473d2822907de1baa1"},{"byte_length":386,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/overlay-exception/index.md","schema_version":"2.0","source_sha256":"a32cdbff417ba8cf4333a15c7799bb1b1907c4334d0bcee052220af46b87973a","stable_ref":"sg:material/path-sha256-1fc22b9f0d7d72c1dcc9b54db927b44a791c091736efbc2dcff08b9f5097f00c","version_id":"sg:material/path-sha256-1fc22b9f0d7d72c1dcc9b54db927b44a791c091736efbc2dcff08b9f5097f00c@sha256:a32cdbff417ba8cf4333a15c7799bb1b1907c4334d0bcee052220af46b87973a"},{"byte_length":2010,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/design-claim.md","schema_version":"2.0","source_sha256":"bdf92087f69f1d55d1d8f5efa8fdc794824bd9f40d794e617e6a06db0a16ef81","stable_ref":"sg:material/path-sha256-21480e86104dfaab3408304f300dc7cc570eab3e747a1a3931785951544f8372","version_id":"sg:material/path-sha256-21480e86104dfaab3408304f300dc7cc570eab3e747a1a3931785951544f8372@sha256:bdf92087f69f1d55d1d8f5efa8fdc794824bd9f40d794e617e6a06db0a16ef81"},{"byte_length":3461,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/centering/super-center.md","schema_version":"2.0","source_sha256":"80ca126c59d0a5947707b01875c17487dfad7e4fc51920ad02649108971e0c55","stable_ref":"sg:material/path-sha256-21ffb3e535a16bcba5817e15c784b9d2500b32cb50f86c1b3c033c652193cc00","version_id":"sg:material/path-sha256-21ffb3e535a16bcba5817e15c784b9d2500b32cb50f86c1b3c033c652193cc00@sha256:80ca126c59d0a5947707b01875c17487dfad7e4fc51920ad02649108971e0c55"},{"byte_length":3504,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/containment/fluid-styles.md","schema_version":"2.0","source_sha256":"652bd2d6b33e8c1c4dc5eb7175f65c1c0c13a6268aa72ac330ef6b3cf303b5cb","stable_ref":"sg:material/path-sha256-239a2e2ec1f881ea5ae0e4f852980adaa058a8c7943fe83d8c90d8b51e02abb5","version_id":"sg:material/path-sha256-239a2e2ec1f881ea5ae0e4f852980adaa058a8c7943fe83d8c90d8b51e02abb5@sha256:652bd2d6b33e8c1c4dc5eb7175f65c1c0c13a6268aa72ac330ef6b3cf303b5cb"},{"byte_length":3506,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/ram-grid.md","schema_version":"2.0","source_sha256":"b15856b240152a9da700abb4cdd611a1f9d41cad353582eeaad79459c13f277b","stable_ref":"sg:material/path-sha256-23ce75202642f0f8901b6a413fd2a269a70166058d62e90ca4403e7a3b34cf69","version_id":"sg:material/path-sha256-23ce75202642f0f8901b6a413fd2a269a70166058d62e90ca4403e7a3b34cf69@sha256:b15856b240152a9da700abb4cdd611a1f9d41cad353582eeaad79459c13f277b"},{"byte_length":3364,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/tab-strip.md","schema_version":"2.0","source_sha256":"c154f4a8cfd4d17d60f929bf363a632ca4bacedc4a5e55c891870a2a75ccd628","stable_ref":"sg:material/path-sha256-2567793e03725c0bb9b1b4cd1524b38c8240253b4989e3413b7985cfccfb4453","version_id":"sg:material/path-sha256-2567793e03725c0bb9b1b4cd1524b38c8240253b4989e3413b7985cfccfb4453@sha256:c154f4a8cfd4d17d60f929bf363a632ca4bacedc4a5e55c891870a2a75ccd628"},{"byte_length":3735,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/list-detail.md","schema_version":"2.0","source_sha256":"cbb8c05e85605aa2217027a946aae1fd7d3ed7c3981d7f15b2207c7dee8f9c6d","stable_ref":"sg:material/path-sha256-26867cd73e9ea9a732763de098fa0e99861d6bd15deba26359727ef68417e331","version_id":"sg:material/path-sha256-26867cd73e9ea9a732763de098fa0e99861d6bd15deba26359727ef68417e331@sha256:cbb8c05e85605aa2217027a946aae1fd7d3ed7c3981d7f15b2207c7dee8f9c6d"},{"byte_length":3827,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/sticky-aside.md","schema_version":"2.0","source_sha256":"69bd3b575b0c2aca46858e887cc5fbccbf5f772e4678ac305257307c70a378ab","stable_ref":"sg:material/path-sha256-27b1e5216a098387ab5e1de9d8997391ae2e8b3388331c221e14ed5946734415","version_id":"sg:material/path-sha256-27b1e5216a098387ab5e1de9d8997391ae2e8b3388331c221e14ed5946734415@sha256:69bd3b575b0c2aca46858e887cc5fbccbf5f772e4678ac305257307c70a378ab"},{"byte_length":3972,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/fixed-sidenav-shell.md","schema_version":"2.0","source_sha256":"4889d7aaf9a7ab4687b56e19987782afdc40def1935882213510958d4c747560","stable_ref":"sg:material/path-sha256-29d4e1dee690708b4218d8b195f08e1135f76b279ebaadbafd08aa74286daa28","version_id":"sg:material/path-sha256-29d4e1dee690708b4218d8b195f08e1135f76b279ebaadbafd08aa74286daa28@sha256:4889d7aaf9a7ab4687b56e19987782afdc40def1935882213510958d4c747560"},{"byte_length":3636,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/switcher.md","schema_version":"2.0","source_sha256":"f9e24b044790472cee533fe85da5d0b14e252c5119a0b532f5ff00be2f74ca4d","stable_ref":"sg:material/path-sha256-2dd9316398e52cf61361bfae39e601e73eb411b74ddc09cadf131183e6c18093","version_id":"sg:material/path-sha256-2dd9316398e52cf61361bfae39e601e73eb411b74ddc09cadf131183e6c18093@sha256:f9e24b044790472cee533fe85da5d0b14e252c5119a0b532f5ff00be2f74ca4d"},{"byte_length":1783,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/sources.md","schema_version":"2.0","source_sha256":"655c4c304f1dae83e56e5f3f19838db7b9681a600b161532cc4389574594fde8","stable_ref":"sg:material/path-sha256-31c57866c230c6e93dd2b4636e6e892eeff33521ef07ed24cde34094c2d9c939","version_id":"sg:material/path-sha256-31c57866c230c6e93dd2b4636e6e892eeff33521ef07ed24cde34094c2d9c939@sha256:655c4c304f1dae83e56e5f3f19838db7b9681a600b161532cc4389574594fde8"},{"byte_length":2906,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/command-surface.md","schema_version":"2.0","source_sha256":"b52b18adcaf95110d9ba7780289c2c2e6e4b128327290e18da1723b019261f02","stable_ref":"sg:material/path-sha256-33c5ebfda703b62fe98e750cf800d6a690eb3c5e02c0089d0fd91d987b2b5f8f","version_id":"sg:material/path-sha256-33c5ebfda703b62fe98e750cf800d6a690eb3c5e02c0089d0fd91d987b2b5f8f@sha256:b52b18adcaf95110d9ba7780289c2c2e6e4b128327290e18da1723b019261f02"},{"byte_length":3479,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/sticky-header.md","schema_version":"2.0","source_sha256":"3a5aeacbaa7f9ea443c92848667b7a6d362bd5f4481c304b0bb312549d330a94","stable_ref":"sg:material/path-sha256-3901860520475e0bf9a7a0d9a7684ce518e7f2c96d22f3aefb66fe40c524558d","version_id":"sg:material/path-sha256-3901860520475e0bf9a7a0d9a7684ce518e7f2c96d22f3aefb66fe40c524558d@sha256:3a5aeacbaa7f9ea443c92848667b7a6d362bd5f4481c304b0bb312549d330a94"},{"byte_length":14817,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/unity/ui-systems.md","schema_version":"2.0","source_sha256":"fc9baf57a82a393d5f7b189fa7798d1023757d2bc9ed769fb6cbab7b9bbb5c40","stable_ref":"sg:material/path-sha256-3a18eb0e207f57d2657185e6e09afddd94b8d9722418d78d39122b6bb06b7098","version_id":"sg:material/path-sha256-3a18eb0e207f57d2657185e6e09afddd94b8d9722418d78d39122b6bb06b7098@sha256:fc9baf57a82a393d5f7b189fa7798d1023757d2bc9ed769fb6cbab7b9bbb5c40"},{"byte_length":579,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/index.md","schema_version":"2.0","source_sha256":"90f2d5973bf08cfd7ba55523176d8bb76bff441a8a3b9e69c3a520118db3e101","stable_ref":"sg:material/path-sha256-3bf8fac99ec13ef32824ded352565692d56cc7c54e5392b7985df262ba35e760","version_id":"sg:material/path-sha256-3bf8fac99ec13ef32824ded352565692d56cc7c54e5392b7985df262ba35e760@sha256:90f2d5973bf08cfd7ba55523176d8bb76bff441a8a3b9e69c3a520118db3e101"},{"byte_length":4405,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/screen-hierarchy.md","schema_version":"2.0","source_sha256":"a186fd1ff27b84394fdf31011eee733d5b5cc40e6e83069dc4df41b52809f552","stable_ref":"sg:material/path-sha256-3d5fe3355a6206218a13433abbd642bc623d90ee2bcb48dbf488a592bec8fb17","version_id":"sg:material/path-sha256-3d5fe3355a6206218a13433abbd642bc623d90ee2bcb48dbf488a592bec8fb17@sha256:a186fd1ff27b84394fdf31011eee733d5b5cc40e6e83069dc4df41b52809f552"},{"byte_length":3466,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/dense-grid.md","schema_version":"2.0","source_sha256":"5c99ebab2a33fe1827fee2810e340fc44867439352462dc453ec352f78e34e52","stable_ref":"sg:material/path-sha256-3d9a239e6bc90b85b6d15102c961f1ca0615094fe1df289c6e4d6a418af1801a","version_id":"sg:material/path-sha256-3d9a239e6bc90b85b6d15102c961f1ca0615094fe1df289c6e4d6a418af1801a@sha256:5c99ebab2a33fe1827fee2810e340fc44867439352462dc453ec352f78e34e52"},{"byte_length":2608,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/reference-record.md","schema_version":"2.0","source_sha256":"f43c57cf386b787c73c6e2974044b21c4ad0e1c05dd080003a3f6e268f63f4c9","stable_ref":"sg:material/path-sha256-3e5f771aba328b1394ddd2e529e322ecb8fe2259c33b92448c0c71161e3a5ff9","version_id":"sg:material/path-sha256-3e5f771aba328b1394ddd2e529e322ecb8fe2259c33b92448c0c71161e3a5ff9@sha256:f43c57cf386b787c73c6e2974044b21c4ad0e1c05dd080003a3f6e268f63f4c9"},{"byte_length":873,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/index.md","schema_version":"2.0","source_sha256":"89729f69e1a879742421b2d583dcf67f8a9a94ed90a198e5b7b9e40b856a404e","stable_ref":"sg:material/path-sha256-44cd370aff03553cea434398290dfe059d49fd316157face88e54035c050b5f5","version_id":"sg:material/path-sha256-44cd370aff03553cea434398290dfe059d49fd316157face88e54035c050b5f5@sha256:89729f69e1a879742421b2d583dcf67f8a9a94ed90a198e5b7b9e40b856a404e"},{"byte_length":2697,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/dashboard.md","schema_version":"2.0","source_sha256":"8ee1c7c8b70bfd63144fbdd5f3a55f8736ce4626c35a391f4a722b579ec2232d","stable_ref":"sg:material/path-sha256-463cfb73f926bbdf90d68b3aee7af299b388384e6b5e51e1c7a5ef2cd33aef83","version_id":"sg:material/path-sha256-463cfb73f926bbdf90d68b3aee7af299b388384e6b5e51e1c7a5ef2cd33aef83@sha256:8ee1c7c8b70bfd63144fbdd5f3a55f8736ce4626c35a391f4a722b579ec2232d"},{"byte_length":15345,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/unity/architecture.md","schema_version":"2.0","source_sha256":"026af25031c537dd074e7bc91f00fa91e1dcaecbefe6a9c6a574e05a662adff4","stable_ref":"sg:material/path-sha256-49ac4d11b609a7dd49ecd0d397a7a5401595c3e2835958e35b430be5883d7592","version_id":"sg:material/path-sha256-49ac4d11b609a7dd49ecd0d397a7a5401595c3e2835958e35b430be5883d7592@sha256:026af25031c537dd074e7bc91f00fa91e1dcaecbefe6a9c6a574e05a662adff4"},{"byte_length":3538,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/grid-wrapper.md","schema_version":"2.0","source_sha256":"55c90e01efd81fe7f338ab8e6535d731df8f0ce1c00751d8ba4ddde780963b29","stable_ref":"sg:material/path-sha256-4a8a96f82fbd1527cc6f7ee248ef7a8ab8d47289a31dfb521f865d49f0376afb","version_id":"sg:material/path-sha256-4a8a96f82fbd1527cc6f7ee248ef7a8ab8d47289a31dfb521f865d49f0376afb@sha256:55c90e01efd81fe7f338ab8e6535d731df8f0ce1c00751d8ba4ddde780963b29"},{"byte_length":3678,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/overlay-exception/imposter.md","schema_version":"2.0","source_sha256":"4f71b8e9164daf01d1c977c0a7ebb18576185138068a06df5d67e89d3bf7ad1c","stable_ref":"sg:material/path-sha256-4c3aeb4771622f79b0f3efdeb40e0f59064925f4bd60e63186452c0a79941a3e","version_id":"sg:material/path-sha256-4c3aeb4771622f79b0f3efdeb40e0f59064925f4bd60e63186452c0a79941a3e@sha256:4f71b8e9164daf01d1c977c0a7ebb18576185138068a06df5d67e89d3bf7ad1c"},{"byte_length":3458,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/centering/center.md","schema_version":"2.0","source_sha256":"8abae0c076bf8c3eeeefd8920dff8c9d767c5c59ef926265b960940bab8310da","stable_ref":"sg:material/path-sha256-4fb5bdea440d75d58bcb66874cdb2930ee9cd5d17768bba1ea95e4c3c547ebd5","version_id":"sg:material/path-sha256-4fb5bdea440d75d58bcb66874cdb2930ee9cd5d17768bba1ea95e4c3c547ebd5@sha256:8abae0c076bf8c3eeeefd8920dff8c9d767c5c59ef926265b960940bab8310da"},{"byte_length":6061,"domain":"motion","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"motion/practice-reference.md","schema_version":"2.0","source_sha256":"1096eae09dd6a90ae83c9979728c5774c4242dae68f71ee12e97496c87d0ba2d","stable_ref":"sg:material/path-sha256-50b685f66086b3f2362d97feb7e001bd2f208e6ea33c52174edf66fbe8287265","version_id":"sg:material/path-sha256-50b685f66086b3f2362d97feb7e001bd2f208e6ea33c52174edf66fbe8287265@sha256:1096eae09dd6a90ae83c9979728c5774c4242dae68f71ee12e97496c87d0ba2d"},{"byte_length":3428,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/containment/clamped-card.md","schema_version":"2.0","source_sha256":"14e9700b95e01bdbf22be445ec79245209be097cfcff92c33a0aa37bcf2d564b","stable_ref":"sg:material/path-sha256-52157f6d777be20078f71c3c850955175151fdbe04fad86368b8f0e382280631","version_id":"sg:material/path-sha256-52157f6d777be20078f71c3c850955175151fdbe04fad86368b8f0e382280631@sha256:14e9700b95e01bdbf22be445ec79245209be097cfcff92c33a0aa37bcf2d564b"},{"byte_length":7878,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"consumer-reference/contract.md","schema_version":"2.0","source_sha256":"b914920989ff2ce08ebc67fa3167d0da766c260c93f03257a9144c6093ff6713","stable_ref":"sg:material/path-sha256-52494ee56bf5c837ead0782244d579ea0aba9e63e95a02c10f6d0b566e4d62d9","version_id":"sg:material/path-sha256-52494ee56bf5c837ead0782244d579ea0aba9e63e95a02c10f6d0b566e4d62d9@sha256:b914920989ff2ce08ebc67fa3167d0da766c260c93f03257a9144c6093ff6713"},{"byte_length":8606,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/search-metadata-polyhierarchy.md","schema_version":"2.0","source_sha256":"53ea6fddbf9c446a2b35ca6d975200c274ba3a713a2298ff62c8253d6c8a49d7","stable_ref":"sg:material/path-sha256-59a41c8893a1ad96d4b5abe1cfb6e381273ce32030b84b06cdbd2ac8be24dc74","version_id":"sg:material/path-sha256-59a41c8893a1ad96d4b5abe1cfb6e381273ce32030b84b06cdbd2ac8be24dc74@sha256:53ea6fddbf9c446a2b35ca6d975200c274ba3a713a2298ff62c8253d6c8a49d7"},{"byte_length":3490,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/columns.md","schema_version":"2.0","source_sha256":"eda07657f498d69a734749ba4c94a6fd35e4b1f61cf312324460e0b4e491d324","stable_ref":"sg:material/path-sha256-5a76c5ad4c7daff2cbf3fbf8d8968f56204322f508b999f77e87bcbe6274a8de","version_id":"sg:material/path-sha256-5a76c5ad4c7daff2cbf3fbf8d8968f56204322f508b999f77e87bcbe6274a8de@sha256:eda07657f498d69a734749ba4c94a6fd35e4b1f61cf312324460e0b4e491d324"},{"byte_length":12162,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/unity/org-wiki.md","schema_version":"2.0","source_sha256":"b6fcdef8d5b6524111cabfef7a0b86e2f899659e5d7d7e81e8ebd521e79dd131","stable_ref":"sg:material/path-sha256-5de69acbec858ebe75c9483c1b4474ea8d48778aedc3cc654a26552b3a49a5f5","version_id":"sg:material/path-sha256-5de69acbec858ebe75c9483c1b4474ea8d48778aedc3cc654a26552b3a49a5f5@sha256:b6fcdef8d5b6524111cabfef7a0b86e2f899659e5d7d7e81e8ebd521e79dd131"},{"byte_length":876,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/tokens.md","schema_version":"2.0","source_sha256":"9f6849985944fea6c660c6ce8f1a962b1b3fe4aa195e72ef2d2293b27fac80f0","stable_ref":"sg:material/path-sha256-5e265c863940f92cadc3da208c4c09c4aacd7da3425332edc401bbb461383e30","version_id":"sg:material/path-sha256-5e265c863940f92cadc3da208c4c09c4aacd7da3425332edc401bbb461383e30@sha256:9f6849985944fea6c660c6ce8f1a962b1b3fe4aa195e72ef2d2293b27fac80f0"},{"byte_length":537,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/containment/index.md","schema_version":"2.0","source_sha256":"93635d8fec49e448550ac671d0fe2510ecc017467ff79203bf10bc3e9b32a9d4","stable_ref":"sg:material/path-sha256-5e7498d507fe35d8607873d31efa80b8e4634fa59aa68fdb3cc10fcd99df20c6","version_id":"sg:material/path-sha256-5e7498d507fe35d8607873d31efa80b8e4634fa59aa68fdb3cc10fcd99df20c6@sha256:93635d8fec49e448550ac671d0fe2510ecc017467ff79203bf10bc3e9b32a9d4"},{"byte_length":3682,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/deconstructed-pancake.md","schema_version":"2.0","source_sha256":"81a69e4a12a2f967a0ecff31d02c3beb365bf6c9055acc86cda4f6355f70adbe","stable_ref":"sg:material/path-sha256-651d978327dca78d036202b232058a85e240ada94d07dd7461bc894f9f83e5e2","version_id":"sg:material/path-sha256-651d978327dca78d036202b232058a85e240ada94d07dd7461bc894f9f83e5e2@sha256:81a69e4a12a2f967a0ecff31d02c3beb365bf6c9055acc86cda4f6355f70adbe"},{"byte_length":3735,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/main-with-rail.md","schema_version":"2.0","source_sha256":"ba1cfc18e294563b48fbaa2cb427dc431b4586d55a157818a541cba25d0a0160","stable_ref":"sg:material/path-sha256-653b926534bf6d8d074f03173f13f475bada8dfa566852e272470fc17b8e58d4","version_id":"sg:material/path-sha256-653b926534bf6d8d074f03173f13f475bada8dfa566852e272470fc17b8e58d4@sha256:ba1cfc18e294563b48fbaa2cb427dc431b4586d55a157818a541cba25d0a0160"},{"byte_length":3910,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/media-object.md","schema_version":"2.0","source_sha256":"26f218d8b2138e7a7f4585e21d33d6f640d5b67993a64e182bdef9b4628d7dae","stable_ref":"sg:material/path-sha256-69e5cbcca6fba542020d47eeb31222d719c39624ec41749d591d17aa175c5f3a","version_id":"sg:material/path-sha256-69e5cbcca6fba542020d47eeb31222d719c39624ec41749d591d17aa175c5f3a@sha256:26f218d8b2138e7a7f4585e21d33d6f640d5b67993a64e182bdef9b4628d7dae"},{"byte_length":1163,"domain":"platform-guides","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"platform-guides/index.md","schema_version":"2.0","source_sha256":"304f07851551513750ee3d00e4023ad2b5500944c8c504587b3e14856179fd3c","stable_ref":"sg:material/path-sha256-6c243b28fd8f4564a96217bcceabc75a5651ecd21ac41abfbdd4716adc60aa72","version_id":"sg:material/path-sha256-6c243b28fd8f4564a96217bcceabc75a5651ecd21ac41abfbdd4716adc60aa72@sha256:304f07851551513750ee3d00e4023ad2b5500944c8c504587b3e14856179fd3c"},{"byte_length":6999,"domain":"shared","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"consumer-reference/agent-native/README.md","schema_version":"2.0","source_sha256":"959509d4539f4b7bb7d193bfdfb949b4cf25ab53317e072aaad7657f04b8779e","stable_ref":"sg:material/path-sha256-6cda345129c13188719d0116beef1e7d8e672f951f21295bc3b2ccf490a4a81d","version_id":"sg:material/path-sha256-6cda345129c13188719d0116beef1e7d8e672f951f21295bc3b2ccf490a4a81d@sha256:959509d4539f4b7bb7d193bfdfb949b4cf25ab53317e072aaad7657f04b8779e"},{"byte_length":3146,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"log.md","schema_version":"2.0","source_sha256":"ebbaf9b22d6924714a1bb6069bab4622ffe9fd0aad76c6cf718cd76cff7b2eb9","stable_ref":"sg:material/path-sha256-7204c0a4f935b2563fdb9fcf74d71a2e8621bf1b53f9da1b6eab41597a5fbc38","version_id":"sg:material/path-sha256-7204c0a4f935b2563fdb9fcf74d71a2e8621bf1b53f9da1b6eab41597a5fbc38@sha256:ebbaf9b22d6924714a1bb6069bab4622ffe9fd0aad76c6cf718cd76cff7b2eb9"},{"byte_length":3574,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/reel.md","schema_version":"2.0","source_sha256":"57a66f71da9293c1037d325a3d98d95938b7a7534e42cc8f3d1149ef63ab5480","stable_ref":"sg:material/path-sha256-72616dfa2b53176365ef81dd6954260a8a96051f3c47100505ece70816871c11","version_id":"sg:material/path-sha256-72616dfa2b53176365ef81dd6954260a8a96051f3c47100505ece70816871c11@sha256:57a66f71da9293c1037d325a3d98d95938b7a7534e42cc8f3d1149ef63ab5480"},{"byte_length":3614,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/sticky-footer.md","schema_version":"2.0","source_sha256":"4103c4b74e4b143705a656f11662ec03721b40802c980e4527331f97b09c21df","stable_ref":"sg:material/path-sha256-7412ca94f2f7e6e9b81ec40ccbaee7ccab5a773e48d7fc14055baccd8d059d42","version_id":"sg:material/path-sha256-7412ca94f2f7e6e9b81ec40ccbaee7ccab5a773e48d7fc14055baccd8d059d42@sha256:4103c4b74e4b143705a656f11662ec03721b40802c980e4527331f97b09c21df"},{"byte_length":14420,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"guides/documentation-mode-taxonomy.md","schema_version":"2.0","source_sha256":"872594fdfa78c4196bad9eae4aa6bab3cde82b4f73803ef049a60c6a7db329c2","stable_ref":"sg:material/path-sha256-78dcee9e03982b489be85a59bb522877c94bb01b2624af09e5ef5e3bc3bbbffc","version_id":"sg:material/path-sha256-78dcee9e03982b489be85a59bb522877c94bb01b2624af09e5ef5e3bc3bbbffc@sha256:872594fdfa78c4196bad9eae4aa6bab3cde82b4f73803ef049a60c6a7db329c2"},{"byte_length":2791,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/list-detail.md","schema_version":"2.0","source_sha256":"26c00df6db757fa392dd285eb910de9c13eae39c78ab97c44dda55cea9047899","stable_ref":"sg:material/path-sha256-7b47a26ca3030528440849547a9a39dcd489581ebdb0b3c85f3204cf066acaa8","version_id":"sg:material/path-sha256-7b47a26ca3030528440849547a9a39dcd489581ebdb0b3c85f3204cf066acaa8@sha256:26c00df6db757fa392dd285eb910de9c13eae39c78ab97c44dda55cea9047899"},{"byte_length":3687,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/stacking/line-up.md","schema_version":"2.0","source_sha256":"34ccb96fb46cbfe6567ffb74a8f01fd79ac3baf0ea4ed93e54cab83ac45473dc","stable_ref":"sg:material/path-sha256-7c2f9831fd891304724438057614dab34b1fff1da4eb2f0d86803115be5a3ce5","version_id":"sg:material/path-sha256-7c2f9831fd891304724438057614dab34b1fff1da4eb2f0d86803115be5a3ce5@sha256:34ccb96fb46cbfe6567ffb74a8f01fd79ac3baf0ea4ed93e54cab83ac45473dc"},{"byte_length":11419,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/unity/cli-loop.md","schema_version":"2.0","source_sha256":"bfc9596a0b981bbb31470f4c8a87578d401f775fa1f9b4dc6da1e0f967ca3f1b","stable_ref":"sg:material/path-sha256-7c4697a9eca2beda5a21f7edd84648e7e67643b3f67b771434ed123c424a2d1a","version_id":"sg:material/path-sha256-7c4697a9eca2beda5a21f7edd84648e7e67643b3f67b771434ed123c424a2d1a@sha256:bfc9596a0b981bbb31470f4c8a87578d401f775fa1f9b4dc6da1e0f967ca3f1b"},{"byte_length":4740,"domain":"motion","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"motion/review-workflow.md","schema_version":"2.0","source_sha256":"5219296be498f37f9d9b69ba4723f2ce7d12b5d326fec20045b2aedcc6c90746","stable_ref":"sg:material/path-sha256-7df8e54fd5935c4a2a9aace117d43253e7c0fe32448fd31984a531a134192a83","version_id":"sg:material/path-sha256-7df8e54fd5935c4a2a9aace117d43253e7c0fe32448fd31984a531a134192a83@sha256:5219296be498f37f9d9b69ba4723f2ce7d12b5d326fec20045b2aedcc6c90746"},{"byte_length":2625,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/form-flow.md","schema_version":"2.0","source_sha256":"ff6cee7485991ff766a7d3d0780a133da5a636639aa9ff4a43e4d3bb0499a538","stable_ref":"sg:material/path-sha256-7e60233e663192c6172a4cebabf93da3b047c42bbaddee206fa27644d8d821e9","version_id":"sg:material/path-sha256-7e60233e663192c6172a4cebabf93da3b047c42bbaddee206fa27644d8d821e9@sha256:ff6cee7485991ff766a7d3d0780a133da5a636639aa9ff4a43e4d3bb0499a538"},{"byte_length":8688,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"guides/vocabulary.md","schema_version":"2.0","source_sha256":"8b5d68d428b12ce2d2b399cddf98aef0b0761189838cac223bbfbac4d2c10da8","stable_ref":"sg:material/path-sha256-7ec7a08ac14b5af0def43c817f1b32765f93312bb997e17663313c0fd4516a1f","version_id":"sg:material/path-sha256-7ec7a08ac14b5af0def43c817f1b32765f93312bb997e17663313c0fd4516a1f@sha256:8b5d68d428b12ce2d2b399cddf98aef0b0761189838cac223bbfbac4d2c10da8"},{"byte_length":5787,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"guides/decision-tree.md","schema_version":"2.0","source_sha256":"5811d48b577a0d9472c64b94cb91341f45e5b5408402455f0aa9cd356fa15c5d","stable_ref":"sg:material/path-sha256-7fada8e2c9a6ab17c122f51121605bc9d4c64c9a7ef60d946813129f91474016","version_id":"sg:material/path-sha256-7fada8e2c9a6ab17c122f51121605bc9d4c64c9a7ef60d946813129f91474016@sha256:5811d48b577a0d9472c64b94cb91341f45e5b5408402455f0aa9cd356fa15c5d"},{"byte_length":7930,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"guides/layout-brief.md","schema_version":"2.0","source_sha256":"0e87d9d8f51ab6f3960b8e160abd9663be0d501e801a3184686b27c9a1debbf5","stable_ref":"sg:material/path-sha256-8305d3db8a3a860213c04b8cef5a4ed463a109f558be8df51ff1c5af21d749e1","version_id":"sg:material/path-sha256-8305d3db8a3a860213c04b8cef5a4ed463a109f558be8df51ff1c5af21d749e1@sha256:0e87d9d8f51ab6f3960b8e160abd9663be0d501e801a3184686b27c9a1debbf5"},{"byte_length":8203,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/pattern-contract-audit.md","schema_version":"2.0","source_sha256":"35926d5a3313f1918035ae906844722bbe56c7494eff9e5b22a2306a681893af","stable_ref":"sg:material/path-sha256-871ee653f2589835e85184dba2e5ef403fc064d0d49a2b2b85f0b8996d351fc6","version_id":"sg:material/path-sha256-871ee653f2589835e85184dba2e5ef403fc064d0d49a2b2b85f0b8996d351fc6@sha256:35926d5a3313f1918035ae906844722bbe56c7494eff9e5b22a2306a681893af"},{"byte_length":11836,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"guides/webpage-generation-workflow.md","schema_version":"2.0","source_sha256":"92de1966d23f3d12625f9cc22fb256eb8c4761bd4371a96ba69ca5235a23c7d4","stable_ref":"sg:material/path-sha256-87436c736fec1b7b05f6f0a824b06c852e9295daca92298163e02024fbb0451b","version_id":"sg:material/path-sha256-87436c736fec1b7b05f6f0a824b06c852e9295daca92298163e02024fbb0451b@sha256:92de1966d23f3d12625f9cc22fb256eb8c4761bd4371a96ba69ca5235a23c7d4"},{"byte_length":3615,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/media-fit/frame.md","schema_version":"2.0","source_sha256":"649d3da72d9af6e6be2cdcd63561da9acb5521a0f44e46cc3210f02ece211104","stable_ref":"sg:material/path-sha256-882d5f2d004ba4375887b0489d4c452e3a6b3cfaea23561ba59e4e56821da256","version_id":"sg:material/path-sha256-882d5f2d004ba4375887b0489d4c452e3a6b3cfaea23561ba59e4e56821da256@sha256:649d3da72d9af6e6be2cdcd63561da9acb5521a0f44e46cc3210f02ece211104"},{"byte_length":3419,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/stacking/feed.md","schema_version":"2.0","source_sha256":"7f79317d1cb795bf3c407fabe5b4a894a2645dd4c732856f1bc07b05cb620e53","stable_ref":"sg:material/path-sha256-88b6e0985d823e16fad9888dd2133bb5e3c2a2203e3a1623a705ac883ea4a00c","version_id":"sg:material/path-sha256-88b6e0985d823e16fad9888dd2133bb5e3c2a2203e3a1623a705ac883ea4a00c@sha256:7f79317d1cb795bf3c407fabe5b4a894a2645dd4c732856f1bc07b05cb620e53"},{"byte_length":936,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/index.md","schema_version":"2.0","source_sha256":"973dabb4a682d02c0a60d611ae73c2b531f38fb2a3e3d2682f37a385c3f2f726","stable_ref":"sg:material/path-sha256-8a81d81ebc22075986a7fe5af4720c2779c2a456382fc0a3e74c1bfc8bb0f958","version_id":"sg:material/path-sha256-8a81d81ebc22075986a7fe5af4720c2779c2a456382fc0a3e74c1bfc8bb0f958@sha256:973dabb4a682d02c0a60d611ae73c2b531f38fb2a3e3d2682f37a385c3f2f726"},{"byte_length":3397,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/media-fit/icon-frame.md","schema_version":"2.0","source_sha256":"09f79480d11a25c4ec7a9fbcdda2b62fa89ddf0da7142545841c3648078aa569","stable_ref":"sg:material/path-sha256-9100c52308320464deed2d7e13eb9857e485784f12f2dc1de28e8b73bc8f936b","version_id":"sg:material/path-sha256-9100c52308320464deed2d7e13eb9857e485784f12f2dc1de28e8b73bc8f936b@sha256:09f79480d11a25c4ec7a9fbcdda2b62fa89ddf0da7142545841c3648078aa569"},{"byte_length":6658,"domain":"platform-guides","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"platform-guides/apple-interaction.md","schema_version":"2.0","source_sha256":"e4013b5498a2ff7b0613b9c17a8fd6a31e1cb799c08f062dfbb2bf540e713cea","stable_ref":"sg:material/path-sha256-9247a878dcd0a0977374938c50eeb9a622ad6203847c1169beaf81d0493ebb5b","version_id":"sg:material/path-sha256-9247a878dcd0a0977374938c50eeb9a622ad6203847c1169beaf81d0493ebb5b@sha256:e4013b5498a2ff7b0613b9c17a8fd6a31e1cb799c08f062dfbb2bf540e713cea"},{"byte_length":4774,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/classification.md","schema_version":"2.0","source_sha256":"3ad0db32a74ddfcd4061cd35ee30cda764b9d1074599942001067f7a80b8f623","stable_ref":"sg:material/path-sha256-92725878c1f37c55731de2baf9c14a768fbd24ca839b82830c89f4aed7b66dce","version_id":"sg:material/path-sha256-92725878c1f37c55731de2baf9c14a768fbd24ca839b82830c89f4aed7b66dce@sha256:3ad0db32a74ddfcd4061cd35ee30cda764b9d1074599942001067f7a80b8f623"},{"byte_length":3457,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/wrap-row.md","schema_version":"2.0","source_sha256":"214d9e3d94366841f37f90c4c62096302c36f218843668e72c9a8850f6675920","stable_ref":"sg:material/path-sha256-94d8cf97bb7801865552f7d2b317b556ed6b643d53b73fad134de89186263585","version_id":"sg:material/path-sha256-94d8cf97bb7801865552f7d2b317b556ed6b643d53b73fad134de89186263585@sha256:214d9e3d94366841f37f90c4c62096302c36f218843668e72c9a8850f6675920"},{"byte_length":2502,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/families.md","schema_version":"2.0","source_sha256":"0e80ebefdc5a7c266c46f48342a9c6389eb5390d5f8c0f6f162f852c4b596690","stable_ref":"sg:material/path-sha256-956ab860e593d435b6682540b04365917b3736deb47207b5812065776734de0b","version_id":"sg:material/path-sha256-956ab860e593d435b6682540b04365917b3736deb47207b5812065776734de0b@sha256:0e80ebefdc5a7c266c46f48342a9c6389eb5390d5f8c0f6f162f852c4b596690"},{"byte_length":3678,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/badge-list.md","schema_version":"2.0","source_sha256":"aec85df4d5ddcfc08e9c052c5fdf60c0d4a73dbe8fea5a95b78b90c9871f1984","stable_ref":"sg:material/path-sha256-96fc7d48dad3399ab0cbedfdf8cb508b1732f57dc96cd15911e50a3a1654c9b1","version_id":"sg:material/path-sha256-96fc7d48dad3399ab0cbedfdf8cb508b1732f57dc96cd15911e50a3a1654c9b1@sha256:aec85df4d5ddcfc08e9c052c5fdf60c0d4a73dbe8fea5a95b78b90c9871f1984"},{"byte_length":952,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/visual-qa.md","schema_version":"2.0","source_sha256":"9fdfd9acdcd4fefd4f2d3ef51ba6170e3235d4ae97cc6c739a0f1123e1825f74","stable_ref":"sg:material/path-sha256-970cc2193de22b50bd91099cd6f8e5f52069ccd3360306d17e6eacf4ed1343ae","version_id":"sg:material/path-sha256-970cc2193de22b50bd91099cd6f8e5f52069ccd3360306d17e6eacf4ed1343ae@sha256:9fdfd9acdcd4fefd4f2d3ef51ba6170e3235d4ae97cc6c739a0f1123e1825f74"},{"byte_length":9489,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/primitive-to-recipe-matrix.md","schema_version":"2.0","source_sha256":"0e8b3b90651c8820a0c0463c32bf410e40abb7503a26e9c90b1fdb456d4ad7b3","stable_ref":"sg:material/path-sha256-99427f2ded107b0d7be95e3a768ac836b917b22c8736fb7f31028b33a333836d","version_id":"sg:material/path-sha256-99427f2ded107b0d7be95e3a768ac836b917b22c8736fb7f31028b33a333836d@sha256:0e8b3b90651c8820a0c0463c32bf410e40abb7503a26e9c90b1fdb456d4ad7b3"},{"byte_length":3743,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/supporting-pane.md","schema_version":"2.0","source_sha256":"bbffaf1bcf0daa4d30f5d269fda79759778b23c2f7c388d95d0ca45e0512c962","stable_ref":"sg:material/path-sha256-9a82e011fc565919a7334610d427c1ec662e2b89034c6da9a2b135dc398444da","version_id":"sg:material/path-sha256-9a82e011fc565919a7334610d427c1ec662e2b89034c6da9a2b135dc398444da@sha256:bbffaf1bcf0daa4d30f5d269fda79759778b23c2f7c388d95d0ca45e0512c962"},{"byte_length":3664,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/panel-layout.md","schema_version":"2.0","source_sha256":"1e373e1e0a03296d3262d2df4caa0a0c907693c6dfdad19d8d608b574e1ae123","stable_ref":"sg:material/path-sha256-9c016feea05fe406dddaf432e9137d8d56c71df33fb77450e538d21c9871e85f","version_id":"sg:material/path-sha256-9c016feea05fe406dddaf432e9137d8d56c71df33fb77450e538d21c9871e85f@sha256:1e373e1e0a03296d3262d2df4caa0a0c907693c6dfdad19d8d608b574e1ae123"},{"byte_length":2378,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/saas-settings.md","schema_version":"2.0","source_sha256":"f66665f62f1ac1242965326e47bd7a021ec9ed812e98155147f82be0bc00c5ad","stable_ref":"sg:material/path-sha256-9dfe65b7582876aed144b8b79ad8ffbde14182c8b9c082c6916057782509cd0e","version_id":"sg:material/path-sha256-9dfe65b7582876aed144b8b79ad8ffbde14182c8b9c082c6916057782509cd0e@sha256:f66665f62f1ac1242965326e47bd7a021ec9ed812e98155147f82be0bc00c5ad"},{"byte_length":2169,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/article-page.md","schema_version":"2.0","source_sha256":"e68b1049e6e2e0dd08e87c1b5dd8ef36f42350c161aa6d056f5ddcdbb091d28d","stable_ref":"sg:material/path-sha256-a0c4596e930ce74c5bf8f890a6e037abbd07463c1e1aa0b35c40a0c2009ba011","version_id":"sg:material/path-sha256-a0c4596e930ce74c5bf8f890a6e037abbd07463c1e1aa0b35c40a0c2009ba011@sha256:e68b1049e6e2e0dd08e87c1b5dd8ef36f42350c161aa6d056f5ddcdbb091d28d"},{"byte_length":3306,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"index.md","schema_version":"2.0","source_sha256":"24db0f026c37844f3e379021798152f17c850beb39159c7f368253524ebe7ff8","stable_ref":"sg:material/path-sha256-a48746cae70c44e7e105b594aad338ddd105c93c1cb445a40ba6aab785ba69e5","version_id":"sg:material/path-sha256-a48746cae70c44e7e105b594aad338ddd105c93c1cb445a40ba6aab785ba69e5@sha256:24db0f026c37844f3e379021798152f17c850beb39159c7f368253524ebe7ff8"},{"byte_length":10562,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/unity/repository-map.md","schema_version":"2.0","source_sha256":"aa6535fe435bc831a819f9f82ed29ad593ec133cc4f84be231355879ce145f9e","stable_ref":"sg:material/path-sha256-a4f5bfbc74a2b756b0661004893a21d81b1007879d2e2c4aaa4b73f1b083d434","version_id":"sg:material/path-sha256-a4f5bfbc74a2b756b0661004893a21d81b1007879d2e2c4aaa4b73f1b083d434@sha256:aa6535fe435bc831a819f9f82ed29ad593ec133cc4f84be231355879ce145f9e"},{"byte_length":8721,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"AGENTS.md","schema_version":"2.0","source_sha256":"67571ee3b85430f17999189a52fc3ed871aab135e7e5127f63ee57b2ce11cd19","stable_ref":"sg:material/path-sha256-a54ff182c7e8acf56acfd6e4b9c3ff41e2c41a31c9b211b2deb9df75d9a478f9","version_id":"sg:material/path-sha256-a54ff182c7e8acf56acfd6e4b9c3ff41e2c41a31c9b211b2deb9df75d9a478f9@sha256:67571ee3b85430f17999189a52fc3ed871aab135e7e5127f63ee57b2ce11cd19"},{"byte_length":3493,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/card-grid.md","schema_version":"2.0","source_sha256":"e2489c93d8f312b0104e14cd54d92940f2b094e7c7a1310b6be4e0653b2729a4","stable_ref":"sg:material/path-sha256-a5e3ff6fe0948ebbaf30def7866421563073877df12336c5f66eba3d2d6667a5","version_id":"sg:material/path-sha256-a5e3ff6fe0948ebbaf30def7866421563073877df12336c5f66eba3d2d6667a5@sha256:e2489c93d8f312b0104e14cd54d92940f2b094e7c7a1310b6be4e0653b2729a4"},{"byte_length":1194,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/index.md","schema_version":"2.0","source_sha256":"c52bbc8df395ff56e4cad12ced76ba5ee55f4a95c49efaf53825d13c32feab49","stable_ref":"sg:material/path-sha256-a7987410bcf408a5b4edc0ae7719d3f57f1f04a4efaaa7a756c870677307fd85","version_id":"sg:material/path-sha256-a7987410bcf408a5b4edc0ae7719d3f57f1f04a4efaaa7a756c870677307fd85@sha256:c52bbc8df395ff56e4cad12ced76ba5ee55f4a95c49efaf53825d13c32feab49"},{"byte_length":886,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/index.md","schema_version":"2.0","source_sha256":"8687d8285459805273e27f5ca9b5fcd10fbd0899786443445666155630bbf4bb","stable_ref":"sg:material/path-sha256-aa41c9d5c021c9d6a6e06df6c53297c0d271f71b3a299303d8a330644f6998f1","version_id":"sg:material/path-sha256-aa41c9d5c021c9d6a6e06df6c53297c0d271f71b3a299303d8a330644f6998f1@sha256:8687d8285459805273e27f5ca9b5fcd10fbd0899786443445666155630bbf4bb"},{"byte_length":2510,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/claim-records/stylegallery-multidomain-scope.md","schema_version":"2.0","source_sha256":"fb5f0cebaaea0998c5dd05721b2e3818a2f91e2407628c740da08877d5b94a19","stable_ref":"sg:material/path-sha256-abaaac8db5d4ad334a6b84253118bdd282aba92b9a55daf5710b2b6d6d14c399","version_id":"sg:material/path-sha256-abaaac8db5d4ad334a6b84253118bdd282aba92b9a55daf5710b2b6d6d14c399@sha256:fb5f0cebaaea0998c5dd05721b2e3818a2f91e2407628c740da08877d5b94a19"},{"byte_length":17580,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"README.md","schema_version":"2.0","source_sha256":"2ce02c5d9adec638ec8d0fb0ea91a23f698cce5218123c553550d0577cfccb50","stable_ref":"sg:material/path-sha256-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5","version_id":"sg:material/path-sha256-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5@sha256:2ce02c5d9adec638ec8d0fb0ea91a23f698cce5218123c553550d0577cfccb50"},{"byte_length":29668,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"GOVERNANCE.md","schema_version":"2.0","source_sha256":"b892e0df464b0527b50b201830db7ab87507069862281e7781ad1eecb56f77b7","stable_ref":"sg:material/path-sha256-b60c6a93e9f74ee52e71bf33781c2870b8395c8c5a34f00f61305343cb8d8447","version_id":"sg:material/path-sha256-b60c6a93e9f74ee52e71bf33781c2870b8395c8c5a34f00f61305343cb8d8447@sha256:b892e0df464b0527b50b201830db7ab87507069862281e7781ad1eecb56f77b7"},{"byte_length":1474,"domain":"design-engineering","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"design-engineering/index.md","schema_version":"2.0","source_sha256":"5ce4bd76f73388cdc252b28ee19fd7f41445064ad1278fd24591226aa94a6fac","stable_ref":"sg:material/path-sha256-b6b2ce37f6c04566c4dc6a18252e1d89fc387c7e79f4463406deff3e8b54a81f","version_id":"sg:material/path-sha256-b6b2ce37f6c04566c4dc6a18252e1d89fc387c7e79f4463406deff3e8b54a81f@sha256:5ce4bd76f73388cdc252b28ee19fd7f41445064ad1278fd24591226aa94a6fac"},{"byte_length":2699,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/accessibility-evidence.md","schema_version":"2.0","source_sha256":"fa07b1354ee7973317512b2f84d37d1f3965465962df74e9e1ee21a47f66ae4e","stable_ref":"sg:material/path-sha256-b7de05a789ffd0312cd9e9b1828ce113b1fcc3dcf5a87b73295a09e1004bfbe3","version_id":"sg:material/path-sha256-b7de05a789ffd0312cd9e9b1828ce113b1fcc3dcf5a87b73295a09e1004bfbe3@sha256:fa07b1354ee7973317512b2f84d37d1f3965465962df74e9e1ee21a47f66ae4e"},{"byte_length":6672,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"CATALOG.md","schema_version":"2.0","source_sha256":"6902e0b03d958816abc142a950cedb51a9a623c1acc5b1a7a94cc4f38a70eb8a","stable_ref":"sg:material/path-sha256-bb476268db5ed6523e97a56f61d3ec99765899bf3269949ee1aac390f48f1b99","version_id":"sg:material/path-sha256-bb476268db5ed6523e97a56f61d3ec99765899bf3269949ee1aac390f48f1b99@sha256:6902e0b03d958816abc142a950cedb51a9a623c1acc5b1a7a94cc4f38a70eb8a"},{"byte_length":3837,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/sidebar.md","schema_version":"2.0","source_sha256":"75edbf6107702e2c44f8ebdd724ec9b40ec8362729441c0ef1e073444c9ddb8e","stable_ref":"sg:material/path-sha256-bd2be8d5407fa6cf6a9bfaacf5d35e3b08eadea21e394cb0951a4e22290720a2","version_id":"sg:material/path-sha256-bd2be8d5407fa6cf6a9bfaacf5d35e3b08eadea21e394cb0951a4e22290720a2@sha256:75edbf6107702e2c44f8ebdd724ec9b40ec8362729441c0ef1e073444c9ddb8e"},{"byte_length":2932,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/consumer-migration-evidence.md","schema_version":"2.0","source_sha256":"71ad54bf72f5c968b8a0c5bd02b988660c6f441dbda13f9142d57842be498e6a","stable_ref":"sg:material/path-sha256-bd5e2b1ee33580f11a3a67b5306df57a54a539d5e944331511eb72fa9fe4e8f9","version_id":"sg:material/path-sha256-bd5e2b1ee33580f11a3a67b5306df57a54a539d5e944331511eb72fa9fe4e8f9@sha256:71ad54bf72f5c968b8a0c5bd02b988660c6f441dbda13f9142d57842be498e6a"},{"byte_length":3601,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/cover.md","schema_version":"2.0","source_sha256":"c78423cba85c44acfe985b44f7da72dfa52fdb20de2c87beb9d085062b451b6f","stable_ref":"sg:material/path-sha256-bf39299bae7cfb1c999e3d86ab9106128c573c2a83c8f2f08f14572a94f0c5a7","version_id":"sg:material/path-sha256-bf39299bae7cfb1c999e3d86ab9106128c573c2a83c8f2f08f14572a94f0c5a7@sha256:c78423cba85c44acfe985b44f7da72dfa52fdb20de2c87beb9d085062b451b6f"},{"byte_length":3660,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/twelve-span-grid.md","schema_version":"2.0","source_sha256":"7747b78dbe22604d9d4944f32ad89b8337961f76d2a8f2775c9efb7fe67ba879","stable_ref":"sg:material/path-sha256-c0d7d6f086cfa95c3163b3cf7692cee97e3e16dba0de964706bee174841d2094","version_id":"sg:material/path-sha256-c0d7d6f086cfa95c3163b3cf7692cee97e3e16dba0de964706bee174841d2094@sha256:7747b78dbe22604d9d4944f32ad89b8337961f76d2a8f2775c9efb7fe67ba879"},{"byte_length":3405,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/stacking/step-nav.md","schema_version":"2.0","source_sha256":"1b74a5b72ab2352f35f40247da26ab0eb3cecdc8a75754a071cacf263537a438","stable_ref":"sg:material/path-sha256-c1d82e696f9b42772a53643bf7ac7fbddc964e528aa09fb7f155b442660b6262","version_id":"sg:material/path-sha256-c1d82e696f9b42772a53643bf7ac7fbddc964e528aa09fb7f155b442660b6262@sha256:1b74a5b72ab2352f35f40247da26ab0eb3cecdc8a75754a071cacf263537a438"},{"byte_length":18957,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/executable-evidence.md","schema_version":"2.0","source_sha256":"a0ae7f2c355ab26293cdb9e96b31d91d50a024ed404aa0c8297a65b91af73a33","stable_ref":"sg:material/path-sha256-c609296f2ae6b1d6234dbb3497f9d6a45208ba0470a3d8b4a861be79bae797c8","version_id":"sg:material/path-sha256-c609296f2ae6b1d6234dbb3497f9d6a45208ba0470a3d8b4a861be79bae797c8@sha256:a0ae7f2c355ab26293cdb9e96b31d91d50a024ed404aa0c8297a65b91af73a33"},{"byte_length":6703,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"DOMAINS.md","schema_version":"2.0","source_sha256":"e1191677c19e33d96085de45f57d8cda9384ed1353dacb2d8c86bfc3ef0d49f3","stable_ref":"sg:material/path-sha256-d190306dc8097b7ef0ec2a57ed020076a9f325b48f083aba3f62de5e886af5ab","version_id":"sg:material/path-sha256-d190306dc8097b7ef0ec2a57ed020076a9f325b48f083aba3f62de5e886af5ab@sha256:e1191677c19e33d96085de45f57d8cda9384ed1353dacb2d8c86bfc3ef0d49f3"},{"byte_length":910,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/index.md","schema_version":"2.0","source_sha256":"fecba190f4bcb2f3e7fbce19c02181fae7613fc51da6b20539a17ef5d37e78f2","stable_ref":"sg:material/path-sha256-d312b8ccb45a40e38e38e6d6d1e95ee074d50714cdcf872de9afd4e4254a4301","version_id":"sg:material/path-sha256-d312b8ccb45a40e38e38e6d6d1e95ee074d50714cdcf872de9afd4e4254a4301@sha256:fecba190f4bcb2f3e7fbce19c02181fae7613fc51da6b20539a17ef5d37e78f2"},{"byte_length":3707,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/split-nav.md","schema_version":"2.0","source_sha256":"b797721ee74570f537fd79fbdec6077048764723f176c995341f5b8b8b1de432","stable_ref":"sg:material/path-sha256-d657fc87c00278cd49d87fb6a43b8596834943cf85f71d7cc873c102e56a5587","version_id":"sg:material/path-sha256-d657fc87c00278cd49d87fb6a43b8596834943cf85f71d7cc873c102e56a5587@sha256:b797721ee74570f537fd79fbdec6077048764723f176c995341f5b8b8b1de432"},{"byte_length":2821,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/index.md","schema_version":"2.0","source_sha256":"9402e16d92bf5f17df39d7ccfd2eb4328113e02a155abd02524a2e5482fd3d68","stable_ref":"sg:material/path-sha256-db7c4f17ca762b1169e43401710a0d95c03161ec7e38143c65fd8e888236f1e6","version_id":"sg:material/path-sha256-db7c4f17ca762b1169e43401710a0d95c03161ec7e38143c65fd8e888236f1e6@sha256:9402e16d92bf5f17df39d7ccfd2eb4328113e02a155abd02524a2e5482fd3d68"},{"byte_length":3944,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/consumer-migration.md","schema_version":"2.0","source_sha256":"a9e61500abbce740ca43f941aeb15a7bfebad46585584e0a45da59ce94334f29","stable_ref":"sg:material/path-sha256-ddc1d0e9544d4a08bb43703f230dcdfea087f2faf90d9a49e4aa22695b07178a","version_id":"sg:material/path-sha256-ddc1d0e9544d4a08bb43703f230dcdfea087f2faf90d9a49e4aa22695b07178a@sha256:a9e61500abbce740ca43f941aeb15a7bfebad46585584e0a45da59ce94334f29"},{"byte_length":2741,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/principles.md","schema_version":"2.0","source_sha256":"1834b852ae156c7362d4f9b223b4d72dc6b708a1f2a2964022955940a9c1fdc4","stable_ref":"sg:material/path-sha256-deba5ef88dc8bdc60813a398130b8a3ca3a8d01124f45823f5834ebda967996c","version_id":"sg:material/path-sha256-deba5ef88dc8bdc60813a398130b8a3ca3a8d01124f45823f5834ebda967996c@sha256:1834b852ae156c7362d4f9b223b4d72dc6b708a1f2a2964022955940a9c1fdc4"},{"byte_length":3655,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"consumer-reference/index.md","schema_version":"2.0","source_sha256":"6c3fbad093a7becb9f2ca52a344a65dd02b3da51f49a915af6426a61f2a06208","stable_ref":"sg:material/path-sha256-df7a6343d7be1e9be37c6f618a7e72b0ac51be6143f64f419b4520e5f37c2b6b","version_id":"sg:material/path-sha256-df7a6343d7be1e9be37c6f618a7e72b0ac51be6143f64f419b4520e5f37c2b6b@sha256:6c3fbad093a7becb9f2ca52a344a65dd02b3da51f49a915af6426a61f2a06208"},{"byte_length":338,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/centering/index.md","schema_version":"2.0","source_sha256":"b7125eb4c4d705a1bb2d57ac7e9d4cf140627473aac687331573bf30b0decd30","stable_ref":"sg:material/path-sha256-e1319590d4485778ddb92cc3c1f781b4f7e06d934d5849336f96588ee3592aa8","version_id":"sg:material/path-sha256-e1319590d4485778ddb92cc3c1f781b4f7e06d934d5849336f96588ee3592aa8@sha256:b7125eb4c4d705a1bb2d57ac7e9d4cf140627473aac687331573bf30b0decd30"},{"byte_length":3536,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/containment/content-limiter.md","schema_version":"2.0","source_sha256":"505df6aac4ab3b5a9041cedaa04e74c2253ce2f8b9a12abf3d8835d2a9ce169c","stable_ref":"sg:material/path-sha256-e1c9957e26f0e3ee1235a070fbe69d31ed5974bce8c4fe14c63537909991a750","version_id":"sg:material/path-sha256-e1c9957e26f0e3ee1235a070fbe69d31ed5974bce8c4fe14c63537909991a750@sha256:505df6aac4ab3b5a9041cedaa04e74c2253ce2f8b9a12abf3d8835d2a9ce169c"},{"byte_length":3595,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/masonry-approx.md","schema_version":"2.0","source_sha256":"a176ffb2966ea5ed8b3ad22d013ed2fdd82e54a904be057a9e391087d4ad6654","stable_ref":"sg:material/path-sha256-e277a76f0335dd426d8b64001be63fd56ab91a03c4ade0526ea10c4631251abb","version_id":"sg:material/path-sha256-e277a76f0335dd426d8b64001be63fd56ab91a03c4ade0526ea10c4631251abb@sha256:a176ffb2966ea5ed8b3ad22d013ed2fdd82e54a904be057a9e391087d4ad6654"},{"byte_length":8104,"domain":"design-engineering","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"design-engineering/consumer-migration-readiness.md","schema_version":"2.0","source_sha256":"86dc5148b052b372b0132d159d2c3ab819a859b5f210e3a1a994c29c7478b276","stable_ref":"sg:material/path-sha256-e2d4ce07445db974a7f32e5eec810897cfb565df619df52961f3eefa5a9c3fd4","version_id":"sg:material/path-sha256-e2d4ce07445db974a7f32e5eec810897cfb565df619df52961f3eefa5a9c3fd4@sha256:86dc5148b052b372b0132d159d2c3ab819a859b5f210e3a1a994c29c7478b276"},{"byte_length":1081,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/hci-evaluation.md","schema_version":"2.0","source_sha256":"9deeeeb4c0fc9b24d79e68b6e38236f2993da2544ecc0d130256136d2b062aae","stable_ref":"sg:material/path-sha256-e5f16e01f3fb13f94a214c8a9edf9b5c31c4ebca963802dfc624e8863e98f8da","version_id":"sg:material/path-sha256-e5f16e01f3fb13f94a214c8a9edf9b5c31c4ebca963802dfc624e8863e98f8da@sha256:9deeeeb4c0fc9b24d79e68b6e38236f2993da2544ecc0d130256136d2b062aae"},{"byte_length":5311,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/index.md","schema_version":"2.0","source_sha256":"3a69c67f9d4ab36a1bf741332fae02f3960414a610243c343281f934503e8c1a","stable_ref":"sg:material/path-sha256-e678b2e7915fc4abf6a019c86f8a7d74b8939a60220cb08a810900e1b5cbc2bc","version_id":"sg:material/path-sha256-e678b2e7915fc4abf6a019c86f8a7d74b8939a60220cb08a810900e1b5cbc2bc@sha256:3a69c67f9d4ab36a1bf741332fae02f3960414a610243c343281f934503e8c1a"},{"byte_length":2742,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/claims.md","schema_version":"2.0","source_sha256":"8f28f2a42891946bf2929fb2bf5b122bfe63edb8b47a0b926183760d2bc9b15c","stable_ref":"sg:material/path-sha256-ec031d838419829b80465b2f31de260e70117bdd283988e0653441d439a65114","version_id":"sg:material/path-sha256-ec031d838419829b80465b2f31de260e70117bdd283988e0653441d439a65114@sha256:8f28f2a42891946bf2929fb2bf5b122bfe63edb8b47a0b926183760d2bc9b15c"},{"byte_length":2727,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/accessibility.md","schema_version":"2.0","source_sha256":"cc5a68a5e1721914fd00537b66aecb4e58c92c89962cc5fabd5ed0fc39930e95","stable_ref":"sg:material/path-sha256-eeea8e16127c63b10e90f626430df368a97fac8108b419c1cba89805b6014ce7","version_id":"sg:material/path-sha256-eeea8e16127c63b10e90f626430df368a97fac8108b419c1cba89805b6014ce7@sha256:cc5a68a5e1721914fd00537b66aecb4e58c92c89962cc5fabd5ed0fc39930e95"},{"byte_length":6696,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"layout/index.md","schema_version":"2.0","source_sha256":"03bba4cd15b3f507ae44094c472c8839e4b1f875ded63d9f13ec868ee8e184b2","stable_ref":"sg:material/path-sha256-f05a4c57bb475ff014a22abaa9120b04f05bc02d8bbe11f57677bd7662276f54","version_id":"sg:material/path-sha256-f05a4c57bb475ff014a22abaa9120b04f05bc02d8bbe11f57677bd7662276f54@sha256:03bba4cd15b3f507ae44094c472c8839e4b1f875ded63d9f13ec868ee8e184b2"},{"byte_length":3844,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"GUIDE.md","schema_version":"2.0","source_sha256":"f105ff6ed3c6923ea43dacc4c40632affee4874e086a333b9ce3fa2a786234da","stable_ref":"sg:material/path-sha256-f0d91300831f8bc350b2883e8adf82bdbcb79f482585168420831991e320ade7","version_id":"sg:material/path-sha256-f0d91300831f8bc350b2883e8adf82bdbcb79f482585168420831991e320ade7@sha256:f105ff6ed3c6923ea43dacc4c40632affee4874e086a333b9ce3fa2a786234da"},{"byte_length":1051,"domain":"motion","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"motion/index.md","schema_version":"2.0","source_sha256":"936722e26c4157e4408bdf61ad13778fc7500885f177967348abbe6c17a77da3","stable_ref":"sg:material/path-sha256-f56daa946060f9e1f75d42246e0fa7a288093bf6d902cc9705a2c5b13c65310f","version_id":"sg:material/path-sha256-f56daa946060f9e1f75d42246e0fa7a288093bf6d902cc9705a2c5b13c65310f@sha256:936722e26c4157e4408bdf61ad13778fc7500885f177967348abbe6c17a77da3"},{"byte_length":1748,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/layout.md","schema_version":"2.0","source_sha256":"e7306ec2101bcbc1f27153160796ef56ba7846d6c7e5219d92e56b77e0703882","stable_ref":"sg:material/path-sha256-f62872ebce1ea7ffc61cd5522572c6d0f6aecd782c9e30df376bdcd96c7e73d3","version_id":"sg:material/path-sha256-f62872ebce1ea7ffc61cd5522572c6d0f6aecd782c9e30df376bdcd96c7e73d3@sha256:e7306ec2101bcbc1f27153160796ef56ba7846d6c7e5219d92e56b77e0703882"},{"byte_length":347,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/media-fit/index.md","schema_version":"2.0","source_sha256":"24fa906c939cad71b0f175aab12ec75a16718c66446a31bedfcd3d1d46a67ae6","stable_ref":"sg:material/path-sha256-f77cbae09754bece5a3217dbf7cf766189bb5302d6296fab69bd6f5b3d6e495e","version_id":"sg:material/path-sha256-f77cbae09754bece5a3217dbf7cf766189bb5302d6296fab69bd6f5b3d6e495e@sha256:24fa906c939cad71b0f175aab12ec75a16718c66446a31bedfcd3d1d46a67ae6"},{"byte_length":1550,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/rationale.md","schema_version":"2.0","source_sha256":"875771978927372959dea499fba00bf1fd0d0d2426d35601aa3e418698ccd1ab","stable_ref":"sg:material/path-sha256-f797bc85a767e4a6ea1339cf7cc91d2504c722f3a02614d6174e59978db906a6","version_id":"sg:material/path-sha256-f797bc85a767e4a6ea1339cf7cc91d2504c722f3a02614d6174e59978db906a6@sha256:875771978927372959dea499fba00bf1fd0d0d2426d35601aa3e418698ccd1ab"},{"byte_length":4183,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/holy-grail.md","schema_version":"2.0","source_sha256":"b5b1335b55674e703636d1d205b80f8da8e99768ed7de9505f99afe233449031","stable_ref":"sg:material/path-sha256-f968729fb5885c124f8e1cab2c273f7e3b6fefd858be7f71d1b3958b48f4f2a9","version_id":"sg:material/path-sha256-f968729fb5885c124f8e1cab2c273f7e3b6fefd858be7f71d1b3958b48f4f2a9@sha256:b5b1335b55674e703636d1d205b80f8da8e99768ed7de9505f99afe233449031"}],"record_kind":"material_manifest","schema_version":"2.0","stable_ref":"sg:manifest/material-admission-v2","version_id":"sg:manifest/material-admission-v2@sha256:2e38696a6316b2141654b40c670361406a446fad695033a1efc48b38fd99da2a"}
\ No newline at end of file
+{"admission_policy_ref":"sg:policy/material-admission-v2","admission_policy_version_id":"sg:policy/material-admission-v2@sha256:1421527cf60a23b16689dd40d4b013b89680d6acf68efe990de4404b205031ee","materials":[{"byte_length":3583,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/page-grid.md","schema_version":"2.0","source_sha256":"a5b73ad6e01e85a93f2f585f520ea7e02f8b3677fa286236c20011873d4e7b9b","stable_ref":"sg:material/path-sha256-002803d65d057faaa4e8c1bb3e32ef3f41032b011251fc9f0f7b1db907b01ceb","version_id":"sg:material/path-sha256-002803d65d057faaa4e8c1bb3e32ef3f41032b011251fc9f0f7b1db907b01ceb@sha256:a5b73ad6e01e85a93f2f585f520ea7e02f8b3677fa286236c20011873d4e7b9b"},{"byte_length":3464,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/pagination.md","schema_version":"2.0","source_sha256":"a7afa87a24aae9797f299a7e4b4b96e2ca26d511a7ba2dcdbe1dc78600532a5b","stable_ref":"sg:material/path-sha256-00ae3be01fcc4add55bd98eff34737037c54c0a7f2f128239a2afbe698936c8f","version_id":"sg:material/path-sha256-00ae3be01fcc4add55bd98eff34737037c54c0a7f2f128239a2afbe698936c8f@sha256:a7afa87a24aae9797f299a7e4b4b96e2ca26d511a7ba2dcdbe1dc78600532a5b"},{"byte_length":4786,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/claim-records/samples.md","schema_version":"2.0","source_sha256":"c2a3acefcad07f0ace47c9d054b601da0f4447a0fc8d5ee0ef272dd45075e81b","stable_ref":"sg:material/path-sha256-021f96adf1d1647d17f99011af6b1e7fa370dddbbad96b384731ed0256f74984","version_id":"sg:material/path-sha256-021f96adf1d1647d17f99011af6b1e7fa370dddbbad96b384731ed0256f74984@sha256:c2a3acefcad07f0ace47c9d054b601da0f4447a0fc8d5ee0ef272dd45075e81b"},{"byte_length":858,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/index.md","schema_version":"2.0","source_sha256":"05da91c5514d03e82c19a03c494fdad21a92a2ba7b88ec6dca5e7836c1f133a2","stable_ref":"sg:material/path-sha256-040de79bdf5af768663bf1aaa9d7451aa0d79bfaa0d5e982cceec4058f7715e4","version_id":"sg:material/path-sha256-040de79bdf5af768663bf1aaa9d7451aa0d79bfaa0d5e982cceec4058f7715e4@sha256:05da91c5514d03e82c19a03c494fdad21a92a2ba7b88ec6dca5e7836c1f133a2"},{"byte_length":5367,"domain":"design-engineering","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"design-engineering/interface-craft.md","schema_version":"2.0","source_sha256":"ba71e914027abd783e9769a5b91efb764cc7335a6479c69ca4e70ab05a64e941","stable_ref":"sg:material/path-sha256-04afb6013755c328be25b08637961e5f20fa67705cfcbd6e996ba6ada944f571","version_id":"sg:material/path-sha256-04afb6013755c328be25b08637961e5f20fa67705cfcbd6e996ba6ada944f571@sha256:ba71e914027abd783e9769a5b91efb764cc7335a6479c69ca4e70ab05a64e941"},{"byte_length":501,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/stacking/index.md","schema_version":"2.0","source_sha256":"9b60182a25c4c07b7b482b3981dec17d515f95915cc618411282f988dca4ada2","stable_ref":"sg:material/path-sha256-04fa96b121ed2a48be80851efc72289752d1c4c12bd6433c2d5002d6d82a54ed","version_id":"sg:material/path-sha256-04fa96b121ed2a48be80851efc72289752d1c4c12bd6433c2d5002d6d82a54ed@sha256:9b60182a25c4c07b7b482b3981dec17d515f95915cc618411282f988dca4ada2"},{"byte_length":6853,"domain":"motion","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"motion/vocabulary.md","schema_version":"2.0","source_sha256":"b2796979aaa1b194ff3006469cbeaec71cbd80d1484e3a5089e03295a43b464d","stable_ref":"sg:material/path-sha256-07b5ed44416e4d40efd213a7e944f214a338aa83201e52ba58c6dcf2a81e5675","version_id":"sg:material/path-sha256-07b5ed44416e4d40efd213a7e944f214a338aa83201e52ba58c6dcf2a81e5675@sha256:b2796979aaa1b194ff3006469cbeaec71cbd80d1484e3a5089e03295a43b464d"},{"byte_length":1619,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/visual-evidence.md","schema_version":"2.0","source_sha256":"17f7430f1cd1847c74c737ee9341120be6b49e827ec4228be5b6868669d27fd3","stable_ref":"sg:material/path-sha256-085c94936dece089fd31864c482d1a19e4da562951adbaa7d459e0126486d149","version_id":"sg:material/path-sha256-085c94936dece089fd31864c482d1a19e4da562951adbaa7d459e0126486d149@sha256:17f7430f1cd1847c74c737ee9341120be6b49e827ec4228be5b6868669d27fd3"},{"byte_length":54,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/claim-records/index.md","schema_version":"2.0","source_sha256":"b9bb90f0928f7f408c615ce2dc323425640ef4b83b62de0c0dee6dcd4bf7e3bb","stable_ref":"sg:material/path-sha256-08c3095acfdc040b75071e94644db6a32b655817c4b79eabfa4339b59c9f0b22","version_id":"sg:material/path-sha256-08c3095acfdc040b75071e94644db6a32b655817c4b79eabfa4339b59c9f0b22@sha256:b9bb90f0928f7f408c615ce2dc323425640ef4b83b62de0c0dee6dcd4bf7e3bb"},{"byte_length":4089,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/harmony-evaluation.md","schema_version":"2.0","source_sha256":"efee2c0ff6a662bc3efb360ee8c80defc5113a00d8b36e1c36c45eb63d330270","stable_ref":"sg:material/path-sha256-0a43f2af49d24f33b8ff06829d431f9e7608de57760c3f2c7de8c3e4126869f3","version_id":"sg:material/path-sha256-0a43f2af49d24f33b8ff06829d431f9e7608de57760c3f2c7de8c3e4126869f3@sha256:efee2c0ff6a662bc3efb360ee8c80defc5113a00d8b36e1c36c45eb63d330270"},{"byte_length":3804,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/scroll-body-shell.md","schema_version":"2.0","source_sha256":"f9f8269f42afdc453f2e226a03c1ea23566b4b9362939a4f485aee20d150cee8","stable_ref":"sg:material/path-sha256-10f553c3d6a39c31ca1a5b8f56db6afb75709d8706d125c6f0d891f46b1f11b4","version_id":"sg:material/path-sha256-10f553c3d6a39c31ca1a5b8f56db6afb75709d8706d125c6f0d891f46b1f11b4@sha256:f9f8269f42afdc453f2e226a03c1ea23566b4b9362939a4f485aee20d150cee8"},{"byte_length":4959,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/homepage.md","schema_version":"2.0","source_sha256":"09203c0de8824db3a8f678add95b0de363035ead7cfe5d44ae79353ef36b1193","stable_ref":"sg:material/path-sha256-14e127a7c719ee8494096a98b25b32d26363c1845bddcd912f50f6b1e2b84b46","version_id":"sg:material/path-sha256-14e127a7c719ee8494096a98b25b32d26363c1845bddcd912f50f6b1e2b84b46@sha256:09203c0de8824db3a8f678add95b0de363035ead7cfe5d44ae79353ef36b1193"},{"byte_length":2633,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/patterns/ownership/server-state-cache.md","schema_version":"2.0","source_sha256":"5219c26386083c8045541b2d7e1088910df5401503a094cd1b977d4b9277fac5","stable_ref":"sg:material/path-sha256-1542f1475adffd41b68a889335a67c04b4a3dfd1fea7d3bb27cd9de2d61ac6a3","version_id":"sg:material/path-sha256-1542f1475adffd41b68a889335a67c04b4a3dfd1fea7d3bb27cd9de2d61ac6a3@sha256:5219c26386083c8045541b2d7e1088910df5401503a094cd1b977d4b9277fac5"},{"byte_length":3430,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/overlay-exception/overlay-stack.md","schema_version":"2.0","source_sha256":"ffe57e891cbaa2eefcd3f642818d6f955b9f51f9028eed48ca2769e1ad75fd89","stable_ref":"sg:material/path-sha256-15dd8f3d84fb50f1442bd8c9732356759849f7d87f1d66b004eeb5d9ea75a4a9","version_id":"sg:material/path-sha256-15dd8f3d84fb50f1442bd8c9732356759849f7d87f1d66b004eeb5d9ea75a4a9@sha256:ffe57e891cbaa2eefcd3f642818d6f955b9f51f9028eed48ca2769e1ad75fd89"},{"byte_length":901,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/design-rationale.md","schema_version":"2.0","source_sha256":"f2215fa79133af7f7282fff9a2da490d1a5dd58dd3ea0fc56255872268fbd163","stable_ref":"sg:material/path-sha256-162d7fd4521ddaf5ee59166c9cb56d8cbcb7d3b9bacaf9cd75883c1586108369","version_id":"sg:material/path-sha256-162d7fd4521ddaf5ee59166c9cb56d8cbcb7d3b9bacaf9cd75883c1586108369@sha256:f2215fa79133af7f7282fff9a2da490d1a5dd58dd3ea0fc56255872268fbd163"},{"byte_length":3452,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/breadcrumb.md","schema_version":"2.0","source_sha256":"666bf05329f85a0a19d8ee42fd91b6149895d7c1ed62528f3b36051015210b9c","stable_ref":"sg:material/path-sha256-16eeb4385f9c3ed3ee536baa50271a5afda69eb267e6e240f45eea88c675c9cc","version_id":"sg:material/path-sha256-16eeb4385f9c3ed3ee536baa50271a5afda69eb267e6e240f45eea88c675c9cc@sha256:666bf05329f85a0a19d8ee42fd91b6149895d7c1ed62528f3b36051015210b9c"},{"byte_length":3426,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/cluster.md","schema_version":"2.0","source_sha256":"39a8b4e529fa82338de96528ed1f7ec0a1646286243dfb7df71be3666c46ed82","stable_ref":"sg:material/path-sha256-176a6bff0fef909def0e8d71cb7c567b867a180ff8ff11dc71f96187e6fb4b75","version_id":"sg:material/path-sha256-176a6bff0fef909def0e8d71cb7c567b867a180ff8ff11dc71f96187e6fb4b75@sha256:39a8b4e529fa82338de96528ed1f7ec0a1646286243dfb7df71be3666c46ed82"},{"byte_length":2732,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/patterns/transitions/explicit-transition-model.md","schema_version":"2.0","source_sha256":"b38b5a3adf0d8cb81b2382316cf814afb9234725f4448478383b0c8bddf3f43f","stable_ref":"sg:material/path-sha256-19d323f7f054061deb40558e50305bced8ef42db6067987cdcab8d17151d4534","version_id":"sg:material/path-sha256-19d323f7f054061deb40558e50305bced8ef42db6067987cdcab8d17151d4534@sha256:b38b5a3adf0d8cb81b2382316cf814afb9234725f4448478383b0c8bddf3f43f"},{"byte_length":935,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/index.md","schema_version":"2.0","source_sha256":"5cfb5a5586709a5c32f6f01e8d0e768850b57111c0a653363ced0eeddbca4f88","stable_ref":"sg:material/path-sha256-1bbc62c02480ddef71cbe2b8723ae3da595efdfcfcf8f0bbbfd4dad8d417d2a7","version_id":"sg:material/path-sha256-1bbc62c02480ddef71cbe2b8723ae3da595efdfcfcf8f0bbbfd4dad8d417d2a7@sha256:5cfb5a5586709a5c32f6f01e8d0e768850b57111c0a653363ced0eeddbca4f88"},{"byte_length":3725,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/split-screen.md","schema_version":"2.0","source_sha256":"a6c48700334e6e3e611acee525be7a89e6aa73c0df0494d5f4a5555790d237a8","stable_ref":"sg:material/path-sha256-1c3948243f01f30bcd55ac3cb3c9935bce15060224b1837fdf1b3be2684ecc74","version_id":"sg:material/path-sha256-1c3948243f01f30bcd55ac3cb3c9935bce15060224b1837fdf1b3be2684ecc74@sha256:a6c48700334e6e3e611acee525be7a89e6aa73c0df0494d5f4a5555790d237a8"},{"byte_length":3334,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/containment/box.md","schema_version":"2.0","source_sha256":"d64aedd87ff612e6bb50293653cf5076ed952c1d4833abc54416b1bc60ef8680","stable_ref":"sg:material/path-sha256-1c4c0582a35fac69c8274a72f86ad5075a755d30f0924adbc3ff66fc616d9430","version_id":"sg:material/path-sha256-1c4c0582a35fac69c8274a72f86ad5075a755d30f0924adbc3ff66fc616d9430@sha256:d64aedd87ff612e6bb50293653cf5076ed952c1d4833abc54416b1bc60ef8680"},{"byte_length":3502,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/guides/verification-matrix.md","schema_version":"2.0","source_sha256":"15e5b98a82e683cb4f0ccf6b2f151ea96204d2582a36f7a6f22c5f3e9dda72cc","stable_ref":"sg:material/path-sha256-1cc04be5efb7983b200d5e02b7fbe0b412bdee145fd5661a486f1b2a42c6cd9c","version_id":"sg:material/path-sha256-1cc04be5efb7983b200d5e02b7fbe0b412bdee145fd5661a486f1b2a42c6cd9c@sha256:15e5b98a82e683cb4f0ccf6b2f151ea96204d2582a36f7a6f22c5f3e9dda72cc"},{"byte_length":3380,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/stacking/stack.md","schema_version":"2.0","source_sha256":"0e9d1bd2fb0345bd28efc04502c88fb64f6cdb721a5792473d2822907de1baa1","stable_ref":"sg:material/path-sha256-1f6bb0dc8098df4cb643ddb7941fc7997bfc34e8c4c4ba8b473ebd19b43da69e","version_id":"sg:material/path-sha256-1f6bb0dc8098df4cb643ddb7941fc7997bfc34e8c4c4ba8b473ebd19b43da69e@sha256:0e9d1bd2fb0345bd28efc04502c88fb64f6cdb721a5792473d2822907de1baa1"},{"byte_length":386,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/overlay-exception/index.md","schema_version":"2.0","source_sha256":"a32cdbff417ba8cf4333a15c7799bb1b1907c4334d0bcee052220af46b87973a","stable_ref":"sg:material/path-sha256-1fc22b9f0d7d72c1dcc9b54db927b44a791c091736efbc2dcff08b9f5097f00c","version_id":"sg:material/path-sha256-1fc22b9f0d7d72c1dcc9b54db927b44a791c091736efbc2dcff08b9f5097f00c@sha256:a32cdbff417ba8cf4333a15c7799bb1b1907c4334d0bcee052220af46b87973a"},{"byte_length":2010,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/design-claim.md","schema_version":"2.0","source_sha256":"bdf92087f69f1d55d1d8f5efa8fdc794824bd9f40d794e617e6a06db0a16ef81","stable_ref":"sg:material/path-sha256-21480e86104dfaab3408304f300dc7cc570eab3e747a1a3931785951544f8372","version_id":"sg:material/path-sha256-21480e86104dfaab3408304f300dc7cc570eab3e747a1a3931785951544f8372@sha256:bdf92087f69f1d55d1d8f5efa8fdc794824bd9f40d794e617e6a06db0a16ef81"},{"byte_length":3461,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/centering/super-center.md","schema_version":"2.0","source_sha256":"80ca126c59d0a5947707b01875c17487dfad7e4fc51920ad02649108971e0c55","stable_ref":"sg:material/path-sha256-21ffb3e535a16bcba5817e15c784b9d2500b32cb50f86c1b3c033c652193cc00","version_id":"sg:material/path-sha256-21ffb3e535a16bcba5817e15c784b9d2500b32cb50f86c1b3c033c652193cc00@sha256:80ca126c59d0a5947707b01875c17487dfad7e4fc51920ad02649108971e0c55"},{"byte_length":1769,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/recipes/index.md","schema_version":"2.0","source_sha256":"2d422a6952119f35cc4d5c82312571c07cdd2bbb91f9b257f7ee53ebc67507fb","stable_ref":"sg:material/path-sha256-22bf02611006ee5ecb5f9dd4189f6ff9282cc45849d7f3a13215ec03ff11b4ec","version_id":"sg:material/path-sha256-22bf02611006ee5ecb5f9dd4189f6ff9282cc45849d7f3a13215ec03ff11b4ec@sha256:2d422a6952119f35cc4d5c82312571c07cdd2bbb91f9b257f7ee53ebc67507fb"},{"byte_length":3504,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/containment/fluid-styles.md","schema_version":"2.0","source_sha256":"652bd2d6b33e8c1c4dc5eb7175f65c1c0c13a6268aa72ac330ef6b3cf303b5cb","stable_ref":"sg:material/path-sha256-239a2e2ec1f881ea5ae0e4f852980adaa058a8c7943fe83d8c90d8b51e02abb5","version_id":"sg:material/path-sha256-239a2e2ec1f881ea5ae0e4f852980adaa058a8c7943fe83d8c90d8b51e02abb5@sha256:652bd2d6b33e8c1c4dc5eb7175f65c1c0c13a6268aa72ac330ef6b3cf303b5cb"},{"byte_length":3506,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/ram-grid.md","schema_version":"2.0","source_sha256":"b15856b240152a9da700abb4cdd611a1f9d41cad353582eeaad79459c13f277b","stable_ref":"sg:material/path-sha256-23ce75202642f0f8901b6a413fd2a269a70166058d62e90ca4403e7a3b34cf69","version_id":"sg:material/path-sha256-23ce75202642f0f8901b6a413fd2a269a70166058d62e90ca4403e7a3b34cf69@sha256:b15856b240152a9da700abb4cdd611a1f9d41cad353582eeaad79459c13f277b"},{"byte_length":3364,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/tab-strip.md","schema_version":"2.0","source_sha256":"c154f4a8cfd4d17d60f929bf363a632ca4bacedc4a5e55c891870a2a75ccd628","stable_ref":"sg:material/path-sha256-2567793e03725c0bb9b1b4cd1524b38c8240253b4989e3413b7985cfccfb4453","version_id":"sg:material/path-sha256-2567793e03725c0bb9b1b4cd1524b38c8240253b4989e3413b7985cfccfb4453@sha256:c154f4a8cfd4d17d60f929bf363a632ca4bacedc4a5e55c891870a2a75ccd628"},{"byte_length":3735,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/list-detail.md","schema_version":"2.0","source_sha256":"cbb8c05e85605aa2217027a946aae1fd7d3ed7c3981d7f15b2207c7dee8f9c6d","stable_ref":"sg:material/path-sha256-26867cd73e9ea9a732763de098fa0e99861d6bd15deba26359727ef68417e331","version_id":"sg:material/path-sha256-26867cd73e9ea9a732763de098fa0e99861d6bd15deba26359727ef68417e331@sha256:cbb8c05e85605aa2217027a946aae1fd7d3ed7c3981d7f15b2207c7dee8f9c6d"},{"byte_length":3827,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/sticky-aside.md","schema_version":"2.0","source_sha256":"69bd3b575b0c2aca46858e887cc5fbccbf5f772e4678ac305257307c70a378ab","stable_ref":"sg:material/path-sha256-27b1e5216a098387ab5e1de9d8997391ae2e8b3388331c221e14ed5946734415","version_id":"sg:material/path-sha256-27b1e5216a098387ab5e1de9d8997391ae2e8b3388331c221e14ed5946734415@sha256:69bd3b575b0c2aca46858e887cc5fbccbf5f772e4678ac305257307c70a378ab"},{"byte_length":3972,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/fixed-sidenav-shell.md","schema_version":"2.0","source_sha256":"4889d7aaf9a7ab4687b56e19987782afdc40def1935882213510958d4c747560","stable_ref":"sg:material/path-sha256-29d4e1dee690708b4218d8b195f08e1135f76b279ebaadbafd08aa74286daa28","version_id":"sg:material/path-sha256-29d4e1dee690708b4218d8b195f08e1135f76b279ebaadbafd08aa74286daa28@sha256:4889d7aaf9a7ab4687b56e19987782afdc40def1935882213510958d4c747560"},{"byte_length":3636,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/switcher.md","schema_version":"2.0","source_sha256":"f9e24b044790472cee533fe85da5d0b14e252c5119a0b532f5ff00be2f74ca4d","stable_ref":"sg:material/path-sha256-2dd9316398e52cf61361bfae39e601e73eb411b74ddc09cadf131183e6c18093","version_id":"sg:material/path-sha256-2dd9316398e52cf61361bfae39e601e73eb411b74ddc09cadf131183e6c18093@sha256:f9e24b044790472cee533fe85da5d0b14e252c5119a0b532f5ff00be2f74ca4d"},{"byte_length":1783,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/sources.md","schema_version":"2.0","source_sha256":"655c4c304f1dae83e56e5f3f19838db7b9681a600b161532cc4389574594fde8","stable_ref":"sg:material/path-sha256-31c57866c230c6e93dd2b4636e6e892eeff33521ef07ed24cde34094c2d9c939","version_id":"sg:material/path-sha256-31c57866c230c6e93dd2b4636e6e892eeff33521ef07ed24cde34094c2d9c939@sha256:655c4c304f1dae83e56e5f3f19838db7b9681a600b161532cc4389574594fde8"},{"byte_length":2906,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/command-surface.md","schema_version":"2.0","source_sha256":"b52b18adcaf95110d9ba7780289c2c2e6e4b128327290e18da1723b019261f02","stable_ref":"sg:material/path-sha256-33c5ebfda703b62fe98e750cf800d6a690eb3c5e02c0089d0fd91d987b2b5f8f","version_id":"sg:material/path-sha256-33c5ebfda703b62fe98e750cf800d6a690eb3c5e02c0089d0fd91d987b2b5f8f@sha256:b52b18adcaf95110d9ba7780289c2c2e6e4b128327290e18da1723b019261f02"},{"byte_length":3479,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/sticky-header.md","schema_version":"2.0","source_sha256":"3a5aeacbaa7f9ea443c92848667b7a6d362bd5f4481c304b0bb312549d330a94","stable_ref":"sg:material/path-sha256-3901860520475e0bf9a7a0d9a7684ce518e7f2c96d22f3aefb66fe40c524558d","version_id":"sg:material/path-sha256-3901860520475e0bf9a7a0d9a7684ce518e7f2c96d22f3aefb66fe40c524558d@sha256:3a5aeacbaa7f9ea443c92848667b7a6d362bd5f4481c304b0bb312549d330a94"},{"byte_length":14817,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/unity/ui-systems.md","schema_version":"2.0","source_sha256":"fc9baf57a82a393d5f7b189fa7798d1023757d2bc9ed769fb6cbab7b9bbb5c40","stable_ref":"sg:material/path-sha256-3a18eb0e207f57d2657185e6e09afddd94b8d9722418d78d39122b6bb06b7098","version_id":"sg:material/path-sha256-3a18eb0e207f57d2657185e6e09afddd94b8d9722418d78d39122b6bb06b7098@sha256:fc9baf57a82a393d5f7b189fa7798d1023757d2bc9ed769fb6cbab7b9bbb5c40"},{"byte_length":2964,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/patterns/ownership/url-owned-state.md","schema_version":"2.0","source_sha256":"1f731bb7432f1cca02b659b9a4470f8921aca9227a489714ca1b096d2deae8cc","stable_ref":"sg:material/path-sha256-3b2fea006afca531059c2cebda32d8172bad866f4bb31fac5fd1bcd164586072","version_id":"sg:material/path-sha256-3b2fea006afca531059c2cebda32d8172bad866f4bb31fac5fd1bcd164586072@sha256:1f731bb7432f1cca02b659b9a4470f8921aca9227a489714ca1b096d2deae8cc"},{"byte_length":579,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/index.md","schema_version":"2.0","source_sha256":"90f2d5973bf08cfd7ba55523176d8bb76bff441a8a3b9e69c3a520118db3e101","stable_ref":"sg:material/path-sha256-3bf8fac99ec13ef32824ded352565692d56cc7c54e5392b7985df262ba35e760","version_id":"sg:material/path-sha256-3bf8fac99ec13ef32824ded352565692d56cc7c54e5392b7985df262ba35e760@sha256:90f2d5973bf08cfd7ba55523176d8bb76bff441a8a3b9e69c3a520118db3e101"},{"byte_length":4405,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/screen-hierarchy.md","schema_version":"2.0","source_sha256":"a186fd1ff27b84394fdf31011eee733d5b5cc40e6e83069dc4df41b52809f552","stable_ref":"sg:material/path-sha256-3d5fe3355a6206218a13433abbd642bc623d90ee2bcb48dbf488a592bec8fb17","version_id":"sg:material/path-sha256-3d5fe3355a6206218a13433abbd642bc623d90ee2bcb48dbf488a592bec8fb17@sha256:a186fd1ff27b84394fdf31011eee733d5b5cc40e6e83069dc4df41b52809f552"},{"byte_length":3466,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/dense-grid.md","schema_version":"2.0","source_sha256":"5c99ebab2a33fe1827fee2810e340fc44867439352462dc453ec352f78e34e52","stable_ref":"sg:material/path-sha256-3d9a239e6bc90b85b6d15102c961f1ca0615094fe1df289c6e4d6a418af1801a","version_id":"sg:material/path-sha256-3d9a239e6bc90b85b6d15102c961f1ca0615094fe1df289c6e4d6a418af1801a@sha256:5c99ebab2a33fe1827fee2810e340fc44867439352462dc453ec352f78e34e52"},{"byte_length":2608,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/reference-record.md","schema_version":"2.0","source_sha256":"f43c57cf386b787c73c6e2974044b21c4ad0e1c05dd080003a3f6e268f63f4c9","stable_ref":"sg:material/path-sha256-3e5f771aba328b1394ddd2e529e322ecb8fe2259c33b92448c0c71161e3a5ff9","version_id":"sg:material/path-sha256-3e5f771aba328b1394ddd2e529e322ecb8fe2259c33b92448c0c71161e3a5ff9@sha256:f43c57cf386b787c73c6e2974044b21c4ad0e1c05dd080003a3f6e268f63f4c9"},{"byte_length":873,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/index.md","schema_version":"2.0","source_sha256":"89729f69e1a879742421b2d583dcf67f8a9a94ed90a198e5b7b9e40b856a404e","stable_ref":"sg:material/path-sha256-44cd370aff03553cea434398290dfe059d49fd316157face88e54035c050b5f5","version_id":"sg:material/path-sha256-44cd370aff03553cea434398290dfe059d49fd316157face88e54035c050b5f5@sha256:89729f69e1a879742421b2d583dcf67f8a9a94ed90a198e5b7b9e40b856a404e"},{"byte_length":2697,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/dashboard.md","schema_version":"2.0","source_sha256":"8ee1c7c8b70bfd63144fbdd5f3a55f8736ce4626c35a391f4a722b579ec2232d","stable_ref":"sg:material/path-sha256-463cfb73f926bbdf90d68b3aee7af299b388384e6b5e51e1c7a5ef2cd33aef83","version_id":"sg:material/path-sha256-463cfb73f926bbdf90d68b3aee7af299b388384e6b5e51e1c7a5ef2cd33aef83@sha256:8ee1c7c8b70bfd63144fbdd5f3a55f8736ce4626c35a391f4a722b579ec2232d"},{"byte_length":15345,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/unity/architecture.md","schema_version":"2.0","source_sha256":"026af25031c537dd074e7bc91f00fa91e1dcaecbefe6a9c6a574e05a662adff4","stable_ref":"sg:material/path-sha256-49ac4d11b609a7dd49ecd0d397a7a5401595c3e2835958e35b430be5883d7592","version_id":"sg:material/path-sha256-49ac4d11b609a7dd49ecd0d397a7a5401595c3e2835958e35b430be5883d7592@sha256:026af25031c537dd074e7bc91f00fa91e1dcaecbefe6a9c6a574e05a662adff4"},{"byte_length":3538,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/grid-wrapper.md","schema_version":"2.0","source_sha256":"55c90e01efd81fe7f338ab8e6535d731df8f0ce1c00751d8ba4ddde780963b29","stable_ref":"sg:material/path-sha256-4a8a96f82fbd1527cc6f7ee248ef7a8ab8d47289a31dfb521f865d49f0376afb","version_id":"sg:material/path-sha256-4a8a96f82fbd1527cc6f7ee248ef7a8ab8d47289a31dfb521f865d49f0376afb@sha256:55c90e01efd81fe7f338ab8e6535d731df8f0ce1c00751d8ba4ddde780963b29"},{"byte_length":3678,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/overlay-exception/imposter.md","schema_version":"2.0","source_sha256":"4f71b8e9164daf01d1c977c0a7ebb18576185138068a06df5d67e89d3bf7ad1c","stable_ref":"sg:material/path-sha256-4c3aeb4771622f79b0f3efdeb40e0f59064925f4bd60e63186452c0a79941a3e","version_id":"sg:material/path-sha256-4c3aeb4771622f79b0f3efdeb40e0f59064925f4bd60e63186452c0a79941a3e@sha256:4f71b8e9164daf01d1c977c0a7ebb18576185138068a06df5d67e89d3bf7ad1c"},{"byte_length":3458,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/centering/center.md","schema_version":"2.0","source_sha256":"8abae0c076bf8c3eeeefd8920dff8c9d767c5c59ef926265b960940bab8310da","stable_ref":"sg:material/path-sha256-4fb5bdea440d75d58bcb66874cdb2930ee9cd5d17768bba1ea95e4c3c547ebd5","version_id":"sg:material/path-sha256-4fb5bdea440d75d58bcb66874cdb2930ee9cd5d17768bba1ea95e4c3c547ebd5@sha256:8abae0c076bf8c3eeeefd8920dff8c9d767c5c59ef926265b960940bab8310da"},{"byte_length":6061,"domain":"motion","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"motion/practice-reference.md","schema_version":"2.0","source_sha256":"1096eae09dd6a90ae83c9979728c5774c4242dae68f71ee12e97496c87d0ba2d","stable_ref":"sg:material/path-sha256-50b685f66086b3f2362d97feb7e001bd2f208e6ea33c52174edf66fbe8287265","version_id":"sg:material/path-sha256-50b685f66086b3f2362d97feb7e001bd2f208e6ea33c52174edf66fbe8287265@sha256:1096eae09dd6a90ae83c9979728c5774c4242dae68f71ee12e97496c87d0ba2d"},{"byte_length":2836,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/patterns/synchronization/optimistic-mutation.md","schema_version":"2.0","source_sha256":"033ef7accc5628bd0cd2ce92c7463a0531881181bf01f38d9211c55d97f43fe8","stable_ref":"sg:material/path-sha256-50ecdd808a7fd8d601da59d7c6dd6761d93b8cb9ca140aed5370bf379ac495ef","version_id":"sg:material/path-sha256-50ecdd808a7fd8d601da59d7c6dd6761d93b8cb9ca140aed5370bf379ac495ef@sha256:033ef7accc5628bd0cd2ce92c7463a0531881181bf01f38d9211c55d97f43fe8"},{"byte_length":3428,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/containment/clamped-card.md","schema_version":"2.0","source_sha256":"14e9700b95e01bdbf22be445ec79245209be097cfcff92c33a0aa37bcf2d564b","stable_ref":"sg:material/path-sha256-52157f6d777be20078f71c3c850955175151fdbe04fad86368b8f0e382280631","version_id":"sg:material/path-sha256-52157f6d777be20078f71c3c850955175151fdbe04fad86368b8f0e382280631@sha256:14e9700b95e01bdbf22be445ec79245209be097cfcff92c33a0aa37bcf2d564b"},{"byte_length":7878,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"consumer-reference/contract.md","schema_version":"2.0","source_sha256":"b914920989ff2ce08ebc67fa3167d0da766c260c93f03257a9144c6093ff6713","stable_ref":"sg:material/path-sha256-52494ee56bf5c837ead0782244d579ea0aba9e63e95a02c10f6d0b566e4d62d9","version_id":"sg:material/path-sha256-52494ee56bf5c837ead0782244d579ea0aba9e63e95a02c10f6d0b566e4d62d9@sha256:b914920989ff2ce08ebc67fa3167d0da766c260c93f03257a9144c6093ff6713"},{"byte_length":8606,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/search-metadata-polyhierarchy.md","schema_version":"2.0","source_sha256":"53ea6fddbf9c446a2b35ca6d975200c274ba3a713a2298ff62c8253d6c8a49d7","stable_ref":"sg:material/path-sha256-59a41c8893a1ad96d4b5abe1cfb6e381273ce32030b84b06cdbd2ac8be24dc74","version_id":"sg:material/path-sha256-59a41c8893a1ad96d4b5abe1cfb6e381273ce32030b84b06cdbd2ac8be24dc74@sha256:53ea6fddbf9c446a2b35ca6d975200c274ba3a713a2298ff62c8253d6c8a49d7"},{"byte_length":3490,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/columns.md","schema_version":"2.0","source_sha256":"eda07657f498d69a734749ba4c94a6fd35e4b1f61cf312324460e0b4e491d324","stable_ref":"sg:material/path-sha256-5a76c5ad4c7daff2cbf3fbf8d8968f56204322f508b999f77e87bcbe6274a8de","version_id":"sg:material/path-sha256-5a76c5ad4c7daff2cbf3fbf8d8968f56204322f508b999f77e87bcbe6274a8de@sha256:eda07657f498d69a734749ba4c94a6fd35e4b1f61cf312324460e0b4e491d324"},{"byte_length":12162,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/unity/org-wiki.md","schema_version":"2.0","source_sha256":"b6fcdef8d5b6524111cabfef7a0b86e2f899659e5d7d7e81e8ebd521e79dd131","stable_ref":"sg:material/path-sha256-5de69acbec858ebe75c9483c1b4474ea8d48778aedc3cc654a26552b3a49a5f5","version_id":"sg:material/path-sha256-5de69acbec858ebe75c9483c1b4474ea8d48778aedc3cc654a26552b3a49a5f5@sha256:b6fcdef8d5b6524111cabfef7a0b86e2f899659e5d7d7e81e8ebd521e79dd131"},{"byte_length":876,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/tokens.md","schema_version":"2.0","source_sha256":"9f6849985944fea6c660c6ce8f1a962b1b3fe4aa195e72ef2d2293b27fac80f0","stable_ref":"sg:material/path-sha256-5e265c863940f92cadc3da208c4c09c4aacd7da3425332edc401bbb461383e30","version_id":"sg:material/path-sha256-5e265c863940f92cadc3da208c4c09c4aacd7da3425332edc401bbb461383e30@sha256:9f6849985944fea6c660c6ce8f1a962b1b3fe4aa195e72ef2d2293b27fac80f0"},{"byte_length":537,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/containment/index.md","schema_version":"2.0","source_sha256":"93635d8fec49e448550ac671d0fe2510ecc017467ff79203bf10bc3e9b32a9d4","stable_ref":"sg:material/path-sha256-5e7498d507fe35d8607873d31efa80b8e4634fa59aa68fdb3cc10fcd99df20c6","version_id":"sg:material/path-sha256-5e7498d507fe35d8607873d31efa80b8e4634fa59aa68fdb3cc10fcd99df20c6@sha256:93635d8fec49e448550ac671d0fe2510ecc017467ff79203bf10bc3e9b32a9d4"},{"byte_length":2632,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/patterns/derivation/derived-state.md","schema_version":"2.0","source_sha256":"ae462cc1b196f60329862de9f6ce8b6cb189af434639e1611cd9e55a1b0b1173","stable_ref":"sg:material/path-sha256-64bbfbfe3031324a3d958d25c490df74fcddb9a98a036f5ca7652ead94108adc","version_id":"sg:material/path-sha256-64bbfbfe3031324a3d958d25c490df74fcddb9a98a036f5ca7652ead94108adc@sha256:ae462cc1b196f60329862de9f6ce8b6cb189af434639e1611cd9e55a1b0b1173"},{"byte_length":3682,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/deconstructed-pancake.md","schema_version":"2.0","source_sha256":"81a69e4a12a2f967a0ecff31d02c3beb365bf6c9055acc86cda4f6355f70adbe","stable_ref":"sg:material/path-sha256-651d978327dca78d036202b232058a85e240ada94d07dd7461bc894f9f83e5e2","version_id":"sg:material/path-sha256-651d978327dca78d036202b232058a85e240ada94d07dd7461bc894f9f83e5e2@sha256:81a69e4a12a2f967a0ecff31d02c3beb365bf6c9055acc86cda4f6355f70adbe"},{"byte_length":3735,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/main-with-rail.md","schema_version":"2.0","source_sha256":"ba1cfc18e294563b48fbaa2cb427dc431b4586d55a157818a541cba25d0a0160","stable_ref":"sg:material/path-sha256-653b926534bf6d8d074f03173f13f475bada8dfa566852e272470fc17b8e58d4","version_id":"sg:material/path-sha256-653b926534bf6d8d074f03173f13f475bada8dfa566852e272470fc17b8e58d4@sha256:ba1cfc18e294563b48fbaa2cb427dc431b4586d55a157818a541cba25d0a0160"},{"byte_length":3910,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/media-object.md","schema_version":"2.0","source_sha256":"26f218d8b2138e7a7f4585e21d33d6f640d5b67993a64e182bdef9b4628d7dae","stable_ref":"sg:material/path-sha256-69e5cbcca6fba542020d47eeb31222d719c39624ec41749d591d17aa175c5f3a","version_id":"sg:material/path-sha256-69e5cbcca6fba542020d47eeb31222d719c39624ec41749d591d17aa175c5f3a@sha256:26f218d8b2138e7a7f4585e21d33d6f640d5b67993a64e182bdef9b4628d7dae"},{"byte_length":1163,"domain":"platform-guides","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"platform-guides/index.md","schema_version":"2.0","source_sha256":"304f07851551513750ee3d00e4023ad2b5500944c8c504587b3e14856179fd3c","stable_ref":"sg:material/path-sha256-6c243b28fd8f4564a96217bcceabc75a5651ecd21ac41abfbdd4716adc60aa72","version_id":"sg:material/path-sha256-6c243b28fd8f4564a96217bcceabc75a5651ecd21ac41abfbdd4716adc60aa72@sha256:304f07851551513750ee3d00e4023ad2b5500944c8c504587b3e14856179fd3c"},{"byte_length":6999,"domain":"shared","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"consumer-reference/agent-native/README.md","schema_version":"2.0","source_sha256":"959509d4539f4b7bb7d193bfdfb949b4cf25ab53317e072aaad7657f04b8779e","stable_ref":"sg:material/path-sha256-6cda345129c13188719d0116beef1e7d8e672f951f21295bc3b2ccf490a4a81d","version_id":"sg:material/path-sha256-6cda345129c13188719d0116beef1e7d8e672f951f21295bc3b2ccf490a4a81d@sha256:959509d4539f4b7bb7d193bfdfb949b4cf25ab53317e072aaad7657f04b8779e"},{"byte_length":3721,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"log.md","schema_version":"2.0","source_sha256":"e5c1f9ccdbaf78258f74b6bb75d23739a559c8c68a68b852427a3c9208550bed","stable_ref":"sg:material/path-sha256-7204c0a4f935b2563fdb9fcf74d71a2e8621bf1b53f9da1b6eab41597a5fbc38","version_id":"sg:material/path-sha256-7204c0a4f935b2563fdb9fcf74d71a2e8621bf1b53f9da1b6eab41597a5fbc38@sha256:e5c1f9ccdbaf78258f74b6bb75d23739a559c8c68a68b852427a3c9208550bed"},{"byte_length":3574,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/reel.md","schema_version":"2.0","source_sha256":"57a66f71da9293c1037d325a3d98d95938b7a7534e42cc8f3d1149ef63ab5480","stable_ref":"sg:material/path-sha256-72616dfa2b53176365ef81dd6954260a8a96051f3c47100505ece70816871c11","version_id":"sg:material/path-sha256-72616dfa2b53176365ef81dd6954260a8a96051f3c47100505ece70816871c11@sha256:57a66f71da9293c1037d325a3d98d95938b7a7534e42cc8f3d1149ef63ab5480"},{"byte_length":3614,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/sticky-footer.md","schema_version":"2.0","source_sha256":"4103c4b74e4b143705a656f11662ec03721b40802c980e4527331f97b09c21df","stable_ref":"sg:material/path-sha256-7412ca94f2f7e6e9b81ec40ccbaee7ccab5a773e48d7fc14055baccd8d059d42","version_id":"sg:material/path-sha256-7412ca94f2f7e6e9b81ec40ccbaee7ccab5a773e48d7fc14055baccd8d059d42@sha256:4103c4b74e4b143705a656f11662ec03721b40802c980e4527331f97b09c21df"},{"byte_length":15945,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"guides/documentation-mode-taxonomy.md","schema_version":"2.0","source_sha256":"1e84f839885501912f47f7141b474e468ad590a27b0d3409bfe872581bccf9c7","stable_ref":"sg:material/path-sha256-78dcee9e03982b489be85a59bb522877c94bb01b2624af09e5ef5e3bc3bbbffc","version_id":"sg:material/path-sha256-78dcee9e03982b489be85a59bb522877c94bb01b2624af09e5ef5e3bc3bbbffc@sha256:1e84f839885501912f47f7141b474e468ad590a27b0d3409bfe872581bccf9c7"},{"byte_length":2791,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/list-detail.md","schema_version":"2.0","source_sha256":"26c00df6db757fa392dd285eb910de9c13eae39c78ab97c44dda55cea9047899","stable_ref":"sg:material/path-sha256-7b47a26ca3030528440849547a9a39dcd489581ebdb0b3c85f3204cf066acaa8","version_id":"sg:material/path-sha256-7b47a26ca3030528440849547a9a39dcd489581ebdb0b3c85f3204cf066acaa8@sha256:26c00df6db757fa392dd285eb910de9c13eae39c78ab97c44dda55cea9047899"},{"byte_length":3687,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/stacking/line-up.md","schema_version":"2.0","source_sha256":"34ccb96fb46cbfe6567ffb74a8f01fd79ac3baf0ea4ed93e54cab83ac45473dc","stable_ref":"sg:material/path-sha256-7c2f9831fd891304724438057614dab34b1fff1da4eb2f0d86803115be5a3ce5","version_id":"sg:material/path-sha256-7c2f9831fd891304724438057614dab34b1fff1da4eb2f0d86803115be5a3ce5@sha256:34ccb96fb46cbfe6567ffb74a8f01fd79ac3baf0ea4ed93e54cab83ac45473dc"},{"byte_length":11419,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/unity/cli-loop.md","schema_version":"2.0","source_sha256":"bfc9596a0b981bbb31470f4c8a87578d401f775fa1f9b4dc6da1e0f967ca3f1b","stable_ref":"sg:material/path-sha256-7c4697a9eca2beda5a21f7edd84648e7e67643b3f67b771434ed123c424a2d1a","version_id":"sg:material/path-sha256-7c4697a9eca2beda5a21f7edd84648e7e67643b3f67b771434ed123c424a2d1a@sha256:bfc9596a0b981bbb31470f4c8a87578d401f775fa1f9b4dc6da1e0f967ca3f1b"},{"byte_length":4740,"domain":"motion","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"motion/review-workflow.md","schema_version":"2.0","source_sha256":"5219296be498f37f9d9b69ba4723f2ce7d12b5d326fec20045b2aedcc6c90746","stable_ref":"sg:material/path-sha256-7df8e54fd5935c4a2a9aace117d43253e7c0fe32448fd31984a531a134192a83","version_id":"sg:material/path-sha256-7df8e54fd5935c4a2a9aace117d43253e7c0fe32448fd31984a531a134192a83@sha256:5219296be498f37f9d9b69ba4723f2ce7d12b5d326fec20045b2aedcc6c90746"},{"byte_length":2625,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/form-flow.md","schema_version":"2.0","source_sha256":"ff6cee7485991ff766a7d3d0780a133da5a636639aa9ff4a43e4d3bb0499a538","stable_ref":"sg:material/path-sha256-7e60233e663192c6172a4cebabf93da3b047c42bbaddee206fa27644d8d821e9","version_id":"sg:material/path-sha256-7e60233e663192c6172a4cebabf93da3b047c42bbaddee206fa27644d8d821e9@sha256:ff6cee7485991ff766a7d3d0780a133da5a636639aa9ff4a43e4d3bb0499a538"},{"byte_length":10156,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"guides/vocabulary.md","schema_version":"2.0","source_sha256":"08eb980bdfecb4b9a9f9026dc06e70634e4f88b48ecfc7e1dfdb7b454ca2085c","stable_ref":"sg:material/path-sha256-7ec7a08ac14b5af0def43c817f1b32765f93312bb997e17663313c0fd4516a1f","version_id":"sg:material/path-sha256-7ec7a08ac14b5af0def43c817f1b32765f93312bb997e17663313c0fd4516a1f@sha256:08eb980bdfecb4b9a9f9026dc06e70634e4f88b48ecfc7e1dfdb7b454ca2085c"},{"byte_length":5787,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"guides/decision-tree.md","schema_version":"2.0","source_sha256":"5811d48b577a0d9472c64b94cb91341f45e5b5408402455f0aa9cd356fa15c5d","stable_ref":"sg:material/path-sha256-7fada8e2c9a6ab17c122f51121605bc9d4c64c9a7ef60d946813129f91474016","version_id":"sg:material/path-sha256-7fada8e2c9a6ab17c122f51121605bc9d4c64c9a7ef60d946813129f91474016@sha256:5811d48b577a0d9472c64b94cb91341f45e5b5408402455f0aa9cd356fa15c5d"},{"byte_length":7930,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"guides/layout-brief.md","schema_version":"2.0","source_sha256":"0e87d9d8f51ab6f3960b8e160abd9663be0d501e801a3184686b27c9a1debbf5","stable_ref":"sg:material/path-sha256-8305d3db8a3a860213c04b8cef5a4ed463a109f558be8df51ff1c5af21d749e1","version_id":"sg:material/path-sha256-8305d3db8a3a860213c04b8cef5a4ed463a109f558be8df51ff1c5af21d749e1@sha256:0e87d9d8f51ab6f3960b8e160abd9663be0d501e801a3184686b27c9a1debbf5"},{"byte_length":8203,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/pattern-contract-audit.md","schema_version":"2.0","source_sha256":"35926d5a3313f1918035ae906844722bbe56c7494eff9e5b22a2306a681893af","stable_ref":"sg:material/path-sha256-871ee653f2589835e85184dba2e5ef403fc064d0d49a2b2b85f0b8996d351fc6","version_id":"sg:material/path-sha256-871ee653f2589835e85184dba2e5ef403fc064d0d49a2b2b85f0b8996d351fc6@sha256:35926d5a3313f1918035ae906844722bbe56c7494eff9e5b22a2306a681893af"},{"byte_length":11836,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"guides/webpage-generation-workflow.md","schema_version":"2.0","source_sha256":"92de1966d23f3d12625f9cc22fb256eb8c4761bd4371a96ba69ca5235a23c7d4","stable_ref":"sg:material/path-sha256-87436c736fec1b7b05f6f0a824b06c852e9295daca92298163e02024fbb0451b","version_id":"sg:material/path-sha256-87436c736fec1b7b05f6f0a824b06c852e9295daca92298163e02024fbb0451b@sha256:92de1966d23f3d12625f9cc22fb256eb8c4761bd4371a96ba69ca5235a23c7d4"},{"byte_length":3615,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/media-fit/frame.md","schema_version":"2.0","source_sha256":"649d3da72d9af6e6be2cdcd63561da9acb5521a0f44e46cc3210f02ece211104","stable_ref":"sg:material/path-sha256-882d5f2d004ba4375887b0489d4c452e3a6b3cfaea23561ba59e4e56821da256","version_id":"sg:material/path-sha256-882d5f2d004ba4375887b0489d4c452e3a6b3cfaea23561ba59e4e56821da256@sha256:649d3da72d9af6e6be2cdcd63561da9acb5521a0f44e46cc3210f02ece211104"},{"byte_length":3419,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/stacking/feed.md","schema_version":"2.0","source_sha256":"7f79317d1cb795bf3c407fabe5b4a894a2645dd4c732856f1bc07b05cb620e53","stable_ref":"sg:material/path-sha256-88b6e0985d823e16fad9888dd2133bb5e3c2a2203e3a1623a705ac883ea4a00c","version_id":"sg:material/path-sha256-88b6e0985d823e16fad9888dd2133bb5e3c2a2203e3a1623a705ac883ea4a00c@sha256:7f79317d1cb795bf3c407fabe5b4a894a2645dd4c732856f1bc07b05cb620e53"},{"byte_length":936,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/index.md","schema_version":"2.0","source_sha256":"973dabb4a682d02c0a60d611ae73c2b531f38fb2a3e3d2682f37a385c3f2f726","stable_ref":"sg:material/path-sha256-8a81d81ebc22075986a7fe5af4720c2779c2a456382fc0a3e74c1bfc8bb0f958","version_id":"sg:material/path-sha256-8a81d81ebc22075986a7fe5af4720c2779c2a456382fc0a3e74c1bfc8bb0f958@sha256:973dabb4a682d02c0a60d611ae73c2b531f38fb2a3e3d2682f37a385c3f2f726"},{"byte_length":3397,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/media-fit/icon-frame.md","schema_version":"2.0","source_sha256":"09f79480d11a25c4ec7a9fbcdda2b62fa89ddf0da7142545841c3648078aa569","stable_ref":"sg:material/path-sha256-9100c52308320464deed2d7e13eb9857e485784f12f2dc1de28e8b73bc8f936b","version_id":"sg:material/path-sha256-9100c52308320464deed2d7e13eb9857e485784f12f2dc1de28e8b73bc8f936b@sha256:09f79480d11a25c4ec7a9fbcdda2b62fa89ddf0da7142545841c3648078aa569"},{"byte_length":6658,"domain":"platform-guides","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"platform-guides/apple-interaction.md","schema_version":"2.0","source_sha256":"e4013b5498a2ff7b0613b9c17a8fd6a31e1cb799c08f062dfbb2bf540e713cea","stable_ref":"sg:material/path-sha256-9247a878dcd0a0977374938c50eeb9a622ad6203847c1169beaf81d0493ebb5b","version_id":"sg:material/path-sha256-9247a878dcd0a0977374938c50eeb9a622ad6203847c1169beaf81d0493ebb5b@sha256:e4013b5498a2ff7b0613b9c17a8fd6a31e1cb799c08f062dfbb2bf540e713cea"},{"byte_length":4774,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/classification.md","schema_version":"2.0","source_sha256":"3ad0db32a74ddfcd4061cd35ee30cda764b9d1074599942001067f7a80b8f623","stable_ref":"sg:material/path-sha256-92725878c1f37c55731de2baf9c14a768fbd24ca839b82830c89f4aed7b66dce","version_id":"sg:material/path-sha256-92725878c1f37c55731de2baf9c14a768fbd24ca839b82830c89f4aed7b66dce@sha256:3ad0db32a74ddfcd4061cd35ee30cda764b9d1074599942001067f7a80b8f623"},{"byte_length":3457,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/wrap-row.md","schema_version":"2.0","source_sha256":"214d9e3d94366841f37f90c4c62096302c36f218843668e72c9a8850f6675920","stable_ref":"sg:material/path-sha256-94d8cf97bb7801865552f7d2b317b556ed6b643d53b73fad134de89186263585","version_id":"sg:material/path-sha256-94d8cf97bb7801865552f7d2b317b556ed6b643d53b73fad134de89186263585@sha256:214d9e3d94366841f37f90c4c62096302c36f218843668e72c9a8850f6675920"},{"byte_length":2502,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/families.md","schema_version":"2.0","source_sha256":"0e80ebefdc5a7c266c46f48342a9c6389eb5390d5f8c0f6f162f852c4b596690","stable_ref":"sg:material/path-sha256-956ab860e593d435b6682540b04365917b3736deb47207b5812065776734de0b","version_id":"sg:material/path-sha256-956ab860e593d435b6682540b04365917b3736deb47207b5812065776734de0b@sha256:0e80ebefdc5a7c266c46f48342a9c6389eb5390d5f8c0f6f162f852c4b596690"},{"byte_length":3678,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/badge-list.md","schema_version":"2.0","source_sha256":"aec85df4d5ddcfc08e9c052c5fdf60c0d4a73dbe8fea5a95b78b90c9871f1984","stable_ref":"sg:material/path-sha256-96fc7d48dad3399ab0cbedfdf8cb508b1732f57dc96cd15911e50a3a1654c9b1","version_id":"sg:material/path-sha256-96fc7d48dad3399ab0cbedfdf8cb508b1732f57dc96cd15911e50a3a1654c9b1@sha256:aec85df4d5ddcfc08e9c052c5fdf60c0d4a73dbe8fea5a95b78b90c9871f1984"},{"byte_length":952,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/visual-qa.md","schema_version":"2.0","source_sha256":"9fdfd9acdcd4fefd4f2d3ef51ba6170e3235d4ae97cc6c739a0f1123e1825f74","stable_ref":"sg:material/path-sha256-970cc2193de22b50bd91099cd6f8e5f52069ccd3360306d17e6eacf4ed1343ae","version_id":"sg:material/path-sha256-970cc2193de22b50bd91099cd6f8e5f52069ccd3360306d17e6eacf4ed1343ae@sha256:9fdfd9acdcd4fefd4f2d3ef51ba6170e3235d4ae97cc6c739a0f1123e1825f74"},{"byte_length":2639,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/recipes/optimistic-list.md","schema_version":"2.0","source_sha256":"87b183e1ec4bc8db889cd450a92b91808e40f5c28c2d0c79ebcc87c7dceb936d","stable_ref":"sg:material/path-sha256-98d2b0f027bfe26245f3effc67ba5400ffa9fe3cba2e3da94b1c83a3380f50da","version_id":"sg:material/path-sha256-98d2b0f027bfe26245f3effc67ba5400ffa9fe3cba2e3da94b1c83a3380f50da@sha256:87b183e1ec4bc8db889cd450a92b91808e40f5c28c2d0c79ebcc87c7dceb936d"},{"byte_length":9489,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/primitive-to-recipe-matrix.md","schema_version":"2.0","source_sha256":"0e8b3b90651c8820a0c0463c32bf410e40abb7503a26e9c90b1fdb456d4ad7b3","stable_ref":"sg:material/path-sha256-99427f2ded107b0d7be95e3a768ac836b917b22c8736fb7f31028b33a333836d","version_id":"sg:material/path-sha256-99427f2ded107b0d7be95e3a768ac836b917b22c8736fb7f31028b33a333836d@sha256:0e8b3b90651c8820a0c0463c32bf410e40abb7503a26e9c90b1fdb456d4ad7b3"},{"byte_length":3743,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/supporting-pane.md","schema_version":"2.0","source_sha256":"bbffaf1bcf0daa4d30f5d269fda79759778b23c2f7c388d95d0ca45e0512c962","stable_ref":"sg:material/path-sha256-9a82e011fc565919a7334610d427c1ec662e2b89034c6da9a2b135dc398444da","version_id":"sg:material/path-sha256-9a82e011fc565919a7334610d427c1ec662e2b89034c6da9a2b135dc398444da@sha256:bbffaf1bcf0daa4d30f5d269fda79759778b23c2f7c388d95d0ca45e0512c962"},{"byte_length":3664,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/panel-layout.md","schema_version":"2.0","source_sha256":"1e373e1e0a03296d3262d2df4caa0a0c907693c6dfdad19d8d608b574e1ae123","stable_ref":"sg:material/path-sha256-9c016feea05fe406dddaf432e9137d8d56c71df33fb77450e538d21c9871e85f","version_id":"sg:material/path-sha256-9c016feea05fe406dddaf432e9137d8d56c71df33fb77450e538d21c9871e85f@sha256:1e373e1e0a03296d3262d2df4caa0a0c907693c6dfdad19d8d608b574e1ae123"},{"byte_length":2378,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/saas-settings.md","schema_version":"2.0","source_sha256":"f66665f62f1ac1242965326e47bd7a021ec9ed812e98155147f82be0bc00c5ad","stable_ref":"sg:material/path-sha256-9dfe65b7582876aed144b8b79ad8ffbde14182c8b9c082c6916057782509cd0e","version_id":"sg:material/path-sha256-9dfe65b7582876aed144b8b79ad8ffbde14182c8b9c082c6916057782509cd0e@sha256:f66665f62f1ac1242965326e47bd7a021ec9ed812e98155147f82be0bc00c5ad"},{"byte_length":2169,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"recipes/article-page.md","schema_version":"2.0","source_sha256":"e68b1049e6e2e0dd08e87c1b5dd8ef36f42350c161aa6d056f5ddcdbb091d28d","stable_ref":"sg:material/path-sha256-a0c4596e930ce74c5bf8f890a6e037abbd07463c1e1aa0b35c40a0c2009ba011","version_id":"sg:material/path-sha256-a0c4596e930ce74c5bf8f890a6e037abbd07463c1e1aa0b35c40a0c2009ba011@sha256:e68b1049e6e2e0dd08e87c1b5dd8ef36f42350c161aa6d056f5ddcdbb091d28d"},{"byte_length":2541,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/recipes/pattern-to-recipe-matrix.md","schema_version":"2.0","source_sha256":"19995f873ee20fa1f2185502494a129329fda1f8cc32863dc719a3895bc6dc4a","stable_ref":"sg:material/path-sha256-a3a890b0c501a37a0296df5423131ae59ed25e43278b78f90d1d0efce8647901","version_id":"sg:material/path-sha256-a3a890b0c501a37a0296df5423131ae59ed25e43278b78f90d1d0efce8647901@sha256:19995f873ee20fa1f2185502494a129329fda1f8cc32863dc719a3895bc6dc4a"},{"byte_length":3495,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"index.md","schema_version":"2.0","source_sha256":"01922856e17e25c49e3c95abc2eb99c460eaf1d1aab3a29ffd560bc109962496","stable_ref":"sg:material/path-sha256-a48746cae70c44e7e105b594aad338ddd105c93c1cb445a40ba6aab785ba69e5","version_id":"sg:material/path-sha256-a48746cae70c44e7e105b594aad338ddd105c93c1cb445a40ba6aab785ba69e5@sha256:01922856e17e25c49e3c95abc2eb99c460eaf1d1aab3a29ffd560bc109962496"},{"byte_length":2602,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/recipes/search-and-filter.md","schema_version":"2.0","source_sha256":"8f80de7cddf65a8e028f56661ba60d4f3e769ff555f6a86c7490da2f4dee18ba","stable_ref":"sg:material/path-sha256-a4f1ba92a5c38284647842f305ca8910946f8730ec844153e5990a31f50a292d","version_id":"sg:material/path-sha256-a4f1ba92a5c38284647842f305ca8910946f8730ec844153e5990a31f50a292d@sha256:8f80de7cddf65a8e028f56661ba60d4f3e769ff555f6a86c7490da2f4dee18ba"},{"byte_length":10562,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/unity/repository-map.md","schema_version":"2.0","source_sha256":"aa6535fe435bc831a819f9f82ed29ad593ec133cc4f84be231355879ce145f9e","stable_ref":"sg:material/path-sha256-a4f5bfbc74a2b756b0661004893a21d81b1007879d2e2c4aaa4b73f1b083d434","version_id":"sg:material/path-sha256-a4f5bfbc74a2b756b0661004893a21d81b1007879d2e2c4aaa4b73f1b083d434@sha256:aa6535fe435bc831a819f9f82ed29ad593ec133cc4f84be231355879ce145f9e"},{"byte_length":9945,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"AGENTS.md","schema_version":"2.0","source_sha256":"543cc617e5881d25f7b7e23156509eb4c6ee55dea7a8cf3da9da00ed1540bacb","stable_ref":"sg:material/path-sha256-a54ff182c7e8acf56acfd6e4b9c3ff41e2c41a31c9b211b2deb9df75d9a478f9","version_id":"sg:material/path-sha256-a54ff182c7e8acf56acfd6e4b9c3ff41e2c41a31c9b211b2deb9df75d9a478f9@sha256:543cc617e5881d25f7b7e23156509eb4c6ee55dea7a8cf3da9da00ed1540bacb"},{"byte_length":3493,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/card-grid.md","schema_version":"2.0","source_sha256":"e2489c93d8f312b0104e14cd54d92940f2b094e7c7a1310b6be4e0653b2729a4","stable_ref":"sg:material/path-sha256-a5e3ff6fe0948ebbaf30def7866421563073877df12336c5f66eba3d2d6667a5","version_id":"sg:material/path-sha256-a5e3ff6fe0948ebbaf30def7866421563073877df12336c5f66eba3d2d6667a5@sha256:e2489c93d8f312b0104e14cd54d92940f2b094e7c7a1310b6be4e0653b2729a4"},{"byte_length":2514,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/guides/state-brief.md","schema_version":"2.0","source_sha256":"5f3ebc17f0ebee27de54d9d234ca8ce860c5304bb54a7aa7004ac1b6e15e2dfd","stable_ref":"sg:material/path-sha256-a6b24c2aab3d6eb4a007e35b0ef6e7f4bf2e52dd72643d99cdc163eeec302cc0","version_id":"sg:material/path-sha256-a6b24c2aab3d6eb4a007e35b0ef6e7f4bf2e52dd72643d99cdc163eeec302cc0@sha256:5f3ebc17f0ebee27de54d9d234ca8ce860c5304bb54a7aa7004ac1b6e15e2dfd"},{"byte_length":1194,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/index.md","schema_version":"2.0","source_sha256":"c52bbc8df395ff56e4cad12ced76ba5ee55f4a95c49efaf53825d13c32feab49","stable_ref":"sg:material/path-sha256-a7987410bcf408a5b4edc0ae7719d3f57f1f04a4efaaa7a756c870677307fd85","version_id":"sg:material/path-sha256-a7987410bcf408a5b4edc0ae7719d3f57f1f04a4efaaa7a756c870677307fd85@sha256:c52bbc8df395ff56e4cad12ced76ba5ee55f4a95c49efaf53825d13c32feab49"},{"byte_length":886,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/index.md","schema_version":"2.0","source_sha256":"8687d8285459805273e27f5ca9b5fcd10fbd0899786443445666155630bbf4bb","stable_ref":"sg:material/path-sha256-aa41c9d5c021c9d6a6e06df6c53297c0d271f71b3a299303d8a330644f6998f1","version_id":"sg:material/path-sha256-aa41c9d5c021c9d6a6e06df6c53297c0d271f71b3a299303d8a330644f6998f1@sha256:8687d8285459805273e27f5ca9b5fcd10fbd0899786443445666155630bbf4bb"},{"byte_length":2527,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/claim-records/stylegallery-multidomain-scope.md","schema_version":"2.0","source_sha256":"21d15e35fc1f027ae5abe7ff943ab1bf17c126e77b704805ac85bb38b4985e5f","stable_ref":"sg:material/path-sha256-abaaac8db5d4ad334a6b84253118bdd282aba92b9a55daf5710b2b6d6d14c399","version_id":"sg:material/path-sha256-abaaac8db5d4ad334a6b84253118bdd282aba92b9a55daf5710b2b6d6d14c399@sha256:21d15e35fc1f027ae5abe7ff943ab1bf17c126e77b704805ac85bb38b4985e5f"},{"byte_length":3127,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/guides/decision-tree.md","schema_version":"2.0","source_sha256":"b146e2868297c9b8b827c9a68a4b58707f44e1dc70a2ca13a526e7b93a46f787","stable_ref":"sg:material/path-sha256-ad966304fd59d0c3225a1dfddae6225532318235e209a650811d1cbb49f37460","version_id":"sg:material/path-sha256-ad966304fd59d0c3225a1dfddae6225532318235e209a650811d1cbb49f37460@sha256:b146e2868297c9b8b827c9a68a4b58707f44e1dc70a2ca13a526e7b93a46f787"},{"byte_length":18354,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"README.md","schema_version":"2.0","source_sha256":"ed6aca1470d533bf88b3f1ffbd0d324cabdfbb6786c6cb913cac076c9d426edf","stable_ref":"sg:material/path-sha256-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5","version_id":"sg:material/path-sha256-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5@sha256:ed6aca1470d533bf88b3f1ffbd0d324cabdfbb6786c6cb913cac076c9d426edf"},{"byte_length":2894,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/patterns/ownership/local-draft-state.md","schema_version":"2.0","source_sha256":"9c1a5824319b2b62b8a0eb01cca8875dc2d77bf9f21bfed943d881b70e96500c","stable_ref":"sg:material/path-sha256-b3e1d78159b95f50624b1dd573c6aac392bfe62622b30b781ab77b54e8a6bbdc","version_id":"sg:material/path-sha256-b3e1d78159b95f50624b1dd573c6aac392bfe62622b30b781ab77b54e8a6bbdc@sha256:9c1a5824319b2b62b8a0eb01cca8875dc2d77bf9f21bfed943d881b70e96500c"},{"byte_length":30210,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"GOVERNANCE.md","schema_version":"2.0","source_sha256":"7927039cd3e8cab462ce72f5989e9ec52c96414c9e662d8a9df4f7bddcd516f9","stable_ref":"sg:material/path-sha256-b60c6a93e9f74ee52e71bf33781c2870b8395c8c5a34f00f61305343cb8d8447","version_id":"sg:material/path-sha256-b60c6a93e9f74ee52e71bf33781c2870b8395c8c5a34f00f61305343cb8d8447@sha256:7927039cd3e8cab462ce72f5989e9ec52c96414c9e662d8a9df4f7bddcd516f9"},{"byte_length":1474,"domain":"design-engineering","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"design-engineering/index.md","schema_version":"2.0","source_sha256":"5ce4bd76f73388cdc252b28ee19fd7f41445064ad1278fd24591226aa94a6fac","stable_ref":"sg:material/path-sha256-b6b2ce37f6c04566c4dc6a18252e1d89fc387c7e79f4463406deff3e8b54a81f","version_id":"sg:material/path-sha256-b6b2ce37f6c04566c4dc6a18252e1d89fc387c7e79f4463406deff3e8b54a81f@sha256:5ce4bd76f73388cdc252b28ee19fd7f41445064ad1278fd24591226aa94a6fac"},{"byte_length":2699,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/accessibility-evidence.md","schema_version":"2.0","source_sha256":"fa07b1354ee7973317512b2f84d37d1f3965465962df74e9e1ee21a47f66ae4e","stable_ref":"sg:material/path-sha256-b7de05a789ffd0312cd9e9b1828ce113b1fcc3dcf5a87b73295a09e1004bfbe3","version_id":"sg:material/path-sha256-b7de05a789ffd0312cd9e9b1828ce113b1fcc3dcf5a87b73295a09e1004bfbe3@sha256:fa07b1354ee7973317512b2f84d37d1f3965465962df74e9e1ee21a47f66ae4e"},{"byte_length":5174,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/index.md","schema_version":"2.0","source_sha256":"3f7568f037452fffd904a7bfca07d90c9be1a8c240b60a93bbde622227f75d8d","stable_ref":"sg:material/path-sha256-bac9cf1370a08002c424b50dfe2975bf65b0701e41d6788711f028cb513d1a08","version_id":"sg:material/path-sha256-bac9cf1370a08002c424b50dfe2975bf65b0701e41d6788711f028cb513d1a08@sha256:3f7568f037452fffd904a7bfca07d90c9be1a8c240b60a93bbde622227f75d8d"},{"byte_length":6672,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"CATALOG.md","schema_version":"2.0","source_sha256":"6902e0b03d958816abc142a950cedb51a9a623c1acc5b1a7a94cc4f38a70eb8a","stable_ref":"sg:material/path-sha256-bb476268db5ed6523e97a56f61d3ec99765899bf3269949ee1aac390f48f1b99","version_id":"sg:material/path-sha256-bb476268db5ed6523e97a56f61d3ec99765899bf3269949ee1aac390f48f1b99@sha256:6902e0b03d958816abc142a950cedb51a9a623c1acc5b1a7a94cc4f38a70eb8a"},{"byte_length":3837,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/split-sidebar/sidebar.md","schema_version":"2.0","source_sha256":"75edbf6107702e2c44f8ebdd724ec9b40ec8362729441c0ef1e073444c9ddb8e","stable_ref":"sg:material/path-sha256-bd2be8d5407fa6cf6a9bfaacf5d35e3b08eadea21e394cb0951a4e22290720a2","version_id":"sg:material/path-sha256-bd2be8d5407fa6cf6a9bfaacf5d35e3b08eadea21e394cb0951a4e22290720a2@sha256:75edbf6107702e2c44f8ebdd724ec9b40ec8362729441c0ef1e073444c9ddb8e"},{"byte_length":2932,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/consumer-migration-evidence.md","schema_version":"2.0","source_sha256":"71ad54bf72f5c968b8a0c5bd02b988660c6f441dbda13f9142d57842be498e6a","stable_ref":"sg:material/path-sha256-bd5e2b1ee33580f11a3a67b5306df57a54a539d5e944331511eb72fa9fe4e8f9","version_id":"sg:material/path-sha256-bd5e2b1ee33580f11a3a67b5306df57a54a539d5e944331511eb72fa9fe4e8f9@sha256:71ad54bf72f5c968b8a0c5bd02b988660c6f441dbda13f9142d57842be498e6a"},{"byte_length":3601,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/cover.md","schema_version":"2.0","source_sha256":"c78423cba85c44acfe985b44f7da72dfa52fdb20de2c87beb9d085062b451b6f","stable_ref":"sg:material/path-sha256-bf39299bae7cfb1c999e3d86ab9106128c573c2a83c8f2f08f14572a94f0c5a7","version_id":"sg:material/path-sha256-bf39299bae7cfb1c999e3d86ab9106128c573c2a83c8f2f08f14572a94f0c5a7@sha256:c78423cba85c44acfe985b44f7da72dfa52fdb20de2c87beb9d085062b451b6f"},{"byte_length":3660,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/twelve-span-grid.md","schema_version":"2.0","source_sha256":"7747b78dbe22604d9d4944f32ad89b8337961f76d2a8f2775c9efb7fe67ba879","stable_ref":"sg:material/path-sha256-c0d7d6f086cfa95c3163b3cf7692cee97e3e16dba0de964706bee174841d2094","version_id":"sg:material/path-sha256-c0d7d6f086cfa95c3163b3cf7692cee97e3e16dba0de964706bee174841d2094@sha256:7747b78dbe22604d9d4944f32ad89b8337961f76d2a8f2775c9efb7fe67ba879"},{"byte_length":3405,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/stacking/step-nav.md","schema_version":"2.0","source_sha256":"1b74a5b72ab2352f35f40247da26ab0eb3cecdc8a75754a071cacf263537a438","stable_ref":"sg:material/path-sha256-c1d82e696f9b42772a53643bf7ac7fbddc964e528aa09fb7f155b442660b6262","version_id":"sg:material/path-sha256-c1d82e696f9b42772a53643bf7ac7fbddc964e528aa09fb7f155b442660b6262@sha256:1b74a5b72ab2352f35f40247da26ab0eb3cecdc8a75754a071cacf263537a438"},{"byte_length":18956,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/executable-evidence.md","schema_version":"2.0","source_sha256":"fb441412dabc0b57aeac8355f92321a9873aa67612e489e3137953d7680312b1","stable_ref":"sg:material/path-sha256-c609296f2ae6b1d6234dbb3497f9d6a45208ba0470a3d8b4a861be79bae797c8","version_id":"sg:material/path-sha256-c609296f2ae6b1d6234dbb3497f9d6a45208ba0470a3d8b4a861be79bae797c8@sha256:fb441412dabc0b57aeac8355f92321a9873aa67612e489e3137953d7680312b1"},{"byte_length":8205,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"DOMAINS.md","schema_version":"2.0","source_sha256":"652ebe5d6acc8bfcdd1f4a3509e111f7ddf16cf68f934ab5737933e448bf264b","stable_ref":"sg:material/path-sha256-d190306dc8097b7ef0ec2a57ed020076a9f325b48f083aba3f62de5e886af5ab","version_id":"sg:material/path-sha256-d190306dc8097b7ef0ec2a57ed020076a9f325b48f083aba3f62de5e886af5ab@sha256:652ebe5d6acc8bfcdd1f4a3509e111f7ddf16cf68f934ab5737933e448bf264b"},{"byte_length":910,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/index.md","schema_version":"2.0","source_sha256":"fecba190f4bcb2f3e7fbce19c02181fae7613fc51da6b20539a17ef5d37e78f2","stable_ref":"sg:material/path-sha256-d312b8ccb45a40e38e38e6d6d1e95ee074d50714cdcf872de9afd4e4254a4301","version_id":"sg:material/path-sha256-d312b8ccb45a40e38e38e6d6d1e95ee074d50714cdcf872de9afd4e4254a4301@sha256:fecba190f4bcb2f3e7fbce19c02181fae7613fc51da6b20539a17ef5d37e78f2"},{"byte_length":3707,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/in-line-grouping/split-nav.md","schema_version":"2.0","source_sha256":"b797721ee74570f537fd79fbdec6077048764723f176c995341f5b8b8b1de432","stable_ref":"sg:material/path-sha256-d657fc87c00278cd49d87fb6a43b8596834943cf85f71d7cc873c102e56a5587","version_id":"sg:material/path-sha256-d657fc87c00278cd49d87fb6a43b8596834943cf85f71d7cc873c102e56a5587@sha256:b797721ee74570f537fd79fbdec6077048764723f176c995341f5b8b8b1de432"},{"byte_length":2821,"domain":"game-ui","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"game-ui/index.md","schema_version":"2.0","source_sha256":"9402e16d92bf5f17df39d7ccfd2eb4328113e02a155abd02524a2e5482fd3d68","stable_ref":"sg:material/path-sha256-db7c4f17ca762b1169e43401710a0d95c03161ec7e38143c65fd8e888236f1e6","version_id":"sg:material/path-sha256-db7c4f17ca762b1169e43401710a0d95c03161ec7e38143c65fd8e888236f1e6@sha256:9402e16d92bf5f17df39d7ccfd2eb4328113e02a155abd02524a2e5482fd3d68"},{"byte_length":3944,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/consumer-migration.md","schema_version":"2.0","source_sha256":"a9e61500abbce740ca43f941aeb15a7bfebad46585584e0a45da59ce94334f29","stable_ref":"sg:material/path-sha256-ddc1d0e9544d4a08bb43703f230dcdfea087f2faf90d9a49e4aa22695b07178a","version_id":"sg:material/path-sha256-ddc1d0e9544d4a08bb43703f230dcdfea087f2faf90d9a49e4aa22695b07178a@sha256:a9e61500abbce740ca43f941aeb15a7bfebad46585584e0a45da59ce94334f29"},{"byte_length":2741,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/principles.md","schema_version":"2.0","source_sha256":"1834b852ae156c7362d4f9b223b4d72dc6b708a1f2a2964022955940a9c1fdc4","stable_ref":"sg:material/path-sha256-deba5ef88dc8bdc60813a398130b8a3ca3a8d01124f45823f5834ebda967996c","version_id":"sg:material/path-sha256-deba5ef88dc8bdc60813a398130b8a3ca3a8d01124f45823f5834ebda967996c@sha256:1834b852ae156c7362d4f9b223b4d72dc6b708a1f2a2964022955940a9c1fdc4"},{"byte_length":3666,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"consumer-reference/index.md","schema_version":"2.0","source_sha256":"918fdefd00fe66fb645067cf73f958f08c9f5bd787e7cfcf970fc1932c7c62fd","stable_ref":"sg:material/path-sha256-df7a6343d7be1e9be37c6f618a7e72b0ac51be6143f64f419b4520e5f37c2b6b","version_id":"sg:material/path-sha256-df7a6343d7be1e9be37c6f618a7e72b0ac51be6143f64f419b4520e5f37c2b6b@sha256:918fdefd00fe66fb645067cf73f958f08c9f5bd787e7cfcf970fc1932c7c62fd"},{"byte_length":338,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/centering/index.md","schema_version":"2.0","source_sha256":"b7125eb4c4d705a1bb2d57ac7e9d4cf140627473aac687331573bf30b0decd30","stable_ref":"sg:material/path-sha256-e1319590d4485778ddb92cc3c1f781b4f7e06d934d5849336f96588ee3592aa8","version_id":"sg:material/path-sha256-e1319590d4485778ddb92cc3c1f781b4f7e06d934d5849336f96588ee3592aa8@sha256:b7125eb4c4d705a1bb2d57ac7e9d4cf140627473aac687331573bf30b0decd30"},{"byte_length":3536,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/containment/content-limiter.md","schema_version":"2.0","source_sha256":"505df6aac4ab3b5a9041cedaa04e74c2253ce2f8b9a12abf3d8835d2a9ce169c","stable_ref":"sg:material/path-sha256-e1c9957e26f0e3ee1235a070fbe69d31ed5974bce8c4fe14c63537909991a750","version_id":"sg:material/path-sha256-e1c9957e26f0e3ee1235a070fbe69d31ed5974bce8c4fe14c63537909991a750@sha256:505df6aac4ab3b5a9041cedaa04e74c2253ce2f8b9a12abf3d8835d2a9ce169c"},{"byte_length":3595,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/grid-repetition/masonry-approx.md","schema_version":"2.0","source_sha256":"a176ffb2966ea5ed8b3ad22d013ed2fdd82e54a904be057a9e391087d4ad6654","stable_ref":"sg:material/path-sha256-e277a76f0335dd426d8b64001be63fd56ab91a03c4ade0526ea10c4631251abb","version_id":"sg:material/path-sha256-e277a76f0335dd426d8b64001be63fd56ab91a03c4ade0526ea10c4631251abb@sha256:a176ffb2966ea5ed8b3ad22d013ed2fdd82e54a904be057a9e391087d4ad6654"},{"byte_length":8104,"domain":"design-engineering","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"design-engineering/consumer-migration-readiness.md","schema_version":"2.0","source_sha256":"86dc5148b052b372b0132d159d2c3ab819a859b5f210e3a1a994c29c7478b276","stable_ref":"sg:material/path-sha256-e2d4ce07445db974a7f32e5eec810897cfb565df619df52961f3eefa5a9c3fd4","version_id":"sg:material/path-sha256-e2d4ce07445db974a7f32e5eec810897cfb565df619df52961f3eefa5a9c3fd4@sha256:86dc5148b052b372b0132d159d2c3ab819a859b5f210e3a1a994c29c7478b276"},{"byte_length":1081,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/hci-evaluation.md","schema_version":"2.0","source_sha256":"9deeeeb4c0fc9b24d79e68b6e38236f2993da2544ecc0d130256136d2b062aae","stable_ref":"sg:material/path-sha256-e5f16e01f3fb13f94a214c8a9edf9b5c31c4ebca963802dfc624e8863e98f8da","version_id":"sg:material/path-sha256-e5f16e01f3fb13f94a214c8a9edf9b5c31c4ebca963802dfc624e8863e98f8da@sha256:9deeeeb4c0fc9b24d79e68b6e38236f2993da2544ecc0d130256136d2b062aae"},{"byte_length":5577,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/index.md","schema_version":"2.0","source_sha256":"5799bfe69687a12936b03c3cd47cccf3d18298355fe9b4c40c80a58d238425e4","stable_ref":"sg:material/path-sha256-e678b2e7915fc4abf6a019c86f8a7d74b8939a60220cb08a810900e1b5cbc2bc","version_id":"sg:material/path-sha256-e678b2e7915fc4abf6a019c86f8a7d74b8939a60220cb08a810900e1b5cbc2bc@sha256:5799bfe69687a12936b03c3cd47cccf3d18298355fe9b4c40c80a58d238425e4"},{"byte_length":2742,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/claims.md","schema_version":"2.0","source_sha256":"8f28f2a42891946bf2929fb2bf5b122bfe63edb8b47a0b926183760d2bc9b15c","stable_ref":"sg:material/path-sha256-ec031d838419829b80465b2f31de260e70117bdd283988e0653441d439a65114","version_id":"sg:material/path-sha256-ec031d838419829b80465b2f31de260e70117bdd283988e0653441d439a65114@sha256:8f28f2a42891946bf2929fb2bf5b122bfe63edb8b47a0b926183760d2bc9b15c"},{"byte_length":2727,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/evidence/accessibility.md","schema_version":"2.0","source_sha256":"cc5a68a5e1721914fd00537b66aecb4e58c92c89962cc5fabd5ed0fc39930e95","stable_ref":"sg:material/path-sha256-eeea8e16127c63b10e90f626430df368a97fac8108b419c1cba89805b6014ce7","version_id":"sg:material/path-sha256-eeea8e16127c63b10e90f626430df368a97fac8108b419c1cba89805b6014ce7@sha256:cc5a68a5e1721914fd00537b66aecb4e58c92c89962cc5fabd5ed0fc39930e95"},{"byte_length":2762,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/guides/planning-workflow.md","schema_version":"2.0","source_sha256":"312da7cf78daf5e004c80babb4355a0d3cf29d10ca32aac9b79bcc1bbbb089b1","stable_ref":"sg:material/path-sha256-ef8c5900a85164a9356cb48e2b0dfdf9171d426f0dcd4adf1e0ce36b33127eae","version_id":"sg:material/path-sha256-ef8c5900a85164a9356cb48e2b0dfdf9171d426f0dcd4adf1e0ce36b33127eae@sha256:312da7cf78daf5e004c80babb4355a0d3cf29d10ca32aac9b79bcc1bbbb089b1"},{"byte_length":6696,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"layout/index.md","schema_version":"2.0","source_sha256":"03bba4cd15b3f507ae44094c472c8839e4b1f875ded63d9f13ec868ee8e184b2","stable_ref":"sg:material/path-sha256-f05a4c57bb475ff014a22abaa9120b04f05bc02d8bbe11f57677bd7662276f54","version_id":"sg:material/path-sha256-f05a4c57bb475ff014a22abaa9120b04f05bc02d8bbe11f57677bd7662276f54@sha256:03bba4cd15b3f507ae44094c472c8839e4b1f875ded63d9f13ec868ee8e184b2"},{"byte_length":3844,"domain":"layout","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"GUIDE.md","schema_version":"2.0","source_sha256":"f105ff6ed3c6923ea43dacc4c40632affee4874e086a333b9ce3fa2a786234da","stable_ref":"sg:material/path-sha256-f0d91300831f8bc350b2883e8adf82bdbcb79f482585168420831991e320ade7","version_id":"sg:material/path-sha256-f0d91300831f8bc350b2883e8adf82bdbcb79f482585168420831991e320ade7@sha256:f105ff6ed3c6923ea43dacc4c40632affee4874e086a333b9ce3fa2a786234da"},{"byte_length":1051,"domain":"motion","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"motion/index.md","schema_version":"2.0","source_sha256":"936722e26c4157e4408bdf61ad13778fc7500885f177967348abbe6c17a77da3","stable_ref":"sg:material/path-sha256-f56daa946060f9e1f75d42246e0fa7a288093bf6d902cc9705a2c5b13c65310f","version_id":"sg:material/path-sha256-f56daa946060f9e1f75d42246e0fa7a288093bf6d902cc9705a2c5b13c65310f@sha256:936722e26c4157e4408bdf61ad13778fc7500885f177967348abbe6c17a77da3"},{"byte_length":1748,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/layout.md","schema_version":"2.0","source_sha256":"e7306ec2101bcbc1f27153160796ef56ba7846d6c7e5219d92e56b77e0703882","stable_ref":"sg:material/path-sha256-f62872ebce1ea7ffc61cd5522572c6d0f6aecd782c9e30df376bdcd96c7e73d3","version_id":"sg:material/path-sha256-f62872ebce1ea7ffc61cd5522572c6d0f6aecd782c9e30df376bdcd96c7e73d3@sha256:e7306ec2101bcbc1f27153160796ef56ba7846d6c7e5219d92e56b77e0703882"},{"byte_length":347,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/media-fit/index.md","schema_version":"2.0","source_sha256":"24fa906c939cad71b0f175aab12ec75a16718c66446a31bedfcd3d1d46a67ae6","stable_ref":"sg:material/path-sha256-f77cbae09754bece5a3217dbf7cf766189bb5302d6296fab69bd6f5b3d6e495e","version_id":"sg:material/path-sha256-f77cbae09754bece5a3217dbf7cf766189bb5302d6296fab69bd6f5b3d6e495e@sha256:24fa906c939cad71b0f175aab12ec75a16718c66446a31bedfcd3d1d46a67ae6"},{"byte_length":1550,"domain":"shared","lifecycle":"stable","media_type":"text/markdown","record_kind":"material","repository_path":"quality/gates/rationale.md","schema_version":"2.0","source_sha256":"875771978927372959dea499fba00bf1fd0d0d2426d35601aa3e418698ccd1ab","stable_ref":"sg:material/path-sha256-f797bc85a767e4a6ea1339cf7cc91d2504c722f3a02614d6174e59978db906a6","version_id":"sg:material/path-sha256-f797bc85a767e4a6ea1339cf7cc91d2504c722f3a02614d6174e59978db906a6@sha256:875771978927372959dea499fba00bf1fd0d0d2426d35601aa3e418698ccd1ab"},{"byte_length":4183,"domain":"layout","lifecycle":"generated","media_type":"text/markdown","record_kind":"material","repository_path":"patterns/viewport-shell/holy-grail.md","schema_version":"2.0","source_sha256":"b5b1335b55674e703636d1d205b80f8da8e99768ed7de9505f99afe233449031","stable_ref":"sg:material/path-sha256-f968729fb5885c124f8e1cab2c273f7e3b6fefd858be7f71d1b3958b48f4f2a9","version_id":"sg:material/path-sha256-f968729fb5885c124f8e1cab2c273f7e3b6fefd858be7f71d1b3958b48f4f2a9@sha256:b5b1335b55674e703636d1d205b80f8da8e99768ed7de9505f99afe233449031"},{"byte_length":2839,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/catalog.md","schema_version":"2.0","source_sha256":"912ff4b75d9eee707f4da949bec6055ab8f4d24389910c64e6faed33e80fa245","stable_ref":"sg:material/path-sha256-f989dd387dbc4dfe8ea4d4ace7848502eed306bc24a5bdf1958bb38c7ff4fbfb","version_id":"sg:material/path-sha256-f989dd387dbc4dfe8ea4d4ace7848502eed306bc24a5bdf1958bb38c7ff4fbfb@sha256:912ff4b75d9eee707f4da949bec6055ab8f4d24389910c64e6faed33e80fa245"},{"byte_length":1722,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/patterns/index.md","schema_version":"2.0","source_sha256":"bdeaff82cfff68a25b366ae04cda7deef4e566b3da9fd7c12d53f5d4e150ab01","stable_ref":"sg:material/path-sha256-fbb716f7bc58489e14404bb94567b5f6fcb38cbef8c122cc538a3239d463506c","version_id":"sg:material/path-sha256-fbb716f7bc58489e14404bb94567b5f6fcb38cbef8c122cc538a3239d463506c@sha256:bdeaff82cfff68a25b366ae04cda7deef4e566b3da9fd7c12d53f5d4e150ab01"},{"byte_length":2502,"domain":"state-management","lifecycle":"experimental","media_type":"text/markdown","record_kind":"material","repository_path":"state-management/recipes/editable-form.md","schema_version":"2.0","source_sha256":"c167c191a04873bae30a133a64349e9adf073534b34a6261ad8c65cc75a07518","stable_ref":"sg:material/path-sha256-ff2c7a914f8a4af9de68c74a3e6e8a420c60e8838d70950637a04522c7f79b78","version_id":"sg:material/path-sha256-ff2c7a914f8a4af9de68c74a3e6e8a420c60e8838d70950637a04522c7f79b78@sha256:c167c191a04873bae30a133a64349e9adf073534b34a6261ad8c65cc75a07518"}],"record_kind":"material_manifest","schema_version":"2.0","stable_ref":"sg:manifest/material-admission-v2","version_id":"sg:manifest/material-admission-v2@sha256:a6b41dce853f31a8262ce29674aa571cca30358b1ca72fce34b8c63b3b7f7f30"}
\ No newline at end of file
diff --git a/consumer-reference/agent-native/v2/schema/admission-policy.schema.json b/consumer-reference/agent-native/v2/schema/admission-policy.schema.json
index 43915a1..83ee16f 100644
--- a/consumer-reference/agent-native/v2/schema/admission-policy.schema.json
+++ b/consumer-reference/agent-native/v2/schema/admission-policy.schema.json
@@ -13,15 +13,15 @@
"media_type": { "const": "text/markdown" },
"allowed_materials": {
"type": "array",
- "minItems": 126,
- "maxItems": 126,
+ "minItems": 144,
+ "maxItems": 144,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["repository_path", "domain", "lifecycle"],
"properties": {
"repository_path": { "type": "string", "pattern": "^(?!/)(?!.*(?:^|/)\\.{1,2}(?:/|$))[A-Za-z0-9._ -]+(?:/[A-Za-z0-9._ -]+)*\\.md$" },
- "domain": { "enum": ["layout", "motion", "design-engineering", "game-ui", "platform-guides", "shared"] },
+ "domain": { "enum": ["layout", "motion", "design-engineering", "game-ui", "platform-guides", "state-management", "shared"] },
"lifecycle": { "enum": ["draft", "stable", "deprecated", "experimental", "generated"] }
}
}
diff --git a/consumer-reference/agent-native/v2/schema/material-record.schema.json b/consumer-reference/agent-native/v2/schema/material-record.schema.json
index 365f566..579a85a 100644
--- a/consumer-reference/agent-native/v2/schema/material-record.schema.json
+++ b/consumer-reference/agent-native/v2/schema/material-record.schema.json
@@ -15,6 +15,6 @@
"source_sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
"byte_length": { "type": "integer", "minimum": 0 },
"lifecycle": { "enum": ["draft", "stable", "deprecated", "experimental", "generated"] },
- "domain": { "enum": ["layout", "motion", "design-engineering", "game-ui", "platform-guides", "shared"] }
+ "domain": { "enum": ["layout", "motion", "design-engineering", "game-ui", "platform-guides", "state-management", "shared"] }
}
}
diff --git a/consumer-reference/index.md b/consumer-reference/index.md
index 7aafcbc..38e23a4 100644
--- a/consumer-reference/index.md
+++ b/consumer-reference/index.md
@@ -2,7 +2,7 @@
Primary role: shared non-domain infrastructure index.
-`consumer-reference/` is shared infrastructure for schema, provenance, routing, and evidence metadata outside the five-domain contract. It owns no profile values, visual defaults, component implementation, state behavior, product CSS, or brand authority.
+`consumer-reference/` is shared infrastructure for schema, provenance, routing, and evidence metadata outside the six-domain contract. It owns no profile values, visual defaults, component implementation, application-state behavior, product CSS, or brand authority.
## Scope Boundary
diff --git a/consumer-reference/policies/lifecycle-a2a-extension.json b/consumer-reference/policies/lifecycle-a2a-extension.json
index c2e334a..bce7874 100644
--- a/consumer-reference/policies/lifecycle-a2a-extension.json
+++ b/consumer-reference/policies/lifecycle-a2a-extension.json
@@ -94,8 +94,8 @@
"scripts/test-lifecycle-disposition.mjs",
"scripts/validate-lifecycle-disposition.mjs"
],
- "scanned_file_count": 404,
- "scanned_paths_content_id": "sha256:f703200abad74add6fa9be06d1a6cc767726113cdd5ac4b92e6dadc9c354cee0"
+ "scanned_file_count": 422,
+ "scanned_paths_content_id": "sha256:f6456877c84e3e36fafa524bf6cc53639ee1fd1ca5816e4e039bb04f0278d1f8"
},
"implementation": {
"path": "scripts/agent-native/v2/extensions/a2a-projection.mjs",
@@ -145,10 +145,10 @@
"role": "repository_reference",
"lines": {
"start": 1,
- "end": 253
+ "end": 271
},
- "file_sha256": "55a7787aa01b8d954782a24efd1df197231c67b776312fde861046aedafa9bca",
- "content_id": "sha256:55a7787aa01b8d954782a24efd1df197231c67b776312fde861046aedafa9bca",
+ "file_sha256": "68a1b7786c82472ab9372a69527637e54db3eef7890884b414d15c3d8ae80b2d",
+ "content_id": "sha256:68a1b7786c82472ab9372a69527637e54db3eef7890884b414d15c3d8ae80b2d",
"reference_lines": [
170,
186
@@ -281,8 +281,8 @@
"start": 1,
"end": 209
},
- "file_sha256": "897b2d4ea14dc8ab3b06b5a0a2bbf4aa22f3e9e33b2602bd82ca46ea5405033c",
- "content_id": "sha256:897b2d4ea14dc8ab3b06b5a0a2bbf4aa22f3e9e33b2602bd82ca46ea5405033c",
+ "file_sha256": "be277c1a3ab4fe890ae8e16e0a3bfc4e940bf0ebed750b1977c27d2b0170e73e",
+ "content_id": "sha256:be277c1a3ab4fe890ae8e16e0a3bfc4e940bf0ebed750b1977c27d2b0170e73e",
"reference_lines": [
48
],
@@ -391,8 +391,8 @@
"start": 1,
"end": 209
},
- "file_sha256": "897b2d4ea14dc8ab3b06b5a0a2bbf4aa22f3e9e33b2602bd82ca46ea5405033c",
- "content_id": "sha256:897b2d4ea14dc8ab3b06b5a0a2bbf4aa22f3e9e33b2602bd82ca46ea5405033c"
+ "file_sha256": "be277c1a3ab4fe890ae8e16e0a3bfc4e940bf0ebed750b1977c27d2b0170e73e",
+ "content_id": "sha256:be277c1a3ab4fe890ae8e16e0a3bfc4e940bf0ebed750b1977c27d2b0170e73e"
}
],
"docs_and_registry": [
@@ -432,10 +432,10 @@
"role": "installed_package_exposure",
"lines": {
"start": 1,
- "end": 253
+ "end": 271
},
- "file_sha256": "55a7787aa01b8d954782a24efd1df197231c67b776312fde861046aedafa9bca",
- "content_id": "sha256:55a7787aa01b8d954782a24efd1df197231c67b776312fde861046aedafa9bca"
+ "file_sha256": "68a1b7786c82472ab9372a69527637e54db3eef7890884b414d15c3d8ae80b2d",
+ "content_id": "sha256:68a1b7786c82472ab9372a69527637e54db3eef7890884b414d15c3d8ae80b2d"
},
"forwarding": {
"path": "scripts/agent-native/a2a-projection.mjs",
diff --git a/consumer-reference/policies/lifecycle-ag-ui-extension.json b/consumer-reference/policies/lifecycle-ag-ui-extension.json
index e57256b..2b4b21e 100644
--- a/consumer-reference/policies/lifecycle-ag-ui-extension.json
+++ b/consumer-reference/policies/lifecycle-ag-ui-extension.json
@@ -94,8 +94,8 @@
"scripts/test-lifecycle-disposition.mjs",
"scripts/validate-lifecycle-disposition.mjs"
],
- "scanned_file_count": 404,
- "scanned_paths_content_id": "sha256:f703200abad74add6fa9be06d1a6cc767726113cdd5ac4b92e6dadc9c354cee0"
+ "scanned_file_count": 422,
+ "scanned_paths_content_id": "sha256:f6456877c84e3e36fafa524bf6cc53639ee1fd1ca5816e4e039bb04f0278d1f8"
},
"implementation": {
"path": "scripts/agent-native/v2/extensions/agui-projection.mjs",
@@ -113,10 +113,10 @@
"role": "repository_reference",
"lines": {
"start": 1,
- "end": 165
+ "end": 177
},
- "file_sha256": "67571ee3b85430f17999189a52fc3ed871aab135e7e5127f63ee57b2ce11cd19",
- "content_id": "sha256:67571ee3b85430f17999189a52fc3ed871aab135e7e5127f63ee57b2ce11cd19",
+ "file_sha256": "543cc617e5881d25f7b7e23156509eb4c6ee55dea7a8cf3da9da00ed1540bacb",
+ "content_id": "sha256:543cc617e5881d25f7b7e23156509eb4c6ee55dea7a8cf3da9da00ed1540bacb",
"reference_lines": [
21
],
@@ -129,14 +129,14 @@
"role": "repository_reference",
"lines": {
"start": 1,
- "end": 223
+ "end": 225
},
- "file_sha256": "b892e0df464b0527b50b201830db7ab87507069862281e7781ad1eecb56f77b7",
- "content_id": "sha256:b892e0df464b0527b50b201830db7ab87507069862281e7781ad1eecb56f77b7",
+ "file_sha256": "7927039cd3e8cab462ce72f5989e9ec52c96414c9e662d8a9df4f7bddcd516f9",
+ "content_id": "sha256:7927039cd3e8cab462ce72f5989e9ec52c96414c9e662d8a9df4f7bddcd516f9",
"reference_lines": [
28,
- 82,
- 84
+ 83,
+ 85
],
"reference_kinds": [
"documentation_reference"
@@ -183,12 +183,12 @@
"role": "repository_reference",
"lines": {
"start": 1,
- "end": 57
+ "end": 63
},
- "file_sha256": "ebbaf9b22d6924714a1bb6069bab4622ffe9fd0aad76c6cf718cd76cff7b2eb9",
- "content_id": "sha256:ebbaf9b22d6924714a1bb6069bab4622ffe9fd0aad76c6cf718cd76cff7b2eb9",
+ "file_sha256": "e5c1f9ccdbaf78258f74b6bb75d23739a559c8c68a68b852427a3c9208550bed",
+ "content_id": "sha256:e5c1f9ccdbaf78258f74b6bb75d23739a559c8c68a68b852427a3c9208550bed",
"reference_lines": [
- 13
+ 19
],
"reference_kinds": [
"documentation_reference"
@@ -199,10 +199,10 @@
"role": "repository_reference",
"lines": {
"start": 1,
- "end": 253
+ "end": 271
},
- "file_sha256": "55a7787aa01b8d954782a24efd1df197231c67b776312fde861046aedafa9bca",
- "content_id": "sha256:55a7787aa01b8d954782a24efd1df197231c67b776312fde861046aedafa9bca",
+ "file_sha256": "68a1b7786c82472ab9372a69527637e54db3eef7890884b414d15c3d8ae80b2d",
+ "content_id": "sha256:68a1b7786c82472ab9372a69527637e54db3eef7890884b414d15c3d8ae80b2d",
"reference_lines": [
171,
187
@@ -325,8 +325,8 @@
"start": 1,
"end": 209
},
- "file_sha256": "897b2d4ea14dc8ab3b06b5a0a2bbf4aa22f3e9e33b2602bd82ca46ea5405033c",
- "content_id": "sha256:897b2d4ea14dc8ab3b06b5a0a2bbf4aa22f3e9e33b2602bd82ca46ea5405033c",
+ "file_sha256": "be277c1a3ab4fe890ae8e16e0a3bfc4e940bf0ebed750b1977c27d2b0170e73e",
+ "content_id": "sha256:be277c1a3ab4fe890ae8e16e0a3bfc4e940bf0ebed750b1977c27d2b0170e73e",
"reference_lines": [
49
],
@@ -434,8 +434,8 @@
"start": 1,
"end": 209
},
- "file_sha256": "897b2d4ea14dc8ab3b06b5a0a2bbf4aa22f3e9e33b2602bd82ca46ea5405033c",
- "content_id": "sha256:897b2d4ea14dc8ab3b06b5a0a2bbf4aa22f3e9e33b2602bd82ca46ea5405033c"
+ "file_sha256": "be277c1a3ab4fe890ae8e16e0a3bfc4e940bf0ebed750b1977c27d2b0170e73e",
+ "content_id": "sha256:be277c1a3ab4fe890ae8e16e0a3bfc4e940bf0ebed750b1977c27d2b0170e73e"
}
],
"docs_and_registry": [
@@ -475,10 +475,10 @@
"role": "installed_package_exposure",
"lines": {
"start": 1,
- "end": 253
+ "end": 271
},
- "file_sha256": "55a7787aa01b8d954782a24efd1df197231c67b776312fde861046aedafa9bca",
- "content_id": "sha256:55a7787aa01b8d954782a24efd1df197231c67b776312fde861046aedafa9bca"
+ "file_sha256": "68a1b7786c82472ab9372a69527637e54db3eef7890884b414d15c3d8ae80b2d",
+ "content_id": "sha256:68a1b7786c82472ab9372a69527637e54db3eef7890884b414d15c3d8ae80b2d"
},
"forwarding": {
"path": "scripts/agent-native/agui-projection.mjs",
diff --git a/consumer-reference/policies/lifecycle-page-evidence-adoption.json b/consumer-reference/policies/lifecycle-page-evidence-adoption.json
index a03a483..6a7ed27 100644
--- a/consumer-reference/policies/lifecycle-page-evidence-adoption.json
+++ b/consumer-reference/policies/lifecycle-page-evidence-adoption.json
@@ -163,7 +163,7 @@
{
"path": "quality/evidence/executable-evidence.md",
"mode": "100644",
- "sha256": "a0ae7f2c355ab26293cdb9e96b31d91d50a024ed404aa0c8297a65b91af73a33",
+ "sha256": "fb441412dabc0b57aeac8355f92321a9873aa67612e489e3137953d7680312b1",
"role": "archive_and_retrieval_documentation"
},
{
diff --git a/guides/documentation-mode-taxonomy.md b/guides/documentation-mode-taxonomy.md
index beb6561..bfdf9ce 100644
--- a/guides/documentation-mode-taxonomy.md
+++ b/guides/documentation-mode-taxonomy.md
@@ -40,6 +40,11 @@ Do not use `mixed` as a mode. If a page has more than one reading posture, keep
| `design-engineering/consumer-migration-readiness.md` | How-to | Policy/procedure | Build a consumer-owned migration evidence chain without claiming universal authority. |
| `platform-guides/index.md` | Reference | Explanation | Enter bounded comparative platform references. |
| `platform-guides/*.md` | Explanation | Reference | Compare a named platform with explicit source, version, adaptation, and evidence limits. |
+| `state-management/index.md` | Reference | How-to | Enter framework-neutral state planning, pattern, recipe, catalog, and verification routes. |
+| `state-management/catalog.md` | Reference | None | Look up a known State Management pattern or recipe. |
+| `state-management/guides/*.md` | How-to or Reference | Explanation | Plan authority and lifetime, select patterns, complete a brief, or run the verification matrix. |
+| `state-management/patterns/**/*.md` | Reference | Explanation | Apply one experimental application-state responsibility without making a library canonical. |
+| `state-management/recipes/*.md` | How-to | Reference | Compose State Management patterns for a common user flow and preserve substitution risk. |
| `guides/decision-tree.md` | How-to | Reference | Route from constraints to pattern families and recipes. |
| `guides/layout-brief.md` | How-to | Reference | Fill before selecting a pattern stack. |
| `guides/vocabulary.md` | Reference | Policy/procedure | Look up canonical terms, aliases, deprecated terms, and scannability rules. |
@@ -110,6 +115,8 @@ The wildcard rows are intentional. Generated pattern pages share one stable refe
| `recipes/index.md` | Keep and label | The page is a recipe lookup index, with enough how-to routing to choose the next recipe. |
| `recipes/primitive-to-recipe-matrix.md` | Keep and label | The page is a reference matrix that supports how-to substitution decisions. |
| `recipes/*.md` | Intentional hybrid | Recipes teach composition steps while preserving reusable reference contracts for pattern stacks, constraints, and scroll ownership. |
+| `state-management/guides/*.md` | Intentional hybrid | Guides route an implementation decision while preserving authority, lifetime, transition, and verification contracts. |
+| `state-management/recipes/*.md` | Intentional hybrid | Recipes teach state composition while preserving pattern roles, rejected alternatives, and recovery boundaries. |
| `quality/index.md` | Keep and label | The page explains why the quality layer exists and routes readers into policy/procedure gates. |
| `quality/principles.md` | Keep and label | The page explains shared principles that later become gate policy. |
| `quality/claims.md` | Keep and label | The page is a claim-record reference with procedure for when a record is required. |
@@ -128,6 +135,9 @@ The wildcard rows are intentional. Generated pattern pages share one stable refe
| Review a product-level craft decision. | `design-engineering/index.md` | `design-engineering/interface-craft.md`, then the relevant quality gate |
| Prove an existing consumer migration. | `design-engineering/consumer-migration-readiness.md` | `quality/gates/consumer-migration-evidence.md`, then the consumer-owned conformance record |
| Compare an Apple interaction convention. | `platform-guides/index.md` | `platform-guides/apple-interaction.md` and current official sources |
+| Plan or review application state. | `state-management/index.md` | `state-management/guides/decision-tree.md`, then `state-management/guides/state-brief.md` |
+| Look up a known state pattern. | `state-management/catalog.md` | The matching `state-management/patterns/**/*.md` contract |
+| Compose state for a common user flow. | `state-management/recipes/index.md` | The matching recipe and `state-management/recipes/pattern-to-recipe-matrix.md` |
| Choose a layout when the pattern name is unknown. | `GUIDE.md` | `guides/decision-tree.md` |
| Turn raw content into a homepage or webpage. | `guides/webpage-generation-workflow.md` | `recipes/homepage.md`, `quality/gates/harmony-evaluation.md` |
| Look up a known layout primitive. | `CATALOG.md` | The relevant `patterns/*/*.md` page |
diff --git a/guides/vocabulary.md b/guides/vocabulary.md
index e740018..17a1037 100644
--- a/guides/vocabulary.md
+++ b/guides/vocabulary.md
@@ -15,19 +15,35 @@ Primary role: vocabulary and scannability contract.
- Canonical: `domain`
- Concept: top-level knowledge ownership
- Definition: A governed StyleGallery decision surface with a named scope, exclusions, lifecycle, source-of-truth, validator, and review owner.
- - Use for: Layout, Motion, Design Engineering, Game UI, Platform Guides, root routing, and `domain` frontmatter on governed leaves.
+ - Use for: Layout, Motion, Design Engineering, Game UI, Platform Guides, State Management, root routing, and `domain` frontmatter on governed leaves.
- Canonical: `category`
- Concept: domain-local browse placement
- Definition: A canonical grouping inside one domain; it cannot change the owning domain or its evidence boundary.
- Use for: Layout pattern families and future domain-local indexes after a governed need is established.
- Canonical: `pattern`
- - Concept: reusable spatial primitive
- - Definition: A minimal HTML/CSS layout contract that solves one primary spatial problem.
- - Use for: Individual files under `patterns/`, generated catalog entries, pattern stacks, and primitive references.
+ - Concept: reusable domain primitive
+ - Definition: A bounded contract that solves one primary problem inside its owning domain.
+ - Use for: Layout files under `patterns/`, State Management files under `state-management/patterns/`, domain-local catalogs, pattern stacks, and primitive references.
- Canonical: `recipe`
- - Concept: screen composition
- - Definition: A screen-level composition that maps a common use case to a pattern stack.
- - Use for: Files under `recipes/`, planning flow, and primitive-to-recipe dependency records.
+ - Concept: domain-local composition
+ - Definition: A common use-case composition that assigns named responsibilities to a pattern stack.
+ - Use for: Layout screen compositions under `recipes/`, State Management flow compositions under `state-management/recipes/`, planning flow, and pattern-to-recipe dependency records.
+- Canonical: `state owner`
+ - Concept: mutable-fact authority
+ - Definition: The one declared authority that accepts writes and determines the current value for a mutable fact within a named boundary.
+ - Use for: State briefs, State Management patterns, recipes, and implementation handoffs.
+- Canonical: `state lifetime`
+ - Concept: validity interval
+ - Definition: The interval and boundary across which a state value remains valid before reset, eviction, replacement, or migration.
+ - Use for: Component, feature, navigation, session, persistence, and remote-cache decisions.
+- Canonical: `derived state`
+ - Concept: computed projection
+ - Definition: A value computed from authoritative inputs without an independent writer.
+ - Use for: Selectors, projections, totals, filtering, eligibility, and dirty-state computation.
+- Canonical: `logical transition`
+ - Concept: accepted state change
+ - Definition: A named event and rule that maps an accepted current state to a next state while preserving declared invariants.
+ - Use for: State Management transition contracts; use Motion terminology for the animation that communicates the result.
- Canonical: `gate`
- Concept: quality decision contract
- Definition: A named quality contract that decides whether a claim is admissible and which evidence can support it.
@@ -80,7 +96,7 @@ Primary role: vocabulary and scannability contract.
- Alias: `section` -> `category`
- Use only for document structure or explanatory prose, not canonical placement metadata.
- Alias: `primitive` -> `pattern`
- - Use `primitive` only when contrasting individual patterns with recipes.
+ - Use `primitive` only when contrasting individual domain patterns with recipes.
- Alias: `layout primitive` -> `pattern`
- Use in explanatory prose only; canonical records should use `pattern`.
- Alias: `screen recipe` -> `recipe`
@@ -93,7 +109,7 @@ Primary role: vocabulary and scannability contract.
## Deprecated Terms
- Deprecated: `component` -> `pattern`
- - Reason: In Layout, component implies visual or framework ownership; Layout owns spatial pattern contracts.
+ - Reason: In Layout, component implies visual or framework ownership; Layout owns spatial pattern contracts. In State Management, component can also imply framework or visual ownership; use `pattern` for the portable state responsibility.
- Deprecated: `template` -> `recipe`
- Reason: Template implies copy-paste completeness; recipes are starting compositions.
- Deprecated: `proof` -> `evidence`
diff --git a/index.md b/index.md
index 7b36d1a..a58aeb1 100644
--- a/index.md
+++ b/index.md
@@ -4,7 +4,7 @@ okf_version: "0.1"
# StyleGallery
-StyleGallery is an OKF-style knowledge bundle organized into governed interface-knowledge domains. Existing Layout paths remain canonical while Motion, Design Engineering, Game UI, and Platform Guides own separate product and reference boundaries.
+StyleGallery is an OKF-style knowledge bundle organized into governed interface-knowledge domains. Existing Layout paths remain canonical while Motion, Design Engineering, Game UI, Platform Guides, and State Management own separate product, reference, and runtime-state boundaries.
Primary role: OKF bundle map.
@@ -16,6 +16,7 @@ Primary role: OKF bundle map.
- [Design Engineering](design-engineering/index.md) - Product-layer interface-craft decisions and verification questions.
- [Game UI](game-ui/index.md) - Game-interface classification, hierarchy, reference records, and named engine implementation guides.
- [Platform Guides](platform-guides/index.md) - Bounded comparative references for named platforms.
+- [State Management](state-management/index.md) - Framework-neutral application-state ownership, transitions, synchronization, recovery, and verification.
- [Consumer reference](consumer-reference/index.md) - Shared non-domain receiver contract for declared repository-local JSON records or reasoned non-applicability.
- [Agent-Native StyleGallery](consumer-reference/agent-native/README.md) - Machine-facing identity, retrieval, operation, CLI, read-only MCP, task projection, and governed-learning contracts.
- [Consumer migration readiness](design-engineering/consumer-migration-readiness.md) - Experimental Design Engineering method for consumer-owned conformance, runtime proof, and source-bound page evidence.
diff --git a/log.md b/log.md
index e64b689..affa274 100644
--- a/log.md
+++ b/log.md
@@ -1,5 +1,11 @@
# StyleGallery Log
+## 2026-08-30
+
+- Added State Management as an experimental domain for framework-neutral application-state ownership, lifetime, derivation, logical transitions, synchronization, recovery, and verification.
+- Added a domain-local planning workflow, decision tree, state brief, verification matrix, six reusable patterns, three recipes, and a pattern-to-recipe matrix without extending the Layout generator.
+- Extended root IA, governance, domain validation, Material v2 discovery, MCP resources, package exposure, and the README infographic from five to six governed domains.
+
## 2026-08-18
- Added the StyleGallery homepage example planned from a clean npm installation and verified across desktop, tablet, and mobile Chrome CDP viewports.
diff --git a/package.json b/package.json
index 619e632..56c972c 100644
--- a/package.json
+++ b/package.json
@@ -197,7 +197,25 @@
"scripts/sg-material.mjs",
"scripts/sg-mcp.mjs",
"scripts/sg.mjs",
- "scripts/strict-json.mjs"
+ "scripts/strict-json.mjs",
+ "state-management/catalog.md",
+ "state-management/guides/decision-tree.md",
+ "state-management/guides/planning-workflow.md",
+ "state-management/guides/state-brief.md",
+ "state-management/guides/verification-matrix.md",
+ "state-management/index.md",
+ "state-management/patterns/derivation/derived-state.md",
+ "state-management/patterns/index.md",
+ "state-management/patterns/ownership/local-draft-state.md",
+ "state-management/patterns/ownership/server-state-cache.md",
+ "state-management/patterns/ownership/url-owned-state.md",
+ "state-management/patterns/synchronization/optimistic-mutation.md",
+ "state-management/patterns/transitions/explicit-transition-model.md",
+ "state-management/recipes/editable-form.md",
+ "state-management/recipes/index.md",
+ "state-management/recipes/optimistic-list.md",
+ "state-management/recipes/pattern-to-recipe-matrix.md",
+ "state-management/recipes/search-and-filter.md"
],
"bin": {
"sg": "scripts/sg.mjs",
diff --git a/quality/claim-records/stylegallery-multidomain-scope.md b/quality/claim-records/stylegallery-multidomain-scope.md
index 1be65a8..6fa827c 100644
--- a/quality/claim-records/stylegallery-multidomain-scope.md
+++ b/quality/claim-records/stylegallery-multidomain-scope.md
@@ -8,7 +8,7 @@ description: Decision to supersede the layout-only repository identity with a go
## Decision
-StyleGallery supersedes the repository-wide `layout-gallery` identity with five explicit domains: Layout, Motion, Design Engineering, Game UI, and Platform Guides. The prior layout-only rules remain authoritative inside Layout instead of being deleted or silently weakened.
+StyleGallery supersedes the repository-wide `layout-gallery` identity with six explicit domains: Layout, Motion, Design Engineering, Game UI, Platform Guides, and State Management. The prior layout-only rules remain authoritative inside Layout instead of being deleted or silently weakened.
## Context
diff --git a/quality/evidence/executable-evidence.md b/quality/evidence/executable-evidence.md
index 9295380..1ffb6b3 100644
--- a/quality/evidence/executable-evidence.md
+++ b/quality/evidence/executable-evidence.md
@@ -32,7 +32,7 @@ Executable evidence identifies which claims are machine-enforced, which are only
| Markdown links resolve inside the repository. | `scripts/validate-links.mjs` | `node scripts/validate-links.mjs --json` | All checked Markdown links resolve to local files or are intentionally external or anchors. | A local link that escapes the repository or points at a missing file must fail. | Proves link targets exist, not that the target content supports a claim. |
| Catalog and generated pattern indexes match the pattern data source. | `scripts/validate-catalog.mjs` | `node scripts/validate-catalog.mjs --json` | `CATALOG.md`, category indexes, and expected pattern files match `scripts/pattern-data.mjs`. | Missing, unexpected, or unlisted pattern files must fail. | Proves catalog consistency, not pattern usefulness. |
| Governance, lifecycle, generated-file, ownership, and stale-content policy remain discoverable and CI-enforced. | `scripts/validate-governance.mjs` and `scripts/test-validate-governance.mjs` | `node scripts/validate-governance.mjs --json`; `node scripts/test-validate-governance.mjs --json` | `GOVERNANCE.md`, `.github/CODEOWNERS`, generated warnings, generated metadata, root link targets, lifecycle states, `scheduled_stale_audit` metadata, and CI wiring are present. | Missing governance file, generated warning, generated metadata, CODEOWNERS coverage, or stale policy fixtures must fail. Preferred governance prose and link labels emit warnings. | Proves governance policy is present and linked, not that CODEOWNERS users have verified repository write access. |
-| Domain topology, metadata, provenance, scope boundaries, and root routes remain enforced. | `scripts/validate-domains.mjs` and `scripts/test-validate-domains.mjs` | `node scripts/validate-domains.mjs --json`; `node scripts/test-validate-domains.mjs` | Five governed domains and their declared leaves are reachable and attributed. | Domain metadata, immutable provenance, scope boundaries, and root-route fixtures must fail. | A full SHA proves content identity syntax, not publisher authenticity, source ownership, or local quality. |
+| Domain topology, metadata, provenance, scope boundaries, and root routes remain enforced. | `scripts/validate-domains.mjs` and `scripts/test-validate-domains.mjs` | `node scripts/validate-domains.mjs --json`; `node scripts/test-validate-domains.mjs` | Six governed domains and their declared leaves are reachable and attributed. | Domain metadata, immutable provenance, scope boundaries, and root-route fixtures must fail. | A full SHA proves content identity syntax, not publisher authenticity, source ownership, or local quality. |
| Consumer-reference handoffs, schema/runtime parity, repository-local record paths, lifecycle separation, ownership truth, and dependency direction remain enforced. | `scripts/validate-consumer-reference.mjs` and `scripts/test-validate-consumer-reference.mjs` | `node scripts/validate-consumer-reference.mjs --json`; `node scripts/test-validate-consumer-reference.mjs --json` | Declared and reasoned-not-applicable fixtures exit zero, every shipped schema rule has accepted/rejected parity coverage, all repository handoffs declare applicability, fixtures remain related, and ownership discloses placeholder single-account review. | Unknown top-level or nested properties, invalid schema fields, missing handoff or reason, stable with ended support, boolean independence, unresolved/absolute/scheme/network/parent/item-or-record-symlink/non-JSON paths, scaffold success, sixth-domain classification, literal or supported computed reverse imports, and repository handoff omissions must fail with named finding codes and non-zero child exit. | Proves receiver-contract consistency, bounded static dependency detection, and path containment, not general JavaScript data-flow safety, visual quality, independent adoption, verified owner permissions, or consumer implementation conformance. |
| Promotion governance remains a closed JSON-only, invariant-scoped, deferred example contract. | `scripts/validate-promotion-rfc.mjs` and `scripts/test-validate-promotion-rfc.mjs` | `node scripts/validate-promotion-rfc.mjs --json`; `node scripts/test-validate-promotion-rfc.mjs --json` | The manifest-declared policy and two canonical examples pass with deferred decisions, zero attestations, exact support commitment, and no promotion claim. | Manifest-declared invalid fixtures plus forged, unregistered, duplicate, path, extension, support, evidence, canonical-drift, and lifecycle mutations exit non-zero with named findings. | Synthetic validation does not authenticate adoption, organizations, owners, support capacity, provenance, or a promotion decision; the current canonical inventory supplies no real independent consumers. |
| Portable token source and generated CSS agree through the pinned restricted adapter. | `scripts/build-reference-artifacts.mjs`, `scripts/validate-reference-artifacts.mjs`, and `scripts/test-reference-adapters.mjs` | Build with `--fail-on-warning`, validate the generated manifest, then run the adapter fixture harness. | Dimension, color, duration, tested border values, and whole-token curly aliases emit nonzero CSS declarations with matching counts and hashes; output references remain CSS variable references. | `$extends`, JSON Pointer, resolver/modifier/theme documents, unknown reserved fields, non-string descriptions, adapter-unsafe path segments, untested type/unit, partial/dangling/cyclic/type-mismatched aliases, missing output, zero count, warning, scaffold/unknown manifest fields, missing/duplicate declaration, object sentinel, unresolved or forged value, and count drift must fail with named findings and non-zero child exit. | Proves the pinned adapter preserves this tested subset and that committed artifacts independently rebuild from their canonical source, not that tokens are product defaults, portable beyond the tested adapters, visually suitable, or adopted by a consumer. |
diff --git a/quality/index.md b/quality/index.md
index f477c05..d683db4 100644
--- a/quality/index.md
+++ b/quality/index.md
@@ -1,6 +1,6 @@
# Quality Gates
-`quality/` is shared StyleGallery infrastructure for deciding whether Layout, Motion, Design Engineering, Game UI, and Platform Guides claims are admissible.
+`quality/` is shared StyleGallery infrastructure for deciding whether Layout, Motion, Design Engineering, Game UI, Platform Guides, and State Management claims are admissible.
This shared layer does not make the repository a visual design system. Layout pattern files still own spatial structure only; domain guidance cannot bypass these gates. Quality gates explain how claims are framed, what evidence can support them, and when review or debt is required.
@@ -48,7 +48,8 @@ Use this script for lightweight tree tests:
| Name an observed motion effect. | [README](../README.md) | [Motion Vocabulary](../motion/vocabulary.md) | The first selected route is Motion and the term reference is reached within two hops. |
| Review product-level interface craft. | [README](../README.md) | [Interface Craft Decisions](../design-engineering/interface-craft.md) | The first selected route is Design Engineering and shared quality gates remain visible. |
| Compare an Apple interaction convention. | [README](../README.md) | [Apple Interaction](../platform-guides/apple-interaction.md) | The first selected route is Platform Guides and source/version limits are reached within two hops. |
-| Declare whether a consumer reference applies. | [README](../README.md) | [Consumer Reference](../consumer-reference/index.md) | The handoff reaches the shared contract without classifying it as a sixth domain. |
+| Plan application-state ownership and recovery. | [README](../README.md) | [State Management](../state-management/index.md) | The first selected route is State Management and the decision tree or state brief is reached within two hops. |
+| Declare whether a consumer reference applies. | [README](../README.md) | [Consumer Reference](../consumer-reference/index.md) | The handoff reaches the shared contract without classifying it as another governed domain. |
| Prove a consumer migration preserves declared behavior. | [README](../README.md) | [Consumer Migration Readiness](../design-engineering/consumer-migration-readiness.md) | The reader reaches the Design Engineering method and its evidence gate within two hops. |
| Find the authority route for uGUI, UI Toolkit, or NGUI. | [README](../README.md) | [Unity UI Systems](../game-ui/unity/ui-systems.md) | The first selected route is Game UI, and the system-specific source and version boundary is reached within three hops. |
diff --git a/scripts/agent-native/v2/material-admission.mjs b/scripts/agent-native/v2/material-admission.mjs
index 6b6d77e..5ff1c73 100644
--- a/scripts/agent-native/v2/material-admission.mjs
+++ b/scripts/agent-native/v2/material-admission.mjs
@@ -17,7 +17,7 @@ const MANIFEST_REF = "sg:manifest/material-admission-v2";
const MATERIAL_REF_PATTERN = /^sg:material\/path-sha256-[a-f0-9]{64}$/;
const MATERIAL_VERSION_PATTERN = /^sg:material\/path-sha256-[a-f0-9]{64}@sha256:[a-f0-9]{64}$/;
const HASH_PATTERN = /^[a-f0-9]{64}$/;
-const DOMAINS = new Set(["layout", "motion", "design-engineering", "game-ui", "platform-guides", "shared"]);
+const DOMAINS = new Set(["layout", "motion", "design-engineering", "game-ui", "platform-guides", "state-management", "shared"]);
const LIFECYCLES = new Set(["draft", "stable", "deprecated", "experimental", "generated"]);
const RECORD_KEYS = new Set(["schema_version", "record_kind", "stable_ref", "version_id", "repository_path", "media_type", "source_sha256", "byte_length", "lifecycle", "domain"]);
const MANIFEST_KEYS = new Set(["schema_version", "record_kind", "stable_ref", "version_id", "admission_policy_ref", "admission_policy_version_id", "materials"]);
diff --git a/scripts/agent-native/v2/material-identity.mjs b/scripts/agent-native/v2/material-identity.mjs
index 02bb993..16744b8 100644
--- a/scripts/agent-native/v2/material-identity.mjs
+++ b/scripts/agent-native/v2/material-identity.mjs
@@ -6,7 +6,7 @@ export const MATERIAL_STABLE_REF_KINDS = Object.freeze(["domain", "page", "patte
const KIND_SET = new Set(MATERIAL_STABLE_REF_KINDS);
const KEBAB = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
const PATH_ID = /^path-sha256-[a-f0-9]{64}$/;
-const DOMAIN_IDS = new Set(["layout", "motion", "design-engineering", "game-ui", "platform-guides"]);
+const DOMAIN_IDS = new Set(["layout", "motion", "design-engineering", "game-ui", "platform-guides", "state-management"]);
const MATERIAL_ID = PATH_ID;
export class MaterialIdentityError extends TypeError {
@@ -56,9 +56,9 @@ export function materialIdentityForRecord(record) {
if (typeof repositoryPath !== "string") fail("material_record_identity_invalid", "record has no bound source path");
let kind = "page";
let id = `path-sha256-${sha256(Buffer.from(repositoryPath, "utf8"))}`;
- const domainMatch = /^(layout|motion|design-engineering|game-ui|platform-guides)\/index\.md$/.exec(repositoryPath);
+ const domainMatch = /^(layout|motion|design-engineering|game-ui|platform-guides|state-management)\/index\.md$/.exec(repositoryPath);
if (domainMatch) { kind = "domain"; id = domainMatch[1]; }
- else if (/^patterns\/[^/]+\/[^/]+\.md$/.test(repositoryPath)) kind = "pattern";
+ else if (/^patterns\/[^/]+\/[^/]+\.md$/.test(repositoryPath) || /^state-management\/patterns\/[^/]+\/[^/]+\.md$/.test(repositoryPath)) kind = "pattern";
return deepFreeze({
schema_version: "2.0",
stable_ref: createMaterialStableRef({ kind, id }),
diff --git a/scripts/agent-native/v2/material-mcp-adapter.mjs b/scripts/agent-native/v2/material-mcp-adapter.mjs
index 6c78643..11bbd0f 100644
--- a/scripts/agent-native/v2/material-mcp-adapter.mjs
+++ b/scripts/agent-native/v2/material-mcp-adapter.mjs
@@ -16,7 +16,7 @@ const manifestPath = path.join(repositoryRoot, "consumer-reference", "agent-nati
const exposedNames = new Set(["material-context", "material-discover", "material-get", "material-search"]);
const descriptions = Object.freeze({
"material-context": "Build a deterministic, provenance-bound material context within a token budget.",
- "material-discover": "Discover the five governed StyleGallery domain entries.",
+ "material-discover": "Discover the six governed StyleGallery domain entries.",
"material-get": "Read bounded UTF-8 bytes for one canonical v2 material StableRef.",
"material-search": "Search admitted material deterministically, optionally returning only repository-relative paths.",
});
diff --git a/scripts/agent-native/v2/material-queries.mjs b/scripts/agent-native/v2/material-queries.mjs
index 514b82f..220e7b7 100644
--- a/scripts/agent-native/v2/material-queries.mjs
+++ b/scripts/agent-native/v2/material-queries.mjs
@@ -325,7 +325,7 @@ export function materialDiscover({ repositoryRoot, fileSystem = fs }) {
.filter(({ identity }) => identity.kind === "domain")
.map(({ record, identity }) => ({ identity, source: sourceIdentity(record), lifecycle: record.lifecycle }))
.sort((left, right) => compare(left.identity.stable_ref, right.identity.stable_ref));
- if (domains.length !== 5) fail("material_domain_set_invalid", "material manifest does not contain the five governed domains");
+ if (domains.length !== 6) fail("material_domain_set_invalid", "material manifest does not contain the six governed domains");
return deepFreeze({ schema_version: "2.0", manifest_version_id: manifest.version_id, domains });
}
diff --git a/scripts/agent-native/v2/test-material-admission.mjs b/scripts/agent-native/v2/test-material-admission.mjs
index a686c26..beab8bb 100644
--- a/scripts/agent-native/v2/test-material-admission.mjs
+++ b/scripts/agent-native/v2/test-material-admission.mjs
@@ -27,8 +27,8 @@ const v1SchemaDirectory = path.join(repositoryRoot, "consumer-reference", "agent
const v2Directory = path.join(repositoryRoot, "consumer-reference", "agent-native", "v2");
const temporaryRoots = new Set();
const sha256 = (bytes) => createHash("sha256").update(bytes).digest("hex");
-const EXPECTED_PATH_COUNT = 126;
-const EXPECTED_PATHS_NEWLINE_SHA256 = "897c48cb3dec29fdb210e99c91d1fdfe24ea70562ba182143495b476909d2744";
+const EXPECTED_PATH_COUNT = 144;
+const EXPECTED_PATHS_NEWLINE_SHA256 = "979bb2ee0e5b77402895c5b2ffd7f4f9f9ab8b818aae6b027f7cc73118f0a4aa";
function run(command, args, options = {}) {
return spawnSync(command, args, { encoding: "utf8", maxBuffer: 8 * 1024 * 1024, timeout: 30_000, ...options });
@@ -86,7 +86,7 @@ function createRepository() {
"AGENTS.md": "# Agents\n", "CATALOG.md": "# Catalog\n", "DOMAINS.md": "# Domains\n", "GOVERNANCE.md": "# Governance\n",
"GUIDE.md": "# Guide\n", "README.md": "# Readme\n", "index.md": "# Index\n", "log.md": "# Log\n",
"layout/index.md": "# Layout\n", "motion/index.md": "# Motion\n", "design-engineering/index.md": "# Design Engineering\n",
- "game-ui/index.md": "# Game UI\n", "platform-guides/index.md": "# Platform Guides\n",
+ "game-ui/index.md": "# Game UI\n", "platform-guides/index.md": "# Platform Guides\n", "state-management/index.md": "# State Management\n",
"patterns/index.md": "\n# Patterns\n", "patterns/centering/center.md": "# Pattern\n",
"recipes/article-page.md": "# Article\n", "recipes/dashboard.md": "# Dashboard\n", "recipes/list-detail.md": "# List detail\n",
"guides/layout-brief.md": "# Brief\n", "quality/index.md": "# Quality\n",
@@ -111,7 +111,7 @@ function policyVersion(policy) {
test.after(() => { for (const root of temporaryRoots) fs.rmSync(root, { force: true, recursive: true }); });
-test("policy is closed, versioned, exact, and seals all 126 current paths", () => {
+test("policy is closed, versioned, exact, and seals all 144 current paths", () => {
const policySchema = JSON.parse(fs.readFileSync(path.join(v2Directory, "schema", "admission-policy.schema.json"), "utf8"));
const ajv = new Ajv2020({ allErrors: true, strict: true });
assert.equal(ajv.validate(policySchema, materialAdmissionPolicy), true, JSON.stringify(ajv.errors));
@@ -127,7 +127,7 @@ test("policy is closed, versioned, exact, and seals all 126 current paths", () =
assert.equal(Object.hasOwn(materialAdmissionPolicy, "public_roots"), false);
});
-test("actual repository manifest admits exactly 126 paths with deterministic identities and source versions", () => {
+test("actual repository manifest admits exactly 144 paths with deterministic identities and source versions", () => {
const materials = materialAdmissionPolicy.allowed_materials.map(({ repository_path }) => sourceRecord(repositoryRoot, repository_path));
const manifest = createMaterialManifest(materials);
const result = validateMaterialManifest({ repositoryRoot, manifest });
diff --git a/scripts/agent-native/v2/test-material-mcp-stdio.mjs b/scripts/agent-native/v2/test-material-mcp-stdio.mjs
index 5d27137..df806d2 100644
--- a/scripts/agent-native/v2/test-material-mcp-stdio.mjs
+++ b/scripts/agent-native/v2/test-material-mcp-stdio.mjs
@@ -115,7 +115,7 @@ async function rawProtocolProbe(script, cwd) {
const afterMalformed = next((message) => message.id === 61, "post-malformed response");
send("{malformed-json");
send({ jsonrpc: "2.0", id: 61, method: "resources/list", params: {} });
- assert.equal((await afterMalformed).result.resources.length, 126);
+ assert.equal((await afterMalformed).result.resources.length, 144);
assert.equal(allMessages.filter((message) => message.id === undefined).length, 0);
} finally {
child.stdin.end();
@@ -242,7 +242,7 @@ try {
assert.deepEqual(Object.keys(material.client.getServerCapabilities()).sort(), ["resources", "tools"]);
const tools = (await deadline(material.client.listTools(), "list tools")).tools;
assert.deepEqual(tools.map(({ name }) => name), ["material-context", "material-discover", "material-get", "material-search"]);
- assert.equal((await deadline(material.client.listResources(), "list resources")).resources.length, 126);
+ assert.equal((await deadline(material.client.listResources(), "list resources")).resources.length, 144);
assert.deepEqual((await deadline(material.client.listResourceTemplates(), "list templates")).resourceTemplates.map(({ uriTemplate }) => uriTemplate), ["sg://v2/material/{reference}"]);
const calls = [
@@ -257,7 +257,7 @@ try {
assert.deepEqual(envelope(response), executeMaterialCli(cli));
}
- const selected = manifest.materials.filter(({ repository_path }) => ["layout/index.md", "motion/index.md", "design-engineering/index.md", "game-ui/index.md", "platform-guides/index.md"].includes(repository_path));
+ const selected = manifest.materials.filter(({ repository_path }) => ["layout/index.md", "motion/index.md", "design-engineering/index.md", "game-ui/index.md", "platform-guides/index.md", "state-management/index.md"].includes(repository_path));
selected.push(manifest.materials.find(({ domain, lifecycle }) => domain === "layout" && lifecycle === "generated"));
for (const record of selected) {
const response = await deadline(material.client.readResource({ uri: materialResourceUri(record.stable_ref) }), "read material");
@@ -291,7 +291,7 @@ try {
await rejected(() => v1.client.readResource({ uri: materialResourceUri(selected[0].stable_ref) }), /not found|resource/i);
await rejected(() => material.client.readResource({ uri: "sg://self" }), /not found|resource/i);
- process.stdout.write(`${JSON.stringify({ ok: true, transport: "stdio", cwd_with_spaces: true, direct_run: { real_path: true, symlink_with_spaces: true }, import_guard: importGuard, tools: 4, resources: 126, domains: 5, generated: selected[5].stable_ref, source_hashes_verified: 6, concurrent_requests: 8, raw_protocol: rawProtocol, frame_boundaries: frameBoundaries, oversized_frame: oversizedFrame, epipe, v1_tools: v1Tools, stderr_empty: true }, null, 2)}\n`);
+ process.stdout.write(`${JSON.stringify({ ok: true, transport: "stdio", cwd_with_spaces: true, direct_run: { real_path: true, symlink_with_spaces: true }, import_guard: importGuard, tools: 4, resources: 144, domains: 6, generated: selected[6].stable_ref, source_hashes_verified: 7, concurrent_requests: 8, raw_protocol: rawProtocol, frame_boundaries: frameBoundaries, oversized_frame: oversizedFrame, epipe, v1_tools: v1Tools, stderr_empty: true }, null, 2)}\n`);
} finally {
if (v1) {
await deadline(v1.client.close(), "v1 shutdown");
diff --git a/scripts/agent-native/v2/test-material-mcp.mjs b/scripts/agent-native/v2/test-material-mcp.mjs
index 9de0758..caeb5db 100755
--- a/scripts/agent-native/v2/test-material-mcp.mjs
+++ b/scripts/agent-native/v2/test-material-mcp.mjs
@@ -106,7 +106,7 @@ try {
assert.equal(nullPrototypeResponse.structuredContent?.ok, true);
const resources = (await client.listResources()).resources;
- assert.equal(resources.length, 126);
+ assert.equal(resources.length, 144);
assert.deepEqual((await client.listResourceTemplates()).resourceTemplates.map(({ uriTemplate }) => uriTemplate), ["sg://v2/material/{reference}"]);
assert.ok(resources.every(({ uri }) => uri === materialResourceUri(resources.find((entry) => entry.uri === uri).name)));
@@ -123,9 +123,9 @@ try {
assert.deepEqual(envelope(response), executeMaterialCli(cliArgs));
}
- const domainRecords = manifest.materials.filter(({ repository_path }) => ["layout/index.md", "motion/index.md", "design-engineering/index.md", "game-ui/index.md", "platform-guides/index.md"].includes(repository_path));
+ const domainRecords = manifest.materials.filter(({ repository_path }) => ["layout/index.md", "motion/index.md", "design-engineering/index.md", "game-ui/index.md", "platform-guides/index.md", "state-management/index.md"].includes(repository_path));
const generated = manifest.materials.find(({ domain, lifecycle }) => domain === "layout" && lifecycle === "generated");
- assert.equal(domainRecords.length, 5);
+ assert.equal(domainRecords.length, 6);
for (const record of [...domainRecords, generated]) {
const response = await client.readResource({ uri: materialResourceUri(record.stable_ref) });
const payload = JSON.parse(response.contents[0].text);
diff --git a/scripts/agent-native/v2/test-material-query.mjs b/scripts/agent-native/v2/test-material-query.mjs
index ad25a82..2136135 100644
--- a/scripts/agent-native/v2/test-material-query.mjs
+++ b/scripts/agent-native/v2/test-material-query.mjs
@@ -100,20 +100,22 @@ test("v2 identity grammar is closed and v1 rejects every v2 kind", () => {
assert.throws(() => parseMaterialStableRef({ schema_version: "1.0", stable_ref: "sg:domain/layout" }), { code: "material_identity_version_invalid" });
});
-test("material-discover returns exactly the five governed domains and deterministic projected identities", () => {
+test("material-discover returns exactly the six governed domains and deterministic projected identities", () => {
const first = invoke("material-discover");
const second = invoke("material-discover");
assert.equal(first.ok, true);
assert.equal(canonicalize(first), canonicalize(second));
assert.deepEqual(first.result.domains.map(({ identity }) => identity.stable_ref), [
- "sg:domain/design-engineering", "sg:domain/game-ui", "sg:domain/layout", "sg:domain/motion", "sg:domain/platform-guides",
+ "sg:domain/design-engineering", "sg:domain/game-ui", "sg:domain/layout", "sg:domain/motion", "sg:domain/platform-guides", "sg:domain/state-management",
]);
const layout = recordForPath("layout/index.md");
const page = recordForPath("patterns/index.md");
const pattern = recordForPath("patterns/centering/center.md");
+ const statePattern = recordForPath("state-management/patterns/derivation/derived-state.md");
assert.equal(materialIdentityForRecord(layout).stable_ref, "sg:domain/layout");
assert.equal(materialIdentityForRecord(page).kind, "page");
assert.equal(materialIdentityForRecord(pattern).kind, "pattern");
+ assert.equal(materialIdentityForRecord(statePattern).kind, "pattern");
assert.equal(materialIdentityForRecord(pattern).stable_ref, materialIdentityForRecord(pattern).stable_ref);
assert.equal(materialIdentityForRecord(pattern).source_ref, pattern.stable_ref);
});
diff --git a/scripts/agent-native/v2/test-material-registry.mjs b/scripts/agent-native/v2/test-material-registry.mjs
index 556db04..cc239cf 100644
--- a/scripts/agent-native/v2/test-material-registry.mjs
+++ b/scripts/agent-native/v2/test-material-registry.mjs
@@ -85,7 +85,7 @@ test.after(() => { for (const root of temporaryRoots) fs.rmSync(root, { recursiv
test("generated registry is canonical, exact, source-bound, complete, and v1-isolated", () => {
const beforeV1 = fs.readFileSync(v1RegistryPath);
const generated = generateMaterialRegistry({ repositoryRoot });
- assert.equal(generated.materials.length, 126);
+ assert.equal(generated.materials.length, 144);
assert.deepEqual(validateMaterialRegistry({ repositoryRoot, manifest: generated }), { ok: true, failures: [], materials: generated.materials });
assert.equal(generated.version_id, recomputeManifestVersion(generated));
assert.equal(generated.admission_policy_ref, materialAdmissionPolicy.stable_ref);
@@ -97,7 +97,10 @@ test("generated registry is canonical, exact, source-bound, complete, and v1-iso
"design-engineering/index.md", "design-engineering/consumer-migration-readiness.md", "design-engineering/interface-craft.md",
"game-ui/index.md", "game-ui/classification.md", "game-ui/reference-record.md", "game-ui/screen-hierarchy.md",
"game-ui/unity/architecture.md", "game-ui/unity/cli-loop.md", "game-ui/unity/org-wiki.md", "game-ui/unity/repository-map.md", "game-ui/unity/ui-systems.md",
- "platform-guides/index.md", "platform-guides/apple-interaction.md", "patterns/index.md", "patterns/centering/center.md",
+ "platform-guides/index.md", "platform-guides/apple-interaction.md", "state-management/index.md", "state-management/catalog.md",
+ "state-management/guides/decision-tree.md", "state-management/guides/state-brief.md",
+ "state-management/patterns/derivation/derived-state.md", "state-management/patterns/ownership/server-state-cache.md",
+ "state-management/recipes/search-and-filter.md", "patterns/index.md", "patterns/centering/center.md",
];
assert.equal(required.every((entry) => generated.materials.some(({ repository_path }) => repository_path === entry)), true);
const serialized = canonicalize(generated);
diff --git a/scripts/agent-native/v2/test-sg-material-package.mjs b/scripts/agent-native/v2/test-sg-material-package.mjs
index a54b851..2eedb40 100644
--- a/scripts/agent-native/v2/test-sg-material-package.mjs
+++ b/scripts/agent-native/v2/test-sg-material-package.mjs
@@ -181,7 +181,7 @@ try {
try {
await bounded(materialClient.connect(materialTransport), "installed material MCP initialize");
assert.deepEqual((await bounded(materialClient.listTools(), "installed material MCP tools")).tools.map(({ name }) => name), ["material-context", "material-discover", "material-get", "material-search"]);
- assert.equal((await bounded(materialClient.listResources(), "installed material MCP resources")).resources.length, 126);
+ assert.equal((await bounded(materialClient.listResources(), "installed material MCP resources")).resources.length, 144);
assert.deepEqual((await bounded(materialClient.listResourceTemplates(), "installed material MCP templates")).resourceTemplates.map(({ uriTemplate }) => uriTemplate), ["sg://v2/material/{reference}"]);
} finally {
await bounded(materialClient.close(), "installed material MCP shutdown");
diff --git a/scripts/domain-validation-checks.mjs b/scripts/domain-validation-checks.mjs
index ede5d6f..1919937 100644
--- a/scripts/domain-validation-checks.mjs
+++ b/scripts/domain-validation-checks.mjs
@@ -49,7 +49,7 @@ export function createDomainValidationChecks({
failures.push(`${relative}: missing leaf route ${target}`);
}
}
- if (domain.referenceDocuments?.length > 0 && !content.includes("[Reference Profiles](reference-profiles/index.md)")) {
+ if (domain.slug === "design-engineering" && domain.referenceDocuments?.length > 0 && !content.includes("[Reference Profiles](reference-profiles/index.md)")) {
failures.push(`${relative}: missing reference profile route`);
}
}
diff --git a/scripts/governance-policy-contract.mjs b/scripts/governance-policy-contract.mjs
index a00a773..b208856 100644
--- a/scripts/governance-policy-contract.mjs
+++ b/scripts/governance-policy-contract.mjs
@@ -20,6 +20,7 @@ export const requiredCodeowners = [
"/design-engineering/ @changeroa",
"/game-ui/ @changeroa",
"/platform-guides/ @changeroa",
+ "/state-management/ @changeroa",
"/consumer-reference/ @changeroa",
"/consumer-reference/baselines/ @changeroa",
"/consumer-reference/policies/ @changeroa",
diff --git a/scripts/governance-test-fixture.mjs b/scripts/governance-test-fixture.mjs
index 74c29db..d0573bf 100644
--- a/scripts/governance-test-fixture.mjs
+++ b/scripts/governance-test-fixture.mjs
@@ -39,7 +39,7 @@ export const files = {
"index.md": "# StyleGallery\n\n- [Governance, lifecycle, and docs-as-code](GOVERNANCE.md)\n- [StyleGallery Domains](DOMAINS.md)\n",
"DOMAINS.md": "# StyleGallery Domains\n\n### Consumer Reference Promotion\n\nConsumer-reference promotion does not add a domain. See the [canonical promotion contract](consumer-reference/contract.md#promotion-boundary) for the full human-readable rules and the [canonical JSON promotion policy](consumer-reference/policies/shared-experimental.json) for machine policy.\n",
"consumer-reference/contract.md": `## Promotion Boundary\n\nThe [shared-experimental promotion policy](policies/shared-experimental.json) is the canonical machine-readable policy, and the [promotion RFC schema](schema/promotion-rfc.schema.json) owns the RFC record shape.\nThe StyleGallery-local \`>=2\` independent-consumer gateway applies only to consumer-local → shared-experimental invariant eligibility. Shared stable has no numeric adoption threshold. Normative correctness may waive adoption count only.\nThey are not accepted or promoted RFCs. Synthetic examples have zero adopter attestations and record no promotion. A stable contract whose evidence later fails cannot be silently relabeled experimental.\nReview truth uses one enum; boolean aliases are invalid.\n${sentinelProvenanceClauses.join("\n")}\n`,
- "consumer-reference/index.md": "Consumer Reference is outside the five-domain contract.\n[Promotion RFC schema](schema/promotion-rfc.schema.json)\n[Shared-experimental promotion policy](policies/shared-experimental.json)\n",
+ "consumer-reference/index.md": "Consumer Reference is outside the six-domain contract.\n[Promotion RFC schema](schema/promotion-rfc.schema.json)\n[Shared-experimental promotion policy](policies/shared-experimental.json)\n",
"consumer-reference/fixtures/promotion/manifest.json": '{"id": "promotion-fixture-inventory"}\n',
"consumer-reference/policies/shared-experimental.json": '{"review_independence": "single_account", "promotion_occurred": false, "adopter_attestations": 0, "stable_numeric_threshold": null}\n',
"CATALOG.md": `# Layout Pattern Catalog\n\n${generatedWarning}\n`,
@@ -89,6 +89,7 @@ export const files = {
"/design-engineering/ @changeroa",
"/game-ui/ @changeroa",
"/platform-guides/ @changeroa",
+ "/state-management/ @changeroa",
"/consumer-reference/ @changeroa",
"/consumer-reference/baselines/ @changeroa",
"/consumer-reference/policies/ @changeroa",
@@ -307,6 +308,7 @@ export const files = {
"| Design Engineering domain guidance | `design-engineering/*.md` | Manual | None | `experimental` | Upstream revision, evidence boundary, or guidance changes. | `scripts/validate-domains.mjs` | Design Engineering domain owner |",
"| Game UI domain guidance | `game-ui/**/*.md` | Manual | None | `experimental` | Classification, hierarchy, engine implementation, evidence boundary, or route changes. | `scripts/validate-domains.mjs` | Game UI domain owner |",
"| Platform Guides domain guidance | `platform-guides/*.md` | Manual | None | `experimental` | Platform version, upstream revision, evidence boundary, or guidance changes. | `scripts/validate-domains.mjs` | Platform Guides domain owner |",
+ "| State Management domain guidance | `state-management/**/*.md` | Manual | None | `experimental` | Authority, lifetime, transition, synchronization, recovery, pattern composition, evidence boundary, or route changes. | `scripts/validate-domains.mjs`, `scripts/validate-ia.mjs` | State Management domain owner |",
"| Pattern data and examples | `scripts/pattern-data.mjs` | Manual data source | `patterns/**/*.md` | `generated` output from `stable` source | Source-lineage URL changes, generated drift, category changes, or pattern count changes. | `scripts/validate-patterns.mjs`, `scripts/validate-catalog.mjs`, `scripts/validate-governance.mjs` | Pattern-data owner |",
"| Pattern generator | `scripts/generate-patterns.mjs` | Manual code source | `patterns/**/*.md` | `stable` generator, `generated` output | Generated structure changes, generated-warning changes, or generated metadata changes. | `node -c scripts/generate-patterns.mjs` | Pattern-data owner |",
"| Validation scripts | `scripts/validate-*.mjs`, `scripts/test-validate-*.mjs` | Manual code source | CI validation output | `node -c` | Validation owner |",
diff --git a/scripts/test-validate-domains.mjs b/scripts/test-validate-domains.mjs
index 3d8bc8b..2c6112f 100644
--- a/scripts/test-validate-domains.mjs
+++ b/scripts/test-validate-domains.mjs
@@ -12,12 +12,32 @@ const revision = "220e8607c90b17337d210125777b7b695f26c221";
const repository = "https://github.com/emilkowalski/skills";
const unityCliLoopRepository = "https://github.com/hatayama/unity-cli-loop";
const unityCliLoopRevision = "61a0fe6d7da0aa9d0bcbc6d95944dd069c483ff0";
-const vocabularyDomainList = "Use for: Layout, Motion, Design Engineering, Game UI, Platform Guides, root routing, and `domain` frontmatter on governed leaves.";
-const qualityDomainList = "`quality/` is shared StyleGallery infrastructure for deciding whether Layout, Motion, Design Engineering, Game UI, and Platform Guides claims are admissible.";
-const readmeConsumerReferenceBoundary = "without owning profiles, visual values, components, or a sixth domain";
-const qualityConsumerReferenceBoundary = "without classifying it as a sixth domain";
-const executableEvidenceDomainCoverage = "Five governed domains and their declared leaves are reachable and attributed.";
+const vocabularyDomainList = "Use for: Layout, Motion, Design Engineering, Game UI, Platform Guides, State Management, root routing, and `domain` frontmatter on governed leaves.";
+const qualityDomainList = "`quality/` is shared StyleGallery infrastructure for deciding whether Layout, Motion, Design Engineering, Game UI, Platform Guides, and State Management claims are admissible.";
+const readmeConsumerReferenceBoundary = "without owning profiles, visual values, components, or another governed domain";
+const qualityConsumerReferenceBoundary = "without classifying it as another governed domain";
+const executableEvidenceDomainCoverage = "Six governed domains and their declared leaves are reachable and attributed.";
const gameUiFindabilityScenario = "| Find the authority route for uGUI, UI Toolkit, or NGUI. | [README](../README.md) | [Unity UI Systems](../game-ui/unity/ui-systems.md) | The first selected route is Game UI, and the system-specific source and version boundary is reached within three hops. |";
+const stateManagementFindabilityScenario = "| Plan application-state ownership and recovery. | [README](../README.md) | [State Management](../state-management/index.md) | The first selected route is State Management and the decision tree or state brief is reached within two hops. |";
+const stateManagementLeaves = [
+ ["state-management/catalog.md", "State Management Catalog"],
+ ["state-management/guides/planning-workflow.md", "State Management Planning Workflow"],
+ ["state-management/guides/decision-tree.md", "State Management Decision Tree"],
+ ["state-management/guides/state-brief.md", "State Brief"],
+ ["state-management/guides/verification-matrix.md", "State Verification Matrix"],
+ ["state-management/patterns/index.md", "State Management Patterns"],
+ ["state-management/patterns/ownership/local-draft-state.md", "Local Draft State"],
+ ["state-management/patterns/ownership/url-owned-state.md", "URL-Owned State"],
+ ["state-management/patterns/ownership/server-state-cache.md", "Server-State Cache"],
+ ["state-management/patterns/derivation/derived-state.md", "Derived State"],
+ ["state-management/patterns/transitions/explicit-transition-model.md", "Explicit Transition Model"],
+ ["state-management/patterns/synchronization/optimistic-mutation.md", "Optimistic Mutation"],
+ ["state-management/recipes/index.md", "State Management Recipes"],
+ ["state-management/recipes/pattern-to-recipe-matrix.md", "State Pattern To Recipe Matrix"],
+ ["state-management/recipes/search-and-filter.md", "Search And Filter State"],
+ ["state-management/recipes/editable-form.md", "Editable Form State"],
+ ["state-management/recipes/optimistic-list.md", "Optimistic List State"],
+];
function indexPage(title, links) {
return [
@@ -121,8 +141,8 @@ const localLeaf = leafPage({
});
const baseFiles = {
- "README.md": `# StyleGallery\n\nConsumer Reference is shared non-domain infrastructure ${readmeConsumerReferenceBoundary}.\n\n- [Layout](layout/index.md)\n- [Motion](motion/index.md)\n- [Design Engineering](design-engineering/index.md)\n- [Game UI](game-ui/index.md)\n- [Platform Guides](platform-guides/index.md)\n`,
- "index.md": "# StyleGallery\n\n- [Layout](layout/index.md)\n- [Motion](motion/index.md)\n- [Design Engineering](design-engineering/index.md)\n- [Game UI](game-ui/index.md)\n- [Platform Guides](platform-guides/index.md)\n",
+ "README.md": `# StyleGallery\n\nConsumer Reference is shared non-domain infrastructure ${readmeConsumerReferenceBoundary}.\n\n- [Layout](layout/index.md)\n- [Motion](motion/index.md)\n- [Design Engineering](design-engineering/index.md)\n- [Game UI](game-ui/index.md)\n- [Platform Guides](platform-guides/index.md)\n- [State Management](state-management/index.md)\n`,
+ "index.md": "# StyleGallery\n\n- [Layout](layout/index.md)\n- [Motion](motion/index.md)\n- [Design Engineering](design-engineering/index.md)\n- [Game UI](game-ui/index.md)\n- [Platform Guides](platform-guides/index.md)\n- [State Management](state-management/index.md)\n",
"DOMAINS.md": [
"# StyleGallery Domains",
"",
@@ -135,6 +155,7 @@ const baseFiles = {
"| Design Engineering | [Design Engineering](design-engineering/index.md) | `experimental` |",
"| Game UI | [Game UI](game-ui/index.md) | `experimental` |",
"| Platform Guides | [Platform Guides](platform-guides/index.md) | `experimental` |",
+ "| State Management | [State Management](state-management/index.md) | `experimental` |",
"",
"## Page Manifest",
"",
@@ -145,12 +166,13 @@ const baseFiles = {
"| Design Engineering | `design-engineering/index.md` | `design-engineering/interface-craft.md`, `design-engineering/consumer-migration-readiness.md`, `design-engineering/reference-profiles/index.md`, `design-engineering/reference-profiles/governed-local/index.md`, `design-engineering/reference-profiles/external-adaptation/index.md` |",
"| Game UI | `game-ui/index.md` | `game-ui/classification.md`, `game-ui/screen-hierarchy.md`, `game-ui/reference-record.md`, `game-ui/unity/architecture.md`, `game-ui/unity/ui-systems.md`, `game-ui/unity/cli-loop.md`, `game-ui/unity/repository-map.md`, `game-ui/unity/org-wiki.md` |",
"| Platform Guides | `platform-guides/index.md` | `platform-guides/apple-interaction.md` |",
+ `| State Management | \`state-management/index.md\` | ${stateManagementLeaves.map(([path]) => `\`${path}\``).join(", ")} |`,
"",
`Source snapshot \`${revision}\`.`,
"",
"## Shared Non-Domain Infrastructure",
"",
- "[Consumer Reference](consumer-reference/index.md) is shared infrastructure outside the five-domain contract and cannot add a sixth domain row.",
+ "[Consumer Reference](consumer-reference/index.md) is shared infrastructure outside the six-domain contract and cannot add another domain row.",
"",
"## Lifecycle And Staleness",
"",
@@ -194,9 +216,20 @@ const baseFiles = {
"game-ui/unity/org-wiki.md": leafPage({ title: "Unity Organization Compressed Wiki", domain: "game-ui", parent: "../index.md", next: "../../platform-guides/index.md" }),
"platform-guides/index.md": indexPage("Platform Guides", [["Apple Interaction", "apple-interaction.md"]]),
"platform-guides/apple-interaction.md": leafPage({ title: "Apple Interaction", domain: "platform-guides", sourcePath: "skills/apple-design/SKILL.md", parent: "index.md", next: "../layout/index.md" }),
+ "state-management/index.md": indexPage("State Management", stateManagementLeaves.map(([relative, title]) => [title, relative.replace("state-management/", "")])),
+ ...Object.fromEntries(stateManagementLeaves.map(([relative, title], index) => [
+ relative,
+ leafPage({
+ title,
+ domain: "state-management",
+ provenanceKind: "local",
+ parent: relative.includes("/") ? "../index.md" : "index.md",
+ next: index + 1 < stateManagementLeaves.length ? path.posix.relative(path.posix.dirname(relative), stateManagementLeaves[index + 1][0]) : "../layout/index.md",
+ }),
+ ])),
"quality/claim-records/stylegallery-multidomain-scope.md": "# Scope Decision\n\nStyleGallery supersedes the layout-only repository identity.\n",
"guides/vocabulary.md": `# Controlled Vocabulary\n\n- Canonical: \`domain\`\n - ${vocabularyDomainList}\n`,
- "quality/index.md": `# Quality Gates\n\n${qualityDomainList}\n\nThe handoff reaches the shared contract ${qualityConsumerReferenceBoundary}.\n\n${gameUiFindabilityScenario}\n`,
+ "quality/index.md": `# Quality Gates\n\n${qualityDomainList}\n\nThe handoff reaches the shared contract ${qualityConsumerReferenceBoundary}.\n\n${gameUiFindabilityScenario}\n${stateManagementFindabilityScenario}\n`,
"quality/evidence/executable-evidence.md": `# Executable Evidence Coverage\n\n${executableEvidenceDomainCoverage}\n`,
"CATALOG.md": "# Catalog\n",
};
@@ -205,7 +238,7 @@ const cases = [
{ name: "empty_manifest", mutate: ["DOMAINS.md", baseFiles["DOMAINS.md"], "# Empty manifest\n"], expect: "DOMAINS.md: missing canonical domain contract" },
{ name: "manifest_extra_domain", mutate: ["DOMAINS.md", "| Platform Guides | [Platform Guides](platform-guides/index.md) | `experimental` |", "| Platform Guides | [Platform Guides](platform-guides/index.md) | `experimental` |\n| Other | [Other](other/index.md) | `experimental` |"], expect: "DOMAINS.md: missing canonical domain contract" },
{ name: "consumer_reference_sixth_domain", mutate: ["DOMAINS.md", "| Platform Guides | [Platform Guides](platform-guides/index.md) | `experimental` |", "| Platform Guides | [Platform Guides](platform-guides/index.md) | `experimental` |\n| Consumer Reference | [Consumer Reference](consumer-reference/index.md) | `stable` |"], expect: "DOMAINS.md: missing canonical domain contract" },
- { name: "consumer_reference_four_domain_contract", mutate: ["DOMAINS.md", "five-domain contract", "four-domain contract"], expect: "DOMAINS.md: missing canonical domain contract" },
+ { name: "consumer_reference_five_domain_contract", mutate: ["DOMAINS.md", "six-domain contract", "five-domain contract"], expect: "DOMAINS.md: missing canonical domain contract" },
{ name: "domain_lifecycle_reader_gate", mutate: ["DOMAINS.md", "User studies, reader tasks, adoption counts, and attestations are neither required nor sufficient for a domain lifecycle change.", "User studies and reader tasks are required for a domain lifecycle change."], expect: "DOMAINS.md: missing lifecycle boundary User studies, reader tasks, adoption counts, and attestations are neither required nor sufficient for a domain lifecycle change." },
{ name: "consumer_promotion_claims_domain_lifecycle", mutate: ["DOMAINS.md", "does not govern domain or page lifecycle", "also governs domain and page lifecycle"], expect: "DOMAINS.md: missing promotion boundary does not govern domain or page lifecycle" },
{ name: "promotion_stable_by_count", mutate: ["DOMAINS.md", "Shared stable has no numeric adoption threshold.", "Shared stable uses a numeric adoption threshold."], expect: "DOMAINS.md: missing promotion boundary Shared stable has no numeric adoption threshold" },
@@ -221,6 +254,8 @@ const cases = [
{ name: "missing_unity_cli_loop_leaf", omit: ["game-ui/unity/cli-loop.md"], expect: "game-ui/unity/cli-loop.md: missing file" },
{ name: "missing_unity_repository_map_leaf", omit: ["game-ui/unity/repository-map.md"], expect: "game-ui/unity/repository-map.md: missing file" },
{ name: "missing_unity_org_wiki_leaf", omit: ["game-ui/unity/org-wiki.md"], expect: "game-ui/unity/org-wiki.md: missing file" },
+ { name: "missing_state_management_index", omit: ["state-management/index.md"], expect: "state-management/index.md: missing file" },
+ { name: "missing_state_management_leaf", omit: ["state-management/guides/state-brief.md"], expect: "state-management/guides/state-brief.md: missing file" },
{ name: "undeclared_domain_leaf", add: ["motion/rogue.md", "# Rogue\n"], expect: "motion/rogue.md: undeclared governed domain document" },
{
name: "local_leaf_success",
@@ -276,12 +311,13 @@ const cases = [
{ name: "omo_directory_dependency", mutate: ["motion/vocabulary.md", "Verify the claim on its actual surface.", "Verify with [draft](../.omo)."], expect: "motion/vocabulary.md: tracked document must not depend on .omo" },
{ name: "omo_reference_dependency", mutate: ["motion/vocabulary.md", "Verify the claim on its actual surface.", "Verify with [draft][work].\n\n[work]: ../.omo/research.md"], expect: "motion/vocabulary.md: tracked document must not depend on .omo" },
{ name: "canonical_while_experimental", mutate: ["motion/vocabulary.md", "Treat practitioner preferences as hypotheses.", "This is canonical universal policy."], expect: "motion/vocabulary.md: experimental document claims canonical authority" },
- { name: "vocabulary_missing_game_ui", mutate: ["guides/vocabulary.md", vocabularyDomainList, vocabularyDomainList.replace("Game UI, ", "")], expect: "guides/vocabulary.md: missing canonical five-domain vocabulary list" },
- { name: "quality_missing_game_ui", mutate: ["quality/index.md", qualityDomainList, qualityDomainList.replace("Game UI, and ", "and ")], expect: "quality/index.md: missing canonical five-domain quality scope" },
+ { name: "vocabulary_missing_game_ui", mutate: ["guides/vocabulary.md", vocabularyDomainList, vocabularyDomainList.replace("Game UI, ", "")], expect: "guides/vocabulary.md: missing canonical six-domain vocabulary list" },
+ { name: "quality_missing_game_ui", mutate: ["quality/index.md", qualityDomainList, qualityDomainList.replace("Game UI, ", "")], expect: "quality/index.md: missing canonical six-domain quality scope" },
{ name: "quality_missing_game_ui_findability_scenario", mutate: ["quality/index.md", `${gameUiFindabilityScenario}\n`, ""], expect: "quality/index.md: missing Game UI findability QA scenario" },
- { name: "readme_stale_consumer_reference_ordinal", mutate: ["README.md", "sixth domain", "fifth domain"], expect: "README.md: missing canonical Consumer Reference boundary" },
- { name: "quality_stale_consumer_reference_ordinal", mutate: ["quality/index.md", "sixth domain", "fifth domain"], expect: "quality/index.md: missing canonical Consumer Reference boundary" },
- { name: "executable_evidence_stale_domain_count", mutate: ["quality/evidence/executable-evidence.md", "Five governed domains", "Four governed domains"], expect: "quality/evidence/executable-evidence.md: missing canonical five-domain validator coverage" },
+ { name: "quality_missing_state_management_findability_scenario", mutate: ["quality/index.md", `${stateManagementFindabilityScenario}\n`, ""], expect: "quality/index.md: missing State Management findability QA scenario" },
+ { name: "readme_stale_consumer_reference_boundary", mutate: ["README.md", "another governed domain", "a seventh domain"], expect: "README.md: missing canonical Consumer Reference boundary" },
+ { name: "quality_stale_consumer_reference_boundary", mutate: ["quality/index.md", "another governed domain", "a seventh domain"], expect: "quality/index.md: missing canonical Consumer Reference boundary" },
+ { name: "executable_evidence_stale_domain_count", mutate: ["quality/evidence/executable-evidence.md", "Six governed domains", "Five governed domains"], expect: "quality/evidence/executable-evidence.md: missing canonical six-domain validator coverage" },
{ name: "success_path", expect: null },
];
diff --git a/scripts/test-validate-governance.mjs b/scripts/test-validate-governance.mjs
index 567aefb..a835136 100644
--- a/scripts/test-validate-governance.mjs
+++ b/scripts/test-validate-governance.mjs
@@ -20,6 +20,7 @@ const cases = [
{ name: "broad_profile_sources_claim_no_generated_artifacts", mutate: { "GOVERNANCE.md": files["GOVERNANCE.md"].replace(/`design-engineering\/reference-profiles\/governed-local\/editorial\/profile\.json`[^|]+/, "`design-engineering/reference-profiles/governed-local/**`") }, expect: "GOVERNANCE.md: governed local reference profile sources must be the six explicit canonical profile files" },
{ name: "missing_matrix_stale_trigger", mutate: { "GOVERNANCE.md": files["GOVERNANCE.md"].replace("Generated structure changes, generated-warning changes, or generated metadata changes.", "Generated structure changes.") }, expect: "GOVERNANCE.md: missing Generated structure changes, generated-warning changes, or generated metadata changes." },
{ name: "missing_game_ui_domain_family", mutate: { "GOVERNANCE.md": files["GOVERNANCE.md"].replace(/^\| Game UI domain guidance .*\n/m, "") }, expect: "GOVERNANCE.md: missing Game UI domain guidance" },
+ { name: "missing_state_management_domain_family", mutate: { "GOVERNANCE.md": files["GOVERNANCE.md"].replace(/^\| State Management domain guidance .*\n/m, "") }, expect: "GOVERNANCE.md: missing State Management domain guidance" },
{ name: "missing_evidence_fixture_coverage", mutate: { "quality/evidence/executable-evidence.md": "Missing governance file or generated warning fixtures must fail." }, expect: "quality/evidence/executable-evidence.md: missing Missing governance file, generated warning, generated metadata, CODEOWNERS coverage, or stale policy fixtures must fail." },
{
name: "missing_generated_warning",
diff --git a/scripts/test-validate-ia.mjs b/scripts/test-validate-ia.mjs
index f9c6449..767f9ec 100644
--- a/scripts/test-validate-ia.mjs
+++ b/scripts/test-validate-ia.mjs
@@ -34,6 +34,7 @@ const baseFiles = {
"| [Motion](motion/index.md) | Motion domain |",
"| [Design Engineering](design-engineering/index.md) | Design Engineering domain |",
"| [Platform Guides](platform-guides/index.md) | Platform Guides domain |",
+ "| [State Management](state-management/index.md) | State Management domain |",
"| [Consumer Reference](consumer-reference/index.md) | Shared infrastructure contract |",
"| [Consumer Migration Readiness](design-engineering/consumer-migration-readiness.md) | Migration method |",
"",
@@ -68,6 +69,7 @@ const baseFiles = {
"- [Motion](motion/index.md)",
"- [Design Engineering](design-engineering/index.md)",
"- [Platform Guides](platform-guides/index.md)",
+ "- [State Management](state-management/index.md)",
"- [Consumer reference](consumer-reference/index.md)",
"- [Consumer migration readiness](design-engineering/consumer-migration-readiness.md)",
"",
@@ -104,6 +106,7 @@ const baseFiles = {
"design-engineering/reference-profiles/external-adaptation/index.md": "# External Adaptation\n\nParent: [Reference Profiles](../index.md).\nNext: [Platform Guides](../../../platform-guides/index.md).\n",
"platform-guides/index.md": "# Platform Guides\n\n- [Apple](apple.md)\n",
"platform-guides/apple.md": leaf("Apple", "index.md", "../layout/index.md"),
+ "state-management/index.md": "# State Management\n",
"consumer-reference/index.md": "# Consumer Reference\n\n- [Contract](contract.md)\n- [Consumer Migration Readiness](../design-engineering/consumer-migration-readiness.md)\n",
"consumer-reference/contract.md": leaf("Consumer Reference Contract", "index.md", "../quality/index.md"),
};
diff --git a/scripts/validate-domains.mjs b/scripts/validate-domains.mjs
index e5777dc..c23810e 100644
--- a/scripts/validate-domains.mjs
+++ b/scripts/validate-domains.mjs
@@ -18,34 +18,39 @@ const referenceDocuments = [
const requiredCrossDomainStrings = [
{
relative: "guides/vocabulary.md",
- required: "Use for: Layout, Motion, Design Engineering, Game UI, Platform Guides, root routing, and `domain` frontmatter on governed leaves.",
- failure: "guides/vocabulary.md: missing canonical five-domain vocabulary list",
+ required: "Use for: Layout, Motion, Design Engineering, Game UI, Platform Guides, State Management, root routing, and `domain` frontmatter on governed leaves.",
+ failure: "guides/vocabulary.md: missing canonical six-domain vocabulary list",
},
{
relative: "quality/index.md",
- required: "`quality/` is shared StyleGallery infrastructure for deciding whether Layout, Motion, Design Engineering, Game UI, and Platform Guides claims are admissible.",
- failure: "quality/index.md: missing canonical five-domain quality scope",
+ required: "`quality/` is shared StyleGallery infrastructure for deciding whether Layout, Motion, Design Engineering, Game UI, Platform Guides, and State Management claims are admissible.",
+ failure: "quality/index.md: missing canonical six-domain quality scope",
},
{
relative: "README.md",
- required: "without owning profiles, visual values, components, or a sixth domain",
+ required: "without owning profiles, visual values, components, or another governed domain",
failure: "README.md: missing canonical Consumer Reference boundary",
},
{
relative: "quality/index.md",
- required: "without classifying it as a sixth domain",
+ required: "without classifying it as another governed domain",
failure: "quality/index.md: missing canonical Consumer Reference boundary",
},
{
relative: "quality/evidence/executable-evidence.md",
- required: "Five governed domains and their declared leaves are reachable and attributed.",
- failure: "quality/evidence/executable-evidence.md: missing canonical five-domain validator coverage",
+ required: "Six governed domains and their declared leaves are reachable and attributed.",
+ failure: "quality/evidence/executable-evidence.md: missing canonical six-domain validator coverage",
},
{
relative: "quality/index.md",
required: "| Find the authority route for uGUI, UI Toolkit, or NGUI. | [README](../README.md) | [Unity UI Systems](../game-ui/unity/ui-systems.md) | The first selected route is Game UI, and the system-specific source and version boundary is reached within three hops. |",
failure: "quality/index.md: missing Game UI findability QA scenario",
},
+ {
+ relative: "quality/index.md",
+ required: "| Plan application-state ownership and recovery. | [README](../README.md) | [State Management](../state-management/index.md) | The first selected route is State Management and the decision tree or state brief is reached within two hops. |",
+ failure: "quality/index.md: missing State Management findability QA scenario",
+ },
];
export const canonicalDomains = [
@@ -83,6 +88,28 @@ export const canonicalDomains = [
],
},
{ slug: "platform-guides", label: "Platform Guides", leaves: [{ path: "platform-guides/apple-interaction.md", provenance: "external", sourcePath: "skills/apple-design/SKILL.md" }] },
+ {
+ slug: "state-management",
+ label: "State Management",
+ leaves: [
+ { path: "state-management/catalog.md", provenance: "local" },
+ { path: "state-management/guides/planning-workflow.md", provenance: "local" },
+ { path: "state-management/guides/decision-tree.md", provenance: "local" },
+ { path: "state-management/guides/state-brief.md", provenance: "local" },
+ { path: "state-management/guides/verification-matrix.md", provenance: "local" },
+ { path: "state-management/patterns/ownership/local-draft-state.md", provenance: "local" },
+ { path: "state-management/patterns/ownership/url-owned-state.md", provenance: "local" },
+ { path: "state-management/patterns/ownership/server-state-cache.md", provenance: "local" },
+ { path: "state-management/patterns/derivation/derived-state.md", provenance: "local" },
+ { path: "state-management/patterns/transitions/explicit-transition-model.md", provenance: "local" },
+ { path: "state-management/patterns/synchronization/optimistic-mutation.md", provenance: "local" },
+ { path: "state-management/recipes/pattern-to-recipe-matrix.md", provenance: "local" },
+ { path: "state-management/recipes/search-and-filter.md", provenance: "local" },
+ { path: "state-management/recipes/editable-form.md", provenance: "local" },
+ { path: "state-management/recipes/optimistic-list.md", provenance: "local" },
+ ],
+ referenceDocuments: ["state-management/patterns/index.md", "state-management/recipes/index.md"],
+ },
];
export const domainRegistry = canonicalDomains;
@@ -155,8 +182,8 @@ function checkManifest() {
&& content.includes(`snapshot \`${revision}\``)
&& content.includes("## Shared Non-Domain Infrastructure")
&& content.includes("[Consumer Reference](consumer-reference/index.md)")
- && content.includes("infrastructure outside the five-domain contract")
- && content.includes("cannot add a sixth domain row");
+ && content.includes("infrastructure outside the six-domain contract")
+ && content.includes("cannot add another domain row");
for (const domain of domains) {
const domainRow = domainRows.find((row) => row[0] === domain.label);
diff --git a/scripts/validate-governance.mjs b/scripts/validate-governance.mjs
index a77a9c8..a13307d 100644
--- a/scripts/validate-governance.mjs
+++ b/scripts/validate-governance.mjs
@@ -66,6 +66,7 @@ function requireGovernanceMatrix() {
"Design Engineering domain guidance",
"Game UI domain guidance",
"Platform Guides domain guidance",
+ "State Management domain guidance",
"Pattern data and examples",
"Pattern generator",
"Validation scripts",
diff --git a/scripts/validate-ia.mjs b/scripts/validate-ia.mjs
index 64bf37a..55f98f6 100644
--- a/scripts/validate-ia.mjs
+++ b/scripts/validate-ia.mjs
@@ -20,8 +20,9 @@ const domainRoutes = [
["Motion", "motion/index.md"],
["Design Engineering", "design-engineering/index.md"],
["Platform Guides", "platform-guides/index.md"],
+ ["State Management", "state-management/index.md"],
];
-const leafDirectories = ["patterns", "recipes", "quality", "motion", "design-engineering", "platform-guides", "consumer-reference"];
+const leafDirectories = ["patterns", "recipes", "quality", "motion", "design-engineering", "platform-guides", "state-management", "consumer-reference"];
const nestedIndexes = [
"design-engineering/reference-profiles/index.md",
"design-engineering/reference-profiles/governed-local/index.md",
diff --git a/scripts/validate-lifecycle-disposition.mjs b/scripts/validate-lifecycle-disposition.mjs
index ef96d80..9a6271f 100644
--- a/scripts/validate-lifecycle-disposition.mjs
+++ b/scripts/validate-lifecycle-disposition.mjs
@@ -100,7 +100,7 @@ const PAGE_PROTECTED = Object.freeze([
["tests/consumer-conformance.spec.mjs", "e19df0d1131b7a65fd6e5b7b79c993d05f4a4559b64a18da673e1beede5421a3", "browser_capture_surface"],
["tests/fixtures/consumer-conformance-scenarios.mjs", "927d185f523e70e7f2e1fccee0013360d126e02aa532c2367670e64cdef43f12", "state_w1024_focus_contract"],
["tests/helpers/render-consumer-conformance.mjs", "6d5db609aaadb2f68fec1a0f1f51af1c17157cf1364631a42b35da2d6c1a0865", "capture_renderer"],
- ["quality/evidence/executable-evidence.md", "a0ae7f2c355ab26293cdb9e96b31d91d50a024ed404aa0c8297a65b91af73a33", "archive_and_retrieval_documentation"],
+ ["quality/evidence/executable-evidence.md", "fb441412dabc0b57aeac8355f92321a9873aa67612e489e3137953d7680312b1", "archive_and_retrieval_documentation"],
["playwright.config.mjs", "7dcc2ae21602ac89af47d2bbf122f5945098f0e8fda9d47db7d33980592e60ae", "pinned_browser_configuration"],
]);
const PAGE_ADOPTER_TRUST_ROOTS = Object.freeze([]);
diff --git a/state-management/catalog.md b/state-management/catalog.md
new file mode 100644
index 0000000..c1d0335
--- /dev/null
+++ b/state-management/catalog.md
@@ -0,0 +1,63 @@
+---
+type: State Management Catalog
+title: State Management Catalog
+description: Manual lookup of experimental State Management patterns and recipes.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+---
+
+# State Management Catalog
+
+Primary role: pattern and recipe lookup.
+
+## Repository Boundary
+
+This catalog indexes State Management guidance only. It does not extend Layout pattern CSS, prescribe a product architecture, or make a named state library canonical.
+
+## Reusable Method
+
+Choose the narrowest pattern that owns the actual state problem, then use a recipe only when several patterns must cooperate for one user flow.
+
+## Patterns
+
+| Pattern | Category | Primary problem |
+| --- | --- | --- |
+| [Local Draft State](patterns/ownership/local-draft-state.md) | Ownership | Keep incomplete user edits separate from the accepted baseline. |
+| [URL-Owned State](patterns/ownership/url-owned-state.md) | Ownership | Make navigable state authoritative in the URL. |
+| [Server-State Cache](patterns/ownership/server-state-cache.md) | Ownership | Represent a time-bounded local snapshot of server-owned data. |
+| [Derived State](patterns/derivation/derived-state.md) | Derivation | Compute a value without creating a second mutable source of truth. |
+| [Explicit Transition Model](patterns/transitions/explicit-transition-model.md) | Transitions | Restrict state changes to named events and legal transitions. |
+| [Optimistic Mutation](patterns/synchronization/optimistic-mutation.md) | Synchronization | Expose a provisional result while preserving commit or rollback behavior. |
+
+## Recipes
+
+- [Search And Filter](recipes/search-and-filter.md)
+- [Editable Form](recipes/editable-form.md)
+- [Optimistic List](recipes/optimistic-list.md)
+
+## Opinionated Guidance
+
+Do not choose a pattern by matching a library API. Choose it by authority, lifetime, writers, transition risk, and recovery needs.
+
+## Platform-Specific Guidance
+
+Browser URL, history, storage, and lifecycle behavior must be labeled as browser-specific. Native, desktop, game-engine, and server-rendered consumers must document their corresponding platform boundary.
+
+## Unsupported Absolutes
+
+This catalog does not claim that global state is always harmful, that state machines are always necessary, or that server-state tools replace application-state design.
+
+## Verification Contract
+
+Every linked pattern must declare authority, lifetime, mutation path, failure behavior, and a verification route. Every recipe must identify its essential patterns and rejected alternatives.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery synthesis.
+- No external prose, code, or examples were adapted for this page.
+
+## IA Navigation
+
+Parent: [State Management](index.md).
+Next: [State Management Patterns](patterns/index.md).
diff --git a/state-management/guides/decision-tree.md b/state-management/guides/decision-tree.md
new file mode 100644
index 0000000..e3560d1
--- /dev/null
+++ b/state-management/guides/decision-tree.md
@@ -0,0 +1,77 @@
+---
+type: State Management Guide
+title: State Management Decision Tree
+description: Question-driven route from state authority and lifetime to patterns and recipes.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+---
+
+# State Management Decision Tree
+
+## Repository Boundary
+
+This tree classifies runtime state responsibilities. It does not choose a UI layout, animation, backend schema, or product-specific business invariant.
+
+## Reusable Method
+
+### Can the value be computed from authoritative inputs?
+
+- Yes: use [Derived State](../patterns/derivation/derived-state.md).
+- No: continue and name why the value must be stored.
+
+### Must navigation, reload, bookmarking, or sharing reproduce it?
+
+- Yes, and it is safe and reasonably compact: consider [URL-Owned State](../patterns/ownership/url-owned-state.md).
+- No: continue.
+
+### Does a remote system remain authoritative?
+
+- Yes: use a [Server-State Cache](../patterns/ownership/server-state-cache.md).
+- If the UI must respond before acknowledgement: compose [Optimistic Mutation](../patterns/synchronization/optimistic-mutation.md).
+
+### Is the value an incomplete user edit?
+
+- Yes: use [Local Draft State](../patterns/ownership/local-draft-state.md) and name submit, discard, and reset events.
+
+### Are some combinations or transitions illegal?
+
+- Yes: use an [Explicit Transition Model](../patterns/transitions/explicit-transition-model.md).
+- No: a simpler owner with named writers may be sufficient.
+
+### Can more than one writer update the value?
+
+- Yes: declare ordering, conflict detection, merge or overwrite policy, and recovery before implementation.
+- No: preserve the single-writer boundary and avoid mirrored mutable copies.
+
+### Does the problem match a common composition?
+
+- Navigable filters plus remote results: [Search And Filter](../recipes/search-and-filter.md).
+- Incomplete edits against an accepted baseline: [Editable Form](../recipes/editable-form.md).
+- Immediate list feedback before remote acknowledgement: [Optimistic List](../recipes/optimistic-list.md).
+
+## Opinionated Guidance
+
+If a value fits more than one category, split its responsibilities rather than assigning one store every role. A search box can have a local draft while the committed query belongs to the URL and results remain server-owned.
+
+## Platform-Specific Guidance
+
+URL ownership applies to navigation-capable surfaces. Other platforms should map the same responsibility to an explicit navigation or document-state mechanism instead of imitating browser APIs.
+
+## Unsupported Absolutes
+
+The tree does not prove that a selected library, cache duration, persistence mechanism, or conflict strategy is universally correct.
+
+## Verification Contract
+
+Record the chosen branch and at least one rejected branch in the [State Brief](state-brief.md). Verify the owner and reset boundary before testing implementation details.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery method.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management](../index.md).
+Next: [State Brief](state-brief.md).
diff --git a/state-management/guides/planning-workflow.md b/state-management/guides/planning-workflow.md
new file mode 100644
index 0000000..9670af0
--- /dev/null
+++ b/state-management/guides/planning-workflow.md
@@ -0,0 +1,75 @@
+---
+type: State Management Guide
+title: State Management Planning Workflow
+description: Workflow for classifying application state before choosing patterns or libraries.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+---
+
+# State Management Planning Workflow
+
+Primary role: planning workflow.
+
+## Repository Boundary
+
+This workflow plans application runtime state. It does not select spatial Layout patterns, visual states, animations, backend storage models, or a mandatory framework.
+
+## Reusable Method
+
+1. Inventory the mutable facts required by the user task.
+2. Remove values that can be derived from existing authority.
+3. Name the authoritative owner for every remaining fact.
+4. Declare each value's lifetime and reset boundary.
+5. Name all readers, writers, and accepted events.
+6. Describe legal transitions and invariants.
+7. Separate pure derivation from asynchronous effects.
+8. Declare persistence, synchronization, conflicts, and recovery.
+9. Choose the smallest pattern stack and reject unnecessary global ownership.
+10. Record the verification matrix and implementation handoff.
+
+Implementation handoff:
+
+```txt
+Consumer reference: not_applicable
+Consumer reference reason: This generic State Management planning workflow declares no consumer-specific reference record.
+Primary user task:
+State inventory:
+Authoritative owners:
+Lifetime and reset boundaries:
+Readers, writers, and events:
+Derived values:
+Transitions and invariants:
+Effects and cancellation:
+Persistence and synchronization:
+Conflict and recovery policy:
+Pattern stack:
+Rejected alternatives:
+Verification plan:
+```
+
+## Opinionated Guidance
+
+Choose storage after authority and lifetime are known. A globally reachable store is a transport mechanism, not proof that the store should own the value.
+
+## Platform-Specific Guidance
+
+Document platform lifecycle differences such as browser navigation, server rendering and hydration, native process suspension, multi-window behavior, or game-engine scene changes only when the consuming surface requires them.
+
+## Unsupported Absolutes
+
+Do not claim that all state belongs locally, globally, in the URL, or on the server. The correct owner depends on authority, lifetime, identity, and write paths.
+
+## Verification Contract
+
+Complete the [State Brief](state-brief.md), then run the smallest relevant cases from the [State Verification Matrix](verification-matrix.md). The handoff must name at least one failure or stale-result case when asynchronous work exists.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery method.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management](../index.md).
+Next: [State Management Decision Tree](decision-tree.md).
diff --git a/state-management/guides/state-brief.md b/state-management/guides/state-brief.md
new file mode 100644
index 0000000..56c5f12
--- /dev/null
+++ b/state-management/guides/state-brief.md
@@ -0,0 +1,76 @@
+---
+type: State Management Guide
+title: State Brief
+description: Requirements template for state ownership, lifetime, transitions, effects, and recovery.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+---
+
+# State Brief
+
+## Repository Boundary
+
+This brief records state responsibilities before implementation. It does not authorize product styling, Layout changes, backend data models, or consumer-reference defaults.
+
+## Reusable Method
+
+```txt
+Primary user task:
+Mutable facts:
+Authoritative owner for each fact:
+Why each stored value cannot be derived:
+Identity and keying:
+Lifetime:
+Reset boundary:
+Readers:
+Writers:
+Accepted events:
+Legal transitions:
+Invariants:
+Asynchronous effects:
+Cancellation and stale-result rule:
+Persistence:
+Synchronization peers:
+Ordering and conflict policy:
+Failure and recovery:
+Sensitive values excluded from URL or persistence:
+Selected patterns:
+Rejected patterns and reasons:
+Verification cases:
+Consumer reference: not_applicable
+Consumer reference reason: This blank State Brief declares no consumer-specific reference record.
+```
+
+Minimum required fields:
+
+- Pure local interaction: owner, lifetime, reset, writers, derived values, verification.
+- Remote read: server authority, cache identity, freshness, cancellation, failure, verification.
+- Remote write: transition, idempotency assumption, acknowledgement, conflict, rollback or reconciliation.
+- Persistent or multi-writer state: serialization boundary, versioning, conflict policy, recovery, sensitive-value review.
+
+## Opinionated Guidance
+
+Treat blank ownership, lifetime, and recovery fields as unresolved design work rather than filling them with a library name.
+
+## Platform-Specific Guidance
+
+When URL, local storage, native preferences, files, or engine scenes participate, record their platform lifecycle and security limitations explicitly.
+
+## Unsupported Absolutes
+
+This brief does not require every application to use reducers, state machines, normalized stores, persistence, or optimistic updates.
+
+## Verification Contract
+
+Each stored value must have one named authority and reset boundary. Each asynchronous writer must have a stale-result or ordering rule. Each optimistic path must declare both commit and recovery behavior.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery template.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management](../index.md).
+Next: [State Verification Matrix](verification-matrix.md).
diff --git a/state-management/guides/verification-matrix.md b/state-management/guides/verification-matrix.md
new file mode 100644
index 0000000..b1a79ef
--- /dev/null
+++ b/state-management/guides/verification-matrix.md
@@ -0,0 +1,70 @@
+---
+type: State Management Guide
+title: State Verification Matrix
+description: Failure-oriented verification cases for application-state contracts.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+---
+
+# State Verification Matrix
+
+## Repository Boundary
+
+This matrix verifies declared state contracts. It does not replace accessibility review, visual QA, backend correctness testing, or product-specific acceptance criteria.
+
+## Reusable Method
+
+Select only the dimensions relevant to the pattern or recipe:
+
+| Dimension | Cases |
+| --- | --- |
+| Initialization | cold start, restored state, missing state, invalid persisted state |
+| Lifetime | component remount, route change, reload, sign-out, account switch |
+| Derivation | empty inputs, changed dependencies, removed entity, reordered collection |
+| Async ordering | fast response, slow response, out-of-order response, cancellation, duplicate completion |
+| Failure | request rejection, timeout, partial success, retry, permanent failure |
+| Optimism | acknowledgement, rejection, rollback, server correction, repeated action |
+| Synchronization | second tab or window, reconnect, remote update, conflicting writer |
+| Identity | changed key, missing key, duplicate key, stale entity reference |
+| Platform boundary | history navigation, hydration, suspension, resume, scene or document replacement when claimed |
+
+Acceptance checks:
+
+- One authoritative value is observable after every accepted event.
+- Derived state never becomes an independently mutable copy.
+- A stale asynchronous completion cannot overwrite a newer accepted result.
+- Reset behavior matches the declared lifetime.
+- Optimistic work either commits, rolls back, or reconciles by a named rule.
+- Invalid persisted data fails closed or migrates through a declared path.
+- Recovery leaves the user with an understandable next action when product UI is in scope.
+
+## Independence Boundary
+
+This matrix is an author-checkable contract audit. It can show that implementation behavior agrees with declared authority, lifetime, transition, and recovery rules, but it cannot independently establish product suitability, user outcomes, distributed-system correctness, or the truth of the rules themselves. Claims beyond contract conformance require an appropriate [shared quality gate and independent evidence family](../../quality/index.md).
+
+## Opinionated Guidance
+
+Prefer invariant and transition assertions over snapshots of an entire store. Test public events and observable outcomes before private implementation details.
+
+## Platform-Specific Guidance
+
+Run browser history and hydration cases only for browser consumers, multi-window cases only when supported, and suspension or scene lifecycle cases only for platforms that claim them.
+
+## Unsupported Absolutes
+
+Passing this matrix does not prove distributed consistency, full accessibility, product suitability, or correctness outside the declared state boundary.
+
+## Verification Contract
+
+Every pattern must select at least initialization, lifetime, and failure cases. Async patterns additionally select ordering; optimistic patterns select acknowledgement and rejection; persisted or multi-writer patterns select synchronization and conflict cases.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery verification method.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management](../index.md).
+Next: [State Management Catalog](../catalog.md).
diff --git a/state-management/index.md b/state-management/index.md
new file mode 100644
index 0000000..2a23106
--- /dev/null
+++ b/state-management/index.md
@@ -0,0 +1,107 @@
+# State Management
+
+The State Management domain owns framework-neutral guidance for deciding where application runtime state lives, how it changes, how copies coordinate, and how those decisions are verified.
+
+## Scope Boundary
+
+In scope: application-state classification, source-of-truth ownership, lifetime and reset boundaries, stored-versus-derived decisions, logical transitions, asynchronous effects, persistence, synchronization, conflict handling, recovery, and verification.
+
+Out of scope: spatial layout, animation, visual component-state treatment, backend database consistency, API design, product-specific business rules, and claims that one state library is universally correct.
+
+## Use This Domain When
+
+Application developers and architecture reviewers use this domain to plan or review one runtime-state boundary. Documentation contributors use it to decide whether a recurring state responsibility deserves a pattern or a recipe.
+
+- A pattern owns one reusable state problem, such as draft ownership, derivation, or optimistic reconciliation.
+- A recipe assigns several patterns distinct roles in one user flow.
+- A state plan is ready for implementation handoff when the [State Brief](guides/state-brief.md) names every mutable fact's authority, lifetime, writers, transition or synchronization needs, recovery behavior, rejected alternatives, and verification cases.
+
+## Routes
+
+- Start with the [State Management Planning Workflow](guides/planning-workflow.md) when the state problem is not yet clear.
+- Use the [State Management Decision Tree](guides/decision-tree.md) to classify authority, lifetime, writers, and synchronization needs.
+- Fill the [State Brief](guides/state-brief.md) before selecting a pattern stack.
+- Browse the [State Management Catalog](catalog.md) when the state problem or pattern name is known.
+- Browse [State Management Patterns](patterns/index.md) for reusable decision contracts.
+- Compose common application flows with [State Management Recipes](recipes/index.md).
+- Inspect pattern coverage in the [Pattern To Recipe Matrix](recipes/pattern-to-recipe-matrix.md).
+- Verify failure and recovery behavior with the [State Verification Matrix](guides/verification-matrix.md).
+
+## Documents
+
+Planning and verification:
+
+- [State Management Planning Workflow](guides/planning-workflow.md)
+- [State Management Decision Tree](guides/decision-tree.md)
+- [State Brief](guides/state-brief.md)
+- [State Verification Matrix](guides/verification-matrix.md)
+- [State Management Catalog](catalog.md)
+
+Patterns:
+
+- [State Management Patterns](patterns/index.md)
+- [Local Draft State](patterns/ownership/local-draft-state.md)
+- [URL-Owned State](patterns/ownership/url-owned-state.md)
+- [Server-State Cache](patterns/ownership/server-state-cache.md)
+- [Derived State](patterns/derivation/derived-state.md)
+- [Explicit Transition Model](patterns/transitions/explicit-transition-model.md)
+- [Optimistic Mutation](patterns/synchronization/optimistic-mutation.md)
+
+Recipes:
+
+- [State Management Recipes](recipes/index.md)
+- [Pattern To Recipe Matrix](recipes/pattern-to-recipe-matrix.md)
+- [Search And Filter](recipes/search-and-filter.md)
+- [Editable Form](recipes/editable-form.md)
+- [Optimistic List](recipes/optimistic-list.md)
+
+## State Management Principles
+
+1. Name one authoritative owner for each mutable fact.
+2. Derive values when they can be computed reliably from existing authority.
+3. Make lifetime and reset boundaries explicit before choosing storage.
+4. Describe legal events and transitions instead of scattering unrelated setters.
+5. Keep asynchronous effects outside pure state derivation and define cancellation or stale-result behavior.
+6. Treat persistence and synchronization as separate responsibilities from in-memory ownership.
+7. Define conflict, rollback, and recovery behavior before optimistic or multi-writer updates.
+8. Keep canonical guidance framework-neutral; library-specific examples remain bounded derivatives.
+
+## Pattern Contract
+
+Each State Management pattern names:
+
+```txt
+Pattern name
+Category
+Primary state problem
+When to use
+State owner and source of truth
+Readers, writers, and accepted events
+Lifetime and reset boundary
+Stored versus derived values
+Allowed transitions and invariants
+Asynchronous effects and cancellation
+Persistence and synchronization
+Conflict, failure, and recovery behavior
+Framework-neutral example
+Verification contract
+Composition notes
+Anti-patterns
+```
+
+## Domain Relationships
+
+- Layout owns spatial structure produced from state.
+- Motion owns animation used to communicate a state change.
+- Design Engineering owns product-level visual and interaction-state decisions.
+- Game UI owns engine-specific interface architecture; it may apply these state contracts without making them engine-universal.
+- Consumer Reference remains shared non-domain infrastructure and does not own application state behavior.
+
+## Domain Contract
+
+See [StyleGallery Domains](../DOMAINS.md) for lifecycle, page membership, provenance, and review ownership.
+
+## IA Navigation
+
+Parent: [StyleGallery](../index.md).
+Next: [State Management Planning Workflow](guides/planning-workflow.md).
diff --git a/state-management/patterns/derivation/derived-state.md b/state-management/patterns/derivation/derived-state.md
new file mode 100644
index 0000000..bd04958
--- /dev/null
+++ b/state-management/patterns/derivation/derived-state.md
@@ -0,0 +1,61 @@
+---
+type: State Management Pattern
+title: Derived State
+description: Compute a value from authoritative inputs instead of storing another mutable copy.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+category: derivation
+primary_state_problem: a computable value risks becoming a second mutable source of truth
+---
+
+# Derived State
+
+## Repository Boundary
+
+This pattern governs pure computation from existing authority. It does not define visual presentation, expensive-computation infrastructure, analytics, or backend materialized views.
+
+## Reusable Method
+
+- Inputs: named authoritative values with stable identity semantics.
+- Output: a deterministic projection with no independent writer.
+- Lifetime: the output is valid only for the current input versions.
+- Invariant: every observed output equals the declared computation over current inputs.
+- Optimization: memoization may retain computation results but must not create a competing authority.
+- Failure: invalid or missing inputs produce a documented empty, pending, or error result.
+
+## Opinionated Guidance
+
+Derive filtered collections, totals, eligibility, dirty state, and display groupings when the result is fully determined by existing inputs. Store an explicit event result only when the domain requires historical or independently authoritative meaning.
+
+## Platform-Specific Guidance
+
+Memoization, selector, reactive-computation, and server-rendering mechanisms are implementation-specific. Their cache lifetime must not change the logical authority contract.
+
+## Unsupported Absolutes
+
+Not every computed value must be recomputed eagerly, and not every performance optimization is premature. Optimization needs measured cost and preserved semantics.
+
+## Verification Contract
+
+Verify empty inputs, dependency changes, reorder, removal, identity replacement, and any memoization invalidation. Assert the invariant directly rather than snapshotting a whole store.
+
+## Composition Notes
+
+Use with any ownership pattern. The derivation must name which owner supplies each input and must not write back merely to keep a mirror synchronized.
+
+## Anti-patterns
+
+- Updating a stored total in every mutation path.
+- Copying props or cache data into local mutable state without a reset contract.
+- Using an effect to synchronize a value that can be computed during read.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery pattern.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management Patterns](../index.md).
+Next: [Explicit Transition Model](../transitions/explicit-transition-model.md).
diff --git a/state-management/patterns/index.md b/state-management/patterns/index.md
new file mode 100644
index 0000000..b59058f
--- /dev/null
+++ b/state-management/patterns/index.md
@@ -0,0 +1,53 @@
+# State Management Patterns
+
+## Repository Boundary
+
+These patterns describe application runtime-state responsibilities. They do not own Layout CSS, visual component states, backend schemas, product business rules, or library-specific APIs.
+
+## Reusable Method
+
+Choose one pattern for each primary state problem and compose patterns only when authority, derivation, transitions, or synchronization are genuinely separate responsibilities.
+
+Ownership:
+
+- [Local Draft State](ownership/local-draft-state.md)
+- [URL-Owned State](ownership/url-owned-state.md)
+- [Server-State Cache](ownership/server-state-cache.md)
+
+Derivation:
+
+- [Derived State](derivation/derived-state.md)
+
+Transitions:
+
+- [Explicit Transition Model](transitions/explicit-transition-model.md)
+
+Synchronization:
+
+- [Optimistic Mutation](synchronization/optimistic-mutation.md)
+
+## Opinionated Guidance
+
+A pattern should solve one primary state problem. Do not turn a product's complete store shape into a reusable pattern.
+
+## Platform-Specific Guidance
+
+Platform storage, navigation, process, window, and lifecycle behavior must be declared by the consuming implementation.
+
+## Unsupported Absolutes
+
+No pattern is a universal architecture or a requirement to install a particular dependency.
+
+## Verification Contract
+
+Each pattern names authority, lifetime, readers, writers, transitions, failure behavior, and the relevant cases from the [State Verification Matrix](../guides/verification-matrix.md).
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery pattern index.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management](../index.md).
+Next: [Local Draft State](ownership/local-draft-state.md).
diff --git a/state-management/patterns/ownership/local-draft-state.md b/state-management/patterns/ownership/local-draft-state.md
new file mode 100644
index 0000000..a16aaea
--- /dev/null
+++ b/state-management/patterns/ownership/local-draft-state.md
@@ -0,0 +1,71 @@
+---
+type: State Management Pattern
+title: Local Draft State
+description: Keep incomplete user edits separate from the last accepted baseline.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+category: ownership
+primary_state_problem: incomplete edits need a temporary owner and explicit commit or discard behavior
+---
+
+# Local Draft State
+
+## Repository Boundary
+
+This pattern owns temporary editable values before acceptance. It does not define form layout, field styling, validation wording, server persistence, or a framework form API.
+
+## Reusable Method
+
+- Owner: the smallest feature or form boundary that can commit or discard the draft.
+- Source of truth: the draft owns current editable input; an accepted baseline remains separate.
+- Lifetime: from draft creation until commit, discard, reset, or owner removal.
+- Readers: fields, validation logic, dirty-state indicators, and submit eligibility.
+- Writers: named input events, import/reset actions, commit acknowledgement, and discard.
+- Invariant: editing the draft must not silently mutate the accepted baseline.
+- Failure: a rejected commit preserves or reconciles the draft by an explicit rule.
+
+Framework-neutral state shape:
+
+```txt
+baseline
+draft
+status: pristine | dirty | submitting | rejected
+last_error
+```
+
+## Opinionated Guidance
+
+Keep the draft local unless multiple independent surfaces genuinely co-edit it. Derive `dirty` from baseline and draft when comparison is reliable instead of maintaining another writable flag.
+
+## Platform-Specific Guidance
+
+Persistence across reload, suspension, or process death is a separate decision. If enabled, declare serialization, expiry, sensitive-field exclusions, and migration behavior.
+
+## Unsupported Absolutes
+
+Local ownership does not mean component memory is always sufficient, and it does not prohibit shared drafts when the user task spans routes or windows.
+
+## Verification Contract
+
+Verify initial baseline, edit, reset, discard, successful commit, rejected commit, owner remount, and any claimed restoration path. Confirm that stale submission results cannot replace a newer draft.
+
+## Composition Notes
+
+Compose with [Explicit Transition Model](../transitions/explicit-transition-model.md) when submit, retry, and discard combinations become constrained. Use the [Editable Form](../../recipes/editable-form.md) recipe for a complete flow.
+
+## Anti-patterns
+
+- Mutating accepted data on every keystroke without declaring autosave semantics.
+- Keeping draft, dirty flag, and submitted payload as independent mutable copies.
+- Resetting a draft because an unrelated parent rerendered or cache refreshed.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery pattern.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management Patterns](../index.md).
+Next: [URL-Owned State](url-owned-state.md).
diff --git a/state-management/patterns/ownership/server-state-cache.md b/state-management/patterns/ownership/server-state-cache.md
new file mode 100644
index 0000000..a2d78b1
--- /dev/null
+++ b/state-management/patterns/ownership/server-state-cache.md
@@ -0,0 +1,62 @@
+---
+type: State Management Pattern
+title: Server-State Cache
+description: Represent a keyed, time-bounded local snapshot of server-owned data.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+category: ownership
+primary_state_problem: remote authority must be read locally without pretending the snapshot is canonical
+---
+
+# Server-State Cache
+
+## Repository Boundary
+
+This pattern describes client-side ownership of a remote snapshot. It does not define the remote database, API protocol, authorization model, cache library, or backend consistency guarantee.
+
+## Reusable Method
+
+- Authority: the named remote system remains canonical.
+- Local owner: a cache entry keyed by normalized resource identity and request inputs.
+- Lifetime: defined by active readers, freshness policy, invalidation, eviction, or session boundary.
+- Readers: consumers of data, freshness, error, and in-flight metadata.
+- Writers: fetch completion, invalidation, mutation acknowledgement, reconciliation, and eviction.
+- Ordering: stale completions cannot replace a newer accepted version for the same key.
+- Failure: retain, clear, or mark stale data by a declared policy instead of conflating absence with failure.
+
+## Opinionated Guidance
+
+Store remote snapshots and their lifecycle metadata together. Do not copy the same entity into unrelated feature stores unless the synchronization cost and authority rule are explicit.
+
+## Platform-Specific Guidance
+
+Server rendering, hydration, background refresh, offline behavior, process suspension, and platform cache limits require separate declarations.
+
+## Unsupported Absolutes
+
+A cache does not make stale data correct, and a server-state library does not eliminate the need to define identity, freshness, invalidation, and conflict behavior.
+
+## Verification Contract
+
+Verify cache miss, hit, stale hit, refresh, request failure, retry, cancellation, out-of-order completion, key change, invalidation, eviction, and any claimed hydration path.
+
+## Composition Notes
+
+Compose with [Derived State](../derivation/derived-state.md) for projections and with [Optimistic Mutation](../synchronization/optimistic-mutation.md) for provisional writes.
+
+## Anti-patterns
+
+- Treating a cached response as permanent local authority.
+- Keying entries by incomplete request identity.
+- Allowing an earlier request to overwrite a newer result.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery pattern.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management Patterns](../index.md).
+Next: [Derived State](../derivation/derived-state.md).
diff --git a/state-management/patterns/ownership/url-owned-state.md b/state-management/patterns/ownership/url-owned-state.md
new file mode 100644
index 0000000..2311d15
--- /dev/null
+++ b/state-management/patterns/ownership/url-owned-state.md
@@ -0,0 +1,63 @@
+---
+type: State Management Pattern
+title: URL-Owned State
+description: Make safe navigable state authoritative in the URL.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+category: ownership
+primary_state_problem: navigation, reload, bookmarking, and sharing must reproduce state
+---
+
+# URL-Owned State
+
+## Repository Boundary
+
+This pattern owns navigable application state encoded in a URL. It does not define route layout, browser styling, secret transport, server authorization, or a particular routing library.
+
+## Reusable Method
+
+- Owner: the current navigation entry and its normalized route/query representation.
+- Suitable values: search terms, filters, sort order, pagination cursor when share-safe, selected public resource, and active subroute.
+- Lifetime: navigation history plus any external sharing or bookmark lifetime.
+- Writers: explicit navigation events that serialize a complete accepted value.
+- Readers: route parsing and views derived from the normalized value.
+- Invariant: the rendered navigable state can be reconstructed from the URL and declared external authority.
+- Recovery: invalid or obsolete values normalize to a documented fallback without navigation loops.
+
+## Opinionated Guidance
+
+Treat the URL as authority for committed navigable state while allowing a separate local draft for text that should not navigate on every edit.
+
+## Platform-Specific Guidance
+
+History push versus replace, encoding limits, browser back/forward behavior, server rendering, and hydration are browser-specific contracts and must be tested where claimed.
+
+## Unsupported Absolutes
+
+Do not put secrets, high-volume documents, volatile UI details, or values that cannot be safely shared into a URL merely to avoid another owner.
+
+## Verification Contract
+
+Verify direct entry, reload, back, forward, copied URL, missing parameter, malformed value, obsolete value, encoding, and server/client interpretation when server rendering is used.
+
+## Composition Notes
+
+Compose with [Server-State Cache](server-state-cache.md) when URL parameters key a remote query and with [Local Draft State](local-draft-state.md) when edits are committed to navigation only on submit.
+
+## Anti-patterns
+
+- Mirroring URL parameters into a writable store with bidirectional effects and no authority rule.
+- Serializing sensitive or unbounded values.
+- Updating history for transient keystrokes without defining back-button behavior.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery pattern.
+- No upstream source fields apply.
+- Browser behavior references: [HTML Standard navigation and session history](https://html.spec.whatwg.org/multipage/nav-history-apis.html) and [MDN Working with the History API](https://developer.mozilla.org/en-US/docs/Web/API/History_API/Working_with_the_History_API).
+
+## IA Navigation
+
+Parent: [State Management Patterns](../index.md).
+Next: [Server-State Cache](server-state-cache.md).
diff --git a/state-management/patterns/synchronization/optimistic-mutation.md b/state-management/patterns/synchronization/optimistic-mutation.md
new file mode 100644
index 0000000..eaef0eb
--- /dev/null
+++ b/state-management/patterns/synchronization/optimistic-mutation.md
@@ -0,0 +1,62 @@
+---
+type: State Management Pattern
+title: Optimistic Mutation
+description: Expose a provisional result while preserving acknowledgement, reconciliation, and rollback.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+category: synchronization
+primary_state_problem: a remote write should feel immediate without hiding its provisional status or recovery path
+---
+
+# Optimistic Mutation
+
+## Repository Boundary
+
+This pattern owns the client-side provisional overlay and its resolution. It does not guarantee server acceptance, distributed consistency, idempotency, authorization, or product suitability for optimistic behavior.
+
+## Reusable Method
+
+- Authority: the remote system remains canonical after acknowledgement.
+- Provisional state: a mutation record identifies the intended change, affected cache key, base version, and client operation identity.
+- Apply: expose a deterministic provisional projection.
+- Commit: reconcile the acknowledgement and authoritative response.
+- Reject: roll back or refetch by a named policy.
+- Conflict: preserve enough identity and baseline information to avoid reverting unrelated later changes.
+- Retry: define whether the operation is safe to repeat and how duplicates are recognized.
+
+## Opinionated Guidance
+
+Use optimism only when rejection is recoverable and the user can understand provisional or failed status. Prefer pending confirmation when failure would be costly, destructive, or difficult to reverse.
+
+## Platform-Specific Guidance
+
+Offline queues, background synchronization, process termination, and multi-tab coordination require platform-specific storage and delivery guarantees beyond this pattern.
+
+## Unsupported Absolutes
+
+Optimistic updates are not inherently faster, safer, or better. They trade perceived latency for reconciliation complexity and recovery obligations.
+
+## Verification Contract
+
+Verify immediate apply, acknowledgement, rejection, rollback, authoritative correction, duplicate action, out-of-order acknowledgements, subsequent local edits, refetch, offline interruption when claimed, and operation retry.
+
+## Composition Notes
+
+Compose with [Server-State Cache](../ownership/server-state-cache.md) and usually [Explicit Transition Model](../transitions/explicit-transition-model.md). Use [Optimistic List](../../recipes/optimistic-list.md) for collection behavior.
+
+## Anti-patterns
+
+- Overwriting the whole cache from a stale rollback snapshot.
+- Hiding rejection without restoring or reconciling user intent.
+- Retrying a non-idempotent operation without an operation identity.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery pattern.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management Patterns](../index.md).
+Next: [State Management Recipes](../../recipes/index.md).
diff --git a/state-management/patterns/transitions/explicit-transition-model.md b/state-management/patterns/transitions/explicit-transition-model.md
new file mode 100644
index 0000000..03de5b7
--- /dev/null
+++ b/state-management/patterns/transitions/explicit-transition-model.md
@@ -0,0 +1,70 @@
+---
+type: State Management Pattern
+title: Explicit Transition Model
+description: Restrict state changes to named events, legal transitions, and declared effects.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+category: transitions
+primary_state_problem: scattered writes permit contradictory or illegal state combinations
+---
+
+# Explicit Transition Model
+
+## Repository Boundary
+
+This pattern owns logical application-state transitions. Motion owns animation between rendered states, and product domains own the business rules that determine which transitions are allowed.
+
+## Reusable Method
+
+- State: the minimum facts needed to distinguish meaningful modes.
+- Events: named occurrences accepted by the owner.
+- Transition: a pure mapping from current state and accepted event to next state or rejection.
+- Invariants: combinations that must always hold.
+- Effects: commands emitted after a transition, with completion represented as later events.
+- Recovery: explicit events for retry, cancel, rollback, timeout, or reset.
+
+Example trace:
+
+```txt
+idle --submit--> submitting
+submitting --resolved--> accepted
+submitting --rejected--> editable-with-error
+submitting --cancel--> editable
+```
+
+## Opinionated Guidance
+
+Use explicit transitions when booleans can contradict each other, when an event is legal only in some modes, or when async completion must be tied to the request that produced it.
+
+## Platform-Specific Guidance
+
+Reducer, actor, statechart, message-loop, and engine update implementations may encode this method differently. The documented events and invariants remain the portable contract.
+
+## Unsupported Absolutes
+
+Not every toggle needs a formal machine. Use the smallest representation that makes illegal combinations and recovery paths visible.
+
+## Verification Contract
+
+Verify every accepted transition, rejection of illegal events, invariant preservation, effect emission, duplicate completion, stale completion, cancellation, and reset.
+
+## Composition Notes
+
+Compose with [Local Draft State](../ownership/local-draft-state.md) for form workflows and [Optimistic Mutation](../synchronization/optimistic-mutation.md) for provisional remote writes.
+
+## Anti-patterns
+
+- Independent booleans such as `loading`, `success`, and `error` that can all be true.
+- Effects that mutate state without returning through a named event.
+- Completion events that cannot be associated with the request or version they complete.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery pattern.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management Patterns](../index.md).
+Next: [Optimistic Mutation](../synchronization/optimistic-mutation.md).
diff --git a/state-management/recipes/editable-form.md b/state-management/recipes/editable-form.md
new file mode 100644
index 0000000..8152e48
--- /dev/null
+++ b/state-management/recipes/editable-form.md
@@ -0,0 +1,64 @@
+---
+type: State Management Recipe
+title: Editable Form State
+description: Compose an accepted baseline, local draft, submit transitions, and recovery.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+---
+
+# Editable Form State
+
+## Repository Boundary
+
+This recipe owns editable state and submission behavior. Layout owns form structure and scrolling; Design Engineering owns validation presentation and interaction craft; the backend owns acceptance rules and durable data.
+
+## Reusable Method
+
+Recommended pattern stack:
+
+- Essential: [Local Draft State](../patterns/ownership/local-draft-state.md).
+- Essential: [Explicit Transition Model](../patterns/transitions/explicit-transition-model.md) for submit, resolve, reject, retry, discard, and reset.
+- Helper: [Derived State](../patterns/derivation/derived-state.md) for dirty state, client eligibility, summaries, and dependent choices.
+- Substitutable: [Server-State Cache](../patterns/ownership/server-state-cache.md) when the accepted baseline is remotely owned.
+
+Authority map:
+
+```txt
+accepted values -> baseline owner
+incomplete edits -> local draft
+dirty and client eligibility -> derived
+submit lifecycle -> explicit transition model
+server acknowledgement -> accepted baseline update
+```
+
+## Opinionated Guidance
+
+Keep rejected server feedback associated with the submitted version that produced it. Do not erase newer edits when an older submission completes.
+
+## Platform-Specific Guidance
+
+Browser unload prompts, draft restoration, native suspension, and cross-device editing require explicit platform and persistence contracts.
+
+## Unsupported Absolutes
+
+This recipe does not require controlled fields, autosave, global form ownership, or a state-machine library.
+
+## Verification Contract
+
+Verify pristine load, edit, derived dirty state, client-invalid submission, accepted submission, rejected submission, retry, discard, baseline refresh, stale completion, duplicate submission, remount, and any claimed draft restoration.
+
+Rejected alternatives:
+
+- Mutate the server snapshot directly while typing: rejected because incomplete intent becomes indistinguishable from accepted data.
+- Independent writable dirty flag: rejected when it can be derived from baseline and draft.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery recipe.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management Recipes](index.md).
+Next: [Optimistic List](optimistic-list.md).
diff --git a/state-management/recipes/index.md b/state-management/recipes/index.md
new file mode 100644
index 0000000..28d5dc3
--- /dev/null
+++ b/state-management/recipes/index.md
@@ -0,0 +1,40 @@
+# State Management Recipes
+
+## Repository Boundary
+
+Recipes combine state patterns for a user flow. They do not prescribe screen Layout, visual treatment, backend architecture, or a framework package stack.
+
+## Reusable Method
+
+Start with the closest authority and transition model, replace any pattern that does not fit the real lifetime or failure contract, and record rejected alternatives.
+
+- [Search And Filter](search-and-filter.md) combines local input, URL authority, server-owned results, and derived projections.
+- [Editable Form](editable-form.md) combines an accepted baseline, local draft, explicit submit transitions, and recovery.
+- [Optimistic List](optimistic-list.md) combines a server-state cache, provisional mutations, reconciliation, and derived ordering.
+- [Pattern To Recipe Matrix](pattern-to-recipe-matrix.md) records essential, helper, and substitutable roles.
+
+## Opinionated Guidance
+
+Recipes are starting points. Preserve the problem contract and replace patterns instead of copying a whole store shape blindly.
+
+## Platform-Specific Guidance
+
+Navigation, persistence, offline delivery, hydration, suspension, and multi-window behavior remain consuming-platform decisions.
+
+## Unsupported Absolutes
+
+These recipes do not establish universal cache, form, optimistic, or synchronization architecture.
+
+## Verification Contract
+
+Each recipe must name its authorities, pattern roles, write paths, failure and recovery behavior, rejected alternatives, and relevant verification dimensions.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery recipe index.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management](../index.md).
+Next: [Pattern To Recipe Matrix](pattern-to-recipe-matrix.md).
diff --git a/state-management/recipes/optimistic-list.md b/state-management/recipes/optimistic-list.md
new file mode 100644
index 0000000..ab300ad
--- /dev/null
+++ b/state-management/recipes/optimistic-list.md
@@ -0,0 +1,63 @@
+---
+type: State Management Recipe
+title: Optimistic List State
+description: Compose server-owned collection data with provisional mutations and safe reconciliation.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+---
+
+# Optimistic List State
+
+## Repository Boundary
+
+This recipe owns provisional client collection behavior. It does not guarantee backend idempotency, distributed ordering, authorization, destructive-action safety, or list Layout.
+
+## Reusable Method
+
+Recommended pattern stack:
+
+- Essential: [Server-State Cache](../patterns/ownership/server-state-cache.md) for the authoritative collection snapshot.
+- Essential: [Optimistic Mutation](../patterns/synchronization/optimistic-mutation.md) for provisional add, edit, remove, or reorder operations.
+- Helper: [Explicit Transition Model](../patterns/transitions/explicit-transition-model.md) for operation lifecycle and retry.
+- Helper: [Derived State](../patterns/derivation/derived-state.md) for the visible collection projected from snapshot plus pending operations.
+
+Authority map:
+
+```txt
+accepted collection -> server-state cache
+pending user intent -> operation ledger
+visible collection -> derived projection
+acknowledgement or rejection -> reconciliation event
+```
+
+## Opinionated Guidance
+
+Project pending operations over the latest accepted snapshot instead of overwriting the whole cache with an old rollback copy. Give each operation identity sufficient to match acknowledgement, retry, and conflict behavior.
+
+## Platform-Specific Guidance
+
+Offline queues, background sync, process termination, and multiple tabs require stronger durability and coordination than an in-memory optimistic overlay.
+
+## Unsupported Absolutes
+
+Optimism is not suitable for every destructive, financial, permissioned, or irreversible action. Product risk can require explicit pending confirmation.
+
+## Verification Contract
+
+Verify provisional add/edit/remove, acknowledgement, rejection, authoritative correction, out-of-order acknowledgement, duplicate action, refetch during pending work, subsequent edits to the same entity, list reorder, and retry behavior.
+
+Rejected alternatives:
+
+- Whole-cache snapshot rollback: rejected because it can erase unrelated accepted or later changes.
+- Silent failure: rejected because provisional intent needs a visible recovery path when product UI is in scope.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery recipe.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management Recipes](index.md).
+Next: [State Verification Matrix](../guides/verification-matrix.md).
diff --git a/state-management/recipes/pattern-to-recipe-matrix.md b/state-management/recipes/pattern-to-recipe-matrix.md
new file mode 100644
index 0000000..35ba766
--- /dev/null
+++ b/state-management/recipes/pattern-to-recipe-matrix.md
@@ -0,0 +1,63 @@
+---
+type: State Management Matrix
+title: State Pattern To Recipe Matrix
+description: Matrix of pattern roles and substitution risk across State Management recipes.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+---
+
+# State Pattern To Recipe Matrix
+
+## Repository Boundary
+
+This matrix describes State Management composition roles. It does not claim runtime adoption, performance, accessibility, or library compatibility.
+
+## Reusable Method
+
+Legend:
+
+- `E` = essential: replacing it changes the recipe's authority or transition model.
+- `H` = helper: supports a local subproblem without defining the recipe.
+- `S` = substitutable: a documented alternative can fill the same responsibility.
+- `-` = not part of the recommended stack.
+
+| Recipe | Local draft | URL owned | Server cache | Derived state | Explicit transitions | Optimistic mutation |
+| --- | --- | --- | --- | --- | --- | --- |
+| [Search And Filter](search-and-filter.md) | S | E | E | H | - | - |
+| [Editable Form](editable-form.md) | E | - | S | H | E | - |
+| [Optimistic List](optimistic-list.md) | - | - | E | H | H | E |
+
+Substitution risks:
+
+| Recipe | Primary risk |
+| --- | --- |
+| Search And Filter | Replacing URL ownership with an untracked local mirror breaks reload, history, and shareability. |
+| Editable Form | Removing the draft/baseline split can mutate accepted data before commit; removing explicit transitions can admit duplicate or stale completion. |
+| Optimistic List | Removing operation identity or reconciliation can roll back unrelated later work or leave the cache divergent. |
+
+## Opinionated Guidance
+
+An essential slot can still be replaced, but only by another mechanism that preserves the same authority, lifetime, transition, and recovery contract.
+
+## Platform-Specific Guidance
+
+The URL slot is browser-oriented. Other navigation systems may substitute a document or navigation owner if the same reconstruction and history responsibilities are preserved.
+
+## Unsupported Absolutes
+
+Matrix membership does not prove a pattern is required in every product flow with the same label.
+
+## Verification Contract
+
+When substituting a pattern, rerun the recipe's initialization, lifetime, async ordering, and failure cases and document which invariant remains equivalent.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery composition matrix.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management Recipes](index.md).
+Next: [Search And Filter](search-and-filter.md).
diff --git a/state-management/recipes/search-and-filter.md b/state-management/recipes/search-and-filter.md
new file mode 100644
index 0000000..36bb338
--- /dev/null
+++ b/state-management/recipes/search-and-filter.md
@@ -0,0 +1,63 @@
+---
+type: State Management Recipe
+title: Search And Filter State
+description: Compose navigable query state, remote results, and local input for search flows.
+domain: state-management
+lifecycle: experimental
+provenance_kind: local
+---
+
+# Search And Filter State
+
+## Repository Boundary
+
+This recipe owns search-flow state composition. Layout owns result placement and responsive behavior; the backend owns query semantics, ranking, authorization, and canonical result data.
+
+## Reusable Method
+
+Recommended pattern stack:
+
+- Essential: [URL-Owned State](../patterns/ownership/url-owned-state.md) for the committed query, filters, sort, and navigable selection.
+- Essential: [Server-State Cache](../patterns/ownership/server-state-cache.md) keyed by the normalized committed query.
+- Helper: [Derived State](../patterns/derivation/derived-state.md) for counts, grouping, and presentation projections.
+- Substitutable: [Local Draft State](../patterns/ownership/local-draft-state.md) when text should commit only on submit or debounce acknowledgement.
+
+Authority map:
+
+```txt
+committed query and filters -> URL
+uncommitted input -> local draft when needed
+results and freshness -> server-state cache
+visible grouping and counts -> derived state
+```
+
+## Opinionated Guidance
+
+Normalize the committed query once and use the same normalized representation for URL serialization and cache identity. Avoid effects that continuously copy URL values into a second writable store.
+
+## Platform-Specific Guidance
+
+Browser consumers verify direct entry, back, forward, replace-versus-push behavior, and hydration. Non-browser consumers must name the navigation owner that replaces URL authority.
+
+## Unsupported Absolutes
+
+Not every search interaction should navigate on each keystroke, and not every filter is safe or useful to share.
+
+## Verification Contract
+
+Verify direct entry, empty query, malformed filters, changed query key, out-of-order results, cancellation, no results, failure, retry, back/forward, and reload. Long-running older searches must not replace newer results.
+
+Rejected alternatives:
+
+- One global mutable object for draft, committed query, and results: rejected because it hides three authorities and their different lifetimes.
+- Derived filtered results stored independently: rejected unless the server response itself is authoritative for that projection.
+
+## Source, License, And Attribution
+
+- Provenance: locally authored StyleGallery recipe.
+- No upstream source fields apply.
+
+## IA Navigation
+
+Parent: [State Management Recipes](index.md).
+Next: [Editable Form](editable-form.md).