@fulmenhq/tsfulmen 0.1.13 → 0.2.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.
Files changed (165) hide show
  1. package/CHANGELOG.md +73 -512
  2. package/README.md +111 -28
  3. package/config/crucible-ts/agentic/roles/README.md +76 -0
  4. package/config/crucible-ts/agentic/roles/cicd.yaml +82 -0
  5. package/config/crucible-ts/agentic/roles/dataeng.yaml +104 -0
  6. package/config/crucible-ts/agentic/roles/devlead.yaml +84 -0
  7. package/config/crucible-ts/agentic/roles/devrev.yaml +105 -0
  8. package/config/crucible-ts/agentic/roles/entarch.yaml +101 -0
  9. package/config/crucible-ts/agentic/roles/infoarch.yaml +95 -0
  10. package/config/crucible-ts/agentic/roles/prodmktg.yaml +92 -0
  11. package/config/crucible-ts/agentic/roles/qa.yaml +148 -0
  12. package/config/crucible-ts/agentic/roles/secrev.yaml +101 -0
  13. package/config/crucible-ts/agentic/roles/uxdev.yaml +168 -0
  14. package/config/crucible-ts/branding/ecosystem.yaml +26 -0
  15. package/config/crucible-ts/library/foundry/exit-codes.snapshot.json +26 -0
  16. package/config/crucible-ts/library/foundry/exit-codes.yaml +28 -3
  17. package/config/crucible-ts/library/foundry/patterns.yaml +2 -2
  18. package/config/crucible-ts/library/foundry/signal-resolution-fixtures.yaml +207 -0
  19. package/config/crucible-ts/library/foundry/signals.yaml +21 -0
  20. package/config/crucible-ts/library/foundry/simplified-modes.snapshot.json +9 -1
  21. package/config/crucible-ts/library/{foundry/similarity-fixtures.yaml → similarity/fixtures.yaml} +1 -1
  22. package/config/crucible-ts/library/v1.0.0/module-manifest.yaml +1 -2
  23. package/config/crucible-ts/taxonomy/fixture-catalog.yaml +145 -0
  24. package/config/crucible-ts/taxonomy/languages.yaml +2 -2
  25. package/config/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalogs.yaml +77 -0
  26. package/config/crucible-ts/taxonomy/library/platform-modules/v1.1.0/modules.yaml +722 -0
  27. package/config/crucible-ts/taxonomy/metrics.yaml +1 -1
  28. package/config/crucible-ts/taxonomy/repository-categories.yaml +134 -1
  29. package/dist/appidentity/index.d.ts +117 -35
  30. package/dist/appidentity/index.js +752 -592
  31. package/dist/appidentity/index.js.map +1 -1
  32. package/dist/config/index.js +118 -6
  33. package/dist/config/index.js.map +1 -1
  34. package/dist/crucible/index.js +118 -6
  35. package/dist/crucible/index.js.map +1 -1
  36. package/dist/errors/index.js +118 -6
  37. package/dist/errors/index.js.map +1 -1
  38. package/dist/foundry/index.d.ts +13 -676
  39. package/dist/foundry/index.js +118 -6
  40. package/dist/foundry/index.js.map +1 -1
  41. package/dist/foundry/similarity/index.d.ts +2 -2
  42. package/dist/fulhash/index.d.ts +64 -12
  43. package/dist/fulhash/index.js +292 -53
  44. package/dist/fulhash/index.js.map +1 -1
  45. package/dist/index.d.ts +2 -2
  46. package/dist/index.js +753 -593
  47. package/dist/index.js.map +1 -1
  48. package/dist/{manager-D27vrdaS.d.ts → manager-CH3fX7zO.d.ts} +1 -1
  49. package/dist/pathfinder/index.js +368 -59
  50. package/dist/pathfinder/index.js.map +1 -1
  51. package/dist/reports/license-inventory.csv +302 -0
  52. package/dist/schema/index.js +118 -6
  53. package/dist/schema/index.js.map +1 -1
  54. package/dist/signals/index.d.ts +675 -0
  55. package/dist/signals/index.js +5790 -0
  56. package/dist/signals/index.js.map +1 -0
  57. package/dist/similarity/index.d.ts +2 -0
  58. package/dist/similarity/index.js +136 -0
  59. package/dist/similarity/index.js.map +1 -0
  60. package/dist/{suggest-Cv7SVQRu.d.ts → suggest-D8LbwtPV.d.ts} +1 -1
  61. package/dist/telemetry/http/index.js +704 -591
  62. package/dist/telemetry/http/index.js.map +1 -1
  63. package/dist/telemetry/index.js +118 -6
  64. package/dist/telemetry/index.js.map +1 -1
  65. package/dist/telemetry/prometheus/index.d.ts +1 -1
  66. package/dist/telemetry/prometheus/index.js +175 -11
  67. package/dist/telemetry/prometheus/index.js.map +1 -1
  68. package/package.json +15 -6
  69. package/schemas/crucible-ts/assessment/v1.0.0/severity-definitions.schema.json +1 -1
  70. package/schemas/crucible-ts/config/fulmen-ecosystem/v1.0.0/fulmen-config-paths.schema.json +1 -1
  71. package/schemas/crucible-ts/config/repository/app-identity/v1.0.0/app-identity.schema.json +3 -3
  72. package/schemas/crucible-ts/config/repository/v1.0.0/lifecycle-phase.json +1 -1
  73. package/schemas/crucible-ts/config/repository-category/codex/v1.0.0/codex-config.schema.json +1 -1
  74. package/schemas/crucible-ts/config/standards/v1.0.0/adr-adoption-status.json +1 -1
  75. package/schemas/crucible-ts/config/standards/v1.0.0/adr-frontmatter.schema.json +3 -3
  76. package/schemas/crucible-ts/config/standards/v1.0.0/adr-lifecycle-status.json +1 -1
  77. package/schemas/crucible-ts/config/sync-keys.schema.yaml +14 -0
  78. package/schemas/crucible-ts/content/ssot-provenance/v1.0.0/ssot-provenance.schema.json +1 -1
  79. package/schemas/crucible-ts/design/README.md +159 -0
  80. package/schemas/crucible-ts/design/core/v1.0.0/component-states.schema.json +204 -0
  81. package/schemas/crucible-ts/design/core/v1.0.0/semantic-colors.schema.json +179 -0
  82. package/schemas/crucible-ts/design/core/v1.0.0/spacing-scale.schema.json +165 -0
  83. package/schemas/crucible-ts/design/core/v1.0.0/typography-roles.schema.json +195 -0
  84. package/schemas/crucible-ts/design/tui/v1.0.0/color-palette.schema.json +303 -0
  85. package/schemas/crucible-ts/design/tui/v1.0.0/component.schema.json +374 -0
  86. package/schemas/crucible-ts/design/tui/v1.0.0/layout.schema.json +272 -0
  87. package/schemas/crucible-ts/design/tui/v1.0.0/theme.schema.json +205 -0
  88. package/schemas/crucible-ts/design/tui/v1.0.0/typography.schema.json +316 -0
  89. package/schemas/crucible-ts/devsecops/lorage-central/activity/v1.0.0/activity.schema.json +1 -1
  90. package/schemas/crucible-ts/devsecops/lorage-central/credentials/v1.0.0/credentials.schema.json +1 -1
  91. package/schemas/crucible-ts/devsecops/lorage-central/policy/v1.0.0/policy.schema.json +1 -1
  92. package/schemas/crucible-ts/devsecops/lorage-central/recipe/v1.0.0/recipe.schema.json +1 -1
  93. package/schemas/crucible-ts/devsecops/lorage-central/runbooks/v1.0.0/runbook.schema.json +1 -1
  94. package/schemas/crucible-ts/devsecops/lorage-central/tenant/v1.0.0/tenant.schema.json +1 -1
  95. package/schemas/crucible-ts/devsecops/secrets/v1.0.0/secrets.schema.json +1 -1
  96. package/schemas/crucible-ts/error-handling/v1.0.0/error-response.schema.json +1 -1
  97. package/schemas/crucible-ts/library/foundry/v1.0.0/country-codes.schema.json +1 -1
  98. package/schemas/crucible-ts/library/foundry/v1.0.0/exit-codes.schema.json +1 -1
  99. package/schemas/crucible-ts/library/foundry/v1.0.0/http-status-groups.schema.json +1 -1
  100. package/schemas/crucible-ts/library/foundry/v1.0.0/mime-types.schema.json +1 -1
  101. package/schemas/crucible-ts/library/foundry/v1.0.0/patterns.schema.json +1 -1
  102. package/schemas/crucible-ts/library/foundry/v1.0.0/signal-resolution-fixtures.schema.json +140 -0
  103. package/schemas/crucible-ts/library/foundry/v1.0.0/signals.schema.json +6 -1
  104. package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-config.schema.json +1 -1
  105. package/schemas/crucible-ts/library/fulhash/v1.0.0/checksum-string.schema.json +2 -2
  106. package/schemas/crucible-ts/library/fulhash/v1.0.0/digest.schema.json +61 -1
  107. package/schemas/crucible-ts/library/fulhash/v1.0.0/fixtures.schema.json +1 -1
  108. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-entry.schema.json +1 -1
  109. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-info.schema.json +1 -1
  110. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-manifest.schema.json +2 -2
  111. package/schemas/crucible-ts/library/fulpack/v1.0.0/create-options.schema.json +1 -1
  112. package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-options.schema.json +1 -1
  113. package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-result.schema.json +1 -1
  114. package/schemas/crucible-ts/library/fulpack/v1.0.0/scan-options.schema.json +1 -1
  115. package/schemas/crucible-ts/library/fulpack/v1.0.0/validation-result.schema.json +1 -1
  116. package/schemas/crucible-ts/library/module-manifest/v1.0.0/module-manifest.schema.json +1 -1
  117. package/schemas/crucible-ts/library/{foundry → similarity}/v1.0.0/similarity.schema.json +2 -2
  118. package/schemas/crucible-ts/library/{foundry → similarity}/v2.0.0/similarity.schema.json +2 -2
  119. package/schemas/crucible-ts/observability/metrics/v1.0.0/metrics-event.schema.json +1 -1
  120. package/schemas/crucible-ts/pathfinder/v1.0.0/find-query.schema.json +1 -1
  121. package/schemas/crucible-ts/pathfinder/v1.0.0/finder-config.schema.json +1 -1
  122. package/schemas/crucible-ts/pathfinder/v1.0.0/path-result.schema.json +1 -1
  123. package/schemas/crucible-ts/protocol/http/v1.0.0/error-response.schema.json +1 -1
  124. package/schemas/crucible-ts/protocol/http/v1.0.0/health-response.schema.json +1 -1
  125. package/schemas/crucible-ts/protocol/http/v1.0.0/success-response.schema.json +1 -1
  126. package/schemas/crucible-ts/protocol/http/v1.0.0/version-response.schema.json +1 -1
  127. package/schemas/crucible-ts/server/management/v1.0.0/server-management.schema.json +1 -1
  128. package/schemas/crucible-ts/standards/publishing/v1.0.0/spec-catalog.schema.json +134 -0
  129. package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-key.schema.json +1 -1
  130. package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-metadata.schema.json +1 -1
  131. package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-key.schema.json +1 -1
  132. package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-metadata.schema.json +1 -1
  133. package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-key.schema.json +1 -1
  134. package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-metadata.schema.json +1 -1
  135. package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-key.schema.json +1 -1
  136. package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-metadata.schema.json +1 -1
  137. package/schemas/crucible-ts/taxonomy/devsecops/modules/v1.0.0/devsecops-module-entry.schema.json +1 -1
  138. package/schemas/crucible-ts/taxonomy/fixture/v1.0.0/fixture-catalog.schema.json +166 -0
  139. package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-key.schema.json +1 -1
  140. package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-metadata.schema.json +1 -1
  141. package/schemas/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalog-entry.schema.json +98 -0
  142. package/schemas/crucible-ts/taxonomy/library/fulencode/detection-confidence/v1.0.0/levels.schema.json +1 -1
  143. package/schemas/crucible-ts/taxonomy/library/fulencode/encoding-families/v1.0.0/families.schema.json +1 -1
  144. package/schemas/crucible-ts/taxonomy/library/fulencode/normalization-profiles/v1.0.0/profiles.schema.json +1 -1
  145. package/schemas/crucible-ts/taxonomy/library/fulhash/algorithms/v1.0.0/algorithms.yaml +16 -0
  146. package/schemas/crucible-ts/taxonomy/library/modules/v1.0.0/module-entry.schema.json +1 -1
  147. package/schemas/crucible-ts/taxonomy/library/modules/v1.1.0/module-entry.schema.json +436 -0
  148. package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-key.schema.json +16 -8
  149. package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-metadata.schema.json +1 -1
  150. package/schemas/crucible-ts/upstream/3leaps/PROVENANCE.md +43 -0
  151. package/schemas/crucible-ts/upstream/3leaps/agentic/v0/role-prompt.schema.json +183 -0
  152. package/schemas/crucible-ts/upstream/3leaps/ailink/v0/prompt.schema.json +204 -0
  153. package/schemas/crucible-ts/upstream/3leaps/ailink/v0/search-response.schema.json +152 -0
  154. package/schemas/crucible-ts/upstream/README.md +50 -0
  155. package/schemas/crucible-ts/web/branding/v1.0.0/site-branding.schema.json +1 -1
  156. package/schemas/crucible-ts/web/styling/v1.0.0/site-styling.schema.json +1 -1
  157. package/schemas/crucible-ts/config/goneat/README.md +0 -60
  158. package/schemas/crucible-ts/config/goneat/v1.0.0/dates.yaml +0 -234
  159. package/schemas/crucible-ts/config/goneat/v1.0.0/goneat-config.yaml +0 -344
  160. package/schemas/crucible-ts/config/goneat/v1.0.0/lifecycle-phase.json +0 -20
  161. package/schemas/crucible-ts/config/goneat/v1.0.0/release-phase.json +0 -17
  162. package/schemas/crucible-ts/config/goneat/v1.0.0/security-policy.yaml +0 -178
  163. package/schemas/crucible-ts/config/goneat/v1.0.0/version-policy.schema.yaml +0 -205
  164. package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/README.md +0 -177
  165. package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/goneat-tools-config.schema.yaml +0 -146
