archctx 0.9.2 → 0.9.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "archctx",
3
- "version": "0.9.2",
3
+ "version": "0.9.4",
4
4
  "description": "Local architecture context CLI for agentic coding workflows.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -27,6 +27,7 @@
27
27
  "type": "string",
28
28
  "enum": [
29
29
  "forbid-dependency",
30
+ "layer-direction",
30
31
  "require-interface",
31
32
  "forbid-data-access",
32
33
  "require-owner",
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://archctx.repoharness.com/schemas/runtime/changeset-receipt.schema.json",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["schemaVersion", "journalId", "changeSetId", "baseModelDigest", "resultModelDigest", "files", "hashAlgorithm", "approvalAuthenticity"],
7
+ "properties": {
8
+ "schemaVersion": { "const": "archcontext.changeset-receipt/v1" },
9
+ "journalId": { "type": "string", "minLength": 1 },
10
+ "changeSetId": { "type": "string", "minLength": 1 },
11
+ "baseModelDigest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
12
+ "resultModelDigest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
13
+ "hashAlgorithm": { "const": "sha256-canonical-json-body" },
14
+ "approvalAuthenticity": { "const": "unverified" },
15
+ "files": {
16
+ "type": "array", "maxItems": 10000,
17
+ "items": {
18
+ "type": "object", "additionalProperties": false,
19
+ "required": ["path", "operation", "bodyHash"],
20
+ "properties": {
21
+ "path": { "type": "string", "minLength": 1 },
22
+ "operation": { "enum": ["write", "delete"] },
23
+ "bodyHash": { "type": "string", "pattern": "^(sha256:[a-f0-9]{64}|missing)$" }
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
@@ -202,12 +202,30 @@
202
202
  "fields": {
203
203
  "type": "object",
204
204
  "additionalProperties": false,
205
- "required": [
206
- "content.decisions"
205
+ "anyOf": [
206
+ {
207
+ "required": [
208
+ "content.decisions"
209
+ ]
210
+ },
211
+ {
212
+ "required": [
213
+ "model.layers"
214
+ ]
215
+ }
207
216
  ],
208
217
  "properties": {
209
218
  "content.decisions": {
210
219
  "const": "docs/adr"
220
+ },
221
+ "model.layers": {
222
+ "type": "array",
223
+ "minItems": 1,
224
+ "uniqueItems": true,
225
+ "items": {
226
+ "type": "string",
227
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$"
228
+ }
211
229
  }
212
230
  }
213
231
  }
@@ -15,7 +15,8 @@
15
15
  "model",
16
16
  "capabilityProfiles",
17
17
  "contracts",
18
- "documents"
18
+ "documents",
19
+ "decisions"
19
20
  ],
20
21
  "properties": {
21
22
  "schemaVersion": {
@@ -134,6 +135,7 @@
134
135
  "$ref": "../repo/architecture-flow.schema.json"
135
136
  }
136
137
  },
138
+ "layers": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$" } },
137
139
  "sourcePaths": {
138
140
  "type": "object",
139
141
  "additionalProperties": false,
@@ -273,6 +275,57 @@
273
275
  "items": {
274
276
  "$ref": "#/$defs/document"
275
277
  }
278
+ },
279
+ "decisions": {
280
+ "type": "array",
281
+ "items": {
282
+ "type": "object",
283
+ "additionalProperties": false,
284
+ "required": [
285
+ "id",
286
+ "title",
287
+ "status",
288
+ "decidedAt",
289
+ "appliesTo",
290
+ "supersedes",
291
+ "path"
292
+ ],
293
+ "properties": {
294
+ "id": {
295
+ "type": "string"
296
+ },
297
+ "title": {
298
+ "type": "string"
299
+ },
300
+ "path": {
301
+ "type": "string"
302
+ },
303
+ "status": {
304
+ "type": [
305
+ "string",
306
+ "null"
307
+ ]
308
+ },
309
+ "decidedAt": {
310
+ "type": [
311
+ "string",
312
+ "null"
313
+ ]
314
+ },
315
+ "appliesTo": {
316
+ "type": "array",
317
+ "items": {
318
+ "type": "string"
319
+ }
320
+ },
321
+ "supersedes": {
322
+ "type": "array",
323
+ "items": {
324
+ "type": "string"
325
+ }
326
+ }
327
+ }
328
+ }
276
329
  }
277
330
  },
278
331
  "$defs": {
@@ -477,7 +530,8 @@
477
530
  "relation",
478
531
  "flow",
479
532
  "contract",
480
- "document"
533
+ "document",
534
+ "decision"
481
535
  ]
482
536
  },
483
537
  "requirement": {
@@ -332,7 +332,7 @@
332
332
  },
333
333
  "sourceStamps": {
334
334
  "type": "object",
335
- "description": "entity-summary targets only: the content digest of every declared source footprint this target documents, by node id. Each footprint belongs to its node's nearest ancestor-or-self with an entity-summary target, so each node is stamped on exactly one row.",
335
+ "description": "entity-summary and runtime topology targets only: the content digest of every declared source footprint this target documents, by node id. A footprint belongs to its node's nearest ancestor-or-self with an entity-summary target, so it is stamped on exactly one entity-summary row; a runtime topology node's footprint is stamped on every runtime topology row instead, and those rows carry identical stamps (ADR-0049).",
336
336
  "additionalProperties": {
337
337
  "$ref": "#/$defs/digest"
338
338
  }
@@ -360,24 +360,37 @@
360
360
  "properties": {
361
361
  "type": {
362
362
  "not": {
363
- "const": "entity-summary"
363
+ "enum": [
364
+ "entity-summary",
365
+ "diagram-runtime-topology",
366
+ "runtime-topology-summary"
367
+ ]
364
368
  }
365
369
  }
366
370
  }
367
371
  },
368
372
  "then": {
369
373
  "not": {
370
- "anyOf": [
371
- {
372
- "required": [
373
- "sourceStamps"
374
- ]
375
- },
376
- {
377
- "required": [
378
- "scale"
379
- ]
374
+ "required": [
375
+ "sourceStamps"
376
+ ]
377
+ }
378
+ }
379
+ },
380
+ {
381
+ "if": {
382
+ "properties": {
383
+ "type": {
384
+ "not": {
385
+ "const": "entity-summary"
380
386
  }
387
+ }
388
+ }
389
+ },
390
+ "then": {
391
+ "not": {
392
+ "required": [
393
+ "scale"
381
394
  ]
382
395
  }
383
396
  }
@@ -52,7 +52,11 @@
52
52
  "properties": {
53
53
  "code": { "type": "string", "pattern": "^AC_[A-Z0-9_]+$" },
54
54
  "reasonCode": { "type": "string", "minLength": 1 },
55
- "message": { "type": "string" }
55
+ "message": { "type": "string" },
56
+ "severity": { "enum": ["notice", "warning", "error", "critical"] },
57
+ "retryable": { "type": "boolean" },
58
+ "action": { "type": "string", "minLength": 1 },
59
+ "details": { "type": "object", "description": "Safe metadata validated by the registered failure contract; no raw exception diagnostics." }
56
60
  }
57
61
  },
58
62
  { "type": "null" }