@tiangong-lca/tidas-sdk 0.2.2 → 0.3.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.
@@ -1,378 +0,0 @@
1
- {
2
- "$schema": "runtime_rulesets.schema.json",
3
- "schema_version": 1,
4
- "ruleset_version": "2026.05.23",
5
- "purpose": "Runtime-friendly metadata for CLI and Foundry gates. This file assigns stable rule ids, severity, phases, blocker defaults, and source references to packaged TIDAS methodology assets.",
6
- "source_assets": [
7
- {
8
- "asset": "tidas_processes.yaml",
9
- "kind": "process methodology"
10
- },
11
- {
12
- "asset": "tidas_flows.yaml",
13
- "kind": "flow methodology"
14
- }
15
- ],
16
- "rulesets": [
17
- {
18
- "id": "process-authoring/strict",
19
- "version": "1",
20
- "dataset_type": "process",
21
- "phase": "authoring",
22
- "rule_ids": [
23
- "tidas.process.name.base-name.align-reference-flow",
24
- "tidas.process.name.qualifiers.structured",
25
- "tidas.process.quantitative-reference.required",
26
- "tidas.process.exchange.amount.required",
27
- "tidas.process.evidence.field-bindings.required"
28
- ]
29
- },
30
- {
31
- "id": "process-authoring/repair",
32
- "version": "1",
33
- "dataset_type": "process",
34
- "phase": "repair",
35
- "rule_ids": [
36
- "tidas.process.quantitative-reference.required",
37
- "tidas.process.exchange.amount.required",
38
- "tidas.process.evidence.field-bindings.required",
39
- "tidas.process.version.format"
40
- ]
41
- },
42
- {
43
- "id": "process-publish/default",
44
- "version": "1",
45
- "dataset_type": "process",
46
- "phase": "publish",
47
- "rule_ids": [
48
- "tidas.process.name.base-name.align-reference-flow",
49
- "tidas.process.quantitative-reference.required",
50
- "tidas.process.exchange.amount.required",
51
- "tidas.process.evidence.field-bindings.required",
52
- "tidas.process.version.format"
53
- ]
54
- },
55
- {
56
- "id": "process-dedup/default",
57
- "version": "1",
58
- "dataset_type": "process",
59
- "phase": "identity",
60
- "rule_ids": [
61
- "tidas.process.identity.duplicate-fingerprint.block"
62
- ]
63
- },
64
- {
65
- "id": "flow-authoring/strict",
66
- "version": "1",
67
- "dataset_type": "flow",
68
- "phase": "authoring",
69
- "rule_ids": [
70
- "tidas.flow.name.base-name.technical",
71
- "tidas.flow.type.required",
72
- "tidas.flow.reference-property-unit.required",
73
- "tidas.flow.flow-property.mean-value.positive",
74
- "tidas.flow.evidence.field-bindings.required"
75
- ]
76
- },
77
- {
78
- "id": "flow-publish/default",
79
- "version": "1",
80
- "dataset_type": "flow",
81
- "phase": "publish",
82
- "rule_ids": [
83
- "tidas.flow.name.base-name.technical",
84
- "tidas.flow.type.required",
85
- "tidas.flow.reference-property-unit.required",
86
- "tidas.flow.classification.elementary.valid",
87
- "tidas.flow.flow-property.mean-value.positive",
88
- "tidas.flow.evidence.field-bindings.required"
89
- ]
90
- },
91
- {
92
- "id": "flow-dedup/default",
93
- "version": "1",
94
- "dataset_type": "flow",
95
- "phase": "identity",
96
- "rule_ids": [
97
- "tidas.flow.identity.alias-equivalence.review"
98
- ]
99
- }
100
- ],
101
- "rules": [
102
- {
103
- "id": "tidas.process.name.base-name.align-reference-flow",
104
- "dataset_type": "process",
105
- "summary": "Process baseName should align with the reference flow naming structure and avoid geography or time qualifiers.",
106
- "severity": "blocker",
107
- "phases": ["build-plan", "materialize", "publish-build", "save-draft", "publish-run"],
108
- "default_blocker": true,
109
- "field_paths": [
110
- "processDataSet.processInformation.dataSetInformation.name.baseName"
111
- ],
112
- "source_rule_refs": [
113
- {
114
- "asset": "tidas_processes.yaml",
115
- "path": "processDataSet.processInformation.dataSetInformation.name.baseName.<rules>"
116
- }
117
- ]
118
- },
119
- {
120
- "id": "tidas.process.name.qualifiers.structured",
121
- "dataset_type": "process",
122
- "summary": "Process name qualifiers should separate treatment, standards, mix/location, and quantitative properties into the dedicated name segments.",
123
- "severity": "warning",
124
- "phases": ["build-plan", "materialize", "publish-build"],
125
- "default_blocker": false,
126
- "field_paths": [
127
- "processDataSet.processInformation.dataSetInformation.name.treatmentStandardsRoutes",
128
- "processDataSet.processInformation.dataSetInformation.name.mixAndLocationTypes",
129
- "processDataSet.processInformation.dataSetInformation.name.functionalUnitFlowProperties"
130
- ],
131
- "source_rule_refs": [
132
- {
133
- "asset": "tidas_processes.yaml",
134
- "path": "processDataSet.processInformation.dataSetInformation.name.treatmentStandardsRoutes.<rules>"
135
- },
136
- {
137
- "asset": "tidas_processes.yaml",
138
- "path": "processDataSet.processInformation.dataSetInformation.name.mixAndLocationTypes.<rules>"
139
- },
140
- {
141
- "asset": "tidas_processes.yaml",
142
- "path": "processDataSet.processInformation.dataSetInformation.name.functionalUnitFlowProperties.<rules>"
143
- }
144
- ]
145
- },
146
- {
147
- "id": "tidas.process.quantitative-reference.required",
148
- "dataset_type": "process",
149
- "summary": "A process must identify a quantitative reference exchange or reference flow before authoring or publishing.",
150
- "severity": "blocker",
151
- "phases": ["build-plan", "materialize", "publish-build", "save-draft", "publish-run"],
152
- "default_blocker": true,
153
- "field_paths": [
154
- "processDataSet.exchanges.exchange[*].@dataSetInternalID",
155
- "processDataSet.exchanges.exchange[*].referenceToFlowDataSet"
156
- ],
157
- "source_rule_refs": [
158
- {
159
- "asset": "tidas_processes.yaml",
160
- "path": "processDataSet.exchanges.exchange.referenceToFlowDataSet.<rules>"
161
- }
162
- ]
163
- },
164
- {
165
- "id": "tidas.process.exchange.amount.required",
166
- "dataset_type": "process",
167
- "summary": "Each exchange needs meanAmount or resultingAmount evidence before it can be treated as publish-ready.",
168
- "severity": "blocker",
169
- "phases": ["build-plan", "materialize", "publish-build", "save-draft", "publish-run"],
170
- "default_blocker": true,
171
- "field_paths": [
172
- "processDataSet.exchanges.exchange[*].meanAmount",
173
- "processDataSet.exchanges.exchange[*].resultingAmount"
174
- ],
175
- "source_rule_refs": [
176
- {
177
- "asset": "tidas_processes.yaml",
178
- "path": "processDataSet.exchanges.exchange.meanAmount.<rules>"
179
- }
180
- ]
181
- },
182
- {
183
- "id": "tidas.process.evidence.field-bindings.required",
184
- "dataset_type": "process",
185
- "summary": "Process authoring and publish gates require evidence bindings for identity, names, quantitative reference, exchanges, source, geography, time, and technology.",
186
- "severity": "blocker",
187
- "phases": ["build-plan", "materialize", "publish-build", "publish-run"],
188
- "default_blocker": true,
189
- "field_paths": [
190
- "EvidenceManifest.sources",
191
- "EvidenceManifest.field_bindings"
192
- ],
193
- "source_rule_refs": [
194
- {
195
- "asset": "tidas_processes.yaml",
196
- "path": "processDataSet.processInformation.technology.technologyDescriptionAndIncludedProcesses.<rules>"
197
- },
198
- {
199
- "asset": "tidas_processes.yaml",
200
- "path": "processDataSet.modellingAndValidation.dataSourcesTreatmentAndRepresentativeness.dataCollectionPeriod.<rules>"
201
- }
202
- ]
203
- },
204
- {
205
- "id": "tidas.process.version.format",
206
- "dataset_type": "process",
207
- "summary": "Process dataset versions must use fixed-width ILCD three-tier numbering and increase when content changes.",
208
- "severity": "blocker",
209
- "phases": ["save-draft", "publish-build", "publish-run"],
210
- "default_blocker": true,
211
- "field_paths": [
212
- "processDataSet.administrativeInformation.publicationAndOwnership.common:dataSetVersion"
213
- ],
214
- "source_rule_refs": [
215
- {
216
- "asset": "tidas_processes.yaml",
217
- "path": "processDataSet.administrativeInformation.publicationAndOwnership.common:dataSetVersion.<rules>"
218
- }
219
- ]
220
- },
221
- {
222
- "id": "tidas.process.identity.duplicate-fingerprint.block",
223
- "dataset_type": "process",
224
- "summary": "A new process is blocked when reference flow, route, geography, system boundary, and exchange fingerprint are equivalent to an existing candidate.",
225
- "severity": "blocker",
226
- "phases": ["identity-preflight", "dedup-review"],
227
- "default_blocker": true,
228
- "field_paths": [
229
- "IdentityDecision.decision",
230
- "ProcessIdentity.reference_flow",
231
- "ProcessIdentity.exchange_fingerprint"
232
- ],
233
- "source_rule_refs": [
234
- {
235
- "asset": "tidas_processes.yaml",
236
- "path": "processDataSet.exchanges.exchange.referenceToFlowDataSet.<rules>"
237
- },
238
- {
239
- "asset": "tidas_processes.yaml",
240
- "path": "processDataSet.processInformation.dataSetInformation.name.<rules>"
241
- }
242
- ]
243
- },
244
- {
245
- "id": "tidas.flow.name.base-name.technical",
246
- "dataset_type": "flow",
247
- "summary": "Flow baseName must use technical terminology and avoid geography, time, or quantitative qualifiers that belong in dedicated fields.",
248
- "severity": "blocker",
249
- "phases": ["build-plan", "materialize", "publish-build", "save-draft", "publish-run"],
250
- "default_blocker": true,
251
- "field_paths": [
252
- "flowDataSet.flowInformation.dataSetInformation.name.baseName"
253
- ],
254
- "source_rule_refs": [
255
- {
256
- "asset": "tidas_flows.yaml",
257
- "path": "flowDataSet.flowInformation.dataSetInformation.name.baseName.<rules>"
258
- }
259
- ]
260
- },
261
- {
262
- "id": "tidas.flow.type.required",
263
- "dataset_type": "flow",
264
- "summary": "Flow datasets must declare Elementary flow, Product flow, or Waste flow consistently with classification and reference property.",
265
- "severity": "blocker",
266
- "phases": ["build-plan", "materialize", "publish-build", "save-draft", "publish-run"],
267
- "default_blocker": true,
268
- "field_paths": [
269
- "flowDataSet.modellingAndValidation.LCIMethod.typeOfDataSet"
270
- ],
271
- "source_rule_refs": [
272
- {
273
- "asset": "tidas_flows.yaml",
274
- "path": "flowDataSet.modellingAndValidation.LCIMethod.typeOfDataSet.<rules>"
275
- }
276
- ]
277
- },
278
- {
279
- "id": "tidas.flow.reference-property-unit.required",
280
- "dataset_type": "flow",
281
- "summary": "Flow authoring must provide a reference flow property and reference unit before schema or publish gates can pass.",
282
- "severity": "blocker",
283
- "phases": ["build-plan", "materialize", "publish-build", "save-draft", "publish-run"],
284
- "default_blocker": true,
285
- "field_paths": [
286
- "flowDataSet.flowProperties.flowProperty[*].referenceToFlowPropertyDataSet",
287
- "flowDataSet.flowProperties.flowProperty[*].referenceUnit"
288
- ],
289
- "source_rule_refs": [
290
- {
291
- "asset": "tidas_flows.yaml",
292
- "path": "flowDataSet.flowInformation.dataSetInformation.name.flowProperties.<rules>"
293
- }
294
- ]
295
- },
296
- {
297
- "id": "tidas.flow.flow-property.mean-value.positive",
298
- "dataset_type": "flow",
299
- "summary": "Flow property mean values must be positive real numbers and the quantitative reference property should use 1.0.",
300
- "severity": "blocker",
301
- "phases": ["materialize", "publish-build", "save-draft", "publish-run"],
302
- "default_blocker": true,
303
- "field_paths": [
304
- "flowDataSet.flowProperties.flowProperty[*].meanValue"
305
- ],
306
- "source_rule_refs": [
307
- {
308
- "asset": "tidas_flows.yaml",
309
- "path": "flowDataSet.flowProperties.flowProperty.meanValue.<rules>"
310
- }
311
- ]
312
- },
313
- {
314
- "id": "tidas.flow.classification.elementary.valid",
315
- "dataset_type": "flow",
316
- "summary": "Elementary flow classification must use the controlled category hierarchy with continuous levels and valid category ids.",
317
- "severity": "blocker",
318
- "phases": ["materialize", "publish-build", "save-draft", "publish-run"],
319
- "default_blocker": true,
320
- "field_paths": [
321
- "flowDataSet.flowInformation.dataSetInformation.classificationInformation.common:elementaryFlowCategorization"
322
- ],
323
- "source_rule_refs": [
324
- {
325
- "asset": "tidas_flows.yaml",
326
- "path": "flowDataSet.flowInformation.dataSetInformation.classificationInformation.common:elementaryFlowCategorization.<rules>"
327
- }
328
- ]
329
- },
330
- {
331
- "id": "tidas.flow.evidence.field-bindings.required",
332
- "dataset_type": "flow",
333
- "summary": "Flow authoring and publish gates require evidence bindings for identity, flow type, name, property, unit, classification, and source.",
334
- "severity": "blocker",
335
- "phases": ["build-plan", "materialize", "publish-build", "publish-run"],
336
- "default_blocker": true,
337
- "field_paths": [
338
- "EvidenceManifest.sources",
339
- "EvidenceManifest.field_bindings"
340
- ],
341
- "source_rule_refs": [
342
- {
343
- "asset": "tidas_flows.yaml",
344
- "path": "flowDataSet.flowInformation.dataSetInformation.name.<rules>"
345
- },
346
- {
347
- "asset": "tidas_flows.yaml",
348
- "path": "flowDataSet.flowProperties.flowProperty.<rules>"
349
- }
350
- ]
351
- },
352
- {
353
- "id": "tidas.flow.identity.alias-equivalence.review",
354
- "dataset_type": "flow",
355
- "summary": "Flow identity preflight should reuse or review flows with equivalent type, property, unit, CAS/category, synonyms, and aliases.",
356
- "severity": "warning",
357
- "phases": ["identity-preflight", "dedup-review"],
358
- "default_blocker": false,
359
- "field_paths": [
360
- "IdentityDecision.decision",
361
- "FlowIdentity.flow_type",
362
- "FlowIdentity.reference_property",
363
- "FlowIdentity.reference_unit",
364
- "FlowIdentity.aliases"
365
- ],
366
- "source_rule_refs": [
367
- {
368
- "asset": "tidas_flows.yaml",
369
- "path": "flowDataSet.flowInformation.dataSetInformation.name.common:synonyms.<rules>"
370
- },
371
- {
372
- "asset": "tidas_flows.yaml",
373
- "path": "flowDataSet.flowProperties.flowProperty.<rules>"
374
- }
375
- ]
376
- }
377
- ]
378
- }
@@ -1,90 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://tiangong-lca.local/tidas/runtime-rulesets.schema.json",
4
- "title": "TIDAS Runtime Ruleset Metadata",
5
- "type": "object",
6
- "required": ["schema_version", "ruleset_version", "source_assets", "rulesets", "rules"],
7
- "additionalProperties": true,
8
- "properties": {
9
- "schema_version": { "type": "integer", "minimum": 1 },
10
- "ruleset_version": { "type": "string" },
11
- "source_assets": {
12
- "type": "array",
13
- "items": {
14
- "type": "object",
15
- "required": ["asset", "kind"],
16
- "additionalProperties": true,
17
- "properties": {
18
- "asset": { "type": "string" },
19
- "kind": { "type": "string" }
20
- }
21
- }
22
- },
23
- "rulesets": {
24
- "type": "array",
25
- "items": {
26
- "type": "object",
27
- "required": ["id", "version", "dataset_type", "phase", "rule_ids"],
28
- "additionalProperties": true,
29
- "properties": {
30
- "id": { "type": "string" },
31
- "version": { "type": "string" },
32
- "dataset_type": { "type": "string", "enum": ["process", "flow"] },
33
- "phase": { "type": "string" },
34
- "rule_ids": {
35
- "type": "array",
36
- "items": { "type": "string" },
37
- "minItems": 1
38
- }
39
- }
40
- }
41
- },
42
- "rules": {
43
- "type": "array",
44
- "items": {
45
- "type": "object",
46
- "required": [
47
- "id",
48
- "dataset_type",
49
- "summary",
50
- "severity",
51
- "phases",
52
- "default_blocker",
53
- "field_paths",
54
- "source_rule_refs"
55
- ],
56
- "additionalProperties": true,
57
- "properties": {
58
- "id": { "type": "string" },
59
- "dataset_type": { "type": "string", "enum": ["process", "flow"] },
60
- "summary": { "type": "string" },
61
- "severity": { "type": "string", "enum": ["info", "warning", "blocker"] },
62
- "phases": {
63
- "type": "array",
64
- "items": { "type": "string" },
65
- "minItems": 1
66
- },
67
- "default_blocker": { "type": "boolean" },
68
- "field_paths": {
69
- "type": "array",
70
- "items": { "type": "string" },
71
- "minItems": 1
72
- },
73
- "source_rule_refs": {
74
- "type": "array",
75
- "items": {
76
- "type": "object",
77
- "required": ["asset", "path"],
78
- "additionalProperties": true,
79
- "properties": {
80
- "asset": { "type": "string" },
81
- "path": { "type": "string" }
82
- }
83
- },
84
- "minItems": 1
85
- }
86
- }
87
- }
88
- }
89
- }
90
- }