archctx 0.7.2 → 0.8.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.
@@ -9,6 +9,7 @@
9
9
  "repository",
10
10
  "worktree",
11
11
  "requestId",
12
+ "namespace",
12
13
  "request",
13
14
  "trackedFileCount",
14
15
  "snapshot",
@@ -35,6 +36,11 @@
35
36
  "type": "string",
36
37
  "pattern": "^refactor_request\\.[a-f0-9]{16}$"
37
38
  },
39
+ "namespace": {
40
+ "type": "string",
41
+ "pattern": "^[a-z][a-z0-9]*(\\.[a-z0-9][a-z0-9-]*)+$",
42
+ "description": "The manifest product.id every refactor subject selector of this scan is scoped by (ADR-0046)."
43
+ },
38
44
  "request": {
39
45
  "$ref": "#/$defs/refactorRequest"
40
46
  },
@@ -389,6 +395,7 @@
389
395
  "required": [
390
396
  "kind",
391
397
  "memberNodeIds",
398
+ "directions",
392
399
  "edges",
393
400
  "totalCount",
394
401
  "truncated"
@@ -397,6 +404,80 @@
397
404
  "kind": {
398
405
  "const": "cycle"
399
406
  },
407
+ "memberNodeIds": {
408
+ "type": "array",
409
+ "minItems": 2,
410
+ "maxItems": 2,
411
+ "uniqueItems": true,
412
+ "items": {
413
+ "type": "string",
414
+ "minLength": 1
415
+ }
416
+ },
417
+ "directions": {
418
+ "type": "array",
419
+ "minItems": 2,
420
+ "maxItems": 2,
421
+ "description": "[thin, thick] direction of the pair, each with its import-edge population and sampled count.",
422
+ "items": {
423
+ "type": "object",
424
+ "additionalProperties": false,
425
+ "required": [
426
+ "fromNodeId",
427
+ "toNodeId",
428
+ "totalCount",
429
+ "sampledCount"
430
+ ],
431
+ "properties": {
432
+ "fromNodeId": {
433
+ "type": "string",
434
+ "minLength": 1
435
+ },
436
+ "toNodeId": {
437
+ "type": "string",
438
+ "minLength": 1
439
+ },
440
+ "totalCount": {
441
+ "type": "integer",
442
+ "minimum": 1
443
+ },
444
+ "sampledCount": {
445
+ "type": "integer",
446
+ "minimum": 0
447
+ }
448
+ }
449
+ }
450
+ },
451
+ "edges": {
452
+ "type": "array",
453
+ "maxItems": 20,
454
+ "items": {
455
+ "$ref": "#/$defs/evidenceImportEdge"
456
+ }
457
+ },
458
+ "totalCount": {
459
+ "type": "integer",
460
+ "minimum": 0
461
+ },
462
+ "truncated": {
463
+ "type": "boolean"
464
+ }
465
+ }
466
+ },
467
+ {
468
+ "type": "object",
469
+ "additionalProperties": false,
470
+ "required": [
471
+ "kind",
472
+ "memberNodeIds",
473
+ "edges",
474
+ "totalCount",
475
+ "truncated"
476
+ ],
477
+ "properties": {
478
+ "kind": {
479
+ "const": "residual-cycle"
480
+ },
400
481
  "memberNodeIds": {
401
482
  "$ref": "#/$defs/evidenceIdList"
402
483
  },
@@ -576,6 +657,16 @@
576
657
  "null"
577
658
  ]
578
659
  },
660
+ "memberNodeIds": {
661
+ "type": "array",
662
+ "minItems": 2,
663
+ "uniqueItems": true,
664
+ "items": {
665
+ "type": "string",
666
+ "minLength": 1
667
+ },
668
+ "description": "Present exactly for moduleDependencies.* metrics: the pair ends or the residual cycle members, sorted."
669
+ },
579
670
  "operator": {
580
671
  "enum": [
581
672
  "absent",
@@ -867,6 +958,7 @@
867
958
  "direction-violation",
868
959
  "evidence-gap",
869
960
  "ownership-ambiguous",
961
+ "residual-cycle",
870
962
  "undeclared-footprint",
871
963
  "unowned-paths"
872
964
  ]
@@ -981,6 +1073,26 @@
981
1073
  }
