stylegallery 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +156 -0
- package/CATALOG.md +69 -0
- package/DOMAINS.md +65 -0
- package/GOVERNANCE.md +222 -0
- package/GUIDE.md +59 -0
- package/README.md +313 -0
- package/consumer-reference/adapters/style-dictionary.config.mjs +36 -0
- package/consumer-reference/agent-native/README.md +157 -0
- package/consumer-reference/agent-native/registry.json +640 -0
- package/consumer-reference/agent-native/schema/agent-native.schema.json +848 -0
- package/consumer-reference/agent-native/schema/epistemic.schema.json +14 -0
- package/consumer-reference/agent-native/schema/execution.schema.json +12 -0
- package/consumer-reference/agent-native/schema/identity.schema.json +10 -0
- package/consumer-reference/agent-native/schema/learning.schema.json +12 -0
- package/consumer-reference/agent-native/schema/manifest.schema.json +6 -0
- package/consumer-reference/agent-native/schema/operation.schema.json +12 -0
- package/consumer-reference/agent-native/schema/protocol-binding.schema.json +9 -0
- package/consumer-reference/agent-native/schema/retrieval.schema.json +10 -0
- package/consumer-reference/baselines/calibration.json +260 -0
- package/consumer-reference/baselines/manifest.json +21 -0
- package/consumer-reference/contract.md +83 -0
- package/consumer-reference/fixtures/consumer-conformance/e2e-fixture.mjs +282 -0
- package/consumer-reference/fixtures/consumer-conformance/manifest.json +102 -0
- package/consumer-reference/fixtures/consumer-conformance/runtime-proof.mjs +32 -0
- package/consumer-reference/fixtures/consumer-conformance/valid-migration-result.json +18 -0
- package/consumer-reference/fixtures/consumer-conformance/valid-migration.json +142 -0
- package/consumer-reference/fixtures/invalid-stable-ended-support.json +19 -0
- package/consumer-reference/fixtures/promotion/invalid-blocking-evidence.json +26 -0
- package/consumer-reference/fixtures/promotion/invalid-count-only.json +29 -0
- package/consumer-reference/fixtures/promotion/invalid-missing-owner-migration.json +25 -0
- package/consumer-reference/fixtures/promotion/invalid-normative-bypass-no-regression.json +25 -0
- package/consumer-reference/fixtures/promotion/invalid-related-counted-independent.json +45 -0
- package/consumer-reference/fixtures/promotion/invalid-stable-ended-support.json +26 -0
- package/consumer-reference/fixtures/promotion/manifest.json +15 -0
- package/consumer-reference/fixtures/promotion/valid-deferred-example.json +67 -0
- package/consumer-reference/fixtures/promotion/valid-normative-bypass.json +67 -0
- package/consumer-reference/fixtures/token-portability/invalid-cycle.json +7 -0
- package/consumer-reference/fixtures/token-portability/invalid-dangling-alias.json +6 -0
- package/consumer-reference/fixtures/token-portability/invalid-extends.json +4 -0
- package/consumer-reference/fixtures/token-portability/invalid-json-pointer.json +7 -0
- package/consumer-reference/fixtures/token-portability/invalid-resolver.json +9 -0
- package/consumer-reference/fixtures/token-portability/invalid-type-mismatch.json +10 -0
- package/consumer-reference/fixtures/token-portability/invalid-unknown-reserved.json +6 -0
- package/consumer-reference/fixtures/token-portability/invalid-untested-type.json +6 -0
- package/consumer-reference/fixtures/token-portability/valid-border.json +14 -0
- package/consumer-reference/fixtures/token-portability/valid-reference.json +32 -0
- package/consumer-reference/fixtures/token-portability/valid-whole-alias.json +7 -0
- package/consumer-reference/fixtures/valid-deprecated.json +21 -0
- package/consumer-reference/fixtures/valid-experimental.json +19 -0
- package/consumer-reference/generated/manifest.json +40 -0
- package/consumer-reference/generated/tokens.css +12 -0
- package/consumer-reference/index.md +32 -0
- package/consumer-reference/policies/shared-experimental.json +37 -0
- package/consumer-reference/schema/ax-evidence.schema.json +30 -0
- package/consumer-reference/schema/baseline-manifest.schema.json +55 -0
- package/consumer-reference/schema/calibration-record.schema.json +190 -0
- package/consumer-reference/schema/capture-session.schema.json +161 -0
- package/consumer-reference/schema/component-state.schema.json +150 -0
- package/consumer-reference/schema/consumer-conformance-record.schema.json +365 -0
- package/consumer-reference/schema/dom-evidence.schema.json +38 -0
- package/consumer-reference/schema/evidence-record.schema.json +81 -0
- package/consumer-reference/schema/fixture-manifest.schema.json +32 -0
- package/consumer-reference/schema/item.schema.json +188 -0
- package/consumer-reference/schema/page-evidence-manifest.schema.json +216 -0
- package/consumer-reference/schema/page-evidence-session.schema.json +119 -0
- package/consumer-reference/schema/portable-tokens.schema.json +104 -0
- package/consumer-reference/schema/promotion-rfc.schema.json +219 -0
- package/consumer-reference/schema/runtime-evidence-manifest.schema.json +33 -0
- package/consumer-reference/schema/visual-evidence.schema.json +31 -0
- package/design-engineering/consumer-migration-readiness.md +124 -0
- package/design-engineering/index.md +28 -0
- package/design-engineering/interface-craft.md +107 -0
- package/design-engineering/reference-profiles/external-adaptation/index.md +12 -0
- package/design-engineering/reference-profiles/governed-local/editorial/components/button.component.json +125 -0
- package/design-engineering/reference-profiles/governed-local/editorial/evidence/button.evidence.json +3504 -0
- package/design-engineering/reference-profiles/governed-local/editorial/fixtures/button.fixture.json +65 -0
- package/design-engineering/reference-profiles/governed-local/editorial/generated/evidence-coverage.md +23 -0
- package/design-engineering/reference-profiles/governed-local/editorial/generated/keyboard-matrix.md +19 -0
- package/design-engineering/reference-profiles/governed-local/editorial/generated/state-matrix.md +21 -0
- package/design-engineering/reference-profiles/governed-local/editorial/local-foundations.json +12 -0
- package/design-engineering/reference-profiles/governed-local/editorial/profile.json +43 -0
- package/design-engineering/reference-profiles/governed-local/editorial/states/button.states.json +195 -0
- package/design-engineering/reference-profiles/governed-local/editorial/tokens.dtcg.json +17 -0
- package/design-engineering/reference-profiles/governed-local/index.md +26 -0
- package/design-engineering/reference-profiles/governed-local/terminal/components/button.component.json +125 -0
- package/design-engineering/reference-profiles/governed-local/terminal/evidence/button.evidence.json +3504 -0
- package/design-engineering/reference-profiles/governed-local/terminal/fixtures/button.fixture.json +65 -0
- package/design-engineering/reference-profiles/governed-local/terminal/generated/evidence-coverage.md +23 -0
- package/design-engineering/reference-profiles/governed-local/terminal/generated/keyboard-matrix.md +19 -0
- package/design-engineering/reference-profiles/governed-local/terminal/generated/state-matrix.md +21 -0
- package/design-engineering/reference-profiles/governed-local/terminal/local-foundations.json +12 -0
- package/design-engineering/reference-profiles/governed-local/terminal/profile.json +43 -0
- package/design-engineering/reference-profiles/governed-local/terminal/states/button.states.json +195 -0
- package/design-engineering/reference-profiles/governed-local/terminal/tokens.dtcg.json +17 -0
- package/design-engineering/reference-profiles/index.md +19 -0
- package/game-ui/classification.md +82 -0
- package/game-ui/index.md +35 -0
- package/game-ui/reference-record.md +62 -0
- package/game-ui/screen-hierarchy.md +107 -0
- package/game-ui/unity/architecture.md +166 -0
- package/game-ui/unity/cli-loop.md +84 -0
- package/game-ui/unity/data/unity-technologies-public-repositories.json +26654 -0
- package/game-ui/unity/org-wiki.md +146 -0
- package/game-ui/unity/repository-map.md +102 -0
- package/game-ui/unity/ui-systems.md +85 -0
- package/guides/decision-tree.md +149 -0
- package/guides/documentation-mode-taxonomy.md +157 -0
- package/guides/layout-brief.md +220 -0
- package/guides/vocabulary.md +148 -0
- package/guides/webpage-generation-workflow.md +185 -0
- package/index.md +36 -0
- package/layout/index.md +26 -0
- package/motion/index.md +24 -0
- package/motion/practice-reference.md +145 -0
- package/motion/review-workflow.md +86 -0
- package/motion/vocabulary.md +82 -0
- package/package.json +78 -0
- package/patterns/centering/center.md +87 -0
- package/patterns/centering/index.md +6 -0
- package/patterns/centering/super-center.md +89 -0
- package/patterns/containment/box.md +87 -0
- package/patterns/containment/clamped-card.md +86 -0
- package/patterns/containment/content-limiter.md +87 -0
- package/patterns/containment/fluid-styles.md +86 -0
- package/patterns/containment/index.md +8 -0
- package/patterns/grid-repetition/card-grid.md +88 -0
- package/patterns/grid-repetition/columns.md +87 -0
- package/patterns/grid-repetition/dense-grid.md +88 -0
- package/patterns/grid-repetition/grid-wrapper.md +89 -0
- package/patterns/grid-repetition/index.md +12 -0
- package/patterns/grid-repetition/masonry-approx.md +87 -0
- package/patterns/grid-repetition/page-grid.md +90 -0
- package/patterns/grid-repetition/ram-grid.md +88 -0
- package/patterns/grid-repetition/twelve-span-grid.md +92 -0
- package/patterns/in-line-grouping/badge-list.md +94 -0
- package/patterns/in-line-grouping/breadcrumb.md +89 -0
- package/patterns/in-line-grouping/cluster.md +89 -0
- package/patterns/in-line-grouping/deconstructed-pancake.md +92 -0
- package/patterns/in-line-grouping/index.md +13 -0
- package/patterns/in-line-grouping/pagination.md +89 -0
- package/patterns/in-line-grouping/reel.md +90 -0
- package/patterns/in-line-grouping/split-nav.md +97 -0
- package/patterns/in-line-grouping/tab-strip.md +88 -0
- package/patterns/in-line-grouping/wrap-row.md +89 -0
- package/patterns/index.md +13 -0
- package/patterns/media-fit/frame.md +95 -0
- package/patterns/media-fit/icon-frame.md +87 -0
- package/patterns/media-fit/index.md +6 -0
- package/patterns/overlay-exception/imposter.md +95 -0
- package/patterns/overlay-exception/index.md +6 -0
- package/patterns/overlay-exception/overlay-stack.md +89 -0
- package/patterns/split-sidebar/index.md +12 -0
- package/patterns/split-sidebar/list-detail.md +95 -0
- package/patterns/split-sidebar/main-with-rail.md +95 -0
- package/patterns/split-sidebar/media-object.md +102 -0
- package/patterns/split-sidebar/sidebar.md +101 -0
- package/patterns/split-sidebar/split-screen.md +92 -0
- package/patterns/split-sidebar/sticky-aside.md +97 -0
- package/patterns/split-sidebar/supporting-pane.md +95 -0
- package/patterns/split-sidebar/switcher.md +93 -0
- package/patterns/stacking/feed.md +88 -0
- package/patterns/stacking/index.md +8 -0
- package/patterns/stacking/line-up.md +95 -0
- package/patterns/stacking/stack.md +87 -0
- package/patterns/stacking/step-nav.md +88 -0
- package/patterns/viewport-shell/cover.md +90 -0
- package/patterns/viewport-shell/fixed-sidenav-shell.md +97 -0
- package/patterns/viewport-shell/holy-grail.md +112 -0
- package/patterns/viewport-shell/index.md +11 -0
- package/patterns/viewport-shell/panel-layout.md +95 -0
- package/patterns/viewport-shell/scroll-body-shell.md +93 -0
- package/patterns/viewport-shell/sticky-footer.md +92 -0
- package/patterns/viewport-shell/sticky-header.md +86 -0
- package/platform-guides/apple-interaction.md +89 -0
- package/platform-guides/index.md +26 -0
- package/quality/claim-records/index.md +3 -0
- package/quality/claim-records/samples.md +92 -0
- package/quality/claim-records/stylegallery-multidomain-scope.md +42 -0
- package/quality/claims.md +77 -0
- package/quality/evidence/accessibility.md +58 -0
- package/quality/evidence/consumer-migration.md +42 -0
- package/quality/evidence/design-rationale.md +34 -0
- package/quality/evidence/executable-evidence.md +79 -0
- package/quality/evidence/families.md +56 -0
- package/quality/evidence/hci-evaluation.md +36 -0
- package/quality/evidence/index.md +16 -0
- package/quality/evidence/pattern-contract-audit.md +96 -0
- package/quality/evidence/search-metadata-polyhierarchy.md +86 -0
- package/quality/evidence/sources.md +43 -0
- package/quality/evidence/tokens.md +33 -0
- package/quality/evidence/visual-qa.md +41 -0
- package/quality/gates/accessibility-evidence.md +60 -0
- package/quality/gates/consumer-migration-evidence.md +53 -0
- package/quality/gates/design-claim.md +56 -0
- package/quality/gates/harmony-evaluation.md +78 -0
- package/quality/gates/index.md +13 -0
- package/quality/gates/layout.md +52 -0
- package/quality/gates/rationale.md +53 -0
- package/quality/gates/visual-evidence.md +47 -0
- package/quality/index.md +55 -0
- package/quality/principles.md +58 -0
- package/recipes/article-page.md +52 -0
- package/recipes/command-surface.md +55 -0
- package/recipes/dashboard.md +56 -0
- package/recipes/form-flow.md +55 -0
- package/recipes/homepage.md +89 -0
- package/recipes/index.md +13 -0
- package/recipes/list-detail.md +55 -0
- package/recipes/primitive-to-recipe-matrix.md +83 -0
- package/recipes/saas-settings.md +52 -0
- package/scripts/agent-native/a2a-projection.mjs +248 -0
- package/scripts/agent-native/agui-projection.mjs +178 -0
- package/scripts/agent-native/canonical-json.mjs +109 -0
- package/scripts/agent-native/cli-adapter.mjs +68 -0
- package/scripts/agent-native/events.mjs +113 -0
- package/scripts/agent-native/execution.mjs +227 -0
- package/scripts/agent-native/fixture.mjs +159 -0
- package/scripts/agent-native/identity.mjs +184 -0
- package/scripts/agent-native/immutable-store.mjs +102 -0
- package/scripts/agent-native/knowledge.mjs +168 -0
- package/scripts/agent-native/learning-records.mjs +244 -0
- package/scripts/agent-native/learning.mjs +247 -0
- package/scripts/agent-native/mcp-adapter.mjs +173 -0
- package/scripts/agent-native/queries.mjs +173 -0
- package/scripts/agent-native/registry.mjs +154 -0
- package/scripts/agent-native/retrieval.mjs +171 -0
- package/scripts/agent-native/self-description.mjs +160 -0
- package/scripts/artifact-metadata.mjs +20 -0
- package/scripts/audit-evidence-freshness.mjs +308 -0
- package/scripts/baseline-contract.mjs +189 -0
- package/scripts/baseline-schema-parity.mjs +40 -0
- package/scripts/build-reference-artifacts.mjs +127 -0
- package/scripts/calibration-raw-contract.mjs +172 -0
- package/scripts/capture-session-contract.mjs +187 -0
- package/scripts/component-state-artifact-fixture.mjs +44 -0
- package/scripts/component-state-contract.mjs +99 -0
- package/scripts/component-state-semantics.mjs +128 -0
- package/scripts/component-state-workflow-contract.mjs +67 -0
- package/scripts/component-state-workflow-negative-cases.mjs +64 -0
- package/scripts/consumer-conformance-contract.mjs +198 -0
- package/scripts/consumer-evidence-governance-contract.mjs +210 -0
- package/scripts/consumer-reference-case-runner.mjs +93 -0
- package/scripts/consumer-reference-schema.mjs +155 -0
- package/scripts/create-component-state-session.mjs +100 -0
- package/scripts/create-page-evidence-session.mjs +139 -0
- package/scripts/domain-document-boundaries.mjs +40 -0
- package/scripts/domain-validation-checks.mjs +141 -0
- package/scripts/evidence-artifact-contract.mjs +191 -0
- package/scripts/finalize-component-state-evidence.mjs +165 -0
- package/scripts/finalize-page-evidence.mjs +197 -0
- package/scripts/generate-consumer-reference-evidence.mjs +154 -0
- package/scripts/generate-patterns.mjs +218 -0
- package/scripts/governance-matrix-contract.mjs +73 -0
- package/scripts/governance-matrix-negative-cases.mjs +114 -0
- package/scripts/governance-policy-contract.mjs +49 -0
- package/scripts/governance-test-fixture.mjs +321 -0
- package/scripts/governance-workflow-negative-cases.mjs +241 -0
- package/scripts/governed-profile-registry.mjs +125 -0
- package/scripts/json-schema-formats.mjs +31 -0
- package/scripts/markdown-structure.mjs +45 -0
- package/scripts/page-artifact-metadata.mjs +124 -0
- package/scripts/page-evidence-contract.mjs +297 -0
- package/scripts/page-evidence-fixture.mjs +271 -0
- package/scripts/pattern-data.mjs +325 -0
- package/scripts/profile-record-contract.mjs +140 -0
- package/scripts/promotion-attestation-contract.mjs +91 -0
- package/scripts/promotion-boundary-test-contract.mjs +92 -0
- package/scripts/promotion-fixture-inventory.mjs +109 -0
- package/scripts/promotion-governance-contract.mjs +28 -0
- package/scripts/reference-artifact-path-contract.mjs +28 -0
- package/scripts/reference-profile-contract.mjs +114 -0
- package/scripts/reference-token-contract.mjs +156 -0
- package/scripts/run-consumer-page-evidence-ci.mjs +170 -0
- package/scripts/sg-mcp.mjs +16 -0
- package/scripts/sg.mjs +27 -0
- package/scripts/strict-json.mjs +72 -0
- package/scripts/summarize-sentinel-calibration.mjs +98 -0
- package/scripts/test-agent-adapter-conformance.mjs +250 -0
- package/scripts/test-agent-conformance-receipt.mjs +106 -0
- package/scripts/test-agent-events.mjs +81 -0
- package/scripts/test-agent-execution-effects.mjs +114 -0
- package/scripts/test-agent-execution-fixtures.mjs +140 -0
- package/scripts/test-agent-execution-kernel.mjs +39 -0
- package/scripts/test-agent-execution-learning.mjs +130 -0
- package/scripts/test-agent-execution-lifecycle.mjs +143 -0
- package/scripts/test-agent-execution-safety.mjs +158 -0
- package/scripts/test-agent-execution-views.mjs +117 -0
- package/scripts/test-agent-identity-integrity-cases.mjs +160 -0
- package/scripts/test-agent-knowledge-kernel.mjs +183 -0
- package/scripts/test-agent-learning.mjs +246 -0
- package/scripts/test-agent-mcp.mjs +246 -0
- package/scripts/test-agent-native-schemas.mjs +215 -0
- package/scripts/test-agent-projections.mjs +249 -0
- package/scripts/test-agent-registry-mcp-integrity.mjs +215 -0
- package/scripts/test-agent-registry-mutations.mjs +110 -0
- package/scripts/test-audit-evidence-freshness.mjs +177 -0
- package/scripts/test-component-state-sentinel.mjs +35 -0
- package/scripts/test-component-state-source-contract.mjs +83 -0
- package/scripts/test-consumer-conformance-sentinel.mjs +165 -0
- package/scripts/test-consumer-reference-sentinel.mjs +31 -0
- package/scripts/test-generate-consumer-reference-evidence.mjs +124 -0
- package/scripts/test-json-cli-output.mjs +151 -0
- package/scripts/test-json-schema-formats.mjs +40 -0
- package/scripts/test-reference-adapters.mjs +199 -0
- package/scripts/test-renderer-purity.mjs +34 -0
- package/scripts/test-sg-cli.mjs +129 -0
- package/scripts/test-summarize-sentinel-calibration.mjs +226 -0
- package/scripts/test-validate-baseline-manifest.mjs +234 -0
- package/scripts/test-validate-component-state-artifacts.mjs +243 -0
- package/scripts/test-validate-component-state.mjs +106 -0
- package/scripts/test-validate-consumer-conformance.mjs +427 -0
- package/scripts/test-validate-consumer-reference-cli.mjs +69 -0
- package/scripts/test-validate-consumer-reference.mjs +263 -0
- package/scripts/test-validate-domains.mjs +357 -0
- package/scripts/test-validate-governance.mjs +292 -0
- package/scripts/test-validate-ia.mjs +262 -0
- package/scripts/test-validate-okf.mjs +73 -0
- package/scripts/test-validate-page-evidence.mjs +302 -0
- package/scripts/test-validate-patterns.mjs +157 -0
- package/scripts/test-validate-promotion-rfc.mjs +250 -0
- package/scripts/test-validate-reference-profiles.mjs +170 -0
- package/scripts/test-validate-unity-org-wiki.mjs +57 -0
- package/scripts/test-validate-unity-source-contracts.mjs +67 -0
- package/scripts/test-validate-vocabulary.mjs +174 -0
- package/scripts/test-validate-webpage-workflow.mjs +293 -0
- package/scripts/validate-baseline-manifest.mjs +44 -0
- package/scripts/validate-catalog.mjs +65 -0
- package/scripts/validate-component-state.mjs +141 -0
- package/scripts/validate-consumer-conformance.mjs +477 -0
- package/scripts/validate-consumer-reference.mjs +288 -0
- package/scripts/validate-domains.mjs +237 -0
- package/scripts/validate-governance.mjs +248 -0
- package/scripts/validate-ia.mjs +136 -0
- package/scripts/validate-links.mjs +66 -0
- package/scripts/validate-okf.mjs +104 -0
- package/scripts/validate-page-evidence.mjs +191 -0
- package/scripts/validate-patterns.mjs +246 -0
- package/scripts/validate-promotion-rfc.mjs +224 -0
- package/scripts/validate-reference-artifacts.mjs +125 -0
- package/scripts/validate-renderer-purity.mjs +56 -0
- package/scripts/validate-unity-org-wiki.mjs +146 -0
- package/scripts/validate-unity-source-contracts.mjs +107 -0
- package/scripts/validate-vocabulary.mjs +115 -0
- package/scripts/validate-webpage-workflow.mjs +254 -0
- package/scripts/visual-expectation-contract.mjs +20 -0
- package/scripts/workflow-action-contract.mjs +163 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$defs": {
|
|
3
|
+
"attestation": {
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"properties": {
|
|
6
|
+
"attested_by": { "minLength": 1, "type": "string" },
|
|
7
|
+
"context_id": { "$ref": "#/$defs/slug" },
|
|
8
|
+
"consumer_id": { "$ref": "#/$defs/slug" },
|
|
9
|
+
"count_toward_gate": { "type": "boolean" },
|
|
10
|
+
"organization_id": { "$ref": "#/$defs/slug" },
|
|
11
|
+
"profile_record": {
|
|
12
|
+
"pattern": "^(?!/)(?!.*//)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?![A-Za-z][A-Za-z0-9+.-]*:)[^\\\\?#]+\\.json$",
|
|
13
|
+
"type": "string"
|
|
14
|
+
},
|
|
15
|
+
"relationship": { "enum": ["independent", "related"] }
|
|
16
|
+
},
|
|
17
|
+
"required": ["attested_by", "context_id", "consumer_id", "count_toward_gate", "organization_id", "relationship"],
|
|
18
|
+
"type": "object"
|
|
19
|
+
},
|
|
20
|
+
"evidence": {
|
|
21
|
+
"additionalProperties": false,
|
|
22
|
+
"properties": {
|
|
23
|
+
"id": { "$ref": "#/$defs/slug" },
|
|
24
|
+
"kind": { "enum": ["blocking", "claim_scoped", "regression"] },
|
|
25
|
+
"reference": { "minLength": 1, "type": "string" },
|
|
26
|
+
"status": { "enum": ["failed", "passed"] }
|
|
27
|
+
},
|
|
28
|
+
"required": ["id", "kind", "reference", "status"],
|
|
29
|
+
"type": "object"
|
|
30
|
+
},
|
|
31
|
+
"slug": {
|
|
32
|
+
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
|
|
33
|
+
"type": "string"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"$id": "https://stylegallery.example/consumer-reference/schema/promotion-rfc.schema.json",
|
|
37
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"allOf": [
|
|
40
|
+
{
|
|
41
|
+
"if": {
|
|
42
|
+
"properties": { "transition": { "properties": { "to": { "const": "stable" } }, "required": ["to"], "type": "object" } },
|
|
43
|
+
"required": ["transition"]
|
|
44
|
+
},
|
|
45
|
+
"then": {
|
|
46
|
+
"properties": {
|
|
47
|
+
"provenance": { "properties": { "debt_resolved": { "const": true } }, "required": ["debt_resolved"], "type": "object" },
|
|
48
|
+
"stable_scope_decision": { "const": true },
|
|
49
|
+
"support": { "properties": { "status": { "const": "active" } }, "required": ["status"], "type": "object" },
|
|
50
|
+
"evidence": {
|
|
51
|
+
"allOf": [
|
|
52
|
+
{ "contains": { "properties": { "kind": { "const": "claim_scoped" }, "status": { "const": "passed" } }, "required": ["kind", "status"], "type": "object" } },
|
|
53
|
+
{ "contains": { "properties": { "kind": { "const": "regression" }, "status": { "const": "passed" } }, "required": ["kind", "status"], "type": "object" } }
|
|
54
|
+
],
|
|
55
|
+
"type": "array"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"if": { "properties": { "normative_bypass": { "const": "normative_correctness" } }, "required": ["normative_bypass"] },
|
|
62
|
+
"then": { "properties": { "scope": { "properties": { "kind": { "const": "normative_correctness" } }, "required": ["kind"], "type": "object" } } }
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"if": { "properties": { "compatibility": { "properties": { "breaking": { "const": true } }, "required": ["breaking"], "type": "object" } }, "required": ["compatibility"] },
|
|
66
|
+
"then": { "properties": { "migration": { "properties": { "required": { "const": true } }, "required": ["required"], "type": "object" } } }
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"properties": {
|
|
70
|
+
"attestations": {
|
|
71
|
+
"items": { "$ref": "#/$defs/attestation" },
|
|
72
|
+
"type": "array"
|
|
73
|
+
},
|
|
74
|
+
"compatibility": {
|
|
75
|
+
"additionalProperties": false,
|
|
76
|
+
"properties": {
|
|
77
|
+
"breaking": { "type": "boolean" },
|
|
78
|
+
"surface": { "minLength": 1, "type": "string" }
|
|
79
|
+
},
|
|
80
|
+
"required": ["breaking", "surface"],
|
|
81
|
+
"type": "object"
|
|
82
|
+
},
|
|
83
|
+
"decision": { "enum": ["deferred", "rejected"] },
|
|
84
|
+
"deprecation": {
|
|
85
|
+
"additionalProperties": false,
|
|
86
|
+
"properties": {
|
|
87
|
+
"plan": { "minLength": 1, "type": "string" },
|
|
88
|
+
"required": { "type": "boolean" }
|
|
89
|
+
},
|
|
90
|
+
"required": ["plan", "required"],
|
|
91
|
+
"type": "object"
|
|
92
|
+
},
|
|
93
|
+
"eligibility_basis": { "const": "full_contract" },
|
|
94
|
+
"evidence": {
|
|
95
|
+
"items": { "$ref": "#/$defs/evidence" },
|
|
96
|
+
"minItems": 1,
|
|
97
|
+
"type": "array"
|
|
98
|
+
},
|
|
99
|
+
"example_only": { "const": true },
|
|
100
|
+
"exceptions": {
|
|
101
|
+
"items": { "minLength": 1, "type": "string" },
|
|
102
|
+
"type": "array"
|
|
103
|
+
},
|
|
104
|
+
"id": { "$ref": "#/$defs/slug" },
|
|
105
|
+
"known_issues": {
|
|
106
|
+
"items": { "minLength": 1, "type": "string" },
|
|
107
|
+
"type": "array"
|
|
108
|
+
},
|
|
109
|
+
"migration": {
|
|
110
|
+
"additionalProperties": false,
|
|
111
|
+
"properties": {
|
|
112
|
+
"plan": { "minLength": 1, "type": "string" },
|
|
113
|
+
"required": { "type": "boolean" }
|
|
114
|
+
},
|
|
115
|
+
"required": ["plan", "required"],
|
|
116
|
+
"type": "object"
|
|
117
|
+
},
|
|
118
|
+
"normative_bypass": { "enum": ["none", "normative_correctness"] },
|
|
119
|
+
"owner": {
|
|
120
|
+
"additionalProperties": false,
|
|
121
|
+
"properties": {
|
|
122
|
+
"enforcement": { "const": "placeholder" },
|
|
123
|
+
"migration": { "minLength": 1, "type": "string" },
|
|
124
|
+
"rollback": { "minLength": 1, "type": "string" },
|
|
125
|
+
"scope": { "minLength": 1, "type": "string" },
|
|
126
|
+
"support": { "minLength": 1, "type": "string" }
|
|
127
|
+
},
|
|
128
|
+
"required": ["enforcement", "migration", "rollback", "scope", "support"],
|
|
129
|
+
"type": "object"
|
|
130
|
+
},
|
|
131
|
+
"provenance": {
|
|
132
|
+
"additionalProperties": false,
|
|
133
|
+
"properties": {
|
|
134
|
+
"debt_resolved": { "type": "boolean" },
|
|
135
|
+
"source": { "minLength": 1, "type": "string" }
|
|
136
|
+
},
|
|
137
|
+
"required": ["debt_resolved", "source"],
|
|
138
|
+
"type": "object"
|
|
139
|
+
},
|
|
140
|
+
"review_independence": { "const": "single_account" },
|
|
141
|
+
"rollback": {
|
|
142
|
+
"additionalProperties": false,
|
|
143
|
+
"properties": {
|
|
144
|
+
"action": { "minLength": 1, "type": "string" },
|
|
145
|
+
"triggers": {
|
|
146
|
+
"items": { "minLength": 1, "type": "string" },
|
|
147
|
+
"minItems": 1,
|
|
148
|
+
"type": "array"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"required": ["action", "triggers"],
|
|
152
|
+
"type": "object"
|
|
153
|
+
},
|
|
154
|
+
"schema_version": { "const": "1.0" },
|
|
155
|
+
"scope": {
|
|
156
|
+
"additionalProperties": false,
|
|
157
|
+
"properties": {
|
|
158
|
+
"aesthetic": { "const": false },
|
|
159
|
+
"kind": { "enum": ["invariant", "normative_correctness"] },
|
|
160
|
+
"summary": { "minLength": 1, "type": "string" }
|
|
161
|
+
},
|
|
162
|
+
"required": ["aesthetic", "kind", "summary"],
|
|
163
|
+
"type": "object"
|
|
164
|
+
},
|
|
165
|
+
"stable_scope_decision": { "type": "boolean" },
|
|
166
|
+
"support": {
|
|
167
|
+
"additionalProperties": false,
|
|
168
|
+
"properties": {
|
|
169
|
+
"capacity": { "const": "committed" },
|
|
170
|
+
"status": { "const": "active" }
|
|
171
|
+
},
|
|
172
|
+
"required": ["capacity", "status"],
|
|
173
|
+
"type": "object"
|
|
174
|
+
},
|
|
175
|
+
"transition": {
|
|
176
|
+
"additionalProperties": false,
|
|
177
|
+
"oneOf": [
|
|
178
|
+
{
|
|
179
|
+
"properties": { "from": { "const": "consumer_local" }, "to": { "const": "shared_experimental" } },
|
|
180
|
+
"required": ["from", "to"]
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"properties": { "from": { "const": "shared_experimental" }, "to": { "const": "stable" } },
|
|
184
|
+
"required": ["from", "to"]
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
"properties": {
|
|
188
|
+
"from": { "enum": ["consumer_local", "shared_experimental", "stable"] },
|
|
189
|
+
"to": { "enum": ["shared_experimental", "stable"] }
|
|
190
|
+
},
|
|
191
|
+
"required": ["from", "to"],
|
|
192
|
+
"type": "object"
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"required": [
|
|
196
|
+
"attestations",
|
|
197
|
+
"compatibility",
|
|
198
|
+
"decision",
|
|
199
|
+
"deprecation",
|
|
200
|
+
"eligibility_basis",
|
|
201
|
+
"evidence",
|
|
202
|
+
"example_only",
|
|
203
|
+
"exceptions",
|
|
204
|
+
"id",
|
|
205
|
+
"known_issues",
|
|
206
|
+
"migration",
|
|
207
|
+
"normative_bypass",
|
|
208
|
+
"owner",
|
|
209
|
+
"provenance",
|
|
210
|
+
"review_independence",
|
|
211
|
+
"rollback",
|
|
212
|
+
"schema_version",
|
|
213
|
+
"scope",
|
|
214
|
+
"stable_scope_decision",
|
|
215
|
+
"support",
|
|
216
|
+
"transition"
|
|
217
|
+
],
|
|
218
|
+
"type": "object"
|
|
219
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://stylegallery.local/consumer-reference/schema/runtime-evidence-manifest.schema.json",
|
|
4
|
+
"title": "Closed component-state runtime evidence manifest",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema_version", "record_kind", "claim_boundary", "recorded_at", "environment", "run", "session", "records"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema_version": { "const": "1.0" },
|
|
10
|
+
"record_kind": { "const": "component_state_runtime_manifest" },
|
|
11
|
+
"claim_boundary": { "const": "Scenario artifacts are evidence, not visual regression baselines or accessibility certification." },
|
|
12
|
+
"recorded_at": { "type": "string", "format": "date-time" },
|
|
13
|
+
"environment": { "$ref": "https://stylegallery.local/consumer-reference/schema/capture-session.schema.json#/$defs/environment" },
|
|
14
|
+
"run": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"additionalProperties": false,
|
|
17
|
+
"required": ["id", "source", "repository", "revision", "attempt"],
|
|
18
|
+
"properties": {
|
|
19
|
+
"id": { "type": "string", "minLength": 1 },
|
|
20
|
+
"source": { "enum": ["local", "github_actions"] },
|
|
21
|
+
"repository": { "type": "string", "minLength": 1 },
|
|
22
|
+
"revision": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
|
|
23
|
+
"attempt": { "type": "integer", "minimum": 1 }
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"session": { "$ref": "https://stylegallery.local/consumer-reference/schema/capture-session.schema.json#/$defs/completed_session" },
|
|
27
|
+
"records": {
|
|
28
|
+
"type": "array",
|
|
29
|
+
"minItems": 1,
|
|
30
|
+
"items": { "$ref": "https://stylegallery.local/consumer-reference/schema/evidence-record.schema.json" }
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://stylegallery.local/consumer-reference/schema/visual-evidence.schema.json",
|
|
4
|
+
"title": "Browser-authored visual capture metadata",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema_version", "channel", "capture_session", "captured_at", "profile_id", "scenario_id", "semantic_mode", "source_sha256", "image"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema_version": { "const": "1.0" },
|
|
10
|
+
"channel": { "const": "visual" },
|
|
11
|
+
"capture_session": { "$ref": "https://stylegallery.local/consumer-reference/schema/capture-session.schema.json#/$defs/session_link" },
|
|
12
|
+
"captured_at": { "type": "string", "format": "date-time" },
|
|
13
|
+
"profile_id": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
|
|
14
|
+
"scenario_id": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
|
|
15
|
+
"semantic_mode": { "enum": ["action", "toggle", "disclosure", "switch"] },
|
|
16
|
+
"source_sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
17
|
+
"image": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"additionalProperties": false,
|
|
20
|
+
"required": ["path", "sha256", "byte_length", "media_type", "width", "height"],
|
|
21
|
+
"properties": {
|
|
22
|
+
"path": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*\\.png$" },
|
|
23
|
+
"sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
24
|
+
"byte_length": { "type": "integer", "minimum": 1 },
|
|
25
|
+
"media_type": { "const": "image/png" },
|
|
26
|
+
"width": { "type": "integer", "minimum": 44 },
|
|
27
|
+
"height": { "type": "integer", "minimum": 44 }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Domain Guide
|
|
3
|
+
title: Consumer Migration Readiness
|
|
4
|
+
description: Evidence-bound method for deciding whether a consumer migration preserves its declared behavior.
|
|
5
|
+
domain: design-engineering
|
|
6
|
+
lifecycle: experimental
|
|
7
|
+
provenance_kind: local
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Consumer Migration Readiness
|
|
11
|
+
|
|
12
|
+
Use this method only when an existing consumer is being migrated and its behavior must remain demonstrably equivalent. It turns migration intent into a consumer-owned conformance record and executable page evidence without making StyleGallery the owner of product code or visual values.
|
|
13
|
+
|
|
14
|
+
## Repository Boundary
|
|
15
|
+
|
|
16
|
+
The consuming repository owns its conformance record, source paths, runtime scenarios, evidence artifacts, adoption mappings, deviations, debt, and approval decision. StyleGallery supplies an experimental method, closed schemas, and validators. It does not certify the consumer, define product defaults, or turn a local adoption into a shared standard.
|
|
17
|
+
|
|
18
|
+
Ordinary implementation handoffs remain unchanged and may use `Consumer reference: not_applicable` with a sentence reason. Only a migration handoff that elects this method adds `Consumer migration conformance: declared` and one normalized repository-relative JSON record path.
|
|
19
|
+
|
|
20
|
+
## Reusable Method
|
|
21
|
+
|
|
22
|
+
1. Inventory the old and new consumer behavior before changing implementation.
|
|
23
|
+
2. Create one consumer-local record using the [consumer conformance schema](../consumer-reference/schema/consumer-conformance-record.schema.json).
|
|
24
|
+
3. Explicitly classify every migration dimension as `applicable` with runtime scenario IDs or `not_applicable` with a sentence reason.
|
|
25
|
+
4. Map each adopted StyleGallery source anchor to a concrete local component, selector, or module plus its local decision, deviations, debt, and scenario IDs.
|
|
26
|
+
5. Execute the named unit, integration, or browser command. A prose checklist, screenshot, or generated fixture alone is not runtime proof.
|
|
27
|
+
6. For page work, create one source-bound evidence session, execute the browser matrix, finalize the manifest, and validate the completed session against the conformance record.
|
|
28
|
+
7. Review the [consumer migration evidence gate](../quality/gates/consumer-migration-evidence.md). Block migration when required evidence is missing, stale, cross-session, source-drifted, or failed.
|
|
29
|
+
|
|
30
|
+
## Migration Dimension Contract
|
|
31
|
+
|
|
32
|
+
The record must classify exactly these thirteen dimensions:
|
|
33
|
+
|
|
34
|
+
| Dimension | What the consumer must preserve or explicitly exclude |
|
|
35
|
+
| --- | --- |
|
|
36
|
+
| `behavior_inventory` | The complete named behavior surface being migrated. |
|
|
37
|
+
| `route_parity` | Routes, entry points, and navigation outcomes. |
|
|
38
|
+
| `field_parity` | Accepted fields, output fields, validation, and serialization. |
|
|
39
|
+
| `action_parity` | User and programmatic actions plus observable outcomes. |
|
|
40
|
+
| `state_transitions` | Allowed state changes, guards, and terminal states. |
|
|
41
|
+
| `contract_precedence` | Which rule wins when old, new, and local contracts conflict. |
|
|
42
|
+
| `direct_mutation` | Effects of direct state or model mutation. |
|
|
43
|
+
| `indirect_mutation` | Effects reached through events, adapters, or dependent modules. |
|
|
44
|
+
| `persistence_round_trip` | Save, reload, serialization, and restoration behavior. |
|
|
45
|
+
| `reset_boundary` | What reset clears, preserves, and returns to defaults. |
|
|
46
|
+
| `exact_time_boundary` | Inclusive or exclusive timing behavior at exact boundaries. |
|
|
47
|
+
| `defaults_tri_state_mapping` | Mapping among absent, explicit default, and explicit non-default values. |
|
|
48
|
+
| `atomic_batch_behavior` | All-or-nothing behavior, ordering, and rollback for grouped changes. |
|
|
49
|
+
|
|
50
|
+
An `applicable` dimension references at least one declared runtime scenario. A `not_applicable` dimension includes a concrete sentence reason. Silence is never a classification.
|
|
51
|
+
|
|
52
|
+
## Opinionated Guidance
|
|
53
|
+
|
|
54
|
+
- Prefer the smallest scenario that proves an observable outcome over broad internal coverage.
|
|
55
|
+
- Pin both the consumer revision and each adopted StyleGallery revision; a branch name or moving tag is insufficient.
|
|
56
|
+
- Record local deviations honestly. Conformance means the declared boundary is internally consistent, not that every StyleGallery suggestion was copied.
|
|
57
|
+
- Treat expired debt as a decision trigger. Do not rewrite evidence timestamps to make a stale review appear current.
|
|
58
|
+
- Keep page evidence tied to the exact source inventory and browser run that produced it.
|
|
59
|
+
|
|
60
|
+
## Platform-Specific Guidance
|
|
61
|
+
|
|
62
|
+
Browser page evidence uses the required viewport set `320`, `375`, `768`, `1024`, and `1440` pixels plus the declared container, content, state, overlay, and page-scale cases. Platform-specific raster identity may supplement computed assertions, but it cannot replace semantic, focus, overflow, or contrast checks and cannot imply cross-platform pixel equivalence.
|
|
63
|
+
|
|
64
|
+
## Unsupported Absolutes
|
|
65
|
+
|
|
66
|
+
Passing this method does not prove complete accessibility, product correctness, usability, visual quality, independent adoption, cross-browser equivalence, or owner approval. Synthetic fixtures prove validator behavior only. A pinned revision proves source identity, not source authority or consumer suitability.
|
|
67
|
+
|
|
68
|
+
## Verification Contract
|
|
69
|
+
|
|
70
|
+
The minimum verification chain is:
|
|
71
|
+
|
|
72
|
+
```txt
|
|
73
|
+
consumer source inventory
|
|
74
|
+
-> conformance record with 13 explicit classifications
|
|
75
|
+
-> executable scenarios with zero exit and result artifacts
|
|
76
|
+
-> adoption mappings with pinned StyleGallery anchors
|
|
77
|
+
-> optional source-bound page-evidence manifest
|
|
78
|
+
-> consumer migration evidence gate decision
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Validate a record without applicable page evidence directly:
|
|
82
|
+
|
|
83
|
+
```sh
|
|
84
|
+
node <stylegallery-root>/scripts/validate-consumer-conformance.mjs \
|
|
85
|
+
--root <consumer-root> \
|
|
86
|
+
--record <record.json> \
|
|
87
|
+
--json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Unit and integration scenarios declare a shell-free Node `argv` array beginning with `node`. The validator checks out the exact consumer revision in an isolated worktree, enables Node's permission model without child-process, worker, native-addon, or WASI grants, supplies only `PATH`, `CI=1`, deterministic locale flags, `STYLEGALLERY_RESULT_ARTIFACT`, and `STYLEGALLERY_RUNTIME_CONTEXT`, and requires the command to create that result artifact during the run. Commands may read and write only inside the isolated checkout, must be self-contained at the pinned revision, and cannot override the governed permission flags. The validator does not reuse the caller's `node_modules` or forward caller secrets.
|
|
91
|
+
|
|
92
|
+
When `page_evidence.status` is `applicable`, use one artifact root for the complete lifecycle. Start the source-bound session before the browser run, write each runner result beneath that artifact root, finalize the session, and then validate the record against the completed artifacts:
|
|
93
|
+
|
|
94
|
+
```sh
|
|
95
|
+
node <stylegallery-root>/scripts/create-page-evidence-session.mjs \
|
|
96
|
+
--root <consumer-root> \
|
|
97
|
+
--record <record.json> \
|
|
98
|
+
--artifact-root <artifact-root> \
|
|
99
|
+
--json
|
|
100
|
+
|
|
101
|
+
node <stylegallery-root>/scripts/finalize-page-evidence.mjs \
|
|
102
|
+
--root <consumer-root> \
|
|
103
|
+
--artifact-root <artifact-root> \
|
|
104
|
+
--runner-result <runner-result.json> \
|
|
105
|
+
--review-by <RFC3339-date-time> \
|
|
106
|
+
--json
|
|
107
|
+
|
|
108
|
+
node <stylegallery-root>/scripts/validate-consumer-conformance.mjs \
|
|
109
|
+
--root <consumer-root> \
|
|
110
|
+
--record <record.json> \
|
|
111
|
+
--artifact-root <artifact-root> \
|
|
112
|
+
--json
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`<record.json>` resolves from `<consumer-root>`, and each `<runner-result.json>` resolves from `<artifact-root>`. The completed manifest must match the consumer repository, revision, relevant source set, browser scenario set, run/session identities, and source digests. The StyleGallery checkout used for validation must contain every pinned StyleGallery revision; a shallow checkout that omits a historical pin fails closed. See [Consumer Migration Evidence](../quality/evidence/consumer-migration.md) for what each channel can and cannot support.
|
|
116
|
+
|
|
117
|
+
## Source, License, And Attribution
|
|
118
|
+
|
|
119
|
+
This is a StyleGallery-local method. It has no external source snapshot and intentionally declares `provenance_kind: local` rather than upstream repository metadata.
|
|
120
|
+
|
|
121
|
+
## IA Navigation
|
|
122
|
+
|
|
123
|
+
Parent: [Design Engineering](index.md).
|
|
124
|
+
Next: [Consumer Migration Evidence Gate](../quality/gates/consumer-migration-evidence.md).
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Design Engineering
|
|
2
|
+
|
|
3
|
+
The Design Engineering domain owns product-layer craft questions and verification methods without turning practitioner taste into shared policy.
|
|
4
|
+
|
|
5
|
+
## Scope Boundary
|
|
6
|
+
|
|
7
|
+
In scope: purpose, frequency, interaction detail, implementation review, prototyping, and evidence-bearing product decisions.
|
|
8
|
+
|
|
9
|
+
Out of scope: a second universal principle set, unsupported claims of beauty or adoption, and overrides of semantic, accessibility, Layout, or shared quality contracts.
|
|
10
|
+
|
|
11
|
+
## Documents
|
|
12
|
+
|
|
13
|
+
- [Interface Craft Decisions](interface-craft.md) connects product purpose, implementation detail, and verification without treating taste as proof.
|
|
14
|
+
- [Consumer Migration Readiness](consumer-migration-readiness.md) turns migration intent into a consumer-owned thirteen-dimension conformance record and executable evidence chain.
|
|
15
|
+
- [Reference Profiles](reference-profiles/index.md) provides two explicitly selected, related adversarial examples and a documentation-only external adaptation route.
|
|
16
|
+
|
|
17
|
+
## Relationship To Shared Quality
|
|
18
|
+
|
|
19
|
+
This domain proposes product-layer questions. [Quality Gates](../quality/index.md) remain the shared authority for claims, evidence families, accessibility precedence, rationale, and debt.
|
|
20
|
+
|
|
21
|
+
## Domain Contract
|
|
22
|
+
|
|
23
|
+
See [StyleGallery Domains](../DOMAINS.md) for lifecycle, provenance, page membership, and promotion rules.
|
|
24
|
+
|
|
25
|
+
## IA Navigation
|
|
26
|
+
|
|
27
|
+
Parent: [StyleGallery](../index.md).
|
|
28
|
+
Next: [Consumer Migration Readiness](consumer-migration-readiness.md).
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Domain Guide
|
|
3
|
+
title: Interface Craft Decisions
|
|
4
|
+
description: Repository-bounded method for purpose, implementation, review, and evidence decisions at the product layer.
|
|
5
|
+
domain: design-engineering
|
|
6
|
+
lifecycle: experimental
|
|
7
|
+
source_repository: https://github.com/emilkowalski/skills
|
|
8
|
+
source_path: skills/emil-design-eng/SKILL.md
|
|
9
|
+
source_revision: 220e8607c90b17337d210125777b7b695f26c221
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Interface Craft Decisions
|
|
13
|
+
|
|
14
|
+
Primary role: design-engineering decision guide.
|
|
15
|
+
|
|
16
|
+
## Repository Boundary
|
|
17
|
+
|
|
18
|
+
This page helps connect product intent, implementation detail, and verification. It does not create a second StyleGallery principle set, rank visual taste as objective quality, or override Layout, accessibility, source-order, and shared evidence contracts.
|
|
19
|
+
|
|
20
|
+
## Reusable Method
|
|
21
|
+
|
|
22
|
+
### Establish The Job
|
|
23
|
+
|
|
24
|
+
Before tuning the interface, name:
|
|
25
|
+
|
|
26
|
+
- the user task and state change;
|
|
27
|
+
- why the behavior or treatment is necessary;
|
|
28
|
+
- how frequently it appears;
|
|
29
|
+
- which constraints and inputs it must survive;
|
|
30
|
+
- the observable that will decide whether it works.
|
|
31
|
+
|
|
32
|
+
If those answers are absent, implementation detail is premature.
|
|
33
|
+
|
|
34
|
+
### Build A Verifiable Representation
|
|
35
|
+
|
|
36
|
+
Use semantic structure and the owning domain's smallest robust contract first. Prototype the uncertain interaction or visual relationship at the lowest fidelity that exposes its failure modes. A prototype is evidence of one implementation state, not proof of general usability.
|
|
37
|
+
|
|
38
|
+
### Review Observable Failures
|
|
39
|
+
|
|
40
|
+
Inspect real content, empty states, long labels, constrained containers, repeated interaction, focus order, alternative input, relevant preferences, and target browsers/devices. When timing or continuity matters, review recordings slowly or frame by frame.
|
|
41
|
+
|
|
42
|
+
### Record The Decision
|
|
43
|
+
|
|
44
|
+
Use the shared high-impact claim shape:
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
Principle:
|
|
48
|
+
Claim:
|
|
49
|
+
Context:
|
|
50
|
+
Use case:
|
|
51
|
+
Warrant:
|
|
52
|
+
Evidence family:
|
|
53
|
+
Verification protocol:
|
|
54
|
+
Implementation handoff:
|
|
55
|
+
Consumer reference: not_applicable
|
|
56
|
+
Consumer reference reason: This blank craft-decision template declares no consumer-specific reference record.
|
|
57
|
+
Boundary or limitation:
|
|
58
|
+
Debt or escalation:
|
|
59
|
+
Decision:
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
This makes the result reviewable without turning the practitioner's preference into authority.
|
|
63
|
+
|
|
64
|
+
## Decision Questions
|
|
65
|
+
|
|
66
|
+
| Question | Evidence that can help | What it cannot prove alone |
|
|
67
|
+
| --- | --- | --- |
|
|
68
|
+
| Does the detail serve the primary task? | Task model, prototype, user evidence | Universal preference |
|
|
69
|
+
| Is the default understandable without instruction? | Task completion, terminology test, comparative prototype | Long-term adoption |
|
|
70
|
+
| Does repetition make the behavior costly? | Frequency estimate, interaction timing, user evidence | One universal threshold |
|
|
71
|
+
| Does the interface preserve continuity? | Rendered sequence, source/focus inspection | Human orientation for every user |
|
|
72
|
+
| Does the implementation survive real constraints? | Content/container/input/browser matrix | Brand or aesthetic quality |
|
|
73
|
+
| Is the final polish coherent with declared intent? | Named comparative criteria and representative review | Objective beauty |
|
|
74
|
+
|
|
75
|
+
## Opinionated Guidance
|
|
76
|
+
|
|
77
|
+
Small details can compound, strong defaults can lower adoption effort, and fresh-eye review can expose defects familiarity hides. These are practitioner heuristics. “Beautiful,” “delightful,” “premium,” “obvious,” and “feels right” require an operational definition and suitable human evidence when used as claims.
|
|
78
|
+
|
|
79
|
+
## Platform-Specific Guidance
|
|
80
|
+
|
|
81
|
+
CSS entry features, clipping techniques, Motion/Framer Motion, React effects, component-library variables, pointer capture, and browser-specific performance behavior belong in bounded implementation notes. Verify current official documentation and the actual product surface before recommending them.
|
|
82
|
+
|
|
83
|
+
## Unsupported Absolutes
|
|
84
|
+
|
|
85
|
+
- Beauty is not repository leverage or a sufficient acceptance criterion.
|
|
86
|
+
- A fixed duration, easing, scale, velocity, or frequency threshold is not universal.
|
|
87
|
+
- CSS does not categorically outperform JavaScript.
|
|
88
|
+
- A property or API name does not prove hardware acceleration.
|
|
89
|
+
- Product popularity does not prove a reusable implementation pattern.
|
|
90
|
+
- A promotional or enthusiastic posture is not part of the review contract.
|
|
91
|
+
|
|
92
|
+
## Verification Contract
|
|
93
|
+
|
|
94
|
+
Every high-impact recommendation maps `principle -> claim -> context -> warrant -> evidence -> protocol -> boundary/debt`. Visual and interaction claims require rendered evidence; accessibility claims use the accessibility gate; human-quality claims need corresponding user or HCI evidence. A passing implementation keeps the owning domain's constraints visible in the handoff.
|
|
95
|
+
|
|
96
|
+
## Source, License, And Attribution
|
|
97
|
+
|
|
98
|
+
- Upstream inspiration: [emil-design-eng/SKILL.md](https://github.com/emilkowalski/skills/blob/220e8607c90b17337d210125777b7b695f26c221/skills/emil-design-eng/SKILL.md)
|
|
99
|
+
- Snapshot: `220e8607c90b17337d210125777b7b695f26c221`
|
|
100
|
+
- Upstream license: MIT, Copyright (c) 2026 Emil Kowalski.
|
|
101
|
+
- Reuse form: independent method rewrite; upstream prose, tables, code, examples, distinctive ordering, and the quotation attributed to Paul Graham were not retained.
|
|
102
|
+
- Evidence boundary: this practitioner source suggests review questions; it does not establish local quality, accessibility, performance, or adoption outcomes.
|
|
103
|
+
|
|
104
|
+
## IA Navigation
|
|
105
|
+
|
|
106
|
+
Parent: [Design Engineering](index.md).
|
|
107
|
+
Next: [Platform Guides](../platform-guides/index.md).
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# External Consumer Adaptation
|
|
2
|
+
|
|
3
|
+
Synthetic validator coverage only; no durable adopter record exists in this route.
|
|
4
|
+
|
|
5
|
+
An external consumer keeps its canonical JSON record in its own repository, selects it explicitly there, and points only toward the pinned Layout source. StyleGallery documents that route without storing an adopter, attestation, production, independence, or promotion claim.
|
|
6
|
+
|
|
7
|
+
The validator exercises a synthetic local-as-external mutation and rejects any JSON record placed below this documentation directory.
|
|
8
|
+
|
|
9
|
+
## IA Navigation
|
|
10
|
+
|
|
11
|
+
Parent: [Reference Profiles](../index.md).
|
|
12
|
+
Next: [Platform Guides](../../../platform-guides/index.md).
|