stylegallery 0.1.0 → 0.1.1

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.
Files changed (230) hide show
  1. package/AGENTS.md +4 -1
  2. package/DOMAINS.md +2 -6
  3. package/GOVERNANCE.md +10 -9
  4. package/README.md +23 -127
  5. package/consumer-reference/agent-native/v2/admission-policy.json +646 -0
  6. package/consumer-reference/agent-native/v2/material-registry.json +1 -0
  7. package/consumer-reference/agent-native/v2/schema/admission-policy.schema.json +50 -0
  8. package/consumer-reference/agent-native/v2/schema/material-manifest.schema.json +17 -0
  9. package/consumer-reference/agent-native/v2/schema/material-record.schema.json +20 -0
  10. package/consumer-reference/contract.md +1 -1
  11. package/consumer-reference/index.md +5 -3
  12. package/layout/index.md +124 -0
  13. package/log.md +51 -0
  14. package/package.json +181 -22
  15. package/scripts/agent-native/v2/experimental-extension-registry.mjs +143 -0
  16. package/scripts/agent-native/v2/extensions/a2a-projection.mjs +264 -0
  17. package/scripts/agent-native/v2/extensions/agui-projection.mjs +191 -0
  18. package/scripts/agent-native/v2/material-admission.mjs +295 -0
  19. package/scripts/agent-native/v2/material-cli-adapter.mjs +134 -0
  20. package/scripts/agent-native/v2/material-context.mjs +251 -0
  21. package/scripts/agent-native/v2/material-identity.mjs +71 -0
  22. package/scripts/agent-native/v2/material-mcp-adapter.mjs +253 -0
  23. package/scripts/agent-native/v2/material-operation-registry.mjs +123 -0
  24. package/scripts/agent-native/v2/material-queries.mjs +398 -0
  25. package/scripts/agent-native/v2/material-registry.mjs +319 -0
  26. package/scripts/sg-material-mcp.mjs +98 -0
  27. package/scripts/sg-material.mjs +27 -0
  28. package/consumer-reference/adapters/style-dictionary.config.mjs +0 -36
  29. package/consumer-reference/baselines/calibration.json +0 -260
  30. package/consumer-reference/baselines/manifest.json +0 -21
  31. package/consumer-reference/fixtures/consumer-conformance/e2e-fixture.mjs +0 -282
  32. package/consumer-reference/fixtures/consumer-conformance/manifest.json +0 -102
  33. package/consumer-reference/fixtures/consumer-conformance/runtime-proof.mjs +0 -32
  34. package/consumer-reference/fixtures/consumer-conformance/valid-migration-result.json +0 -18
  35. package/consumer-reference/fixtures/consumer-conformance/valid-migration.json +0 -142
  36. package/consumer-reference/fixtures/invalid-stable-ended-support.json +0 -19
  37. package/consumer-reference/fixtures/promotion/invalid-blocking-evidence.json +0 -26
  38. package/consumer-reference/fixtures/promotion/invalid-count-only.json +0 -29
  39. package/consumer-reference/fixtures/promotion/invalid-missing-owner-migration.json +0 -25
  40. package/consumer-reference/fixtures/promotion/invalid-normative-bypass-no-regression.json +0 -25
  41. package/consumer-reference/fixtures/promotion/invalid-related-counted-independent.json +0 -45
  42. package/consumer-reference/fixtures/promotion/invalid-stable-ended-support.json +0 -26
  43. package/consumer-reference/fixtures/promotion/manifest.json +0 -15
  44. package/consumer-reference/fixtures/promotion/valid-deferred-example.json +0 -67
  45. package/consumer-reference/fixtures/promotion/valid-normative-bypass.json +0 -67
  46. package/consumer-reference/fixtures/token-portability/invalid-cycle.json +0 -7
  47. package/consumer-reference/fixtures/token-portability/invalid-dangling-alias.json +0 -6
  48. package/consumer-reference/fixtures/token-portability/invalid-extends.json +0 -4
  49. package/consumer-reference/fixtures/token-portability/invalid-json-pointer.json +0 -7
  50. package/consumer-reference/fixtures/token-portability/invalid-resolver.json +0 -9
  51. package/consumer-reference/fixtures/token-portability/invalid-type-mismatch.json +0 -10
  52. package/consumer-reference/fixtures/token-portability/invalid-unknown-reserved.json +0 -6
  53. package/consumer-reference/fixtures/token-portability/invalid-untested-type.json +0 -6
  54. package/consumer-reference/fixtures/token-portability/valid-border.json +0 -14
  55. package/consumer-reference/fixtures/token-portability/valid-reference.json +0 -32
  56. package/consumer-reference/fixtures/token-portability/valid-whole-alias.json +0 -7
  57. package/consumer-reference/fixtures/valid-deprecated.json +0 -21
  58. package/consumer-reference/fixtures/valid-experimental.json +0 -19
  59. package/consumer-reference/generated/manifest.json +0 -40
  60. package/consumer-reference/generated/tokens.css +0 -12
  61. package/consumer-reference/policies/shared-experimental.json +0 -37
  62. package/consumer-reference/schema/ax-evidence.schema.json +0 -30
  63. package/consumer-reference/schema/baseline-manifest.schema.json +0 -55
  64. package/consumer-reference/schema/calibration-record.schema.json +0 -190
  65. package/consumer-reference/schema/capture-session.schema.json +0 -161
  66. package/consumer-reference/schema/component-state.schema.json +0 -150
  67. package/consumer-reference/schema/consumer-conformance-record.schema.json +0 -365
  68. package/consumer-reference/schema/dom-evidence.schema.json +0 -38
  69. package/consumer-reference/schema/evidence-record.schema.json +0 -81
  70. package/consumer-reference/schema/fixture-manifest.schema.json +0 -32
  71. package/consumer-reference/schema/item.schema.json +0 -188
  72. package/consumer-reference/schema/page-evidence-manifest.schema.json +0 -216
  73. package/consumer-reference/schema/page-evidence-session.schema.json +0 -119
  74. package/consumer-reference/schema/portable-tokens.schema.json +0 -104
  75. package/consumer-reference/schema/promotion-rfc.schema.json +0 -219
  76. package/consumer-reference/schema/runtime-evidence-manifest.schema.json +0 -33
  77. package/consumer-reference/schema/visual-evidence.schema.json +0 -31
  78. package/design-engineering/consumer-migration-readiness.md +0 -124
  79. package/design-engineering/interface-craft.md +0 -107
  80. package/design-engineering/reference-profiles/external-adaptation/index.md +0 -12
  81. package/design-engineering/reference-profiles/governed-local/editorial/components/button.component.json +0 -125
  82. package/design-engineering/reference-profiles/governed-local/editorial/evidence/button.evidence.json +0 -3504
  83. package/design-engineering/reference-profiles/governed-local/editorial/fixtures/button.fixture.json +0 -65
  84. package/design-engineering/reference-profiles/governed-local/editorial/generated/evidence-coverage.md +0 -23
  85. package/design-engineering/reference-profiles/governed-local/editorial/generated/keyboard-matrix.md +0 -19
  86. package/design-engineering/reference-profiles/governed-local/editorial/generated/state-matrix.md +0 -21
  87. package/design-engineering/reference-profiles/governed-local/editorial/local-foundations.json +0 -12
  88. package/design-engineering/reference-profiles/governed-local/editorial/states/button.states.json +0 -195
  89. package/design-engineering/reference-profiles/governed-local/editorial/tokens.dtcg.json +0 -17
  90. package/design-engineering/reference-profiles/governed-local/terminal/components/button.component.json +0 -125
  91. package/design-engineering/reference-profiles/governed-local/terminal/evidence/button.evidence.json +0 -3504
  92. package/design-engineering/reference-profiles/governed-local/terminal/fixtures/button.fixture.json +0 -65
  93. package/design-engineering/reference-profiles/governed-local/terminal/generated/evidence-coverage.md +0 -23
  94. package/design-engineering/reference-profiles/governed-local/terminal/generated/keyboard-matrix.md +0 -19
  95. package/design-engineering/reference-profiles/governed-local/terminal/generated/state-matrix.md +0 -21
  96. package/design-engineering/reference-profiles/governed-local/terminal/local-foundations.json +0 -12
  97. package/design-engineering/reference-profiles/governed-local/terminal/profile.json +0 -43
  98. package/design-engineering/reference-profiles/governed-local/terminal/states/button.states.json +0 -195
  99. package/design-engineering/reference-profiles/governed-local/terminal/tokens.dtcg.json +0 -17
  100. package/game-ui/classification.md +0 -82
  101. package/game-ui/reference-record.md +0 -62
  102. package/game-ui/screen-hierarchy.md +0 -107
  103. package/game-ui/unity/architecture.md +0 -166
  104. package/game-ui/unity/cli-loop.md +0 -84
  105. package/game-ui/unity/data/unity-technologies-public-repositories.json +0 -26654
  106. package/game-ui/unity/org-wiki.md +0 -146
  107. package/game-ui/unity/repository-map.md +0 -102
  108. package/game-ui/unity/ui-systems.md +0 -85
  109. package/motion/practice-reference.md +0 -145
  110. package/motion/review-workflow.md +0 -86
  111. package/motion/vocabulary.md +0 -82
  112. package/platform-guides/apple-interaction.md +0 -89
  113. package/scripts/agent-native/events.mjs +0 -113
  114. package/scripts/agent-native/immutable-store.mjs +0 -102
  115. package/scripts/artifact-metadata.mjs +0 -20
  116. package/scripts/audit-evidence-freshness.mjs +0 -308
  117. package/scripts/baseline-contract.mjs +0 -189
  118. package/scripts/baseline-schema-parity.mjs +0 -40
  119. package/scripts/build-reference-artifacts.mjs +0 -127
  120. package/scripts/calibration-raw-contract.mjs +0 -172
  121. package/scripts/capture-session-contract.mjs +0 -187
  122. package/scripts/component-state-artifact-fixture.mjs +0 -44
  123. package/scripts/component-state-contract.mjs +0 -99
  124. package/scripts/component-state-semantics.mjs +0 -128
  125. package/scripts/component-state-workflow-contract.mjs +0 -67
  126. package/scripts/component-state-workflow-negative-cases.mjs +0 -64
  127. package/scripts/consumer-conformance-contract.mjs +0 -198
  128. package/scripts/consumer-evidence-governance-contract.mjs +0 -210
  129. package/scripts/consumer-reference-case-runner.mjs +0 -93
  130. package/scripts/consumer-reference-schema.mjs +0 -155
  131. package/scripts/create-component-state-session.mjs +0 -100
  132. package/scripts/create-page-evidence-session.mjs +0 -139
  133. package/scripts/domain-document-boundaries.mjs +0 -40
  134. package/scripts/domain-validation-checks.mjs +0 -141
  135. package/scripts/evidence-artifact-contract.mjs +0 -191
  136. package/scripts/finalize-component-state-evidence.mjs +0 -165
  137. package/scripts/finalize-page-evidence.mjs +0 -197
  138. package/scripts/generate-consumer-reference-evidence.mjs +0 -154
  139. package/scripts/generate-patterns.mjs +0 -218
  140. package/scripts/governance-matrix-contract.mjs +0 -73
  141. package/scripts/governance-matrix-negative-cases.mjs +0 -114
  142. package/scripts/governance-policy-contract.mjs +0 -49
  143. package/scripts/governance-test-fixture.mjs +0 -321
  144. package/scripts/governance-workflow-negative-cases.mjs +0 -241
  145. package/scripts/governed-profile-registry.mjs +0 -125
  146. package/scripts/json-schema-formats.mjs +0 -31
  147. package/scripts/markdown-structure.mjs +0 -45
  148. package/scripts/page-artifact-metadata.mjs +0 -124
  149. package/scripts/page-evidence-contract.mjs +0 -297
  150. package/scripts/page-evidence-fixture.mjs +0 -271
  151. package/scripts/pattern-data.mjs +0 -325
  152. package/scripts/profile-record-contract.mjs +0 -140
  153. package/scripts/promotion-attestation-contract.mjs +0 -91
  154. package/scripts/promotion-boundary-test-contract.mjs +0 -92
  155. package/scripts/promotion-fixture-inventory.mjs +0 -109
  156. package/scripts/promotion-governance-contract.mjs +0 -28
  157. package/scripts/reference-artifact-path-contract.mjs +0 -28
  158. package/scripts/reference-profile-contract.mjs +0 -114
  159. package/scripts/reference-token-contract.mjs +0 -156
  160. package/scripts/run-consumer-page-evidence-ci.mjs +0 -170
  161. package/scripts/summarize-sentinel-calibration.mjs +0 -98
  162. package/scripts/test-agent-adapter-conformance.mjs +0 -250
  163. package/scripts/test-agent-conformance-receipt.mjs +0 -106
  164. package/scripts/test-agent-events.mjs +0 -81
  165. package/scripts/test-agent-execution-effects.mjs +0 -114
  166. package/scripts/test-agent-execution-fixtures.mjs +0 -140
  167. package/scripts/test-agent-execution-kernel.mjs +0 -39
  168. package/scripts/test-agent-execution-learning.mjs +0 -130
  169. package/scripts/test-agent-execution-lifecycle.mjs +0 -143
  170. package/scripts/test-agent-execution-safety.mjs +0 -158
  171. package/scripts/test-agent-execution-views.mjs +0 -117
  172. package/scripts/test-agent-identity-integrity-cases.mjs +0 -160
  173. package/scripts/test-agent-knowledge-kernel.mjs +0 -183
  174. package/scripts/test-agent-learning.mjs +0 -246
  175. package/scripts/test-agent-mcp.mjs +0 -246
  176. package/scripts/test-agent-native-schemas.mjs +0 -215
  177. package/scripts/test-agent-projections.mjs +0 -249
  178. package/scripts/test-agent-registry-mcp-integrity.mjs +0 -215
  179. package/scripts/test-agent-registry-mutations.mjs +0 -110
  180. package/scripts/test-audit-evidence-freshness.mjs +0 -177
  181. package/scripts/test-component-state-sentinel.mjs +0 -35
  182. package/scripts/test-component-state-source-contract.mjs +0 -83
  183. package/scripts/test-consumer-conformance-sentinel.mjs +0 -165
  184. package/scripts/test-consumer-reference-sentinel.mjs +0 -31
  185. package/scripts/test-generate-consumer-reference-evidence.mjs +0 -124
  186. package/scripts/test-json-cli-output.mjs +0 -151
  187. package/scripts/test-json-schema-formats.mjs +0 -40
  188. package/scripts/test-reference-adapters.mjs +0 -199
  189. package/scripts/test-renderer-purity.mjs +0 -34
  190. package/scripts/test-sg-cli.mjs +0 -129
  191. package/scripts/test-summarize-sentinel-calibration.mjs +0 -226
  192. package/scripts/test-validate-baseline-manifest.mjs +0 -234
  193. package/scripts/test-validate-component-state-artifacts.mjs +0 -243
  194. package/scripts/test-validate-component-state.mjs +0 -106
  195. package/scripts/test-validate-consumer-conformance.mjs +0 -427
  196. package/scripts/test-validate-consumer-reference-cli.mjs +0 -69
  197. package/scripts/test-validate-consumer-reference.mjs +0 -263
  198. package/scripts/test-validate-domains.mjs +0 -357
  199. package/scripts/test-validate-governance.mjs +0 -292
  200. package/scripts/test-validate-ia.mjs +0 -262
  201. package/scripts/test-validate-okf.mjs +0 -73
  202. package/scripts/test-validate-page-evidence.mjs +0 -302
  203. package/scripts/test-validate-patterns.mjs +0 -157
  204. package/scripts/test-validate-promotion-rfc.mjs +0 -250
  205. package/scripts/test-validate-reference-profiles.mjs +0 -170
  206. package/scripts/test-validate-unity-org-wiki.mjs +0 -57
  207. package/scripts/test-validate-unity-source-contracts.mjs +0 -67
  208. package/scripts/test-validate-vocabulary.mjs +0 -174
  209. package/scripts/test-validate-webpage-workflow.mjs +0 -293
  210. package/scripts/validate-baseline-manifest.mjs +0 -44
  211. package/scripts/validate-catalog.mjs +0 -65
  212. package/scripts/validate-component-state.mjs +0 -141
  213. package/scripts/validate-consumer-conformance.mjs +0 -477
  214. package/scripts/validate-consumer-reference.mjs +0 -288
  215. package/scripts/validate-domains.mjs +0 -237
  216. package/scripts/validate-governance.mjs +0 -248
  217. package/scripts/validate-ia.mjs +0 -136
  218. package/scripts/validate-links.mjs +0 -66
  219. package/scripts/validate-okf.mjs +0 -104
  220. package/scripts/validate-page-evidence.mjs +0 -191
  221. package/scripts/validate-patterns.mjs +0 -246
  222. package/scripts/validate-promotion-rfc.mjs +0 -224
  223. package/scripts/validate-reference-artifacts.mjs +0 -125
  224. package/scripts/validate-renderer-purity.mjs +0 -56
  225. package/scripts/validate-unity-org-wiki.mjs +0 -146
  226. package/scripts/validate-unity-source-contracts.mjs +0 -107
  227. package/scripts/validate-vocabulary.mjs +0 -115
  228. package/scripts/validate-webpage-workflow.mjs +0 -254
  229. package/scripts/visual-expectation-contract.mjs +0 -20
  230. package/scripts/workflow-action-contract.mjs +0 -163
