@fulmenhq/tsfulmen 0.2.0 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +70 -0
- package/README.md +61 -7
- package/config/crucible-ts/agentic/roles/README.md +3 -3
- package/config/crucible-ts/library/fulencode/fixtures/README.md +18 -0
- package/config/crucible-ts/library/fulencode/fixtures/bom/bom.yaml +14 -0
- package/config/crucible-ts/library/fulencode/fixtures/detection/detection.yaml +12 -0
- package/config/crucible-ts/library/fulencode/fixtures/invalid-encodings/base64.yaml +10 -0
- package/config/crucible-ts/library/fulencode/fixtures/normalization/text-safe.yaml +10 -0
- package/config/crucible-ts/library/fulencode/fixtures/telemetry/telemetry-test-cases.yaml +24 -0
- package/config/crucible-ts/library/fulencode/fixtures/valid-encodings/base64.yaml +11 -0
- package/config/crucible-ts/taxonomy/library/platform-modules/v1.0.0/modules.yaml +2 -2
- package/config/crucible-ts/taxonomy/metrics.yaml +79 -1
- package/dist/appidentity/index.d.ts +31 -109
- package/dist/appidentity/index.js +369 -60
- package/dist/appidentity/index.js.map +1 -1
- package/dist/config/index.d.ts +46 -1
- package/dist/config/index.js +427 -62
- package/dist/config/index.js.map +1 -1
- package/dist/crucible/index.js +367 -59
- package/dist/crucible/index.js.map +1 -1
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.js +367 -59
- package/dist/errors/index.js.map +1 -1
- package/dist/foundry/index.d.ts +2 -1
- package/dist/foundry/index.js +368 -60
- package/dist/foundry/index.js.map +1 -1
- package/dist/fulencode/index.d.ts +102 -0
- package/dist/fulencode/index.js +806 -0
- package/dist/fulencode/index.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +370 -61
- package/dist/index.js.map +1 -1
- package/dist/pathfinder/index.d.ts +1 -1
- package/dist/pathfinder/index.js +367 -59
- package/dist/pathfinder/index.js.map +1 -1
- package/dist/reports/license-inventory.csv +31 -24
- package/dist/schema/index.d.ts +16 -3
- package/dist/schema/index.js +368 -60
- package/dist/schema/index.js.map +1 -1
- package/dist/signals/index.d.ts +483 -395
- package/dist/signals/index.js +368 -60
- package/dist/signals/index.js.map +1 -1
- package/dist/telemetry/http/index.js +368 -59
- package/dist/telemetry/http/index.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/telemetry/index.js +367 -59
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/prometheus/index.d.ts +1 -1
- package/dist/telemetry/prometheus/index.js +369 -59
- package/dist/telemetry/prometheus/index.js.map +1 -1
- package/dist/{types-BJswWpQC.d.ts → types-DdoeE7F5.d.ts} +1 -1
- package/dist/types-Dv5TERCM.d.ts +108 -0
- package/package.json +13 -8
- package/schemas/crucible-ts/library/fulencode/v1.0.0/README.md +37 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/bom-result.schema.json +48 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/decode-options.schema.json +60 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/decoding-result.schema.json +70 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/detect-options.schema.json +25 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/detection-result.schema.json +57 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/encode-options.schema.json +71 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/encoding-result.schema.json +57 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-config.schema.json +8 -4
- package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-error.schema.json +66 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/normalization-result.schema.json +73 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/normalize-options.schema.json +44 -0
- package/schemas/crucible-ts/meta/README.md +38 -2
- package/schemas/crucible-ts/meta/draft-04/schema.json +222 -0
- package/schemas/crucible-ts/meta/draft-06/schema.json +218 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/applicator.json +93 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/content.json +21 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/core.json +58 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/format.json +15 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/meta-data.json +35 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/validation.json +119 -0
- package/schemas/crucible-ts/meta/draft-2019-09/offline.schema.json +148 -0
- package/schemas/crucible-ts/meta/draft-2019-09/schema.json +62 -0
- package/schemas/crucible-ts/meta/fixtures/draft-04-sample.json +16 -0
- package/schemas/crucible-ts/meta/fixtures/draft-06-sample.json +16 -0
- package/schemas/crucible-ts/meta/fixtures/draft-07-sample.json +34 -0
- package/schemas/crucible-ts/meta/fixtures/draft-2019-09-sample.json +21 -0
- package/schemas/crucible-ts/meta/fixtures/draft-2020-12-sample.json +21 -0
- package/schemas/crucible-ts/taxonomy/library/fulencode/normalization-profiles/v1.0.0/profiles.yaml +16 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/PROVENANCE.md +64 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/access-tier.dimension.json +103 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/retention-lifecycle.dimension.json +103 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/schema-stability.dimension.json +100 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/sensitivity.dimension.json +130 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/velocity-mode.dimension.json +79 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volatility.dimension.json +72 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volume-tier.dimension.json +66 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/catalog/classifiers/README.md +29 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/access-tier-classification.md +163 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/classifiers-framework.md +157 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/data-sensitivity-classification.md +259 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/retention-lifecycle-classification.md +200 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/schema-stability-classification.md +205 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/velocity-mode-classification.md +222 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/volatility-classification.md +209 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/volume-tier-classification.md +200 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/ailink/v0/README.md +48 -0
- package/schemas/crucible-ts/upstream/3leaps/{ailink → crucible/schemas/ailink}/v0/prompt.schema.json +4 -18
- package/schemas/crucible-ts/upstream/3leaps/{ailink → crucible/schemas/ailink}/v0/search-response.schema.json +7 -37
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/dimension-definition.schema.json +247 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/sensitivity-level.schema.json +67 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/error-response.schema.json +59 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/lifecycle-phases.data.json +102 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/lifecycle-phases.schema.json +101 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/release-phase.schema.json +18 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/types.schema.json +177 -0
- package/schemas/crucible-ts/upstream/3leaps/PROVENANCE.md +0 -43
- /package/schemas/crucible-ts/upstream/3leaps/{agentic → crucible/schemas/agentic}/v0/role-prompt.schema.json +0 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.3leaps.dev/classifiers/v0/dimension-definition.schema.json",
|
|
4
|
+
"title": "Classifier Dimension Definition",
|
|
5
|
+
"description": "Meta-schema for defining classifier dimensions. Dimensions are orthogonal classification axes that can be applied to datasets, artifacts, or other entities.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["key", "name", "version", "status", "type", "description"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"$schema": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"format": "uri",
|
|
12
|
+
"description": "Reference to this meta-schema"
|
|
13
|
+
},
|
|
14
|
+
"key": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
17
|
+
"minLength": 2,
|
|
18
|
+
"maxLength": 32,
|
|
19
|
+
"description": "Machine-readable dimension identifier (lowercase, hyphens allowed)"
|
|
20
|
+
},
|
|
21
|
+
"name": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"minLength": 1,
|
|
24
|
+
"maxLength": 64,
|
|
25
|
+
"description": "Human-readable dimension name"
|
|
26
|
+
},
|
|
27
|
+
"version": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
|
|
30
|
+
"description": "Semantic version of the dimension definition"
|
|
31
|
+
},
|
|
32
|
+
"status": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"enum": ["draft", "review", "stable", "deprecated"],
|
|
35
|
+
"description": "Lifecycle status of the dimension"
|
|
36
|
+
},
|
|
37
|
+
"type": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"enum": ["categorical", "sortable", "numeric", "boolean"],
|
|
40
|
+
"description": "Dimension value type: categorical (unordered), sortable (ordered), numeric (continuous), boolean"
|
|
41
|
+
},
|
|
42
|
+
"cardinality": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"enum": ["single", "multiple"],
|
|
45
|
+
"default": "single",
|
|
46
|
+
"description": "Whether entities can have one or multiple values for this dimension"
|
|
47
|
+
},
|
|
48
|
+
"description": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"minLength": 10,
|
|
51
|
+
"maxLength": 512,
|
|
52
|
+
"description": "Purpose and usage of this dimension"
|
|
53
|
+
},
|
|
54
|
+
"categorical": {
|
|
55
|
+
"$ref": "#/$defs/categorical_config",
|
|
56
|
+
"description": "Configuration for categorical dimensions"
|
|
57
|
+
},
|
|
58
|
+
"sortable": {
|
|
59
|
+
"$ref": "#/$defs/sortable_config",
|
|
60
|
+
"description": "Configuration for sortable (ordered) dimensions"
|
|
61
|
+
},
|
|
62
|
+
"transitions": {
|
|
63
|
+
"$ref": "#/$defs/transitions",
|
|
64
|
+
"description": "Valid state transitions between dimension values"
|
|
65
|
+
},
|
|
66
|
+
"governance": {
|
|
67
|
+
"$ref": "#/$defs/governance",
|
|
68
|
+
"description": "Ownership and review metadata"
|
|
69
|
+
},
|
|
70
|
+
"examples": {
|
|
71
|
+
"type": "array",
|
|
72
|
+
"items": {
|
|
73
|
+
"$ref": "#/$defs/example"
|
|
74
|
+
},
|
|
75
|
+
"description": "Usage examples"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"additionalProperties": false,
|
|
79
|
+
"$defs": {
|
|
80
|
+
"categorical_config": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"required": ["values"],
|
|
83
|
+
"properties": {
|
|
84
|
+
"values": {
|
|
85
|
+
"type": "array",
|
|
86
|
+
"items": {
|
|
87
|
+
"$ref": "#/$defs/categorical_value"
|
|
88
|
+
},
|
|
89
|
+
"minItems": 2,
|
|
90
|
+
"description": "Allowed values for this dimension"
|
|
91
|
+
},
|
|
92
|
+
"index_strategy": {
|
|
93
|
+
"$ref": "#/$defs/index_strategy",
|
|
94
|
+
"description": "Ordering and indexing configuration"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"additionalProperties": false
|
|
98
|
+
},
|
|
99
|
+
"categorical_value": {
|
|
100
|
+
"type": "object",
|
|
101
|
+
"required": ["key", "label", "description", "order"],
|
|
102
|
+
"properties": {
|
|
103
|
+
"key": {
|
|
104
|
+
"type": "string",
|
|
105
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
106
|
+
"description": "Machine-readable value identifier"
|
|
107
|
+
},
|
|
108
|
+
"label": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"description": "Human-readable display label"
|
|
111
|
+
},
|
|
112
|
+
"description": {
|
|
113
|
+
"type": "string",
|
|
114
|
+
"description": "Brief description of this value"
|
|
115
|
+
},
|
|
116
|
+
"order": {
|
|
117
|
+
"type": "integer",
|
|
118
|
+
"minimum": 0,
|
|
119
|
+
"description": "Sort order (lower = first)"
|
|
120
|
+
},
|
|
121
|
+
"is_none": {
|
|
122
|
+
"type": "boolean",
|
|
123
|
+
"default": false,
|
|
124
|
+
"description": "Whether this represents a null/none/default state"
|
|
125
|
+
},
|
|
126
|
+
"synonyms": {
|
|
127
|
+
"type": "array",
|
|
128
|
+
"items": { "type": "string" },
|
|
129
|
+
"description": "Alternative names that map to this value"
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"additionalProperties": false
|
|
133
|
+
},
|
|
134
|
+
"sortable_config": {
|
|
135
|
+
"type": "object",
|
|
136
|
+
"required": ["scale", "ordered_values"],
|
|
137
|
+
"properties": {
|
|
138
|
+
"scale": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"enum": ["ordinal", "interval", "ratio"],
|
|
141
|
+
"description": "Measurement scale type"
|
|
142
|
+
},
|
|
143
|
+
"order_direction": {
|
|
144
|
+
"type": "string",
|
|
145
|
+
"enum": ["asc", "desc"],
|
|
146
|
+
"default": "asc",
|
|
147
|
+
"description": "Default sort direction"
|
|
148
|
+
},
|
|
149
|
+
"ordered_values": {
|
|
150
|
+
"type": "array",
|
|
151
|
+
"items": {
|
|
152
|
+
"$ref": "#/$defs/categorical_value"
|
|
153
|
+
},
|
|
154
|
+
"minItems": 2,
|
|
155
|
+
"description": "Values in their natural order"
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"additionalProperties": false
|
|
159
|
+
},
|
|
160
|
+
"index_strategy": {
|
|
161
|
+
"type": "object",
|
|
162
|
+
"properties": {
|
|
163
|
+
"default_order": {
|
|
164
|
+
"type": "array",
|
|
165
|
+
"items": { "type": "string" },
|
|
166
|
+
"description": "Default sort order of value keys"
|
|
167
|
+
},
|
|
168
|
+
"ordinal_mapping": {
|
|
169
|
+
"type": "object",
|
|
170
|
+
"additionalProperties": { "type": "integer" },
|
|
171
|
+
"description": "Numeric ordinal for each value key"
|
|
172
|
+
},
|
|
173
|
+
"missing_handling": {
|
|
174
|
+
"type": "string",
|
|
175
|
+
"enum": ["use_default", "error", "skip"],
|
|
176
|
+
"default": "use_default",
|
|
177
|
+
"description": "How to handle missing values"
|
|
178
|
+
},
|
|
179
|
+
"sentinel": {
|
|
180
|
+
"type": "integer",
|
|
181
|
+
"description": "Ordinal value for missing/unknown"
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
"additionalProperties": false
|
|
185
|
+
},
|
|
186
|
+
"transitions": {
|
|
187
|
+
"type": "object",
|
|
188
|
+
"properties": {
|
|
189
|
+
"downgrade": {
|
|
190
|
+
"type": "array",
|
|
191
|
+
"items": { "type": "string" },
|
|
192
|
+
"description": "Valid downgrade paths (e.g., '4-personal->2-blinded')"
|
|
193
|
+
},
|
|
194
|
+
"upgrade": {
|
|
195
|
+
"type": "array",
|
|
196
|
+
"items": { "type": "string" },
|
|
197
|
+
"description": "Valid upgrade paths"
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"additionalProperties": false
|
|
201
|
+
},
|
|
202
|
+
"governance": {
|
|
203
|
+
"type": "object",
|
|
204
|
+
"properties": {
|
|
205
|
+
"owner": {
|
|
206
|
+
"type": "string",
|
|
207
|
+
"description": "Owning team or individual"
|
|
208
|
+
},
|
|
209
|
+
"reviewers": {
|
|
210
|
+
"type": "array",
|
|
211
|
+
"items": { "type": "string" },
|
|
212
|
+
"description": "Required reviewers for changes"
|
|
213
|
+
},
|
|
214
|
+
"review_cycle": {
|
|
215
|
+
"type": "string",
|
|
216
|
+
"enum": ["monthly", "quarterly", "semiannual", "annual"],
|
|
217
|
+
"description": "Review cadence"
|
|
218
|
+
},
|
|
219
|
+
"last_updated": {
|
|
220
|
+
"type": "string",
|
|
221
|
+
"format": "date",
|
|
222
|
+
"description": "Last review/update date"
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"additionalProperties": false
|
|
226
|
+
},
|
|
227
|
+
"example": {
|
|
228
|
+
"type": "object",
|
|
229
|
+
"required": ["value"],
|
|
230
|
+
"properties": {
|
|
231
|
+
"dataset": {
|
|
232
|
+
"type": "string",
|
|
233
|
+
"description": "Dataset identifier"
|
|
234
|
+
},
|
|
235
|
+
"path": {
|
|
236
|
+
"type": "string",
|
|
237
|
+
"description": "File path"
|
|
238
|
+
},
|
|
239
|
+
"value": {
|
|
240
|
+
"type": "string",
|
|
241
|
+
"description": "Dimension value"
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"additionalProperties": false
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.3leaps.dev/classifiers/v0/sensitivity-level.schema.json",
|
|
4
|
+
"title": "Data Sensitivity Level",
|
|
5
|
+
"description": "Standardized sensitivity level enumeration for data classification across 3leaps ecosystems. Levels range from 0 (Public) to 6 (Eyes Only), with UNKNOWN for unclassified data.",
|
|
6
|
+
"type": "string",
|
|
7
|
+
"enum": [
|
|
8
|
+
"unknown",
|
|
9
|
+
"0-public",
|
|
10
|
+
"1-confidential",
|
|
11
|
+
"2-blinded",
|
|
12
|
+
"3-proprietary",
|
|
13
|
+
"4-personal",
|
|
14
|
+
"5-privileged",
|
|
15
|
+
"6-eyes-only"
|
|
16
|
+
],
|
|
17
|
+
"$defs": {
|
|
18
|
+
"labels": {
|
|
19
|
+
"description": "Human-readable labels for each sensitivity level",
|
|
20
|
+
"type": "object",
|
|
21
|
+
"properties": {
|
|
22
|
+
"unknown": { "const": "UNKNOWN" },
|
|
23
|
+
"0-public": { "const": "0 — Public" },
|
|
24
|
+
"1-confidential": { "const": "1 — Confidential" },
|
|
25
|
+
"2-blinded": { "const": "2 — Blinded" },
|
|
26
|
+
"3-proprietary": { "const": "3 — Proprietary" },
|
|
27
|
+
"4-personal": { "const": "4 — Personal/Secret" },
|
|
28
|
+
"5-privileged": { "const": "5 — Privileged/Sysadmin" },
|
|
29
|
+
"6-eyes-only": { "const": "6 — Eyes Only/Legal Hold" }
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"ordinal_mapping": {
|
|
33
|
+
"description": "Ordinal values for comparator operations (lte/gte). Higher values indicate more restrictive sensitivity.",
|
|
34
|
+
"type": "object",
|
|
35
|
+
"properties": {
|
|
36
|
+
"unknown": { "const": 0, "description": "Sentinel for unclassified data" },
|
|
37
|
+
"0-public": { "const": 1 },
|
|
38
|
+
"1-confidential": { "const": 2 },
|
|
39
|
+
"2-blinded": { "const": 3 },
|
|
40
|
+
"3-proprietary": { "const": 4 },
|
|
41
|
+
"4-personal": { "const": 5 },
|
|
42
|
+
"5-privileged": { "const": 6 },
|
|
43
|
+
"6-eyes-only": { "const": 7 }
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"level_descriptions": {
|
|
47
|
+
"description": "Brief descriptions of each sensitivity level",
|
|
48
|
+
"type": "object",
|
|
49
|
+
"properties": {
|
|
50
|
+
"unknown": { "const": "Unclassified; isolate until classified within 24 hours" },
|
|
51
|
+
"0-public": { "const": "Public domain or intended for public distribution" },
|
|
52
|
+
"1-confidential": {
|
|
53
|
+
"const": "Internal but non-sensitive; NDA-level protection, access logged"
|
|
54
|
+
},
|
|
55
|
+
"2-blinded": { "const": "Identities/source obfuscated; verify blinding effectiveness" },
|
|
56
|
+
"3-proprietary": {
|
|
57
|
+
"const": "Enterprise-sensitive (MNPI, trade secrets); strict least-privilege"
|
|
58
|
+
},
|
|
59
|
+
"4-personal": { "const": "NPPII or secrets; vault-managed only, real-time monitoring" },
|
|
60
|
+
"5-privileged": { "const": "Platform control data (sysadmin); HSM/air-gapped isolation" },
|
|
61
|
+
"6-eyes-only": {
|
|
62
|
+
"const": "Legal hold or extreme restriction; immutable storage, exec authorization"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.3leaps.dev/foundation/v0/error-response.schema.json",
|
|
4
|
+
"title": "Error Response",
|
|
5
|
+
"description": "Standard error response structure for APIs and CLIs across 3leaps ecosystems",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"code": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"pattern": "^[A-Z][A-Z0-9_]*$",
|
|
11
|
+
"description": "Machine-readable error code (uppercase with underscores)",
|
|
12
|
+
"examples": ["VALIDATION_ERROR", "NOT_FOUND", "AUTHENTICATION_FAILED", "RATE_LIMITED"]
|
|
13
|
+
},
|
|
14
|
+
"message": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"minLength": 1,
|
|
17
|
+
"description": "Human-readable error message"
|
|
18
|
+
},
|
|
19
|
+
"details": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"description": "Additional structured error details (context-specific)",
|
|
22
|
+
"additionalProperties": true
|
|
23
|
+
},
|
|
24
|
+
"path": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "Path to the field or resource that caused the error",
|
|
27
|
+
"examples": ["$.config.port", "/api/v1/users/123"]
|
|
28
|
+
},
|
|
29
|
+
"timestamp": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"format": "date-time",
|
|
32
|
+
"description": "When the error occurred (ISO 8601)"
|
|
33
|
+
},
|
|
34
|
+
"requestId": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"description": "Correlation ID for tracing (if applicable)"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"required": ["code", "message"],
|
|
40
|
+
"additionalProperties": false,
|
|
41
|
+
"examples": [
|
|
42
|
+
{
|
|
43
|
+
"code": "VALIDATION_ERROR",
|
|
44
|
+
"message": "Invalid configuration",
|
|
45
|
+
"details": {
|
|
46
|
+
"field": "port",
|
|
47
|
+
"reason": "must be between 1 and 65535"
|
|
48
|
+
},
|
|
49
|
+
"path": "$.config.port"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"code": "NOT_FOUND",
|
|
53
|
+
"message": "Resource not found",
|
|
54
|
+
"path": "/api/v1/users/123",
|
|
55
|
+
"timestamp": "2024-12-28T10:30:00Z",
|
|
56
|
+
"requestId": "req_abc123"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://schemas.3leaps.dev/foundation/v0/lifecycle-phases.schema.json",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"phases": [
|
|
5
|
+
{
|
|
6
|
+
"id": "planned",
|
|
7
|
+
"order": 0,
|
|
8
|
+
"label": "Planned",
|
|
9
|
+
"description": "Repository or component is planned but development has not started. May have placeholder README only.",
|
|
10
|
+
"badge": {
|
|
11
|
+
"color": "lightgrey",
|
|
12
|
+
"url": "https://img.shields.io/badge/lifecycle-planned-lightgrey"
|
|
13
|
+
},
|
|
14
|
+
"pr_policy": "none",
|
|
15
|
+
"stability": "unstable"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "prototype",
|
|
19
|
+
"order": 1,
|
|
20
|
+
"label": "Prototype",
|
|
21
|
+
"description": "Proof of concept or experimental implementation. Not intended for any use beyond exploration. May be discarded entirely.",
|
|
22
|
+
"badge": {
|
|
23
|
+
"color": "yellow",
|
|
24
|
+
"url": "https://img.shields.io/badge/lifecycle-prototype-yellow"
|
|
25
|
+
},
|
|
26
|
+
"pr_policy": "internal",
|
|
27
|
+
"stability": "unstable"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "alpha",
|
|
31
|
+
"order": 2,
|
|
32
|
+
"label": "Alpha",
|
|
33
|
+
"description": "Active development with core functionality taking shape. APIs and schemas may change without notice. Not recommended for production. Early feedback welcome.",
|
|
34
|
+
"badge": {
|
|
35
|
+
"color": "orange",
|
|
36
|
+
"url": "https://img.shields.io/badge/lifecycle-alpha-orange"
|
|
37
|
+
},
|
|
38
|
+
"pr_policy": "invited",
|
|
39
|
+
"stability": "unstable"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "beta",
|
|
43
|
+
"order": 3,
|
|
44
|
+
"label": "Beta",
|
|
45
|
+
"description": "Feature complete and stabilizing. APIs may still change but with deprecation notices. Suitable for non-critical use. Community contributions welcome.",
|
|
46
|
+
"badge": {
|
|
47
|
+
"color": "blue",
|
|
48
|
+
"url": "https://img.shields.io/badge/lifecycle-beta-blue"
|
|
49
|
+
},
|
|
50
|
+
"pr_policy": "community",
|
|
51
|
+
"stability": "stabilizing"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "stable",
|
|
55
|
+
"order": 4,
|
|
56
|
+
"label": "Stable",
|
|
57
|
+
"description": "Production ready. APIs follow semantic versioning. Breaking changes only in major versions with migration guides.",
|
|
58
|
+
"badge": {
|
|
59
|
+
"color": "green",
|
|
60
|
+
"url": "https://img.shields.io/badge/lifecycle-stable-green"
|
|
61
|
+
},
|
|
62
|
+
"pr_policy": "community",
|
|
63
|
+
"stability": "stable"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "maintenance",
|
|
67
|
+
"order": 5,
|
|
68
|
+
"label": "Maintenance",
|
|
69
|
+
"description": "No new features planned. Bug fixes and security patches only. Consider migration to successor if available.",
|
|
70
|
+
"badge": {
|
|
71
|
+
"color": "yellowgreen",
|
|
72
|
+
"url": "https://img.shields.io/badge/lifecycle-maintenance-yellowgreen"
|
|
73
|
+
},
|
|
74
|
+
"pr_policy": "critical-only",
|
|
75
|
+
"stability": "frozen"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "deprecated",
|
|
79
|
+
"order": 6,
|
|
80
|
+
"label": "Deprecated",
|
|
81
|
+
"description": "Being phased out. No new PRs accepted. Users should migrate to recommended alternative.",
|
|
82
|
+
"badge": {
|
|
83
|
+
"color": "red",
|
|
84
|
+
"url": "https://img.shields.io/badge/lifecycle-deprecated-red"
|
|
85
|
+
},
|
|
86
|
+
"pr_policy": "none",
|
|
87
|
+
"stability": "frozen"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "archived",
|
|
91
|
+
"order": 7,
|
|
92
|
+
"label": "Archived",
|
|
93
|
+
"description": "No longer maintained. Repository is read-only for historical reference. No support provided.",
|
|
94
|
+
"badge": {
|
|
95
|
+
"color": "lightgrey",
|
|
96
|
+
"url": "https://img.shields.io/badge/lifecycle-archived-lightgrey"
|
|
97
|
+
},
|
|
98
|
+
"pr_policy": "none",
|
|
99
|
+
"stability": "frozen"
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.3leaps.dev/foundation/v0/lifecycle-phases.schema.json",
|
|
4
|
+
"title": "Lifecycle Phases",
|
|
5
|
+
"description": "Schema defining repository and component lifecycle phases with canonical ordering",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"$schema": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"const": "https://schemas.3leaps.dev/foundation/v0/lifecycle-phases.schema.json"
|
|
11
|
+
},
|
|
12
|
+
"version": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
|
|
15
|
+
"description": "Schema version (SemVer)"
|
|
16
|
+
},
|
|
17
|
+
"phases": {
|
|
18
|
+
"type": "array",
|
|
19
|
+
"description": "Ordered list of lifecycle phases (index determines progression order)",
|
|
20
|
+
"items": {
|
|
21
|
+
"$ref": "#/$defs/phase"
|
|
22
|
+
},
|
|
23
|
+
"minItems": 1
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"required": ["version", "phases"],
|
|
27
|
+
"additionalProperties": false,
|
|
28
|
+
"$defs": {
|
|
29
|
+
"phase": {
|
|
30
|
+
"type": "object",
|
|
31
|
+
"description": "A lifecycle phase definition",
|
|
32
|
+
"properties": {
|
|
33
|
+
"id": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
36
|
+
"description": "Phase identifier (lowercase, used in LIFECYCLE_PHASE file)"
|
|
37
|
+
},
|
|
38
|
+
"order": {
|
|
39
|
+
"type": "integer",
|
|
40
|
+
"minimum": 0,
|
|
41
|
+
"description": "Explicit ordering for phase progression (0 = earliest)"
|
|
42
|
+
},
|
|
43
|
+
"label": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"description": "Human-readable label"
|
|
46
|
+
},
|
|
47
|
+
"description": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"description": "Detailed description of what this phase means"
|
|
50
|
+
},
|
|
51
|
+
"badge": {
|
|
52
|
+
"$ref": "#/$defs/badge",
|
|
53
|
+
"description": "Shields.io badge configuration"
|
|
54
|
+
},
|
|
55
|
+
"pr_policy": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"enum": ["none", "internal", "invited", "community", "critical-only"],
|
|
58
|
+
"description": "Pull request acceptance policy"
|
|
59
|
+
},
|
|
60
|
+
"stability": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"enum": ["unstable", "stabilizing", "stable", "frozen"],
|
|
63
|
+
"description": "API/schema stability expectation"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"required": ["id", "order", "label", "description", "badge", "pr_policy", "stability"],
|
|
67
|
+
"additionalProperties": false
|
|
68
|
+
},
|
|
69
|
+
"badge": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"description": "Shields.io badge configuration",
|
|
72
|
+
"properties": {
|
|
73
|
+
"color": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"description": "Badge color (shields.io color name or hex)"
|
|
76
|
+
},
|
|
77
|
+
"url": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"format": "uri",
|
|
80
|
+
"description": "Pre-built badge URL"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"required": ["color", "url"],
|
|
84
|
+
"additionalProperties": false
|
|
85
|
+
},
|
|
86
|
+
"phase_id": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"enum": [
|
|
89
|
+
"planned",
|
|
90
|
+
"prototype",
|
|
91
|
+
"alpha",
|
|
92
|
+
"beta",
|
|
93
|
+
"stable",
|
|
94
|
+
"maintenance",
|
|
95
|
+
"deprecated",
|
|
96
|
+
"archived"
|
|
97
|
+
],
|
|
98
|
+
"description": "Valid phase identifier"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/release-phase.schema.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.3leaps.dev/foundation/v0/release-phase.schema.json",
|
|
4
|
+
"title": "Release Phase",
|
|
5
|
+
"description": "Release cadence phase for distribution pipelines and policy gating. Tracks current deployment cycle state of a repository branch, complementing lifecycle-phases which tracks project maturity.",
|
|
6
|
+
"type": "string",
|
|
7
|
+
"enum": ["dev", "rc", "ga", "hotfix"],
|
|
8
|
+
"examples": ["dev", "rc", "ga"],
|
|
9
|
+
"$defs": {
|
|
10
|
+
"phase_descriptions": {
|
|
11
|
+
"dev": "Active development branch. CI runs tests but artifacts are not published to release channels.",
|
|
12
|
+
"rc": "Release candidate. Feature-frozen, undergoing final validation before GA. Artifacts may be published to pre-release channels.",
|
|
13
|
+
"ga": "General availability. Production-ready release. Artifacts published to stable release channels.",
|
|
14
|
+
"hotfix": "Urgent production fix. Bypasses normal release cadence for critical security or stability patches."
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"$comment": "Drives CI thresholds, artifact publishing, and policy gates. Unlike lifecycle-phases (project maturity), release-phase describes branch/tag state in the release pipeline."
|
|
18
|
+
}
|