@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
@@ -0,0 +1,436 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/taxonomy/library/modules/v1.1.0/module-entry.schema.json",
4
+ "title": "Fulmen Helper Library Module Entry",
5
+ "description": "Schema for individual module entries in the helper library module registry. v1.1.0 adds weight classification, default_inclusion, rust language support, and per-language notes.",
6
+ "type": "object",
7
+ "required": [
8
+ "module_name",
9
+ "tier",
10
+ "description",
11
+ "rationale",
12
+ "evidence",
13
+ "languages",
14
+ "dependencies",
15
+ "status",
16
+ "added_version"
17
+ ],
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "module_name": {
21
+ "type": "string",
22
+ "description": "Unique identifier for the module (lowercase, no spaces)",
23
+ "pattern": "^[a-z][a-z0-9-]*$",
24
+ "examples": [
25
+ "config",
26
+ "pathfinder",
27
+ "similarity"
28
+ ]
29
+ },
30
+ "tier": {
31
+ "type": "string",
32
+ "enum": [
33
+ "core",
34
+ "common",
35
+ "specialized"
36
+ ],
37
+ "description": "Default tier assignment for the module across all languages"
38
+ },
39
+ "weight": {
40
+ "type": "string",
41
+ "enum": [
42
+ "light",
43
+ "heavy"
44
+ ],
45
+ "default": "light",
46
+ "description": "Dependency footprint classification. light = stdlib or serde-class deps only; heavy = significant dependency tree"
47
+ },
48
+ "default_inclusion": {
49
+ "type": "boolean",
50
+ "default": true,
51
+ "description": "Whether module is included in default/standard builds. false = opt-in only"
52
+ },
53
+ "description": {
54
+ "type": "string",
55
+ "description": "Brief description of module functionality",
56
+ "minLength": 10
57
+ },
58
+ "rationale": {
59
+ "type": "string",
60
+ "description": "Rationale for tier assignment",
61
+ "minLength": 10
62
+ },
63
+ "evidence": {
64
+ "type": "object",
65
+ "description": "Pointers to module artifacts for validation",
66
+ "required": [
67
+ "has_schema",
68
+ "has_config"
69
+ ],
70
+ "additionalProperties": false,
71
+ "properties": {
72
+ "has_schema": {
73
+ "type": "boolean",
74
+ "description": "Whether module has associated JSON schemas"
75
+ },
76
+ "schema_path": {
77
+ "type": "string",
78
+ "description": "Path to schema directory (required if has_schema is true)",
79
+ "pattern": "^schemas/"
80
+ },
81
+ "has_config": {
82
+ "type": "boolean",
83
+ "description": "Whether module has associated config files"
84
+ },
85
+ "config_path": {
86
+ "type": "string",
87
+ "description": "Path to config directory (required if has_config is true)",
88
+ "pattern": "^config/"
89
+ }
90
+ },
91
+ "allOf": [
92
+ {
93
+ "if": {
94
+ "properties": {
95
+ "has_schema": {
96
+ "const": true
97
+ }
98
+ }
99
+ },
100
+ "then": {
101
+ "required": [
102
+ "schema_path"
103
+ ]
104
+ }
105
+ },
106
+ {
107
+ "if": {
108
+ "properties": {
109
+ "has_config": {
110
+ "const": true
111
+ }
112
+ }
113
+ },
114
+ "then": {
115
+ "required": [
116
+ "config_path"
117
+ ]
118
+ }
119
+ }
120
+ ]
121
+ },
122
+ "languages": {
123
+ "type": "object",
124
+ "description": "Language-specific implementation status. go/python/typescript required; rust optional in v1.1.0",
125
+ "required": [
126
+ "go",
127
+ "python",
128
+ "typescript"
129
+ ],
130
+ "additionalProperties": false,
131
+ "properties": {
132
+ "go": {
133
+ "$ref": "#/$defs/languageImplementation"
134
+ },
135
+ "python": {
136
+ "$ref": "#/$defs/languageImplementation"
137
+ },
138
+ "typescript": {
139
+ "$ref": "#/$defs/languageImplementation"
140
+ },
141
+ "rust": {
142
+ "$ref": "#/$defs/languageImplementation"
143
+ }
144
+ }
145
+ },
146
+ "dependencies": {
147
+ "type": "object",
148
+ "description": "Module dependencies",
149
+ "required": [
150
+ "required_modules",
151
+ "external_deps"
152
+ ],
153
+ "additionalProperties": false,
154
+ "properties": {
155
+ "required_modules": {
156
+ "type": "array",
157
+ "description": "Other Fulmen modules this module depends on",
158
+ "items": {
159
+ "type": "string",
160
+ "pattern": "^[a-z][a-z0-9-]*$"
161
+ },
162
+ "uniqueItems": true
163
+ },
164
+ "external_deps": {
165
+ "type": "object",
166
+ "description": "External dependencies per language",
167
+ "required": [
168
+ "go",
169
+ "python",
170
+ "typescript"
171
+ ],
172
+ "additionalProperties": false,
173
+ "properties": {
174
+ "go": {
175
+ "type": "array",
176
+ "items": {
177
+ "type": "string"
178
+ },
179
+ "uniqueItems": true
180
+ },
181
+ "python": {
182
+ "type": "array",
183
+ "items": {
184
+ "type": "string"
185
+ },
186
+ "uniqueItems": true
187
+ },
188
+ "typescript": {
189
+ "type": "array",
190
+ "items": {
191
+ "type": "string"
192
+ },
193
+ "uniqueItems": true
194
+ },
195
+ "rust": {
196
+ "type": "array",
197
+ "items": {
198
+ "type": "string"
199
+ },
200
+ "uniqueItems": true
201
+ }
202
+ }
203
+ }
204
+ }
205
+ },
206
+ "graduation_metrics": {
207
+ "type": "object",
208
+ "description": "Metrics for graduation tracking (required for specialized modules)",
209
+ "additionalProperties": false,
210
+ "properties": {
211
+ "size_loc": {
212
+ "type": "integer",
213
+ "description": "Lines of code",
214
+ "minimum": 0
215
+ },
216
+ "release_velocity": {
217
+ "type": "integer",
218
+ "description": "Number of releases between helper releases",
219
+ "minimum": 0
220
+ },
221
+ "adoption_rate_pct": {
222
+ "type": "number",
223
+ "description": "Percentage of helper users who install this extension",
224
+ "minimum": 0,
225
+ "maximum": 100
226
+ },
227
+ "internal_coupling_pct": {
228
+ "type": "number",
229
+ "description": "Percentage of code that uses helper internals",
230
+ "minimum": 0,
231
+ "maximum": 100
232
+ }
233
+ }
234
+ },
235
+ "status": {
236
+ "type": "string",
237
+ "enum": [
238
+ "active",
239
+ "experimental",
240
+ "deprecated",
241
+ "graduated"
242
+ ],
243
+ "description": "Current lifecycle status of the module"
244
+ },
245
+ "added_version": {
246
+ "type": "string",
247
+ "description": "Version when module was added",
248
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
249
+ },
250
+ "sunset_date": {
251
+ "type": "string",
252
+ "format": "date",
253
+ "description": "ISO 8601 date when module must graduate or be removed (specialized only)"
254
+ }
255
+ },
256
+ "allOf": [
257
+ {
258
+ "if": {
259
+ "properties": {
260
+ "tier": {
261
+ "const": "core"
262
+ }
263
+ }
264
+ },
265
+ "then": {
266
+ "properties": {
267
+ "languages": {
268
+ "properties": {
269
+ "go": {
270
+ "properties": {
271
+ "status": {
272
+ "not": {
273
+ "const": "na"
274
+ }
275
+ },
276
+ "tier_override": {
277
+ "not": {}
278
+ }
279
+ }
280
+ },
281
+ "python": {
282
+ "properties": {
283
+ "status": {
284
+ "not": {
285
+ "const": "na"
286
+ }
287
+ },
288
+ "tier_override": {
289
+ "not": {}
290
+ }
291
+ }
292
+ },
293
+ "typescript": {
294
+ "properties": {
295
+ "status": {
296
+ "not": {
297
+ "const": "na"
298
+ }
299
+ },
300
+ "tier_override": {
301
+ "not": {}
302
+ }
303
+ }
304
+ }
305
+ }
306
+ }
307
+ }
308
+ }
309
+ },
310
+ {
311
+ "if": {
312
+ "properties": {
313
+ "tier": {
314
+ "const": "specialized"
315
+ }
316
+ }
317
+ },
318
+ "then": {
319
+ "required": [
320
+ "graduation_metrics",
321
+ "sunset_date"
322
+ ]
323
+ }
324
+ }
325
+ ],
326
+ "$defs": {
327
+ "languageImplementation": {
328
+ "type": "object",
329
+ "required": [
330
+ "status"
331
+ ],
332
+ "additionalProperties": false,
333
+ "properties": {
334
+ "status": {
335
+ "type": "string",
336
+ "enum": [
337
+ "available",
338
+ "planned",
339
+ "na"
340
+ ],
341
+ "description": "Implementation status for this language"
342
+ },
343
+ "tier_override": {
344
+ "type": "string",
345
+ "enum": [
346
+ "core",
347
+ "common",
348
+ "specialized"
349
+ ],
350
+ "description": "Override default tier for this language (not allowed for core modules)"
351
+ },
352
+ "package": {
353
+ "type": "string",
354
+ "description": "Package path/name (required if status is available)"
355
+ },
356
+ "version": {
357
+ "type": "string",
358
+ "description": "Version when module became available in this language",
359
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
360
+ },
361
+ "implementation": {
362
+ "type": "string",
363
+ "description": "How this module is implemented (e.g., 'Wraps stdlib X', 'Custom implementation using Y', 'Wraps third-party Z')",
364
+ "minLength": 10
365
+ },
366
+ "notes": {
367
+ "type": "string",
368
+ "description": "Language-specific build guidance (e.g., 'pulls jsonschema tree; must be feature-gated')"
369
+ },
370
+ "extras": {
371
+ "type": "array",
372
+ "description": "Python extras that include this module",
373
+ "items": {
374
+ "type": "string"
375
+ },
376
+ "uniqueItems": true
377
+ },
378
+ "optional_deps": {
379
+ "type": "array",
380
+ "description": "TypeScript optional dependencies needed for this module",
381
+ "items": {
382
+ "type": "string"
383
+ },
384
+ "uniqueItems": true
385
+ },
386
+ "rationale": {
387
+ "type": "string",
388
+ "description": "Rationale for tier_override or na status",
389
+ "minLength": 10
390
+ }
391
+ },
392
+ "allOf": [
393
+ {
394
+ "if": {
395
+ "properties": {
396
+ "status": {
397
+ "const": "available"
398
+ }
399
+ }
400
+ },
401
+ "then": {
402
+ "required": [
403
+ "package",
404
+ "version"
405
+ ]
406
+ }
407
+ },
408
+ {
409
+ "if": {
410
+ "anyOf": [
411
+ {
412
+ "properties": {
413
+ "tier_override": {
414
+ "type": "string"
415
+ }
416
+ }
417
+ },
418
+ {
419
+ "properties": {
420
+ "status": {
421
+ "const": "na"
422
+ }
423
+ }
424
+ }
425
+ ]
426
+ },
427
+ "then": {
428
+ "required": [
429
+ "rationale"
430
+ ]
431
+ }
432
+ }
433
+ ]
434
+ }
435
+ }
436
+ }
@@ -1,20 +1,28 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.fulmenhq.dev/taxonomy/repository-category/v1.0.0/category-key.schema.json",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/taxonomy/repository-category/v1.0.0/category-key.schema.json",
4
4
  "title": "Fulmen Repository Category Key",