package/package.json CHANGED
@@ -34,8 +34,8 @@
34
34
  "vitest": "^2.1.5"
35
35
  },
36
36
  "engines": {
37
- "bun": ">=1.0.0",
38
- "node": ">=20.0.0"
37
+ "bun": "\u003e=1.0.0",
38
+ "node": "\u003e=20.0.0"
39
39
  },
40
40
  "exports": {
41
41
  ".": {
@@ -94,6 +94,14 @@
94
94
  "import": "./dist/schema/index.js",
95
95
  "types": "./dist/schema/index.d.ts"
96
96
  },
97
+ "./signals": {
98
+ "import": "./dist/signals/index.js",
99
+ "types": "./dist/signals/index.d.ts"
100
+ },
101
+ "./similarity": {
102
+ "import": "./dist/similarity/index.js",
103
+ "types": "./dist/similarity/index.d.ts"
104
+ },
97
105
  "./telemetry": {
98
106
  "import": "./dist/telemetry/index.js",
99
107
  "types": "./dist/telemetry/index.d.ts"
@@ -152,23 +160,24 @@
152
160
  "dev": "tsx src/index.ts",
153
161
  "lint": "make lint",
154
162
  "lint:fix": "make fmt",
155
- "prepublishOnly": "bun run quality && bun run validate:all && bunx tsx scripts/prepare-wasm-package.ts",
163
+ "prepublishOnly": "bun run quality \u0026\u0026 bun run validate:all \u0026\u0026 bunx tsx scripts/prepare-wasm-package.ts",
156
164
  "quality": "make quality",
157
165
  "test": "make test",
158
166
  "test:coverage": "make test-coverage",
159
167
  "test:watch": "make test-watch",
160
168
  "typecheck": "make typecheck",
161
- "validate:all": "bun run validate:exports && bun run validate:tsup && bun run validate:source-modules && bun run validate:package && bun run validate:imports && bun run validate:types",
169
+ "validate:all": "bun run validate:exports \u0026\u0026 bun run validate:tsup \u0026\u0026 bun run validate:source-modules \u0026\u0026 bun run validate:package \u0026\u0026 bun run validate:imports \u0026\u0026 bun run validate:types",
162
170
  "validate:exports": "bunx tsx scripts/validate-exports.ts",
163
171
  "validate:imports": "bunx tsx scripts/validate-imports.ts",
164
172
  "validate:package": "bunx tsx scripts/validate-package-contents.ts",
165
173
  "validate:source-modules": "bunx tsx scripts/validate-source-modules.ts",
166
174
  "validate:tsup": "bunx tsx scripts/validate-tsup-config.ts",
167
175
  "validate:types": "bunx tsx scripts/validate-types.ts",
168
- "verify:package": "bunx tsx scripts/verify-published-package.ts",
176
+ "verify:local": "make verify-local-install",
177
+ "verify:package": "make verify-published-package",
169
178
  "version:sync": "make version-sync"
170
179
  },
171
180
  "type": "module",
172
181
  "types": "./dist/index.d.ts",
173
- "version": "0.1.13"
182
+ "version": "0.2.0"
174
183
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.fulmenhq.dev/assessment/severity-definitions-v1.0.0.json",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/assessment/severity-definitions-v1.0.0.json",
4
4
  "title": "Assessment Severity Definitions",
5
5
  "description": "Shared severity definitions for assessment and analysis tooling.",
6
6
  "$comment": "Implementations MUST compare severities using severityLevel, not lexical ordering of severityName.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.fulmenhq.dev/config/fulmen-ecosystem/fulmen-config-paths-v1.0.0.json",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/config/fulmen-ecosystem/fulmen-config-paths-v1.0.0.json",
4
4
  "title": "Fulmen Config Paths",
5
5
  "description": "Describes shared configuration directories for Fulmen tools",
6
6
  "type": "object",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.fulmenhq.dev/config/repository/app-identity/v1.0.0/app-identity.schema.json",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/config/repository/app-identity/v1.0.0/app-identity.schema.json",
4
4
  "title": "Fulmen Application Identity",
5
5
  "description": "Application identity metadata for Fulmen ecosystem projects",
6
6
  "type": "object",
@@ -29,10 +29,10 @@
29
29
  },