982
1074
  }
983
1075
  },
1076
+ {
1077
+ "if": {
1078
+ "properties": {
1079
+ "kind": {
1080
+ "const": "residual-cycle"
1081
+ }
1082
+ }
1083
+ },
1084
+ "then": {
1085
+ "properties": {
1086
+ "evidence": {
1087
+ "properties": {
1088
+ "kind": {
1089
+ "const": "residual-cycle"
1090
+ }
1091
+ }
1092
+ }
1093
+ }
1094
+ }
1095
+ },
984
1096
  {
985
1097
  "if": {
986
1098
  "properties": {
@@ -1719,6 +1831,7 @@
1719
1831
  "modelDigest",
1720
1832
  "codeFacts",
1721
1833
  "modules",
1834
+ "moduleDependencies",
1722
1835
  "repositorySummary",
1723
1836
  "createdAt",
1724
1837
  "snapshotDigest"
@@ -1820,6 +1933,33 @@
1820
1933
  "$ref": "#/$defs/moduleStatistics"
1821
1934
  }
1822
1935
  },
1936
+ "moduleDependencies": {
1937
+ "type": "array",
1938
+ "description": "Ordered cross-module dependency table, sorted by (fromNodeId, toNodeId).",
1939
+ "items": {
1940
+ "type": "object",
1941
+ "additionalProperties": false,
1942
+ "required": [
1943
+ "fromNodeId",
1944
+ "toNodeId",
1945
+ "distinctFileEdgeCount"
1946
+ ],
1947
+ "properties": {
1948
+ "fromNodeId": {
1949
+ "type": "string",
1950
+ "minLength": 1
1951
+ },
1952
+ "toNodeId": {
1953
+ "type": "string",
1954
+ "minLength": 1
1955
+ },
1956
+ "distinctFileEdgeCount": {
1957
+ "type": "integer",
1958
+ "minimum": 1
1959
+ }
1960
+ }
1961
+ }
1962
+ },
1823
1963
  "repositorySummary": {
1824
1964
  "type": "object",
1825
1965
  "additionalProperties": false,
@@ -2095,6 +2235,7 @@
2095
2235
  "required": [
2096
2236
  "kind",
2097
2237
  "subjectSelectorId",
2238
+ "affectedNodeIds",
2098
2239
  "signalIds",
2099
2240
  "metrics",
2100
2241
  "evidence"
@@ -2106,6 +2247,7 @@
2106
2247
  "direction-violation",
2107
2248
  "evidence-gap",
2108
2249
  "ownership-ambiguous",
2250
+ "residual-cycle",
2109
2251
  "undeclared-footprint",
2110
2252
  "unowned-paths"
2111
2253
  ]
@@ -2115,6 +2257,15 @@
2115
2257
  "minLength": 1,
2116
2258
  "pattern": "\\S"
2117
2259
  },
2260
+ "affectedNodeIds": {
2261
+ "type": "array",
2262
+ "uniqueItems": true,
2263
+ "items": {
2264
+ "type": "string",
2265
+ "minLength": 1
2266
+ },
2267
+ "description": "Declared nodes the observation is about, sorted and unique; [] for a repository-wide fact."
2268
+ },
2118
2269
  "signalIds": {
2119
2270
  "type": "array",
2120
2271
  "uniqueItems": true,
@@ -2210,6 +2361,26 @@
2210
2361
  }
2211
2362
  }
2212
2363
  },