5
- "description": "Enum of canonical Fulmen repository category identifiers",
5
+ "description": "Enum of canonical Fulmen repository category identifiers. Keys are opaque strings; hyphenated keys normalize to camelCase (spec-host → specHost) or SCREAMING_SNAKE (spec-host → SPEC_HOST) for code generation.",
6
6
  "type": "string",
7
7
  "enum": [
8
8
  "cli",
9
- "microtool",
10
- "workhorse",
11
- "service",
9
+ "codex",
10
+ "doc-host",
11
+ "fixture",
12
12
  "library",
13
+ "microtool",
14
+ "missive",
13
15
  "pipeline",
14
- "codex",
15
- "sdk"
16
+ "sdk",
17
+ "service",
18
+ "spec-host",
19
+ "workhorse"
16
20
  ],
17
21
  "examples": [
18
- "workhorse"
22
+ "workhorse",
23
+ "fixture",
24
+ "spec-host",
25
+ "doc-host",
26
+ "missive"
19
27
  ]
20
28
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.fulmenhq.dev/taxonomy/repository-category/v1.0.0/category-metadata.schema.json",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/taxonomy/repository-category/v1.0.0/category-metadata.schema.json",
4
4
  "title": "Fulmen Repository Category Metadata",
5
5
  "description": "Metadata object describing Fulmen repository category requirements",