30
30
  "vendor": {
31
31
  "type": "string",
32
- "pattern": "^[a-z][a-z0-9]{0,62}[a-z0-9]$",
32
+ "pattern": "^[a-z0-9]{2,64}$",
33
33
  "minLength": 2,
34
34
  "maxLength": 64,
35
- "description": "Lowercase vendor namespace (no hyphens, alphanumeric only)"
35
+ "description": "Lowercase vendor namespace (alphanumeric only, no hyphens). Leading digits permitted - vendor is used for filesystem paths and config directories, not language-specific package imports. Examples: 'fulmenhq', '3leaps', '37signals'."
36
36
  },
37
37
  "env_prefix": {
38
38
  "type": "string",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.fulmenhq.dev/repository/lifecycle-phase-v1.0.0.json",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/repository/lifecycle-phase-v1.0.0.json",
4
4
  "title": "Repository Lifecycle Phase",
5
5
  "description": "Product lifecycle maturity phase used to drive quality gates, coverage thresholds, and communication posture across Fulmen repositories.",
6
6
  "type": "string",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.fulmenhq.dev/config/repository-category/codex/v1.0.0/codex-config.schema.json",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/config/repository-category/codex/v1.0.0/codex-config.schema.json",
4
4
  "title": "Codex Configuration Schema",
5
5
  "description": "Configuration schema for Fulmen codex templates (documentation sites, schema registries, knowledge hubs)",
6
6
  "type": "object",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.fulmenhq.dev/standards/adr-adoption-status-v1.0.0.json",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/standards/adr-adoption-status-v1.0.0.json",
4
4
  "title": "ADR Adoption Status",
5
5
  "description": "Per-library adoption status for ecosystem ADRs. Tracks implementation progress across language foundations (gofulmen, pyfulmen, tsfulmen, etc.).",
6
6
  "type": "string",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.fulmenhq.dev/standards/adr-frontmatter-v1.0.0.json",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/standards/adr-frontmatter-v1.0.0.json",
4
4
  "title": "ADR Frontmatter Schema",
5
5
  "description": "Required frontmatter structure for Architecture Decision Records (ADRs) in the Fulmen ecosystem. Ensures consistency, enables validation, and supports tooling.",
6
6
  "type": "object",
@@ -33,7 +33,7 @@
33
33
  ]