@@ -1,32 +0,0 @@
1
- {
2
- "color": {
3
- "$type": "color",
4
- "accent": {
5
- "$value": {
6
- "colorSpace": "srgb",
7
- "components": [0.125, 0.375, 0.875],
8
- "alpha": 1
9
- }
10
- },
11
- "action": { "$value": "{color.accent}" }
12
- },
13
- "duration": {
14
- "$type": "duration",
15
- "quick": { "$value": { "value": 120, "unit": "ms" } }
16
- },
17
- "space": {
18
- "$type": "dimension",
19
- "small": { "$value": { "value": 8, "unit": "px" } },
20
- "control": { "$value": "{space.small}" }
21
- },
22
- "border": {
23
- "$type": "border",
24
- "focus": {
25
- "$value": {
26
- "color": "{color.action}",
27
- "style": "solid",
28
- "width": "{space.control}"
29
- }
30
- }
31
- }
32
- }
@@ -1,7 +0,0 @@
1
- {
2
- "color": {
3
- "$type": "color",
4
- "base": { "$value": { "colorSpace": "srgb", "components": [0.1, 0.2, 0.3] } },
5
- "linked": { "$value": "{color.base}" }
6
- }
7
- }
@@ -1,21 +0,0 @@
1
- {
2
- "artifact_mode": "schema_only",
3
- "fixture_independence": "related",
4
- "handoff": {
5
- "reason": "This deprecated fixture has no active consumer reference handoff.",
6
- "status": "not_applicable"
7
- },
8
- "id": "valid-deprecated",
9
- "maturity": "deprecated",
10
- "owner": {
11
- "enforcement": "placeholder",
12
- "name": "Repository governance owner"
13
- },
14
- "removal_trigger": "Remove after every validator consumer uses the replacement fixture.",
15
- "replacement": "consumer-reference/fixtures/valid-experimental.json",
16
- "review_independence": "single_account",
17
- "schema_version": "1.0",
18
- "support": {
19
- "status": "ended"
20
- }
21
- }
@@ -1,19 +0,0 @@
1
- {
2
- "artifact_mode": "schema_only",
3
- "fixture_independence": "related",
4
- "handoff": {
5
- "record": "consumer-reference/fixtures/valid-experimental.json",
6
- "status": "declared"
7
- },
8
- "id": "valid-experimental",
9
- "maturity": "experimental",
10
- "owner": {
11
- "enforcement": "placeholder",
12
- "name": "Repository governance owner"
13
- },
14
- "review_independence": "single_account",
15
- "schema_version": "1.0",
16
- "support": {
17
- "status": "active"
18
- }
19
- }
@@ -1,40 +0,0 @@
1
- {
2
- "adapter": {
3
- "name": "style-dictionary",
4
- "version": "5.5.0"
5
- },
6
- "declarations": [
7
- {
8
- "name": "--color-accent",
9
- "value": "#2060df"
10
- },
11
- {
12
- "name": "--duration-quick",
13
- "value": "120ms"
14
- },
15
- {
16
- "name": "--space-small",
17
- "value": "8px"
18
- },
19
- {
20
- "name": "--color-action",
21
- "value": "var(--color-accent)"
22
- },
23
- {
24
- "name": "--space-control",
25
- "value": "var(--space-small)"
26
- },
27
- {
28
- "name": "--border-focus",
29
- "value": "var(--space-control) solid var(--color-action)"
30
- }
31
- ],
32
- "inputHash": "sha256:660f1b752eccd4045af6ed0ae37f17f1eb436aec95302bf161687d9fa5e79a5f",
33
- "outputCount": 6,
34
- "outputFile": "tokens.css",
35
- "outputHash": "sha256:a479ba780046bb5c1c393766ee47292049ca0515210c495081ef8cb3853f52a4",
36
- "schemaVersion": "1.0",
37
- "sourceCount": 6,
38
- "sourceFile": "../fixtures/token-portability/valid-reference.json",
39
- "warnings": []
40
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
-
5
- :root {
6
- --color-accent: #2060df;
7
- --duration-quick: 120ms;
8
- --space-small: 8px;
9
- --color-action: var(--color-accent);
10
- --space-control: var(--space-small);
11
- --border-focus: var(--space-control) solid var(--color-action);
12
- }
@@ -1,37 +0,0 @@
1
- {
2
- "artifact_mode": "schema_only",
3
- "boundaries": {
4
- "excluded_content": ["component_skin", "imagery", "motion_character", "palette", "typography"],
5
- "promoted_content": ["claim_scoped_evidence", "invariant_behavior", "invariant_semantics"]
6
- },
7
- "claims": {
8
- "adopter_attestations": 0,
9
- "promotion_occurred": false
10
- },
11
- "gateway": {
12
- "applies_to": "invariant_eligibility_only",
13
- "minimum_independent_consumers": 2,
14
- "stable_numeric_threshold": null,
15
- "transition": {
16
- "from": "consumer_local",
17
- "to": "shared_experimental"
18
- }
19
- },
20
- "id": "shared-experimental-policy",
21
- "lifecycle": {
22
- "failure_actions": ["deprecate_with_migration", "maintain", "restrict", "rollback"],
23
- "stable_relabel": "forbidden"
24
- },
25
- "normative_bypass": {
26
- "categories": ["accessibility", "correctness", "security", "standards"],
27
- "retains": ["compatibility", "deprecation", "migration", "owner_acceptance", "regression_proof", "rollback", "scope_control", "support_capacity"],
28
- "waives": ["adoption_count"]
29
- },
30
- "owner": {
31
- "enforcement": "placeholder",
32
- "name": "Repository governance owner"
33
- },
34
- "review_independence": "single_account",
35
- "schema_version": "1.0",
36
- "status": "active"
37
- }
@@ -1,30 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://stylegallery.local/consumer-reference/schema/ax-evidence.schema.json",
4
- "title": "Closed AX capture artifact",
5
- "type": "object",
6
- "additionalProperties": false,
7
- "required": ["schema_version", "channel", "capture_session", "captured_at", "profile_id", "scenario_id", "semantic_mode", "name", "role", "properties"],
8
- "properties": {
9
- "schema_version": { "const": "1.0" },
10
- "channel": { "const": "ax" },
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
- "name": { "type": "string", "minLength": 1 },
17
- "role": { "enum": ["button", "link", "switch"] },
18
- "properties": {
19
- "type": "object",
20
- "additionalProperties": false,
21
- "properties": {
22
- "busy": { "type": "boolean" },
23
- "disabled": { "type": "boolean" },
24
- "expanded": { "type": "boolean" },
25
- "focused": { "type": "boolean" },
26
- "pressed": { "type": "boolean" }
27
- }
28
- }
29
- }
30
- }
@@ -1,55 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://stylegallery.local/consumer-reference/schema/baseline-manifest.schema.json",
4
- "title": "Proposed Chromium baseline manifest",
5
- "type": "object",
6
- "additionalProperties": false,
7
- "required": ["schema_version", "status", "baseline_owner_approval", "platform", "architecture", "container_image", "node", "os", "playwright", "browser_revision", "browser_version", "viewport", "source", "baseline", "calibration"],
8
- "properties": {
9
- "schema_version": { "const": "1.0" },
10
- "status": { "const": "proposed" },
11
- "baseline_owner_approval": { "const": "pending" },
12
- "platform": { "const": "linux/amd64" },
13
- "architecture": { "const": "amd64" },
14
- "container_image": { "const": "mcr.microsoft.com/playwright:v1.61.0-noble@sha256:57b65fdc9ceabe0ef613124c7bbe2babcf9362c4d85e382fe3b03604e84b428a" },
15
- "node": { "const": "22" },
16
- "os": { "const": "Ubuntu 24.04" },
17
- "playwright": { "const": "1.61.0" },
18
- "browser_revision": { "const": "1228" },
19
- "browser_version": { "const": "149.0.7827.55" },
20
- "viewport": {
21
- "type": "object",
22
- "additionalProperties": false,
23
- "required": ["width", "height"],
24
- "properties": { "width": { "const": 1024 }, "height": { "const": 768 } }
25
- },
26
- "source": {
27
- "type": "object",
28
- "additionalProperties": false,
29
- "required": ["path", "sha256"],
30
- "properties": {
31
- "path": { "const": "tests/helpers/render-consumer-reference.mjs" },
32
- "sha256": { "const": "88802a948909d5e40470be6b5481766ce2de498e59c053ac68af370b46e72ca9" }
33
- }
34
- },
35
- "baseline": {
36
- "type": "object",
37
- "additionalProperties": false,
38
- "required": ["path", "sha256"],
39
- "properties": {
40
- "path": { "const": "tests/snapshots/consumer-reference-card-grid.png" },
41
- "sha256": { "const": "5528358e957a6115793155e501f62716f7db31dc1c86856d9e1234868d672837" }
42
- }
43
- },
44
- "calibration": {
45
- "type": "object",
46
- "additionalProperties": false,
47
- "required": ["record", "required_runs", "workflow_artifact_name"],
48
- "properties": {
49
- "record": { "const": "consumer-reference/baselines/calibration.json" },
50
- "required_runs": { "const": 20 },
51
- "workflow_artifact_name": { "const": "chromium-sentinel-calibration-${run_id}-${sha}" }
52
- }
53
- }
54
- }
55
- }
@@ -1,190 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://stylegallery.local/consumer-reference/schema/calibration-record.schema.json",
4
- "title": "Chromium sentinel calibration record",
5
- "$comment": "This schema owns recursive shape and exact scalar identity. scripts/baseline-contract.mjs additionally enforces committed_ci tuple correlation and cross-run DOM/AX/hash equality.",
6
- "type": "object",
7
- "additionalProperties": false,
8
- "required": ["schema_version", "status", "baseline_owner_approval", "required_runs", "committed_ci", "environment", "reference", "runs"],
9
- "properties": {
10
- "schema_version": { "const": "1.0" },
11
- "status": { "enum": ["awaiting_committed_ci", "awaiting_external_verification", "completed"] },
12
- "baseline_owner_approval": { "const": "pending" },
13
- "required_runs": { "const": 20 },
14
- "committed_ci": {
15
- "oneOf": [
16
- { "type": "null" },
17
- {
18
- "type": "object",
19
- "additionalProperties": false,
20
- "required": ["artifact_name", "checkout_sha", "execution_repository", "external_verification", "head_sha", "raw_evidence_sha256", "repository", "run_attempt", "run_id", "sha", "workflow"],
21
- "properties": {
22
- "run_id": { "type": "string", "pattern": "^[0-9]+$" },
23
- "run_attempt": { "type": "string", "pattern": "^[0-9]+$" },
24
- "sha": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
25
- "checkout_sha": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
26
- "execution_repository": {
27
- "description": "Actual GitHub Actions repository, limited to the canonical upstream or the explicit calibration fork.",
28
- "enum": ["ark-jo/StyleGallery", "changeroa/StyleGallery"]
29
- },
30
- "external_verification": {
31
- "oneOf": [
32
- { "type": "null" },
33
- {
34
- "type": "object",
35
- "additionalProperties": false,
36
- "required": ["artifact", "repository_relationship", "source", "verified_at"],
37
- "properties": {
38
- "artifact": {
39
- "type": "object",
40
- "additionalProperties": false,
41
- "required": ["api_digest", "expires_at", "id", "name", "size_in_bytes"],
42
- "properties": {
43
- "api_digest": { "const": "sha256:3f11a517b447e1b5a1da17d9ee66ba2dd947fc8a0a482c447556ef00652e6074" },
44
- "expires_at": { "const": "2026-07-27T15:01:36Z" },
45
- "id": { "const": "8283099324" },
46
- "name": { "const": "chromium-sentinel-calibration-29260372260-18229be570766d3b42f5600955120bfcba690b76" },
47
- "size_in_bytes": { "const": 70310 }
48
- }
49
- },
50
- "repository_relationship": {
51
- "type": "object",
52
- "additionalProperties": false,
53
- "required": ["execution_is_fork", "parent", "source"],
54
- "properties": {
55
- "execution_is_fork": { "const": true },
56
- "parent": { "const": "changeroa/StyleGallery" },
57
- "source": { "const": "changeroa/StyleGallery" }
58
- }
59
- },
60
- "source": { "const": "https://github.com/ark-jo/StyleGallery/actions/runs/29260372260" },
61
- "verified_at": { "const": "2026-07-13T15:04:41Z" }
62
- }
63
- }
64
- ]
65
- },
66
- "head_sha": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
67
- "raw_evidence_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
68
- "repository": {
69
- "description": "Canonical upstream repository, independent of the GitHub Actions execution repository.",
70
- "const": "changeroa/StyleGallery"
71
- },
72
- "workflow": { "const": ".github/workflows/validate.yml" },
73
- "artifact_name": { "type": "string", "pattern": "^chromium-sentinel-calibration-[0-9]+-[0-9a-f]{40}$" }
74
- }
75
- }
76
- ]
77
- },
78
- "environment": {
79
- "type": "object",
80
- "additionalProperties": false,
81
- "required": ["platform", "architecture", "container_image", "node", "os", "playwright", "browser_revision", "browser_version", "viewport"],
82
- "properties": {
83
- "platform": { "const": "linux/amd64" },
84
- "architecture": { "const": "amd64" },
85
- "container_image": { "const": "mcr.microsoft.com/playwright:v1.61.0-noble@sha256:57b65fdc9ceabe0ef613124c7bbe2babcf9362c4d85e382fe3b03604e84b428a" },
86
- "node": { "const": "22" },
87
- "os": { "const": "Ubuntu 24.04" },
88
- "playwright": { "const": "1.61.0" },
89
- "browser_revision": { "const": "1228" },
90
- "browser_version": { "const": "149.0.7827.55" },
91
- "viewport": {
92
- "type": "object",
93
- "additionalProperties": false,
94
- "required": ["width", "height"],
95
- "properties": { "width": { "const": 1024 }, "height": { "const": 768 } }
96
- }
97
- }
98
- },
99
- "reference": {
100
- "type": "object",
101
- "additionalProperties": false,
102
- "required": ["source", "baseline"],
103
- "properties": {
104
- "source": {
105
- "type": "object",
106
- "additionalProperties": false,
107
- "required": ["path", "sha256"],
108
- "properties": {
109
- "path": { "const": "tests/helpers/render-consumer-reference.mjs" },
110
- "sha256": { "const": "88802a948909d5e40470be6b5481766ce2de498e59c053ac68af370b46e72ca9" }
111
- }
112
- },
113
- "baseline": {
114
- "type": "object",
115
- "additionalProperties": false,
116
- "required": ["path", "sha256"],
117
- "properties": {
118
- "path": { "const": "tests/snapshots/consumer-reference-card-grid.png" },
119
- "sha256": { "const": "5528358e957a6115793155e501f62716f7db31dc1c86856d9e1234868d672837" }
120
- }
121
- }
122
- }
123
- },
124
- "runs": {
125
- "type": "array",
126
- "maxItems": 20,
127
- "uniqueItems": true,
128
- "items": {
129
- "type": "object",
130
- "additionalProperties": false,
131
- "required": ["run", "completed", "architecture", "png_sha256", "dom_sha256", "ax_sha256", "metadata_sha256", "screenshot_diff_pixels"],
132
- "properties": {
133
- "run": { "type": "integer", "minimum": 1, "maximum": 20 },
134
- "completed": { "const": true },
135
- "architecture": { "const": "amd64" },
136
- "png_sha256": { "const": "5528358e957a6115793155e501f62716f7db31dc1c86856d9e1234868d672837" },
137
- "dom_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
138
- "ax_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
139
- "metadata_sha256": { "const": "43a98d03b473e29c78ba2d359cf5f39346288d55564e5bfe65bc4a4fd78ebc2c" },
140
- "screenshot_diff_pixels": { "const": 0 }
141
- }
142
- }
143
- }
144
- },
145
- "allOf": [
146
- {
147
- "if": { "properties": { "status": { "const": "awaiting_committed_ci" } } },
148
- "then": { "properties": { "committed_ci": { "type": "null" }, "runs": { "maxItems": 0 } } },
149
- "else": {
150
- "properties": {
151
- "committed_ci": { "type": "object" },
152
- "runs": {
153
- "minItems": 20,
154
- "maxItems": 20,
155
- "allOf": [
156
- { "contains": { "required": ["run"], "properties": { "run": { "const": 1 } } }, "minContains": 1, "maxContains": 1 },
157
- { "contains": { "required": ["run"], "properties": { "run": { "const": 2 } } }, "minContains": 1, "maxContains": 1 },
158
- { "contains": { "required": ["run"], "properties": { "run": { "const": 3 } } }, "minContains": 1, "maxContains": 1 },
159
- { "contains": { "required": ["run"], "properties": { "run": { "const": 4 } } }, "minContains": 1, "maxContains": 1 },
160
- { "contains": { "required": ["run"], "properties": { "run": { "const": 5 } } }, "minContains": 1, "maxContains": 1 },
161
- { "contains": { "required": ["run"], "properties": { "run": { "const": 6 } } }, "minContains": 1, "maxContains": 1 },
162
- { "contains": { "required": ["run"], "properties": { "run": { "const": 7 } } }, "minContains": 1, "maxContains": 1 },
163
- { "contains": { "required": ["run"], "properties": { "run": { "const": 8 } } }, "minContains": 1, "maxContains": 1 },
164
- { "contains": { "required": ["run"], "properties": { "run": { "const": 9 } } }, "minContains": 1, "maxContains": 1 },
165
- { "contains": { "required": ["run"], "properties": { "run": { "const": 10 } } }, "minContains": 1, "maxContains": 1 },
166
- { "contains": { "required": ["run"], "properties": { "run": { "const": 11 } } }, "minContains": 1, "maxContains": 1 },
167
- { "contains": { "required": ["run"], "properties": { "run": { "const": 12 } } }, "minContains": 1, "maxContains": 1 },
168
- { "contains": { "required": ["run"], "properties": { "run": { "const": 13 } } }, "minContains": 1, "maxContains": 1 },
169
- { "contains": { "required": ["run"], "properties": { "run": { "const": 14 } } }, "minContains": 1, "maxContains": 1 },
170
- { "contains": { "required": ["run"], "properties": { "run": { "const": 15 } } }, "minContains": 1, "maxContains": 1 },
171
- { "contains": { "required": ["run"], "properties": { "run": { "const": 16 } } }, "minContains": 1, "maxContains": 1 },
172
- { "contains": { "required": ["run"], "properties": { "run": { "const": 17 } } }, "minContains": 1, "maxContains": 1 },
173
- { "contains": { "required": ["run"], "properties": { "run": { "const": 18 } } }, "minContains": 1, "maxContains": 1 },
174
- { "contains": { "required": ["run"], "properties": { "run": { "const": 19 } } }, "minContains": 1, "maxContains": 1 },
175
- { "contains": { "required": ["run"], "properties": { "run": { "const": 20 } } }, "minContains": 1, "maxContains": 1 }
176
- ]
177
- }
178
- }
179
- }
180
- },
181
- {
182
- "if": { "properties": { "status": { "const": "completed" } } },
183
- "then": { "properties": { "committed_ci": { "properties": { "external_verification": { "type": "object" } } } } },
184
- "else": {
185
- "if": { "properties": { "status": { "const": "awaiting_external_verification" } } },
186
- "then": { "properties": { "committed_ci": { "properties": { "external_verification": { "type": "null" } } } } }
187
- }
188
- }
189
- ]
190
- }
@@ -1,161 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://stylegallery.local/consumer-reference/schema/capture-session.schema.json",
4
- "title": "Component-state capture session",
5
- "type": "object",
6
- "additionalProperties": false,
7
- "required": ["schema_version", "record_kind", "session_id", "nonce", "started_at", "repository", "revision", "branch", "attempt", "environment", "source", "intended"],
8
- "properties": {
9
- "schema_version": { "const": "1.0" },
10
- "record_kind": { "const": "component_state_capture_session" },
11
- "session_id": { "type": "string", "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$" },
12
- "nonce": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
13
- "started_at": { "type": "string", "format": "date-time" },
14
- "repository": { "type": "string", "minLength": 1 },
15
- "revision": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
16
- "branch": { "type": "string", "minLength": 1 },
17
- "attempt": { "type": "integer", "minimum": 1 },
18
- "environment": { "$ref": "#/$defs/environment" },
19
- "source": { "$ref": "#/$defs/source_manifest" },
20
- "intended": {
21
- "type": "array",
22
- "minItems": 1,
23
- "items": {
24
- "type": "object",
25
- "additionalProperties": false,
26
- "required": ["profile_name", "profile_id", "scenarios"],
27
- "properties": {
28
- "profile_name": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
29
- "profile_id": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
30
- "scenarios": {
31
- "type": "array",
32
- "minItems": 1,
33
- "items": {
34
- "type": "object",
35
- "additionalProperties": false,
36
- "required": ["id", "channels"],
37
- "properties": {
38
- "id": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
39
- "channels": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "enum": ["visual", "dom", "ax"] } }
40
- }
41
- }
42
- }
43
- }
44
- }
45
- }
46
- },
47
- "$defs": {
48
- "environment": {
49
- "type": "object",
50
- "additionalProperties": false,
51
- "required": ["kind", "platform", "node", "browser", "browser_revision", "playwright", "lockfile_sha256", "container_image", "viewport"],
52
- "properties": {
53
- "kind": { "const": "browser" },
54
- "platform": { "type": "string", "minLength": 1 },
55
- "node": { "type": "string", "pattern": "^v\\d+\\.\\d+\\.\\d+$" },
56
- "browser": { "type": "string", "minLength": 1 },
57
- "browser_revision": { "type": "string", "minLength": 1 },
58
- "playwright": { "type": "string", "minLength": 1 },
59
- "lockfile_sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
60
- "container_image": { "type": "string", "minLength": 1 },
61
- "viewport": { "type": "string", "pattern": "^\\d+x\\d+$" }
62
- }
63
- },
64
- "session_link": {
65
- "type": "object",
66
- "additionalProperties": false,
67
- "required": ["session_id", "nonce", "receipt_sha256", "started_at", "revision", "branch", "attempt", "environment", "source"],
68
- "properties": {
69
- "session_id": { "type": "string", "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$" },
70
- "nonce": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
71
- "receipt_sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
72
- "started_at": { "type": "string", "format": "date-time" },
73
- "revision": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
74
- "branch": { "type": "string", "minLength": 1 },
75
- "attempt": { "type": "integer", "minimum": 1 },
76
- "environment": { "$ref": "#/$defs/environment" },
77
- "source": { "$ref": "#/$defs/source_manifest" }
78
- }
79
- },
80
- "receipt_artifact": {
81
- "type": "object",
82
- "additionalProperties": false,
83
- "required": ["path", "sha256", "byte_length", "media_type"],
84
- "properties": {
85
- "path": { "const": "capture-session.json" },
86
- "sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
87
- "byte_length": { "type": "integer", "minimum": 1 },
88
- "media_type": { "const": "application/json" }
89
- }
90
- },
91
- "completed_session": {
92
- "type": "object",
93
- "additionalProperties": false,
94
- "required": ["session_id", "nonce", "receipt_sha256", "receipt", "started_at", "completed_at", "repository", "revision", "branch", "attempt", "environment", "source", "intended"],
95
- "properties": {
96
- "session_id": { "type": "string", "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$" },
97
- "nonce": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
98
- "receipt_sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
99
- "receipt": { "$ref": "#/$defs/receipt_artifact" },
100
- "started_at": { "type": "string", "format": "date-time" },
101
- "completed_at": { "type": "string", "format": "date-time" },
102
- "repository": { "type": "string", "minLength": 1 },
103
- "revision": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
104
- "branch": { "type": "string", "minLength": 1 },
105
- "attempt": { "type": "integer", "minimum": 1 },
106
- "environment": { "$ref": "#/$defs/environment" },
107
- "source": { "$ref": "#/$defs/source_manifest" },
108
- "intended": { "$ref": "#/$defs/intended" }
109
- }
110
- },
111
- "source_manifest": {
112
- "type": "object",
113
- "additionalProperties": false,
114
- "required": ["sha256", "files"],
115
- "properties": {
116
- "sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
117
- "files": {
118
- "type": "array",
119
- "minItems": 1,
120
- "uniqueItems": true,
121
- "items": {
122
- "type": "object",
123
- "additionalProperties": false,
124
- "required": ["path", "sha256", "byte_length"],
125
- "properties": {
126
- "path": { "type": "string", "pattern": "^(?:(?:consumer-reference|profiles|scripts|tests)/[^\\\\?#]+|package(?:-lock)?\\.json|playwright\\.config\\.mjs)$" },
127
- "sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
128
- "byte_length": { "type": "integer", "minimum": 1 }
129
- }
130
- }
131
- }
132
- }
133
- },
134
- "intended": {
135
- "type": "array",
136
- "minItems": 1,
137
- "items": {
138
- "type": "object",
139
- "additionalProperties": false,
140
- "required": ["profile_name", "profile_id", "scenarios"],
141
- "properties": {
142
- "profile_name": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
143
- "profile_id": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
144
- "scenarios": {
145
- "type": "array",
146
- "minItems": 1,
147
- "items": {
148
- "type": "object",
149
- "additionalProperties": false,
150
- "required": ["id", "channels"],
151
- "properties": {
152
- "id": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
153
- "channels": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "enum": ["visual", "dom", "ax"] } }
154
- }
155
- }
156
- }
157
- }
158
- }
159
- }
160
- }
161
- }