2364
+ {
2365
+ "if": {
2366
+ "properties": {
2367
+ "kind": {
2368
+ "const": "residual-cycle"
2369
+ }
2370
+ }
2371
+ },
2372
+ "then": {
2373
+ "properties": {
2374
+ "evidence": {
2375
+ "properties": {
2376
+ "kind": {
2377
+ "const": "residual-cycle"
2378
+ }
2379
+ }
2380
+ }
2381
+ }
2382
+ }
2383
+ },
2213
2384
  {
2214
2385
  "if": {
2215
2386
  "properties": {
@@ -24,6 +24,7 @@
24
24
  "direction-violation",
25
25
  "evidence-gap",
26
26
  "ownership-ambiguous",
27
+ "residual-cycle",
27
28
  "undeclared-footprint",
28
29
  "unowned-paths"
29
30
  ]
@@ -138,6 +139,26 @@
138
139
  }
139
140
  }
140
141
  },
142
+ {
143
+ "if": {
144
+ "properties": {
145
+ "kind": {
146
+ "const": "residual-cycle"
147
+ }
148
+ }
149
+ },
150
+ "then": {
151
+ "properties": {
152
+ "evidence": {
153
+ "properties": {
154
+ "kind": {
155
+ "const": "residual-cycle"
156
+ }
157
+ }
158
+ }
159
+ }
160
+ }
161
+ },
141
162
  {
142
163
  "if": {
143
164
  "properties": {
@@ -344,6 +365,7 @@
344
365
  "required": [
345
366
  "kind",
346
367
  "memberNodeIds",
368
+ "directions",
347
369
  "edges",
348
370
  "totalCount",
349
371
  "truncated"
@@ -352,6 +374,80 @@
352
374
  "kind": {
353
375
  "const": "cycle"
354
376
  },
377
+ "memberNodeIds": {
378
+ "type": "array",
379
+ "minItems": 2,
380
+ "maxItems": 2,
381
+ "uniqueItems": true,
382
+ "items": {
383
+ "type": "string",
384
+ "minLength": 1
385
+ }
386
+ },
387
+ "directions": {
388
+ "type": "array",
389
+ "minItems": 2,
390
+ "maxItems": 2,
391
+ "description": "[thin, thick] direction of the pair, each with its import-edge population and sampled count.",
392
+ "items": {
393
+ "type": "object",
394
+ "additionalProperties": false,
395
+ "required": [
396
+ "fromNodeId",
397
+ "toNodeId",
398
+ "totalCount",
399
+ "sampledCount"
400
+ ],
401
+ "properties": {
402
+ "fromNodeId": {
403
+ "type": "string",
404
+ "minLength": 1
405
+ },
406
+ "toNodeId": {
407
+ "type": "string",
408
+ "minLength": 1
409
+ },
410
+ "totalCount": {
411
+ "type": "integer",
412
+ "minimum": 1
413
+ },
414
+ "sampledCount": {
415
+ "type": "integer",
416
+ "minimum": 0
417
+ }
418
+ }
419
+ }
420
+ },
421
+ "edges": {
422
+ "type": "array",
423
+ "maxItems": 20,
424
+ "items": {
425
+ "$ref": "#/$defs/evidenceImportEdge"
426
+ }
427
+ },
428
+ "totalCount": {
429
+ "type": "integer",
430
+ "minimum": 0
431
+ },
432
+ "truncated": {
433
+ "type": "boolean"
434
+ }
435
+ }
436
+ },
437
+ {
438
+ "type": "object",
439
+ "additionalProperties": false,
440
+ "required": [
441
+ "kind",
442
+ "memberNodeIds",
443
+ "edges",
444
+ "totalCount",
445
+ "truncated"
446
+ ],
447
+ "properties": {
448
+ "kind": {
449
+ "const": "residual-cycle"
450
+ },
355
451
  "memberNodeIds": {
356
452
  "$ref": "#/$defs/evidenceIdList"
357
453
  },
@@ -531,6 +627,16 @@
531
627
  "null"
532
628
  ]
533
629
  },
630
+ "memberNodeIds": {
631
+ "type": "array",
632
+ "minItems": 2,
633
+ "uniqueItems": true,
634
+ "items": {
635
+ "type": "string",
636
+ "minLength": 1
637
+ },
638
+ "description": "Present exactly for moduleDependencies.* metrics: the pair ends or the residual cycle members, sorted."
639
+ },
534
640
  "operator": {
535
641
  "enum": [
536
642
  "absent",