34
34
  },
35
35
  "status": {
36
- "$ref": "https://schemas.fulmenhq.dev/standards/adr-lifecycle-status-v1.0.0.json",
36
+ "$ref": "https://schemas.fulmenhq.dev/crucible/standards/adr-lifecycle-status-v1.0.0.json",
37
37
  "description": "Current lifecycle status of this ADR. Drives adoption guidance and deprecation warnings."
38
38
  },
39
39
  "date": {
@@ -164,7 +164,7 @@
164
164
  "type": "object",
165
165
  "description": "Per-library adoption status tracking. Keys are library names, values are adoption status. Used for ecosystem ADRs only.",
166
166
  "additionalProperties": {
167
- "$ref": "https://schemas.fulmenhq.dev/standards/adr-adoption-status-v1.0.0.json"
167
+ "$ref": "https://schemas.fulmenhq.dev/crucible/standards/adr-adoption-status-v1.0.0.json"
168
168
  },
169
169
  "examples": [
170
170
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.fulmenhq.dev/standards/adr-lifecycle-status-v1.0.0.json",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/standards/adr-lifecycle-status-v1.0.0.json",
4
4
  "title": "ADR Lifecycle Status",
5
5
  "description": "Lifecycle status for Architecture Decision Records (ADRs) and standards documents. Inspired by ThoughtWorks Technology Radar maturity model, adapted for architectural decision tracking.",
6
6
  "type": "string",
@@ -34,4 +34,18 @@ $defs:
34
34
  type: array
35
35
  items:
36
36
  type: string
37
+ metadata:
38
+ type: object
39
+ description: Optional metadata for sync tooling
40
+ properties:
41
+ sourceRepo:
42
+ type: string
43
+ description: Source repository URL or 'local' for development references
44
+ sourcePathBase:
45
+ type: string
46
+ description: Base path within source repository for this sync key
47
+ notes:
48
+ type: string
49
+ description: Human-readable notes about usage, constraints, or caveats
50
+ additionalProperties: true
37
51
  additionalProperties: false
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/fulmenhq/crucible/schemas/content/ssot-provenance/v1.0.0/ssot-provenance.schema.json",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/content/ssot-provenance/v1.0.0/ssot-provenance.schema.json",
4
4
  "title": "SSOT Sync Provenance Metadata",
5
5
  "description": "Aggregate provenance metadata for SSOT sync operations capturing source information for audit trails",
6
6
  "type": "object",
@@ -0,0 +1,159 @@
1
+ # Design System Schemas
2
+
3
+ Schema definitions for Fulmen design systems. Provides a layered architecture separating semantic vocabulary (core) from implementation-specific patterns (TUI, web).
4
+
5
+ ## Architecture
6
+
7
+ ```
8
+ schemas/design/
9
+ ├── core/v1.0.0/ # Semantic vocabulary (shared)
10
+ │ ├── semantic-colors.schema.json
11
+ │ ├── spacing-scale.schema.json
12
+ │ ├── typography-roles.schema.json
13
+ │ └── component-states.schema.json
14
+ ├── tui/v1.0.0/ # Terminal UI implementation
15
+ │ ├── theme.schema.json # Root composition
16
+ │ ├── color-palette.schema.json
17
+ │ ├── typography.schema.json
18
+ │ ├── layout.schema.json
19
+ │ └── component.schema.json
20
+ └── web/v1.0.0/ # (Future) Web implementation
21
+ ```
22
+
23
+ ## Core Schemas
24
+
25
+ Core schemas define **semantic vocabulary** - the language of design - without implementation details. Both TUI and web implementations reference these definitions.
26
+
27
+ | Schema | Purpose |
28
+ | ------------------ | -------------------------------------------------------------- |
29
+ | `semantic-colors` | Color roles: primary, secondary, success, warning, error, etc. |
30
+ | `spacing-scale` | Spacing tokens: none, xs, sm, md, lg, xl, etc. |
31
+ | `typography-roles` | Text roles: display, headline, body, caption, code, etc. |
32
+ | `component-states` | UI states: default, hover, focus, active, disabled, etc. |
33
+
34
+ ## TUI Schemas
35
+
36
+ Terminal UI schemas implement the core vocabulary for terminal environments with:
37
+
38
+ - **Color fallback chains**: truecolor → 256-color → 16-color → basic
39
+ - **Character set degradation**: unicode-full → unicode-basic → extended-ascii → ascii
40
+ - **Cell-based layouts**: dimensions in columns/rows
41
+ - **Box drawing**: configurable character sets (rounded, single, double, ascii)
42
+
43
+ | Schema | Purpose |
44
+ | --------------- | ----------------------------------------------- |
45
+ | `theme` | Root composition - aggregates all TUI schemas |
46
+ | `color-palette` | Terminal colors with capability-based fallbacks |
47
+ | `typography` | Charset support, glyphs, CJK width handling |
48
+ | `layout` | Cell-based dimensions, responsive breakpoints |
49
+ | `component` | Widget patterns with state styling |
50
+
51
+ ## Usage
52
+
53
+ ### Theme Files
54
+
55
+ Create theme YAML files that reference the TUI theme schema:
56
+
57
+ ```yaml
58
+ $schema: https://schemas.fulmenhq.dev/crucible/design/tui/v1.0.0/theme.schema.json
59
+ version: "1.0.0"
60
+ schema_version: "1.0.0"
61
+
62
+ metadata:
63
+ name: "Fulmen Dark"
64
+ id: "fulmen-dark"
65
+ description: "Default dark theme for Fulmen TUI applications"
66
+ dark_mode: true
67
+
68
+ requirements:
69
+ min_color_capability: "256"
70
+ min_charset: "unicode-basic"
71
+
72
+ colors:
73
+ version: "1.0.0"
74
+ name: "fulmen-dark"
75
+ semantic_colors:
76
+ primary:
77
+ role: "primary"
78
+ foreground:
79
+ truecolor: "#7AA2F7"
80
+ ansi256: 111
81
+ ansi16: "bright-blue"
82
+ # ...
83
+ ```
84
+
85
+ ### Accessing via Helper Libraries
86
+
87
+ ```go
88
+ // Go (gofulmen)
89
+ import "github.com/fulmenhq/crucible"
90
+
91
+ theme, _ := crucible.DesignRegistry.TUI().Theme("fulmen-dark")
92
+ primaryColor := theme.Colors.SemanticColors.Primary.Foreground.Truecolor
93
+ ```
94
+
95
+ ```typescript
96
+ // TypeScript (tsfulmen)
97
+ import { design } from "@fulmenhq/crucible";
98
+
99
+ const theme = design.tui().theme("fulmen-dark");
100
+ const primaryColor = theme.colors.semanticColors.primary.foreground.truecolor;
101
+ ```
102
+
103
+ ## Terminal Capability Detection
104
+
105
+ TUI themes support graceful degradation based on terminal capabilities:
106
+
107
+ | Capability | Detection | Fallback Chain |
108
+ | ------------- | ----------------------------- | ---------------------------------- |
109
+ | **Color** | `$COLORTERM`, `$TERM` | truecolor → 256 → 16 → basic |
110
+ | **Charset** | `$LANG`, terminal query | unicode-full → basic-latin → ascii |
111
+ | **Nerd Font** | User config, detection script | nerd-font → unicode → ascii |
112
+
113
+ ## WCAG Accessibility
114
+
115
+ Themes can declare WCAG conformance:
116
+
117
+ ```yaml
118
+ accessibility:
119
+ wcag_level: "AA"
120
+ min_contrast_ratio: 4.5
121
+ focus_visible_required: true
122
+ color_blind_safe: true
123
+ ```
124
+
125
+ The `wcag_contrast_ratio` field on semantic colors enables automated accessibility checking.
126
+
127
+ ## Examples
128
+
129
+ Reference themes are available in `examples/design/tui/v1.0.0/themes/`:
130
+
131
+ - `dark.yaml` - Default dark theme with full capability (WCAG AA)
132
+ - `light.yaml` - Light mode for daytime use (WCAG AA)
133
+ - `high-contrast.yaml` - WCAG AAA compliant high contrast theme
134
+
135
+ ## Roadmap
136
+
137
+ ### v1.0.0 (Current)
138
+
139
+ - Core semantic vocabulary
140
+ - TUI implementation schemas
141
+ - Reference dark and high-contrast themes
142
+
143
+ ### v1.1.0 (Planned)
144
+
145
+ - Animation/transition tokens
146
+ - Sound/haptic feedback schemas
147
+ - Theme inheritance/composition
148
+
149
+ ### Future
150
+
151
+ - Web implementation schemas (`design/web/`)
152
+ - Design token export (Figma, Style Dictionary)
153
+ - Theme marketplace/registry
154
+
155
+ ## Related Documentation
156
+
157
+ - [Fulmen Ecosystem Guide](../../docs/architecture/fulmen-ecosystem-guide.md)
158
+ - [Schema Normalization Standard](../../docs/standards/schema-normalization.md)
159
+ - [Terminal Catalog](../terminal/v1.0.0/)
@@ -0,0 +1,204 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/design/core/v1.0.0/component-states.schema.json",
4
+ "title": "Component States Vocabulary",
5
+ "description": "Universal component state definitions for design systems. Implementation-agnostic vocabulary shared across TUI and web contexts.",
6
+ "type": "object",
7
+ "$defs": {
8
+ "interactiveState": {
9
+ "type": "string",
10
+ "enum": [
11
+ "default",
12
+ "hover",
13
+ "focus",
14
+ "focus-visible",
15
+ "active",
16
+ "disabled",
17
+ "loading",
18
+ "selected",
19
+ "checked",
20
+ "indeterminate",
21
+ "expanded",
22
+ "collapsed"
23
+ ],
24
+ "description": "Interactive component states"
25
+ },
26
+ "validationState": {
27
+ "type": "string",
28
+ "enum": [
29
+ "valid",
30
+ "invalid",
31
+ "warning",
32
+ "pending"
33
+ ],
34
+ "description": "Form/input validation states"
35
+ },
36
+ "feedbackState": {
37
+ "type": "string",
38
+ "enum": [
39
+ "success",
40
+ "error",
41
+ "warning",
42
+ "info",
43
+ "neutral"
44
+ ],
45
+ "description": "User feedback states (for alerts, toasts, etc.)"
46
+ },
47
+ "visibilityState": {
48
+ "type": "string",
49
+ "enum": [
50
+ "visible",
51
+ "hidden",
52
+ "entering",
53
+ "exiting"
54
+ ],
55
+ "description": "Visibility/transition states"
56
+ },
57
+ "stateDefinition": {
58
+ "type": "object",
59
+ "description": "A state definition with semantic meaning",
60
+ "properties": {
61
+ "state": {
62
+ "type": "string",
63
+ "description": "State identifier"
64
+ },
65
+ "category": {
66
+ "type": "string",
67
+ "enum": [
68
+ "interactive",
69
+ "validation",
70
+ "feedback",
71
+ "visibility"
72
+ ],
73
+ "description": "State category"
74
+ },
75
+ "description": {
76
+ "type": "string",
77
+ "description": "When this state applies"
78
+ },
79
+ "aria_mapping": {
80
+ "type": "string",
81
+ "description": "Corresponding ARIA attribute/state"
82
+ },
83
+ "visual_indicators": {
84
+ "type": "array",
85
+ "items": {
86
+ "type": "string"
87
+ },
88
+ "description": "Required visual indicators for this state"
89
+ },
90
+ "can_combine_with": {
91
+ "type": "array",
92
+ "items": {
93
+ "type": "string"
94
+ },
95
+ "description": "States that can coexist with this one"
96
+ },
97
+ "mutually_exclusive_with": {
98
+ "type": "array",
99
+ "items": {
100
+ "type": "string"
101
+ },
102
+ "description": "States that cannot coexist with this one"
103
+ }
104
+ },
105
+ "required": [
106
+ "state",
107
+ "category"
108
+ ]
109
+ },
110
+ "stateTransition": {
111
+ "type": "object",
112
+ "description": "Valid state transition",
113
+ "properties": {
114
+ "from": {
115
+ "type": "string",
116
+ "description": "Source state"
117
+ },
118
+ "to": {
119
+ "type": "string",
120
+ "description": "Target state"
121
+ },
122
+ "trigger": {
123
+ "type": "string",
124
+ "description": "What triggers this transition"
125
+ },
126
+ "reversible": {
127
+ "type": "boolean",
128
+ "description": "Whether transition can be reversed"
129
+ }
130
+ },
131
+ "required": [
132
+ "from",
133
+ "to",
134
+ "trigger"
135
+ ]
136
+ }
137
+ },
138
+ "properties": {
139
+ "$schema": {
140
+ "type": "string",
141
+ "description": "JSON Schema reference"
142
+ },
143
+ "version": {
144
+ "type": "string",
145
+ "pattern": "^[vV]?\\d+\\.\\d+\\.\\d+$",
146
+ "description": "Semantic version of the component states vocabulary"
147
+ },
148
+ "interactive_states": {
149
+ "type": "array",
150
+ "description": "Interactive state definitions",
151
+ "items": {
152
+ "$ref": "#/$defs/stateDefinition"
153
+ }
154
+ },
155
+ "validation_states": {
156
+ "type": "array",
157
+ "description": "Validation state definitions",
158
+ "items": {
159
+ "$ref": "#/$defs/stateDefinition"
160
+ }
161
+ },
162
+ "feedback_states": {
163
+ "type": "array",
164
+ "description": "Feedback state definitions",
165
+ "items": {
166
+ "$ref": "#/$defs/stateDefinition"
167
+ }
168
+ },
169
+ "state_transitions": {
170
+ "type": "array",
171
+ "description": "Valid state transitions",
172
+ "items": {
173
+ "$ref": "#/$defs/stateTransition"
174
+ }
175
+ },
176
+ "accessibility_requirements": {
177
+ "type": "object",
178
+ "description": "Accessibility requirements for states",
179
+ "properties": {
180
+ "focus_visible_required": {
181
+ "type": "boolean",
182
+ "description": "Whether focus-visible indicator is required"
183
+ },
184
+ "disabled_announcement": {
185
+ "type": "boolean",
186
+ "description": "Whether disabled state must be announced to AT"
187
+ },
188
+ "state_change_announcement": {
189
+ "type": "boolean",
190
+ "description": "Whether state changes should be announced"
191
+ }
192
+ }
193
+ },
194
+ "extensions": {
195
+ "type": "object",
196
+ "description": "Implementation-specific extensions",
197
+ "additionalProperties": true
198
+ }
199
+ },
200
+ "required": [
201
+ "version"
202
+ ],
203
+ "additionalProperties": false
204
+ }