@comity-dev/schemas 0.2.0 → 0.3.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.
- package/README.md +1 -1
- package/dist/ajv-instance.d.ts +10 -0
- package/dist/ajv-instance.js +19 -0
- package/dist/index.d.ts +3 -4
- package/dist/index.js +2 -3
- package/dist/schemas/adr-008-canonical.generated.d.ts +3 -0
- package/dist/schemas/adr-008-canonical.generated.js +390 -0
- package/dist/schemas/adr-008-register.d.ts +34 -61
- package/dist/schemas/adr-008-register.js +20 -54
- package/dist/schemas/index.d.ts +2 -2
- package/dist/schemas/index.js +1 -1
- package/package.json +4 -3
- package/dist/schemas/adr-008-register-data.d.ts +0 -11
- package/dist/schemas/adr-008-register-data.js +0 -184
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Canonical, machine-readable JSON Schema definitions for Comity package metadata,
|
|
|
7
7
|
## Scope
|
|
8
8
|
|
|
9
9
|
- `package-metadata.v1.json` — required fields and types for every `@comity/*` package's `package.json` (`name`, `version`, `type`, `license`, `engines`, `exports`, `comity.layer`, `comity.implements`).
|
|
10
|
-
- ADR-008 register schema —
|
|
10
|
+
- ADR-008 register schema and register — the canonical JSON Schema 2020-12 document and register from `docs/standards/decisions/data/`, embedded at build time (`pnpm --filter @comity-dev/schemas generate`); `adr008CoreExceptionRegister` is derived, never hand-edited. Compile with `createAjv2020Instance()`.
|
|
11
11
|
- `comity-config.json` schema — repository-level configuration shape.
|
|
12
12
|
|
|
13
13
|
## Ownership
|
package/dist/ajv-instance.d.ts
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import Ajv from "ajv";
|
|
2
|
+
import Ajv2020 from "ajv/dist/2020.js";
|
|
2
3
|
/**
|
|
3
4
|
* Creates a fresh Ajv instance with strict settings and standard formats.
|
|
4
5
|
*
|
|
5
6
|
* @returns Configured Ajv instance
|
|
6
7
|
*/
|
|
7
8
|
export declare function createAjvInstance(): Ajv;
|
|
9
|
+
/**
|
|
10
|
+
* Creates a fresh Ajv instance for JSON Schema draft 2020-12 documents, such
|
|
11
|
+
* as the canonical ADR-008 register schema. Separate from
|
|
12
|
+
* {@link createAjvInstance} so the draft-07 package-metadata and config
|
|
13
|
+
* schemas are unaffected.
|
|
14
|
+
*
|
|
15
|
+
* @returns Configured Ajv 2020-12 instance
|
|
16
|
+
*/
|
|
17
|
+
export declare function createAjv2020Instance(): Ajv2020;
|
package/dist/ajv-instance.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Ajv from "ajv";
|
|
2
|
+
import Ajv2020 from "ajv/dist/2020.js";
|
|
2
3
|
import addFormats from "ajv-formats";
|
|
3
4
|
/**
|
|
4
5
|
* Creates a fresh Ajv instance with strict settings and standard formats.
|
|
@@ -15,3 +16,21 @@ export function createAjvInstance() {
|
|
|
15
16
|
addFormats(ajv);
|
|
16
17
|
return ajv;
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Creates a fresh Ajv instance for JSON Schema draft 2020-12 documents, such
|
|
21
|
+
* as the canonical ADR-008 register schema. Separate from
|
|
22
|
+
* {@link createAjvInstance} so the draft-07 package-metadata and config
|
|
23
|
+
* schemas are unaffected.
|
|
24
|
+
*
|
|
25
|
+
* @returns Configured Ajv 2020-12 instance
|
|
26
|
+
*/
|
|
27
|
+
export function createAjv2020Instance() {
|
|
28
|
+
const ajv = new Ajv2020({
|
|
29
|
+
allErrors: true,
|
|
30
|
+
strict: false,
|
|
31
|
+
strictTypes: false,
|
|
32
|
+
verbose: true,
|
|
33
|
+
});
|
|
34
|
+
addFormats(ajv);
|
|
35
|
+
return ajv;
|
|
36
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
export type { Adr008Register } from "./schemas/adr-008-register.js";
|
|
1
|
+
export type { Adr008Register, Adr008RegisterEdge, } from "./schemas/adr-008-register.js";
|
|
2
2
|
export type { ComityConfig } from "./schemas/comity-config.js";
|
|
3
3
|
export type { PackageMetadata, ValidationResult, } from "./schemas/package-metadata.js";
|
|
4
|
-
export { createAjvInstance } from "./ajv-instance.js";
|
|
4
|
+
export { createAjv2020Instance, createAjvInstance } from "./ajv-instance.js";
|
|
5
5
|
export { MIN_NODE_VERSION, PACKAGE_NAME_PATTERN, RUNTIME_LAYERS, VALID_LAYERS, } from "./constants.js";
|
|
6
|
-
export { adr008CoreExceptionRegister } from "./schemas/adr-008-register
|
|
7
|
-
export { adr008RegisterSchema, validateAdr008Register, } from "./schemas/adr-008-register.js";
|
|
6
|
+
export { adr008CoreExceptionRegister, adr008RegisterSchema, validateAdr008Register, } from "./schemas/adr-008-register.js";
|
|
8
7
|
export { comityConfigSchema, validateComityConfig, } from "./schemas/comity-config.js";
|
|
9
8
|
export { packageMetadataSchema, validatePackageMetadata, } from "./schemas/package-metadata.js";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { createAjvInstance } from "./ajv-instance.js";
|
|
1
|
+
export { createAjv2020Instance, createAjvInstance } from "./ajv-instance.js";
|
|
2
2
|
export { MIN_NODE_VERSION, PACKAGE_NAME_PATTERN, RUNTIME_LAYERS, VALID_LAYERS, } from "./constants.js";
|
|
3
|
-
export { adr008CoreExceptionRegister } from "./schemas/adr-008-register
|
|
4
|
-
export { adr008RegisterSchema, validateAdr008Register, } from "./schemas/adr-008-register.js";
|
|
3
|
+
export { adr008CoreExceptionRegister, adr008RegisterSchema, validateAdr008Register, } from "./schemas/adr-008-register.js";
|
|
5
4
|
export { comityConfigSchema, validateComityConfig, } from "./schemas/comity-config.js";
|
|
6
5
|
export { packageMetadataSchema, validatePackageMetadata, } from "./schemas/package-metadata.js";
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
// GENERATED FILE — DO NOT EDIT.
|
|
2
|
+
// Source: docs/standards/decisions/data/adr-008-core-exception-register{,.schema}.json
|
|
3
|
+
// Regenerate with: pnpm --filter @comity-dev/schemas generate
|
|
4
|
+
export const adr008RegisterSchemaDocument = {
|
|
5
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
6
|
+
"$id": "comity:adr-008-core-exception-register.schema.json",
|
|
7
|
+
"title": "ADR-008 Core-to-Core Dependency Exception Register",
|
|
8
|
+
"description": "Machine-readable serialization of the ADR-008 closed register of Core-to-Core dependency exceptions. ADR-008 (Markdown) remains the architectural authority; this register is a derived representation and MUST NOT redefine architecture.",
|
|
9
|
+
"type": "object",
|
|
10
|
+
"additionalProperties": false,
|
|
11
|
+
"required": [
|
|
12
|
+
"$schema",
|
|
13
|
+
"schemaVersion",
|
|
14
|
+
"authority",
|
|
15
|
+
"source",
|
|
16
|
+
"edges"
|
|
17
|
+
],
|
|
18
|
+
"properties": {
|
|
19
|
+
"$schema": {
|
|
20
|
+
"const": "comity:adr-008-core-exception-register.schema.json"
|
|
21
|
+
},
|
|
22
|
+
"schemaVersion": {
|
|
23
|
+
"type": "integer",
|
|
24
|
+
"const": 1,
|
|
25
|
+
"description": "Version of the register schema. Incremented when the data contract changes in a breaking way."
|
|
26
|
+
},
|
|
27
|
+
"authority": {
|
|
28
|
+
"const": "ADR-008",
|
|
29
|
+
"description": "The architectural authority this register serializes."
|
|
30
|
+
},
|
|
31
|
+
"source": {
|
|
32
|
+
"const": "../ADR-008-explicit-core-module-composition-exceptions.md",
|
|
33
|
+
"description": "Path to the authoritative ADR document, relative to the register file (the ADR lives in the parent directory of data/)."
|
|
34
|
+
},
|
|
35
|
+
"edges": {
|
|
36
|
+
"type": "array",
|
|
37
|
+
"description": "Closed list of approved Core-to-Core dependency exceptions.",
|
|
38
|
+
"items": {
|
|
39
|
+
"$ref": "#/$defs/dependencyEdge"
|
|
40
|
+
},
|
|
41
|
+
"uniqueItems": true
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"$defs": {
|
|
45
|
+
"dependencyEdge": {
|
|
46
|
+
"type": "object",
|
|
47
|
+
"additionalProperties": false,
|
|
48
|
+
"required": [
|
|
49
|
+
"from",
|
|
50
|
+
"to",
|
|
51
|
+
"layer",
|
|
52
|
+
"categories",
|
|
53
|
+
"importKind",
|
|
54
|
+
"lifecycle",
|
|
55
|
+
"justification",
|
|
56
|
+
"adrReference"
|
|
57
|
+
],
|
|
58
|
+
"properties": {
|
|
59
|
+
"from": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"pattern": "^@comity/[a-z0-9-]+$",
|
|
62
|
+
"description": "Source package name."
|
|
63
|
+
},
|
|
64
|
+
"to": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"pattern": "^@comity/[a-z0-9-]+$",
|
|
67
|
+
"description": "Target package name."
|
|
68
|
+
},
|
|
69
|
+
"layer": {
|
|
70
|
+
"const": "core-to-core",
|
|
71
|
+
"description": "Layer relationship. This register covers only Core-to-Core edges."
|
|
72
|
+
},
|
|
73
|
+
"categories": {
|
|
74
|
+
"type": "array",
|
|
75
|
+
"minItems": 1,
|
|
76
|
+
"uniqueItems": true,
|
|
77
|
+
"items": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"enum": [
|
|
80
|
+
"capability",
|
|
81
|
+
"infrastructure-contract",
|
|
82
|
+
"value-import",
|
|
83
|
+
"candidate-for-removal"
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
"description": "All classifications that apply to this edge. A single edge may belong to multiple classifications (e.g., storefront -> catalog is both a capability exception and a value-import exception). This is the sole classification field."
|
|
87
|
+
},
|
|
88
|
+
"importKind": {
|
|
89
|
+
"type": "string",
|
|
90
|
+
"enum": [
|
|
91
|
+
"type-only",
|
|
92
|
+
"value",
|
|
93
|
+
"mixed"
|
|
94
|
+
],
|
|
95
|
+
"description": "Whether the dependency is type-only, value, or a mix of both."
|
|
96
|
+
},
|
|
97
|
+
"lifecycle": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"enum": [
|
|
100
|
+
"approved",
|
|
101
|
+
"deprecated",
|
|
102
|
+
"migration-candidate"
|
|
103
|
+
],
|
|
104
|
+
"description": "Lifecycle status: approved exception, deprecated pattern tracked for removal, or scheduled migration candidate."
|
|
105
|
+
},
|
|
106
|
+
"justification": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"minLength": 1,
|
|
109
|
+
"description": "Justification as recorded in ADR-008."
|
|
110
|
+
},
|
|
111
|
+
"adrReference": {
|
|
112
|
+
"type": "string",
|
|
113
|
+
"minLength": 1,
|
|
114
|
+
"description": "Reference back to ADR-008, including the specific register section/table where practical."
|
|
115
|
+
},
|
|
116
|
+
"removalCandidate": {
|
|
117
|
+
"type": "object",
|
|
118
|
+
"additionalProperties": false,
|
|
119
|
+
"required": [
|
|
120
|
+
"criteria",
|
|
121
|
+
"action"
|
|
122
|
+
],
|
|
123
|
+
"description": "Removal candidate tracking, mirroring ADR-008 'Candidates for Removal'. Required when lifecycle is 'migration-candidate'.",
|
|
124
|
+
"properties": {
|
|
125
|
+
"criteria": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"description": "The ADR-008 acceptance criteria this dependency fails."
|
|
128
|
+
},
|
|
129
|
+
"action": {
|
|
130
|
+
"type": "string",
|
|
131
|
+
"description": "The migration action required to remove or refactor the dependency."
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"if": {
|
|
137
|
+
"properties": {
|
|
138
|
+
"lifecycle": {
|
|
139
|
+
"const": "migration-candidate"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"required": [
|
|
143
|
+
"lifecycle"
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
"then": {
|
|
147
|
+
"required": [
|
|
148
|
+
"removalCandidate"
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
export const adr008CanonicalRegister = {
|
|
155
|
+
"$schema": "comity:adr-008-core-exception-register.schema.json",
|
|
156
|
+
"schemaVersion": 1,
|
|
157
|
+
"authority": "ADR-008",
|
|
158
|
+
"source": "../ADR-008-explicit-core-module-composition-exceptions.md",
|
|
159
|
+
"edges": [
|
|
160
|
+
{
|
|
161
|
+
"from": "@comity/storefront",
|
|
162
|
+
"to": "@comity/catalog",
|
|
163
|
+
"layer": "core-to-core",
|
|
164
|
+
"categories": [
|
|
165
|
+
"capability"
|
|
166
|
+
],
|
|
167
|
+
"importKind": "type-only",
|
|
168
|
+
"lifecycle": "approved",
|
|
169
|
+
"justification": "Storefront page composition references catalog domain contracts and models.",
|
|
170
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"from": "@comity/storefront",
|
|
174
|
+
"to": "@comity/taxonomy",
|
|
175
|
+
"layer": "core-to-core",
|
|
176
|
+
"categories": [
|
|
177
|
+
"capability"
|
|
178
|
+
],
|
|
179
|
+
"importKind": "type-only",
|
|
180
|
+
"lifecycle": "approved",
|
|
181
|
+
"justification": "Storefront category page composition references taxonomy domain contracts and models.",
|
|
182
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"from": "@comity/storefront",
|
|
186
|
+
"to": "@comity/content",
|
|
187
|
+
"layer": "core-to-core",
|
|
188
|
+
"categories": [
|
|
189
|
+
"capability"
|
|
190
|
+
],
|
|
191
|
+
"importKind": "type-only",
|
|
192
|
+
"lifecycle": "approved",
|
|
193
|
+
"justification": "Storefront content page composer references content domain models.",
|
|
194
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"from": "@comity/storefront",
|
|
198
|
+
"to": "@comity/search",
|
|
199
|
+
"layer": "core-to-core",
|
|
200
|
+
"categories": [
|
|
201
|
+
"capability"
|
|
202
|
+
],
|
|
203
|
+
"importKind": "type-only",
|
|
204
|
+
"lifecycle": "approved",
|
|
205
|
+
"justification": "Storefront search page contract references SearchResultModel.",
|
|
206
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"from": "@comity/catalog",
|
|
210
|
+
"to": "@comity/media",
|
|
211
|
+
"layer": "core-to-core",
|
|
212
|
+
"categories": [
|
|
213
|
+
"capability"
|
|
214
|
+
],
|
|
215
|
+
"importKind": "type-only",
|
|
216
|
+
"lifecycle": "approved",
|
|
217
|
+
"justification": "Catalog projections reference MediaModel for product/brand media.",
|
|
218
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"from": "@comity/content",
|
|
222
|
+
"to": "@comity/media",
|
|
223
|
+
"layer": "core-to-core",
|
|
224
|
+
"categories": [
|
|
225
|
+
"capability"
|
|
226
|
+
],
|
|
227
|
+
"importKind": "type-only",
|
|
228
|
+
"lifecycle": "approved",
|
|
229
|
+
"justification": "Content blocks/pages reference MediaModel.",
|
|
230
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"from": "@comity/content",
|
|
234
|
+
"to": "@comity/seo",
|
|
235
|
+
"layer": "core-to-core",
|
|
236
|
+
"categories": [
|
|
237
|
+
"capability"
|
|
238
|
+
],
|
|
239
|
+
"importKind": "type-only",
|
|
240
|
+
"lifecycle": "approved",
|
|
241
|
+
"justification": "Content pages reference SeoModel.",
|
|
242
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"from": "@comity/taxonomy",
|
|
246
|
+
"to": "@comity/media",
|
|
247
|
+
"layer": "core-to-core",
|
|
248
|
+
"categories": [
|
|
249
|
+
"capability"
|
|
250
|
+
],
|
|
251
|
+
"importKind": "type-only",
|
|
252
|
+
"lifecycle": "approved",
|
|
253
|
+
"justification": "Taxonomy models reference MediaModel for category image.",
|
|
254
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"from": "@comity/order",
|
|
258
|
+
"to": "@comity/pricing",
|
|
259
|
+
"layer": "core-to-core",
|
|
260
|
+
"categories": [
|
|
261
|
+
"capability",
|
|
262
|
+
"value-import"
|
|
263
|
+
],
|
|
264
|
+
"importKind": "value",
|
|
265
|
+
"lifecycle": "approved",
|
|
266
|
+
"justification": "@comity/order composes its order-level PriceRecord via the public PriceRecord type and combine (record composition, not calculation); the record type stays pricing-owned.",
|
|
267
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"from": "@comity/order",
|
|
271
|
+
"to": "@comity/organization",
|
|
272
|
+
"layer": "core-to-core",
|
|
273
|
+
"categories": [
|
|
274
|
+
"capability"
|
|
275
|
+
],
|
|
276
|
+
"importKind": "type-only",
|
|
277
|
+
"lifecycle": "approved",
|
|
278
|
+
"justification": "Order contracts reference ChannelId for commercial channel scoping.",
|
|
279
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"from": "@comity/fulfillment",
|
|
283
|
+
"to": "@comity/order",
|
|
284
|
+
"layer": "core-to-core",
|
|
285
|
+
"categories": [
|
|
286
|
+
"capability"
|
|
287
|
+
],
|
|
288
|
+
"importKind": "type-only",
|
|
289
|
+
"lifecycle": "approved",
|
|
290
|
+
"justification": "Fulfillment references the committed order by OrderId and reuses the OrderAddressSnapshot contract for shipping recipients; it never holds an Order and imports no value from @comity/order.",
|
|
291
|
+
"adrReference": "ADR-008 — Amendment 2, Capability Exceptions"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"from": "@comity/fulfillment",
|
|
295
|
+
"to": "@comity/organization",
|
|
296
|
+
"layer": "core-to-core",
|
|
297
|
+
"categories": [
|
|
298
|
+
"capability"
|
|
299
|
+
],
|
|
300
|
+
"importKind": "type-only",
|
|
301
|
+
"lifecycle": "approved",
|
|
302
|
+
"justification": "Fulfillment repository contracts require TenantId for multi-tenant isolation, as order and customer repositories do.",
|
|
303
|
+
"adrReference": "ADR-008 — Amendment 2, Capability Exceptions"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"from": "@comity/customer",
|
|
307
|
+
"to": "@comity/validation",
|
|
308
|
+
"layer": "core-to-core",
|
|
309
|
+
"categories": [
|
|
310
|
+
"capability"
|
|
311
|
+
],
|
|
312
|
+
"importKind": "type-only",
|
|
313
|
+
"lifecycle": "approved",
|
|
314
|
+
"justification": "Customer validator consumes the shared Validator contract.",
|
|
315
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"from": "@comity/customer",
|
|
319
|
+
"to": "@comity/organization",
|
|
320
|
+
"layer": "core-to-core",
|
|
321
|
+
"categories": [
|
|
322
|
+
"capability"
|
|
323
|
+
],
|
|
324
|
+
"importKind": "type-only",
|
|
325
|
+
"lifecycle": "approved",
|
|
326
|
+
"justification": "Customer repository requires TenantId for multi-tenant isolation.",
|
|
327
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"from": "@comity/address",
|
|
331
|
+
"to": "@comity/validation",
|
|
332
|
+
"layer": "core-to-core",
|
|
333
|
+
"categories": [
|
|
334
|
+
"capability"
|
|
335
|
+
],
|
|
336
|
+
"importKind": "type-only",
|
|
337
|
+
"lifecycle": "approved",
|
|
338
|
+
"justification": "Address validator consumes the shared Validator contract.",
|
|
339
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"from": "@comity/identity",
|
|
343
|
+
"to": "@comity/validation",
|
|
344
|
+
"layer": "core-to-core",
|
|
345
|
+
"categories": [
|
|
346
|
+
"capability"
|
|
347
|
+
],
|
|
348
|
+
"importKind": "type-only",
|
|
349
|
+
"lifecycle": "approved",
|
|
350
|
+
"justification": "Identity validator consumes the shared Validator contract.",
|
|
351
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"from": "@comity/auth-tokens",
|
|
355
|
+
"to": "@comity/auth",
|
|
356
|
+
"layer": "core-to-core",
|
|
357
|
+
"categories": [
|
|
358
|
+
"value-import"
|
|
359
|
+
],
|
|
360
|
+
"importKind": "mixed",
|
|
361
|
+
"lifecycle": "approved",
|
|
362
|
+
"justification": "Token facade error surface normalizes AuthError at runtime. @comity/auth owns authentication error semantics; direction is intentional and non-cyclic.",
|
|
363
|
+
"adrReference": "ADR-008 — Dependency Register, Value-Import Exceptions"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"from": "@comity/router",
|
|
367
|
+
"to": "@comity/http",
|
|
368
|
+
"layer": "core-to-core",
|
|
369
|
+
"categories": [
|
|
370
|
+
"infrastructure-contract"
|
|
371
|
+
],
|
|
372
|
+
"importKind": "type-only",
|
|
373
|
+
"lifecycle": "deprecated",
|
|
374
|
+
"justification": "Router contracts reference HttpContext, HttpHandler, HttpMethod. Compatibility exception; extraction candidate.",
|
|
375
|
+
"adrReference": "ADR-008 — Dependency Register, Infrastructure Contract Exceptions"
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"from": "@comity/payment",
|
|
379
|
+
"to": "@comity/pricing",
|
|
380
|
+
"layer": "core-to-core",
|
|
381
|
+
"categories": [
|
|
382
|
+
"capability"
|
|
383
|
+
],
|
|
384
|
+
"importKind": "type-only",
|
|
385
|
+
"lifecycle": "approved",
|
|
386
|
+
"justification": "Payment module uses Money value object from pricing for amount representation in PaymentRequest and PaymentOutcome.",
|
|
387
|
+
"adrReference": "ADR-008 — Dependency Register, Capability Exceptions"
|
|
388
|
+
}
|
|
389
|
+
]
|
|
390
|
+
};
|
|
@@ -2,78 +2,51 @@ import type { Ajv, ErrorObject } from "ajv";
|
|
|
2
2
|
/**
|
|
3
3
|
* Canonical schema for the ADR-008 Core Exception Register.
|
|
4
4
|
*
|
|
5
|
+
* Derived at build time from the canonical JSON Schema
|
|
6
|
+
* `docs/standards/decisions/data/adr-008-core-exception-register.schema.json`
|
|
7
|
+
* (ADR-009 §3, §5). It is a JSON Schema 2020-12 document, so it must be
|
|
8
|
+
* compiled with {@link createAjv2020Instance}.
|
|
9
|
+
*
|
|
5
10
|
* @see ADR-008 — Explicit Core Module Composition Exceptions
|
|
6
11
|
* @see ADR-009 — Machine-Readable Core Exception Register
|
|
7
|
-
*
|
|
8
|
-
* Each repository owns its own register instance; the schema is shared
|
|
9
|
-
* Development tooling. The register enumerates Core-to-Core dependency
|
|
10
|
-
* edges that are explicitly permitted despite the default prohibition.
|
|
11
12
|
*/
|
|
12
|
-
export declare const adr008RegisterSchema:
|
|
13
|
-
$id: string;
|
|
14
|
-
type: string;
|
|
15
|
-
required: string[];
|
|
16
|
-
additionalProperties: boolean;
|
|
17
|
-
properties: {
|
|
18
|
-
version: {
|
|
19
|
-
type: string;
|
|
20
|
-
const: string;
|
|
21
|
-
description: string;
|
|
22
|
-
};
|
|
23
|
-
edges: {
|
|
24
|
-
type: string;
|
|
25
|
-
uniqueItems: boolean;
|
|
26
|
-
items: {
|
|
27
|
-
type: string;
|
|
28
|
-
required: string[];
|
|
29
|
-
additionalProperties: boolean;
|
|
30
|
-
properties: {
|
|
31
|
-
from: {
|
|
32
|
-
type: string;
|
|
33
|
-
pattern: string;
|
|
34
|
-
description: string;
|
|
35
|
-
};
|
|
36
|
-
to: {
|
|
37
|
-
type: string;
|
|
38
|
-
pattern: string;
|
|
39
|
-
description: string;
|
|
40
|
-
};
|
|
41
|
-
adr: {
|
|
42
|
-
type: string;
|
|
43
|
-
pattern: string;
|
|
44
|
-
description: string;
|
|
45
|
-
};
|
|
46
|
-
rationale: {
|
|
47
|
-
type: string;
|
|
48
|
-
minLength: number;
|
|
49
|
-
description: string;
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
};
|
|
13
|
+
export declare const adr008RegisterSchema: Record<string, unknown>;
|
|
56
14
|
/**
|
|
57
|
-
*
|
|
15
|
+
* Canonical ADR-008 register, derived at build time from
|
|
16
|
+
* `docs/standards/decisions/data/adr-008-core-exception-register.json`.
|
|
17
|
+
* ADR-008 (Markdown) remains the architectural authority.
|
|
18
|
+
*/
|
|
19
|
+
export declare const adr008CoreExceptionRegister: Adr008Register;
|
|
20
|
+
/**
|
|
21
|
+
* Validates a parsed ADR-008 register document against the canonical schema.
|
|
58
22
|
*
|
|
59
23
|
* @param document — parsed ADR-008 register
|
|
60
|
-
* @param ajv — optional pre-built Ajv instance
|
|
24
|
+
* @param ajv — optional pre-built Ajv instance; it MUST support JSON Schema
|
|
25
|
+
* 2020-12 (use {@link createAjv2020Instance})
|
|
61
26
|
* @returns validation result
|
|
62
27
|
*/
|
|
63
28
|
export declare function validateAdr008Register(document: unknown, ajv?: Ajv): {
|
|
64
29
|
valid: boolean;
|
|
65
30
|
errors: ErrorObject[];
|
|
66
31
|
};
|
|
32
|
+
export interface Adr008RegisterEdge {
|
|
33
|
+
from: string;
|
|
34
|
+
to: string;
|
|
35
|
+
layer: string;
|
|
36
|
+
categories: string[];
|
|
37
|
+
importKind: string;
|
|
38
|
+
lifecycle: string;
|
|
39
|
+
justification: string;
|
|
40
|
+
adrReference: string;
|
|
41
|
+
removalCandidate?: {
|
|
42
|
+
criteria: string;
|
|
43
|
+
action: string;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
67
46
|
export interface Adr008Register {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
categories: string[];
|
|
74
|
-
importKind: string;
|
|
75
|
-
lifecycle: string;
|
|
76
|
-
justification: string;
|
|
77
|
-
adrReference: string;
|
|
78
|
-
}>;
|
|
47
|
+
$schema: string;
|
|
48
|
+
schemaVersion: number;
|
|
49
|
+
authority: string;
|
|
50
|
+
source: string;
|
|
51
|
+
edges: Adr008RegisterEdge[];
|
|
79
52
|
}
|
|
@@ -1,68 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { createAjv2020Instance } from "../ajv-instance.js";
|
|
2
|
+
import { adr008CanonicalRegister, adr008RegisterSchemaDocument, } from "./adr-008-canonical.generated.js";
|
|
3
3
|
/**
|
|
4
4
|
* Canonical schema for the ADR-008 Core Exception Register.
|
|
5
5
|
*
|
|
6
|
+
* Derived at build time from the canonical JSON Schema
|
|
7
|
+
* `docs/standards/decisions/data/adr-008-core-exception-register.schema.json`
|
|
8
|
+
* (ADR-009 §3, §5). It is a JSON Schema 2020-12 document, so it must be
|
|
9
|
+
* compiled with {@link createAjv2020Instance}.
|
|
10
|
+
*
|
|
6
11
|
* @see ADR-008 — Explicit Core Module Composition Exceptions
|
|
7
12
|
* @see ADR-009 — Machine-Readable Core Exception Register
|
|
8
|
-
*
|
|
9
|
-
* Each repository owns its own register instance; the schema is shared
|
|
10
|
-
* Development tooling. The register enumerates Core-to-Core dependency
|
|
11
|
-
* edges that are explicitly permitted despite the default prohibition.
|
|
12
13
|
*/
|
|
13
|
-
export const adr008RegisterSchema =
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
type: "string",
|
|
21
|
-
const: "1",
|
|
22
|
-
description: "Schema version of the register document.",
|
|
23
|
-
},
|
|
24
|
-
edges: {
|
|
25
|
-
type: "array",
|
|
26
|
-
uniqueItems: true,
|
|
27
|
-
items: {
|
|
28
|
-
type: "object",
|
|
29
|
-
required: ["from", "to", "adr", "rationale"],
|
|
30
|
-
additionalProperties: false,
|
|
31
|
-
properties: {
|
|
32
|
-
from: {
|
|
33
|
-
type: "string",
|
|
34
|
-
pattern: PACKAGE_NAME_PATTERN,
|
|
35
|
-
description: "Source Core Module package name.",
|
|
36
|
-
},
|
|
37
|
-
to: {
|
|
38
|
-
type: "string",
|
|
39
|
-
pattern: PACKAGE_NAME_PATTERN,
|
|
40
|
-
description: "Target Core Module package name.",
|
|
41
|
-
},
|
|
42
|
-
adr: {
|
|
43
|
-
type: "string",
|
|
44
|
-
pattern: "^ADR-[0-9]{3,4}.*$",
|
|
45
|
-
description: "ADR reference approving this exception.",
|
|
46
|
-
},
|
|
47
|
-
rationale: {
|
|
48
|
-
type: "string",
|
|
49
|
-
minLength: 1,
|
|
50
|
-
description: "Why this Core-to-Core edge is permitted.",
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
};
|
|
14
|
+
export const adr008RegisterSchema = adr008RegisterSchemaDocument;
|
|
15
|
+
/**
|
|
16
|
+
* Canonical ADR-008 register, derived at build time from
|
|
17
|
+
* `docs/standards/decisions/data/adr-008-core-exception-register.json`.
|
|
18
|
+
* ADR-008 (Markdown) remains the architectural authority.
|
|
19
|
+
*/
|
|
20
|
+
export const adr008CoreExceptionRegister = adr008CanonicalRegister;
|
|
57
21
|
/**
|
|
58
|
-
* Validates a parsed ADR-008 register document.
|
|
22
|
+
* Validates a parsed ADR-008 register document against the canonical schema.
|
|
59
23
|
*
|
|
60
24
|
* @param document — parsed ADR-008 register
|
|
61
|
-
* @param ajv — optional pre-built Ajv instance
|
|
25
|
+
* @param ajv — optional pre-built Ajv instance; it MUST support JSON Schema
|
|
26
|
+
* 2020-12 (use {@link createAjv2020Instance})
|
|
62
27
|
* @returns validation result
|
|
63
28
|
*/
|
|
64
|
-
export function validateAdr008Register(document, ajv =
|
|
65
|
-
const
|
|
29
|
+
export function validateAdr008Register(document, ajv = createAjv2020Instance()) {
|
|
30
|
+
const id = adr008RegisterSchema["$id"];
|
|
31
|
+
const validate = ajv.getSchema(id) ?? ajv.compile(adr008RegisterSchema);
|
|
66
32
|
const valid = validate(document);
|
|
67
33
|
return {
|
|
68
34
|
valid: Boolean(valid),
|
package/dist/schemas/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export type { Adr008Register } from "./adr-008-register.js";
|
|
1
|
+
export type { Adr008Register, Adr008RegisterEdge, } from "./adr-008-register.js";
|
|
2
2
|
export type { ComityConfig } from "./comity-config.js";
|
|
3
3
|
export type { PackageMetadata, ValidationResult } from "./package-metadata.js";
|
|
4
|
-
export { adr008RegisterSchema, validateAdr008Register, } from "./adr-008-register.js";
|
|
4
|
+
export { adr008CoreExceptionRegister, adr008RegisterSchema, validateAdr008Register, } from "./adr-008-register.js";
|
|
5
5
|
export { comityConfigSchema, validateComityConfig } from "./comity-config.js";
|
|
6
6
|
export { packageMetadataSchema, validatePackageMetadata, } from "./package-metadata.js";
|
package/dist/schemas/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { adr008RegisterSchema, validateAdr008Register, } from "./adr-008-register.js";
|
|
1
|
+
export { adr008CoreExceptionRegister, adr008RegisterSchema, validateAdr008Register, } from "./adr-008-register.js";
|
|
2
2
|
export { comityConfigSchema, validateComityConfig } from "./comity-config.js";
|
|
3
3
|
export { packageMetadataSchema, validatePackageMetadata, } from "./package-metadata.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comity-dev/schemas",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Reusable JSON Schema definitions for Comity package metadata, ADR-008 register, and repository configuration. Development tooling.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
"typescript": "^5.9.3"
|
|
41
41
|
},
|
|
42
42
|
"scripts": {
|
|
43
|
-
"
|
|
44
|
-
"
|
|
43
|
+
"generate": "node scripts/generate-adr-008.mjs",
|
|
44
|
+
"build": "node scripts/generate-adr-008.mjs && node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json",
|
|
45
|
+
"test": "vitest run --passWithNoTests"
|
|
45
46
|
}
|
|
46
47
|
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Adr008Register } from "./adr-008-register.js";
|
|
2
|
-
/**
|
|
3
|
-
* Canonical ADR-008 Core Exception Register.
|
|
4
|
-
*
|
|
5
|
-
* This is the authoritative machine-readable representation of the
|
|
6
|
-
* ADR-008 closed register of Core-to-Core dependency exceptions.
|
|
7
|
-
*
|
|
8
|
-
* @see ADR-008 — Explicit Core Module Composition Exceptions
|
|
9
|
-
* @see ADR-009 — Machine-Readable Core Exception Register
|
|
10
|
-
*/
|
|
11
|
-
export declare const adr008CoreExceptionRegister: Adr008Register;
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Canonical ADR-008 Core Exception Register.
|
|
3
|
-
*
|
|
4
|
-
* This is the authoritative machine-readable representation of the
|
|
5
|
-
* ADR-008 closed register of Core-to-Core dependency exceptions.
|
|
6
|
-
*
|
|
7
|
-
* @see ADR-008 — Explicit Core Module Composition Exceptions
|
|
8
|
-
* @see ADR-009 — Machine-Readable Core Exception Register
|
|
9
|
-
*/
|
|
10
|
-
export const adr008CoreExceptionRegister = {
|
|
11
|
-
version: "1",
|
|
12
|
-
edges: [
|
|
13
|
-
{
|
|
14
|
-
from: "@comity/storefront",
|
|
15
|
-
to: "@comity/catalog",
|
|
16
|
-
layer: "core-to-core",
|
|
17
|
-
categories: ["capability"],
|
|
18
|
-
importKind: "type-only",
|
|
19
|
-
lifecycle: "approved",
|
|
20
|
-
justification: "Storefront page composition references catalog domain contracts and models.",
|
|
21
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
from: "@comity/storefront",
|
|
25
|
-
to: "@comity/taxonomy",
|
|
26
|
-
layer: "core-to-core",
|
|
27
|
-
categories: ["capability"],
|
|
28
|
-
importKind: "type-only",
|
|
29
|
-
lifecycle: "approved",
|
|
30
|
-
justification: "Storefront category page composition references taxonomy domain contracts and models.",
|
|
31
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
from: "@comity/storefront",
|
|
35
|
-
to: "@comity/content",
|
|
36
|
-
layer: "core-to-core",
|
|
37
|
-
categories: ["capability"],
|
|
38
|
-
importKind: "type-only",
|
|
39
|
-
lifecycle: "approved",
|
|
40
|
-
justification: "Storefront content page composer references content domain models.",
|
|
41
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
from: "@comity/storefront",
|
|
45
|
-
to: "@comity/search",
|
|
46
|
-
layer: "core-to-core",
|
|
47
|
-
categories: ["capability"],
|
|
48
|
-
importKind: "type-only",
|
|
49
|
-
lifecycle: "approved",
|
|
50
|
-
justification: "Storefront search page contract references SearchResultModel.",
|
|
51
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
from: "@comity/catalog",
|
|
55
|
-
to: "@comity/media",
|
|
56
|
-
layer: "core-to-core",
|
|
57
|
-
categories: ["capability"],
|
|
58
|
-
importKind: "type-only",
|
|
59
|
-
lifecycle: "approved",
|
|
60
|
-
justification: "Catalog projections reference MediaModel for product/brand media.",
|
|
61
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
from: "@comity/content",
|
|
65
|
-
to: "@comity/media",
|
|
66
|
-
layer: "core-to-core",
|
|
67
|
-
categories: ["capability"],
|
|
68
|
-
importKind: "type-only",
|
|
69
|
-
lifecycle: "approved",
|
|
70
|
-
justification: "Content blocks/pages reference MediaModel.",
|
|
71
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
from: "@comity/content",
|
|
75
|
-
to: "@comity/seo",
|
|
76
|
-
layer: "core-to-core",
|
|
77
|
-
categories: ["capability"],
|
|
78
|
-
importKind: "type-only",
|
|
79
|
-
lifecycle: "approved",
|
|
80
|
-
justification: "Content pages reference SeoModel.",
|
|
81
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
from: "@comity/taxonomy",
|
|
85
|
-
to: "@comity/media",
|
|
86
|
-
layer: "core-to-core",
|
|
87
|
-
categories: ["capability"],
|
|
88
|
-
importKind: "type-only",
|
|
89
|
-
lifecycle: "approved",
|
|
90
|
-
justification: "Taxonomy models reference MediaModel for category image.",
|
|
91
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
from: "@comity/order",
|
|
95
|
-
to: "@comity/pricing",
|
|
96
|
-
layer: "core-to-core",
|
|
97
|
-
categories: ["capability"],
|
|
98
|
-
importKind: "type-only",
|
|
99
|
-
lifecycle: "approved",
|
|
100
|
-
justification: "Order items reference Price / PriceModifier.",
|
|
101
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
from: "@comity/order",
|
|
105
|
-
to: "@comity/organization",
|
|
106
|
-
layer: "core-to-core",
|
|
107
|
-
categories: ["capability"],
|
|
108
|
-
importKind: "type-only",
|
|
109
|
-
lifecycle: "approved",
|
|
110
|
-
justification: "Order contracts reference ChannelId for commercial channel scoping.",
|
|
111
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
from: "@comity/customer",
|
|
115
|
-
to: "@comity/validation",
|
|
116
|
-
layer: "core-to-core",
|
|
117
|
-
categories: ["capability"],
|
|
118
|
-
importKind: "type-only",
|
|
119
|
-
lifecycle: "approved",
|
|
120
|
-
justification: "Customer validator consumes the shared Validator contract.",
|
|
121
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
from: "@comity/customer",
|
|
125
|
-
to: "@comity/organization",
|
|
126
|
-
layer: "core-to-core",
|
|
127
|
-
categories: ["capability"],
|
|
128
|
-
importKind: "type-only",
|
|
129
|
-
lifecycle: "approved",
|
|
130
|
-
justification: "Customer repository requires TenantId for multi-tenant isolation.",
|
|
131
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
from: "@comity/address",
|
|
135
|
-
to: "@comity/validation",
|
|
136
|
-
layer: "core-to-core",
|
|
137
|
-
categories: ["capability"],
|
|
138
|
-
importKind: "type-only",
|
|
139
|
-
lifecycle: "approved",
|
|
140
|
-
justification: "Address validator consumes the shared Validator contract.",
|
|
141
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
from: "@comity/identity",
|
|
145
|
-
to: "@comity/validation",
|
|
146
|
-
layer: "core-to-core",
|
|
147
|
-
categories: ["capability"],
|
|
148
|
-
importKind: "type-only",
|
|
149
|
-
lifecycle: "approved",
|
|
150
|
-
justification: "Identity validator consumes the shared Validator contract.",
|
|
151
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
from: "@comity/auth-tokens",
|
|
155
|
-
to: "@comity/auth",
|
|
156
|
-
layer: "core-to-core",
|
|
157
|
-
categories: ["value-import"],
|
|
158
|
-
importKind: "mixed",
|
|
159
|
-
lifecycle: "approved",
|
|
160
|
-
justification: "Token facade error surface normalizes AuthError at runtime. @comity/auth owns authentication error semantics; direction is intentional and non-cyclic.",
|
|
161
|
-
adrReference: "ADR-008 — Dependency Register, Value-Import Exceptions",
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
from: "@comity/router",
|
|
165
|
-
to: "@comity/http",
|
|
166
|
-
layer: "core-to-core",
|
|
167
|
-
categories: ["infrastructure-contract"],
|
|
168
|
-
importKind: "type-only",
|
|
169
|
-
lifecycle: "deprecated",
|
|
170
|
-
justification: "Router contracts reference HttpContext, HttpHandler, HttpMethod. Compatibility exception; extraction candidate.",
|
|
171
|
-
adrReference: "ADR-008 — Dependency Register, Infrastructure Contract Exceptions",
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
from: "@comity/payment",
|
|
175
|
-
to: "@comity/pricing",
|
|
176
|
-
layer: "core-to-core",
|
|
177
|
-
categories: ["capability"],
|
|
178
|
-
importKind: "type-only",
|
|
179
|
-
lifecycle: "approved",
|
|
180
|
-
justification: "Payment module uses Money value object from pricing for amount representation in PaymentRequest and PaymentOutcome.",
|
|
181
|
-
adrReference: "ADR-008 — Dependency Register, Capability Exceptions",
|
|
182
|
-
},
|
|
183
|
-
],
|
|
184
|
-
};
|