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.
- package/assets/catalog.yaml +2 -2
- package/bin/archctx.mjs +50973 -43428
- package/package.json +2 -2
- package/schemas/repo/refactor-decision.schema.json +218 -0
- package/schemas/runtime/archctx-capabilities.schema.json +2 -2
- package/schemas/runtime/architecture-debt.schema.json +222 -0
- package/schemas/runtime/capability-dependencies.schema.json +10 -6
- package/schemas/runtime/changeset.schema.json +24 -1
- package/schemas/runtime/docs-anchors.schema.json +4 -3
- package/schemas/runtime/hook-debt-checkpoint.schema.json +69 -0
- package/schemas/runtime/native-context-export.schema.json +823 -0
- package/schemas/runtime/practice-checkpoint.schema.json +1 -0
- package/schemas/runtime/product-version-manifest.schema.json +2 -2
- package/schemas/runtime/projection-apply-readback.schema.json +470 -7
- package/schemas/runtime/projection-apply-recovery.schema.json +2 -2
- package/schemas/runtime/projection-manifest.schema.json +81 -186
- package/schemas/runtime/projection-result.schema.json +132 -5
- package/schemas/runtime/projection-target.schema.json +4 -1
- package/schemas/runtime/recommendation-v3.schema.json +106 -0
- package/schemas/runtime/review-result.schema.json +1 -0
- package/schemas/runtime/runtime-recommendation-show.schema.json +234 -13
- package/schemas/runtime/runtime-refactor-scan.schema.json +171 -0
- package/schemas/runtime/structural-observation-payload.schema.json +106 -0
|
@@ -452,6 +452,7 @@
|
|
|
452
452
|
"required": [
|
|
453
453
|
"kind",
|
|
454
454
|
"memberNodeIds",
|
|
455
|
+
"directions",
|
|
455
456
|
"edges",
|
|
456
457
|
"totalCount",
|
|
457
458
|
"truncated"
|
|
@@ -460,6 +461,80 @@
|
|
|
460
461
|
"kind": {
|
|
461
462
|
"const": "cycle"
|
|
462
463
|
},
|
|
464
|
+
"memberNodeIds": {
|
|
465
|
+
"type": "array",
|
|
466
|
+
"minItems": 2,
|
|
467
|
+
"maxItems": 2,
|
|
468
|
+
"uniqueItems": true,
|
|
469
|
+
"items": {
|
|
470
|
+
"type": "string",
|
|
471
|
+
"minLength": 1
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
"directions": {
|
|
475
|
+
"type": "array",
|
|
476
|
+
"minItems": 2,
|
|
477
|
+
"maxItems": 2,
|
|
478
|
+
"description": "[thin, thick] direction of the pair, each with its import-edge population and sampled count.",
|
|
479
|
+
"items": {
|
|
480
|
+
"type": "object",
|
|
481
|
+
"additionalProperties": false,
|
|
482
|
+
"required": [
|
|
483
|
+
"fromNodeId",
|
|
484
|
+
"toNodeId",
|
|
485
|
+
"totalCount",
|
|
486
|
+
"sampledCount"
|
|
487
|
+
],
|
|
488
|
+
"properties": {
|
|
489
|
+
"fromNodeId": {
|
|
490
|
+
"type": "string",
|
|
491
|
+
"minLength": 1
|
|
492
|
+
},
|
|
493
|
+
"toNodeId": {
|
|
494
|
+
"type": "string",
|
|
495
|
+
"minLength": 1
|
|
496
|
+
},
|
|
497
|
+
"totalCount": {
|
|
498
|
+
"type": "integer",
|
|
499
|
+
"minimum": 1
|
|
500
|
+
},
|
|
501
|
+
"sampledCount": {
|
|
502
|
+
"type": "integer",
|
|
503
|
+
"minimum": 0
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
},
|
|
508
|
+
"edges": {
|
|
509
|
+
"type": "array",
|
|
510
|
+
"maxItems": 20,
|
|
511
|
+
"items": {
|
|
512
|
+
"$ref": "#/$defs/evidenceImportEdge"
|
|
513
|
+
}
|
|
514
|
+
},
|
|
515
|
+
"totalCount": {
|
|
516
|
+
"type": "integer",
|
|
517
|
+
"minimum": 0
|
|
518
|
+
},
|
|
519
|
+
"truncated": {
|
|
520
|
+
"type": "boolean"
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"type": "object",
|
|
526
|
+
"additionalProperties": false,
|
|
527
|
+
"required": [
|
|
528
|
+
"kind",
|
|
529
|
+
"memberNodeIds",
|
|
530
|
+
"edges",
|
|
531
|
+
"totalCount",
|
|
532
|
+
"truncated"
|
|
533
|
+
],
|
|
534
|
+
"properties": {
|
|
535
|
+
"kind": {
|
|
536
|
+
"const": "residual-cycle"
|
|
537
|
+
},
|
|
463
538
|
"memberNodeIds": {
|
|
464
539
|
"$ref": "#/$defs/evidenceIdList"
|
|
465
540
|
},
|
|
@@ -639,6 +714,16 @@
|
|
|
639
714
|
"null"
|
|
640
715
|
]
|
|
641
716
|
},
|
|
717
|
+
"memberNodeIds": {
|
|
718
|
+
"type": "array",
|
|
719
|
+
"minItems": 2,
|
|
720
|
+
"uniqueItems": true,
|
|
721
|
+
"items": {
|
|
722
|
+
"type": "string",
|
|
723
|
+
"minLength": 1
|
|
724
|
+
},
|
|
725
|
+
"description": "Present exactly for moduleDependencies.* metrics: the pair ends or the residual cycle members, sorted."
|
|
726
|
+
},
|
|
642
727
|
"operator": {
|
|
643
728
|
"enum": [
|
|
644
729
|
"absent",
|
|
@@ -930,6 +1015,7 @@
|
|
|
930
1015
|
"direction-violation",
|
|
931
1016
|
"evidence-gap",
|
|
932
1017
|
"ownership-ambiguous",
|
|
1018
|
+
"residual-cycle",
|
|
933
1019
|
"undeclared-footprint",
|
|
934
1020
|
"unowned-paths"
|
|
935
1021
|
]
|
|
@@ -1044,6 +1130,26 @@
|
|
|
1044
1130
|
}
|
|
1045
1131
|
}
|
|
1046
1132
|
},
|
|
1133
|
+
{
|
|
1134
|
+
"if": {
|
|
1135
|
+
"properties": {
|
|
1136
|
+
"kind": {
|
|
1137
|
+
"const": "residual-cycle"
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
},
|
|
1141
|
+
"then": {
|
|
1142
|
+
"properties": {
|
|
1143
|
+
"evidence": {
|
|
1144
|
+
"properties": {
|
|
1145
|
+
"kind": {
|
|
1146
|
+
"const": "residual-cycle"
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
},
|
|
1047
1153
|
{
|
|
1048
1154
|
"if": {
|
|
1049
1155
|
"properties": {
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
"findings": { "type": "array", "items": { "type": "object", "additionalProperties": true } },
|
|
42
|
+
"debt": { "$ref": "architecture-debt.schema.json" },
|
|
42
43
|
"practiceViolations": { "type": "array", "items": { "type": "object", "additionalProperties": true } },
|
|
43
44
|
"waiversApplied": { "type": "array", "items": { "type": "object", "additionalProperties": true } },
|
|
44
45
|
"actionsRequired": { "type": "array", "items": { "type": "string" } },
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"recommendationId",
|
|
10
10
|
"source",
|
|
11
11
|
"status",
|
|
12
|
+
"statusAuthority",
|
|
12
13
|
"recommendation",
|
|
13
14
|
"evidence",
|
|
14
15
|
"baseline",
|
|
@@ -27,7 +28,8 @@
|
|
|
27
28
|
"source": {
|
|
28
29
|
"enum": [
|
|
29
30
|
"ledger",
|
|
30
|
-
"scan-candidate"
|
|
31
|
+
"scan-candidate",
|
|
32
|
+
"git-decision"
|
|
31
33
|
]
|
|
32
34
|
},
|
|
33
35
|
"status": {
|
|
@@ -43,20 +45,40 @@
|
|
|
43
45
|
"expired"
|
|
44
46
|
]
|
|
45
47
|
},
|
|
48
|
+
"statusAuthority": {
|
|
49
|
+
"description": "Who states status (ADR-0046): git-decision (the checkout's decision file), ledger (a machine status), ledger-audit (a recorded human status with no Git file: history only, never the subject's current status), scan-candidate.",
|
|
50
|
+
"enum": [
|
|
51
|
+
"git-decision",
|
|
52
|
+
"ledger",
|
|
53
|
+
"ledger-audit",
|
|
54
|
+
"scan-candidate"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"gitDecision": {
|
|
58
|
+
"$ref": "https://archctx.repoharness.com/schemas/repo/refactor-decision.schema.json"
|
|
59
|
+
},
|
|
46
60
|
"recommendation": {
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
61
|
+
"description": "null exactly when source is git-decision: this worktree's ledger holds no record of the id.",
|
|
62
|
+
"anyOf": [
|
|
63
|
+
{
|
|
64
|
+
"type": "null"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"if": {
|
|
68
|
+
"properties": {
|
|
69
|
+
"schemaVersion": {
|
|
70
|
+
"const": "archcontext.recommendation/v3"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"then": {
|
|
75
|
+
"$ref": "#/$defs/recommendationV3"
|
|
76
|
+
},
|
|
77
|
+
"else": {
|
|
78
|
+
"$ref": "recommendation.schema.json"
|
|
51
79
|
}
|
|
52
80
|
}
|
|
53
|
-
|
|
54
|
-
"then": {
|
|
55
|
-
"$ref": "#/$defs/recommendationV3"
|
|
56
|
-
},
|
|
57
|
-
"else": {
|
|
58
|
-
"$ref": "recommendation.schema.json"
|
|
59
|
-
}
|
|
81
|
+
]
|
|
60
82
|
},
|
|
61
83
|
"evidence": {
|
|
62
84
|
"type": "object",
|
|
@@ -344,6 +366,7 @@
|
|
|
344
366
|
"required": [
|
|
345
367
|
"kind",
|
|
346
368
|
"memberNodeIds",
|
|
369
|
+
"directions",
|
|
347
370
|
"edges",
|
|
348
371
|
"totalCount",
|
|
349
372
|
"truncated"
|
|
@@ -352,6 +375,80 @@
|
|
|
352
375
|
"kind": {
|
|
353
376
|
"const": "cycle"
|
|
354
377
|
},
|
|
378
|
+
"memberNodeIds": {
|
|
379
|
+
"type": "array",
|
|
380
|
+
"minItems": 2,
|
|
381
|
+
"maxItems": 2,
|
|
382
|
+
"uniqueItems": true,
|
|
383
|
+
"items": {
|
|
384
|
+
"type": "string",
|
|
385
|
+
"minLength": 1
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
"directions": {
|
|
389
|
+
"type": "array",
|
|
390
|
+
"minItems": 2,
|
|
391
|
+
"maxItems": 2,
|
|
392
|
+
"description": "[thin, thick] direction of the pair, each with its import-edge population and sampled count.",
|
|
393
|
+
"items": {
|
|
394
|
+
"type": "object",
|
|
395
|
+
"additionalProperties": false,
|
|
396
|
+
"required": [
|
|
397
|
+
"fromNodeId",
|
|
398
|
+
"toNodeId",
|
|
399
|
+
"totalCount",
|
|
400
|
+
"sampledCount"
|
|
401
|
+
],
|
|
402
|
+
"properties": {
|
|
403
|
+
"fromNodeId": {
|
|
404
|
+
"type": "string",
|
|
405
|
+
"minLength": 1
|
|
406
|
+
},
|
|
407
|
+
"toNodeId": {
|
|
408
|
+
"type": "string",
|
|
409
|
+
"minLength": 1
|
|
410
|
+
},
|
|
411
|
+
"totalCount": {
|
|
412
|
+
"type": "integer",
|
|
413
|
+
"minimum": 1
|
|
414
|
+
},
|
|
415
|
+
"sampledCount": {
|
|
416
|
+
"type": "integer",
|
|
417
|
+
"minimum": 0
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
"edges": {
|
|
423
|
+
"type": "array",
|
|
424
|
+
"maxItems": 20,
|
|
425
|
+
"items": {
|
|
426
|
+
"$ref": "#/$defs/evidenceImportEdge"
|
|
427
|
+
}
|
|
428
|
+
},
|
|
429
|
+
"totalCount": {
|
|
430
|
+
"type": "integer",
|
|
431
|
+
"minimum": 0
|
|
432
|
+
},
|
|
433
|
+
"truncated": {
|
|
434
|
+
"type": "boolean"
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
"type": "object",
|
|
440
|
+
"additionalProperties": false,
|
|
441
|
+
"required": [
|
|
442
|
+
"kind",
|
|
443
|
+
"memberNodeIds",
|
|
444
|
+
"edges",
|
|
445
|
+
"totalCount",
|
|
446
|
+
"truncated"
|
|
447
|
+
],
|
|
448
|
+
"properties": {
|
|
449
|
+
"kind": {
|
|
450
|
+
"const": "residual-cycle"
|
|
451
|
+
},
|
|
355
452
|
"memberNodeIds": {
|
|
356
453
|
"$ref": "#/$defs/evidenceIdList"
|
|
357
454
|
},
|
|
@@ -531,6 +628,16 @@
|
|
|
531
628
|
"null"
|
|
532
629
|
]
|
|
533
630
|
},
|
|
631
|
+
"memberNodeIds": {
|
|
632
|
+
"type": "array",
|
|
633
|
+
"minItems": 2,
|
|
634
|
+
"uniqueItems": true,
|
|
635
|
+
"items": {
|
|
636
|
+
"type": "string",
|
|
637
|
+
"minLength": 1
|
|
638
|
+
},
|
|
639
|
+
"description": "Present exactly for moduleDependencies.* metrics: the pair ends or the residual cycle members, sorted."
|
|
640
|
+
},
|
|
534
641
|
"operator": {
|
|
535
642
|
"enum": [
|
|
536
643
|
"absent",
|
|
@@ -822,6 +929,7 @@
|
|
|
822
929
|
"direction-violation",
|
|
823
930
|
"evidence-gap",
|
|
824
931
|
"ownership-ambiguous",
|
|
932
|
+
"residual-cycle",
|
|
825
933
|
"undeclared-footprint",
|
|
826
934
|
"unowned-paths"
|
|
827
935
|
]
|
|
@@ -936,6 +1044,26 @@
|
|
|
936
1044
|
}
|
|
937
1045
|
}
|
|
938
1046
|
},
|
|
1047
|
+
{
|
|
1048
|
+
"if": {
|
|
1049
|
+
"properties": {
|
|
1050
|
+
"kind": {
|
|
1051
|
+
"const": "residual-cycle"
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
},
|
|
1055
|
+
"then": {
|
|
1056
|
+
"properties": {
|
|
1057
|
+
"evidence": {
|
|
1058
|
+
"properties": {
|
|
1059
|
+
"kind": {
|
|
1060
|
+
"const": "residual-cycle"
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
},
|
|
939
1067
|
{
|
|
940
1068
|
"if": {
|
|
941
1069
|
"properties": {
|
|
@@ -1674,6 +1802,7 @@
|
|
|
1674
1802
|
"modelDigest",
|
|
1675
1803
|
"codeFacts",
|
|
1676
1804
|
"modules",
|
|
1805
|
+
"moduleDependencies",
|
|
1677
1806
|
"repositorySummary",
|
|
1678
1807
|
"createdAt",
|
|
1679
1808
|
"snapshotDigest"
|
|
@@ -1775,6 +1904,33 @@
|
|
|
1775
1904
|
"$ref": "#/$defs/moduleStatistics"
|
|
1776
1905
|
}
|
|
1777
1906
|
},
|
|
1907
|
+
"moduleDependencies": {
|
|
1908
|
+
"type": "array",
|
|
1909
|
+
"description": "Ordered cross-module dependency table, sorted by (fromNodeId, toNodeId).",
|
|
1910
|
+
"items": {
|
|
1911
|
+
"type": "object",
|
|
1912
|
+
"additionalProperties": false,
|
|
1913
|
+
"required": [
|
|
1914
|
+
"fromNodeId",
|
|
1915
|
+
"toNodeId",
|
|
1916
|
+
"distinctFileEdgeCount"
|
|
1917
|
+
],
|
|
1918
|
+
"properties": {
|
|
1919
|
+
"fromNodeId": {
|
|
1920
|
+
"type": "string",
|
|
1921
|
+
"minLength": 1
|
|
1922
|
+
},
|
|
1923
|
+
"toNodeId": {
|
|
1924
|
+
"type": "string",
|
|
1925
|
+
"minLength": 1
|
|
1926
|
+
},
|
|
1927
|
+
"distinctFileEdgeCount": {
|
|
1928
|
+
"type": "integer",
|
|
1929
|
+
"minimum": 1
|
|
1930
|
+
}
|
|
1931
|
+
}
|
|
1932
|
+
}
|
|
1933
|
+
},
|
|
1778
1934
|
"repositorySummary": {
|
|
1779
1935
|
"type": "object",
|
|
1780
1936
|
"additionalProperties": false,
|
|
@@ -2050,6 +2206,7 @@
|
|
|
2050
2206
|
"required": [
|
|
2051
2207
|
"kind",
|
|
2052
2208
|
"subjectSelectorId",
|
|
2209
|
+
"affectedNodeIds",
|
|
2053
2210
|
"signalIds",
|
|
2054
2211
|
"metrics",
|
|
2055
2212
|
"evidence"
|
|
@@ -2061,6 +2218,7 @@
|
|
|
2061
2218
|
"direction-violation",
|
|
2062
2219
|
"evidence-gap",
|
|
2063
2220
|
"ownership-ambiguous",
|
|
2221
|
+
"residual-cycle",
|
|
2064
2222
|
"undeclared-footprint",
|
|
2065
2223
|
"unowned-paths"
|
|
2066
2224
|
]
|
|
@@ -2070,6 +2228,15 @@
|
|
|
2070
2228
|
"minLength": 1,
|
|
2071
2229
|
"pattern": "\\S"
|
|
2072
2230
|
},
|
|
2231
|
+
"affectedNodeIds": {
|
|
2232
|
+
"type": "array",
|
|
2233
|
+
"uniqueItems": true,
|
|
2234
|
+
"items": {
|
|
2235
|
+
"type": "string",
|
|
2236
|
+
"minLength": 1
|
|
2237
|
+
},
|
|
2238
|
+
"description": "Declared nodes the observation is about, sorted and unique; [] for a repository-wide fact."
|
|
2239
|
+
},
|
|
2073
2240
|
"signalIds": {
|
|
2074
2241
|
"type": "array",
|
|
2075
2242
|
"uniqueItems": true,
|
|
@@ -2165,6 +2332,26 @@
|
|
|
2165
2332
|
}
|
|
2166
2333
|
}
|
|
2167
2334
|
},
|
|
2335
|
+
{
|
|
2336
|
+
"if": {
|
|
2337
|
+
"properties": {
|
|
2338
|
+
"kind": {
|
|
2339
|
+
"const": "residual-cycle"
|
|
2340
|
+
}
|
|
2341
|
+
}
|
|
2342
|
+
},
|
|
2343
|
+
"then": {
|
|
2344
|
+
"properties": {
|
|
2345
|
+
"evidence": {
|
|
2346
|
+
"properties": {
|
|
2347
|
+
"kind": {
|
|
2348
|
+
"const": "residual-cycle"
|
|
2349
|
+
}
|
|
2350
|
+
}
|
|
2351
|
+
}
|
|
2352
|
+
}
|
|
2353
|
+
}
|
|
2354
|
+
},
|
|
2168
2355
|
{
|
|
2169
2356
|
"if": {
|
|
2170
2357
|
"properties": {
|
|
@@ -2459,5 +2646,39 @@
|
|
|
2459
2646
|
}
|
|
2460
2647
|
}
|
|
2461
2648
|
}
|
|
2462
|
-
}
|
|
2649
|
+
},
|
|
2650
|
+
"allOf": [
|
|
2651
|
+
{
|
|
2652
|
+
"if": {
|
|
2653
|
+
"properties": {
|
|
2654
|
+
"source": {
|
|
2655
|
+
"const": "git-decision"
|
|
2656
|
+
}
|
|
2657
|
+
},
|
|
2658
|
+
"required": [
|
|
2659
|
+
"source"
|
|
2660
|
+
]
|
|
2661
|
+
},
|
|
2662
|
+
"then": {
|
|
2663
|
+
"required": [
|
|
2664
|
+
"gitDecision"
|
|
2665
|
+
],
|
|
2666
|
+
"properties": {
|
|
2667
|
+
"recommendation": {
|
|
2668
|
+
"type": "null"
|
|
2669
|
+
},
|
|
2670
|
+
"statusAuthority": {
|
|
2671
|
+
"const": "git-decision"
|
|
2672
|
+
}
|
|
2673
|
+
}
|
|
2674
|
+
},
|
|
2675
|
+
"else": {
|
|
2676
|
+
"properties": {
|
|
2677
|
+
"recommendation": {
|
|
2678
|
+
"type": "object"
|
|
2679
|
+
}
|
|
2680
|
+
}
|
|
2681
|
+
}
|
|
2682
|
+
}
|
|
2683
|
+
]
|
|
2463
2684
|
}
|