6
6
  "type": "object",
@@ -0,0 +1,43 @@
1
+ # Provenance: 3leaps/crucible
2
+
3
+ **DO NOT EDIT THESE FILES.** They are vendored copies from upstream.
4
+
5
+ ## Source
6
+
7
+ | Field | Value |
8
+ | ---------- | ----------------------------------------- |
9
+ | Repository | https://github.com/3leaps/crucible |
10
+ | Tag | v0.1.3 |
11
+ | Commit | 92a37c41c0b66cc595e963a990082e388c2c9abc |
12
+ | Date | 2026-01-02 |
13
+ | Synced By | devlead (Claude Opus 4.5 via Claude Code) |
14
+
15
+ ## Files Included
16
+
17
+ ```
18
+ 3leaps/
19
+ ├── ailink/v0/
20
+ │ ├── prompt.schema.json
21
+ │ └── search-response.schema.json
22
+ └── agentic/v0/
23
+ └── role-prompt.schema.json
24
+ ```
25
+
26
+ ## Canonical URLs
27
+
28
+ These schemas are canonically hosted at:
29
+
30
+ - `https://schemas.3leaps.dev/ailink/v0/prompt.schema.json`
31
+ - `https://schemas.3leaps.dev/ailink/v0/search-response.schema.json`
32
+ - `https://schemas.3leaps.dev/agentic/v0/role-prompt.schema.json`
33
+
34
+ ## Refresh
35
+
36
+ To refresh from upstream:
37
+
38
+ ```bash
39
+ cd /path/to/3leaps/crucible && git pull
40
+ cp schemas/ailink/v0/*.json /path/to/fulmenhq/crucible/schemas/upstream/3leaps/ailink/v0/
41
+ cp schemas/agentic/v0/*.json /path/to/fulmenhq/crucible/schemas/upstream/3leaps/agentic/v0/
42
+ # Update this PROVENANCE.md with new commit hash and date
43
+ ```