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.
@@ -24,6 +24,7 @@
24
24
  "nextSnapshot"
25
25
  ],
26
26
  "properties": {
27
+ "debt": { "$ref": "architecture-debt.schema.json" },
27
28
  "schemaVersion": { "const": "archcontext.practice-checkpoint/v1" },
28
29
  "taskSessionId": { "type": "string", "minLength": 1 },
29
30
  "event": { "enum": ["manual", "post-edit", "post-write", "pre-complete"] },
@@ -39,7 +39,7 @@
39
39
  "packageName": { "type": "string", "minLength": 1 },
40
40
  "version": { "$ref": "#/$defs/semver" },
41
41
  "entrypoint": { "type": "string", "minLength": 1 },
42
- "rpcSchemaVersion": { "const": "archcontext.runtime-rpc/v1" }
42
+ "rpcSchemaVersion": { "const": "archcontext.runtime-rpc/v2" }
43
43
  }
44
44
  },
45
45
  "mcp": {
@@ -78,7 +78,7 @@
78
78
  "additionalProperties": false,
79
79
  "required": ["schemaVersion", "protocol"],
80
80
  "properties": {
81
- "schemaVersion": { "const": "archcontext.runtime-rpc/v1" },
81
+ "schemaVersion": { "const": "archcontext.runtime-rpc/v2" },
82
82
  "protocol": { "enum": ["http-loopback"] }
83
83
  }
84
84
  },
@@ -76,7 +76,7 @@
76
76
  "$ref": "#/$defs/digest"
77
77
  },
78
78
  "rendererVersion": {
79
- "const": "archcontext.docs-renderer/v5"
79
+ "const": "archcontext.docs-renderer/v6"
80
80
  },
81
81
  "layoutVersion": {
82
82
  "const": "archcontext.docs-layout/v1"
@@ -94,7 +94,7 @@
94
94
  "const": "@colbymchenry/codegraph"
95
95
  },
96
96
  "codeGraphVersion": {
97
- "const": "1.6.1"
97
+ "const": "1.6.2"
98
98
  },
99
99
  "codeGraphStatus": {
100
100
  "enum": [
@@ -819,6 +819,312 @@
819
819
  ]
820
820
  }
821
821
  },
822
+ "targetChange": {
823
+ "type": "object",
824
+ "additionalProperties": false,
825
+ "description": "How one target changes since the committed projection and what this run's write does to its file (#327). null is an unknown comparison. classification follows blocked > proof-change (a known proof change) > baseline-missing > semantic-change > output-change > stamp-only > unchanged.",
826
+ "required": [
827
+ "targetId",
828
+ "path",
829
+ "affectedCapabilityIds",
830
+ "stampChanged",
831
+ "outputChanged",
832
+ "semanticChanged",
833
+ "proofChanged",
834
+ "plannedAction",
835
+ "classification",
836
+ "reasonCodes"
837
+ ],
838
+ "properties": {
839
+ "targetId": {
840
+ "type": "string",
841
+ "minLength": 1
842
+ },
843
+ "path": {
844
+ "type": "string",
845
+ "minLength": 1,
846
+ "not": {
847
+ "anyOf": [
848
+ {
849
+ "pattern": "^/"
850
+ },
851
+ {
852
+ "pattern": "\\\\"
853
+ },
854
+ {
855
+ "pattern": "(^|/)\\.\\.(/|$)"
856
+ }
857
+ ]
858
+ }
859
+ },
860
+ "affectedCapabilityIds": {
861
+ "type": "array",
862
+ "uniqueItems": true,
863
+ "items": {
864
+ "type": "string",
865
+ "minLength": 1
866
+ }
867
+ },
868
+ "stampChanged": {
869
+ "type": [
870
+ "boolean",
871
+ "null"
872
+ ]
873
+ },
874
+ "outputChanged": {
875
+ "type": "boolean"
876
+ },
877
+ "semanticChanged": {
878
+ "type": [
879
+ "boolean",
880
+ "null"
881
+ ]
882
+ },
883
+ "proofChanged": {
884
+ "type": [
885
+ "boolean",
886
+ "null"
887
+ ]
888
+ },
889
+ "plannedAction": {
890
+ "enum": [
891
+ "create",
892
+ "delete",
893
+ "none",
894
+ "update"
895
+ ]
896
+ },
897
+ "classification": {
898
+ "enum": [
899
+ "baseline-missing",
900
+ "blocked",
901
+ "output-change",
902
+ "proof-change",
903
+ "semantic-change",
904
+ "stamp-only",
905
+ "unchanged"
906
+ ]
907
+ },
908
+ "reasonCodes": {
909
+ "type": "array",
910
+ "uniqueItems": true,
911
+ "items": {
912
+ "enum": [
913
+ "adoption-required",
914
+ "ambiguous-ownership",
915
+ "baseline-missing",
916
+ "file-bytes-changed",
917
+ "flow-proof-changed",
918
+ "model-digest-changed",
919
+ "orphan-review-required",
920
+ "rendered-output-changed",
921
+ "selector-evidence-changed",
922
+ "semantic-fingerprint-changed",
923
+ "source-stamp-changed",
924
+ "target-added",
925
+ "target-removed",
926
+ "target-row-missing",
927
+ "unprovable-required-flow",
928
+ "verified-flow-proof-changed"
929
+ ]
930
+ }
931
+ }
932
+ },
933
+ "allOf": [
934
+ {
935
+ "if": {
936
+ "properties": {
937
+ "classification": {
938
+ "const": "blocked"
939
+ }
940
+ },
941
+ "required": [
942
+ "classification"
943
+ ]
944
+ },
945
+ "then": {
946
+ "properties": {
947
+ "plannedAction": {
948
+ "const": "none"
949
+ }
950
+ }
951
+ }
952
+ },
953
+ {
954
+ "if": {
955
+ "properties": {
956
+ "classification": {
957
+ "enum": [
958
+ "stamp-only",
959
+ "unchanged"
960
+ ]
961
+ }
962
+ },
963
+ "required": [
964
+ "classification"
965
+ ]
966
+ },
967
+ "then": {
968
+ "properties": {
969
+ "plannedAction": {
970
+ "const": "none"
971
+ },
972
+ "outputChanged": {
973
+ "const": false
974
+ },
975
+ "stampChanged": {
976
+ "type": "boolean"
977
+ },
978
+ "semanticChanged": {
979
+ "const": false
980
+ },
981
+ "proofChanged": {
982
+ "const": false
983
+ }
984
+ }
985
+ }
986
+ },
987
+ {
988
+ "if": {
989
+ "properties": {
990
+ "classification": {
991
+ "const": "unchanged"
992
+ }
993
+ },
994
+ "required": [
995
+ "classification"
996
+ ]
997
+ },
998
+ "then": {
999
+ "properties": {
1000
+ "reasonCodes": {
1001
+ "maxItems": 0
1002
+ },
1003
+ "affectedCapabilityIds": {
1004
+ "maxItems": 0
1005
+ }
1006
+ }
1007
+ },
1008
+ "else": {
1009
+ "properties": {
1010
+ "reasonCodes": {
1011
+ "minItems": 1
1012
+ }
1013
+ }
1014
+ }
1015
+ }
1016
+ ]
1017
+ },
1018
+ "architectureDebt": {
1019
+ "type": "object",
1020
+ "additionalProperties": false,
1021
+ "description": "Present on every check and plan result and on no other. Never changes status. Canonical wire orders and the coverage/coverageReasonCodes coupling are enforced by projectionArchitectureDebtIssues.",
1022
+ "required": [
1023
+ "coverage",
1024
+ "coverageReasonCodes",
1025
+ "items"
1026
+ ],
1027
+ "properties": {
1028
+ "coverage": {
1029
+ "enum": [
1030
+ "complete",
1031
+ "partial",
1032
+ "unknown"
1033
+ ]
1034
+ },
1035
+ "coverageReasonCodes": {
1036
+ "type": "array",
1037
+ "uniqueItems": true,
1038
+ "items": {
1039
+ "enum": [
1040
+ "code-facts-import-limit",
1041
+ "code-facts-truncated",
1042
+ "code-facts-unavailable",
1043
+ "workspace-resolution-failed"
1044
+ ]
1045
+ }
1046
+ },
1047
+ "items": {
1048
+ "type": "array",
1049
+ "items": {
1050
+ "type": "object",
1051
+ "additionalProperties": false,
1052
+ "required": [
1053
+ "reasonCode",
1054
+ "fromCapabilityId",
1055
+ "toCapabilityId",
1056
+ "importEdgeCount"
1057
+ ],
1058
+ "properties": {
1059
+ "reasonCode": {
1060
+ "enum": [
1061
+ "undeclared-dependency"
1062
+ ]
1063
+ },
1064
+ "fromCapabilityId": {
1065
+ "type": "string",
1066
+ "minLength": 1
1067
+ },
1068
+ "toCapabilityId": {
1069
+ "type": "string",
1070
+ "minLength": 1
1071
+ },
1072
+ "importEdgeCount": {
1073
+ "type": "integer",
1074
+ "minimum": 1
1075
+ }
1076
+ }
1077
+ }
1078
+ }
1079
+ },
1080
+ "allOf": [
1081
+ {
1082
+ "if": {
1083
+ "properties": {
1084
+ "coverage": {
1085
+ "const": "complete"
1086
+ }
1087
+ },
1088
+ "required": [
1089
+ "coverage"
1090
+ ]
1091
+ },
1092
+ "then": {
1093
+ "properties": {
1094
+ "coverageReasonCodes": {
1095
+ "maxItems": 0
1096
+ }
1097
+ }
1098
+ },
1099
+ "else": {
1100
+ "properties": {
1101
+ "coverageReasonCodes": {
1102
+ "minItems": 1
1103
+ }
1104
+ }
1105
+ }
1106
+ },
1107
+ {
1108
+ "if": {
1109
+ "properties": {
1110
+ "coverage": {
1111
+ "const": "unknown"
1112
+ }
1113
+ },
1114
+ "required": [
1115
+ "coverage"
1116
+ ]
1117
+ },
1118
+ "then": {
1119
+ "properties": {
1120
+ "items": {
1121
+ "maxItems": 0
1122
+ }
1123
+ }
1124
+ }
1125
+ }
1126
+ ]
1127
+ },
822
1128
  "freshness": {
823
1129
  "type": "object",
824
1130
  "additionalProperties": false,
@@ -839,9 +1145,7 @@
839
1145
  "enum": [
840
1146
  "projection-manifest-missing",
841
1147
  "projection-manifest-unreadable",
842
- "projection-snapshot-provenance-missing",
843
1148
  "projection-source-changed-since-stamp",
844
- "projection-source-stamp-invalid",
845
1149
  "projection-source-stamp-missing",
846
1150
  "projection-source-tree-digest-mismatch"
847
1151
  ]
@@ -962,12 +1266,14 @@
962
1266
  "enum": [
963
1267
  "adoption-required",
964
1268
  "applied",
1269
+ "applied-partial",
965
1270
  "applied-reconcile-required",
966
1271
  "blocked",
967
1272
  "human-action-required",
968
1273
  "noop",
969
1274
  "permanent-failure",
970
1275
  "planned",
1276
+ "planned-partial",
971
1277
  "retryable-failure"
972
1278
  ]
973
1279
  },
@@ -1020,14 +1326,31 @@
1020
1326
  "freshness": {
1021
1327
  "$ref": "#/$defs/freshness"
1022
1328
  },
1329
+ "architectureDebt": {
1330
+ "$ref": "#/$defs/architectureDebt"
1331
+ },
1332
+ "changes": {
1333
+ "type": "array",
1334
+ "description": "Present on every check and plan result and on no other. One entry per target path, the projection manifest excluded. Canonical wire order is by path; the precedence derivation of classification, the reason-code couplings and the binding of plannedAction to files[] and of blocked targets to coverage are enforced by projectionTargetChangesIssues and projectionResultInvariantIssues.",
1335
+ "items": {
1336
+ "$ref": "#/$defs/targetChange"
1337
+ }
1338
+ },
1023
1339
  "replayed": {
1024
1340
  "const": true,
1025
1341
  "description": "A repeated apply for the same requestId and request digest returned the committed result without applying again. Excluded from receiptDigest."
1026
1342
  },
1343
+ "written": {
1344
+ "type": "boolean",
1345
+ "description": "Present exactly when replayed is. false: the replay wrote nothing. true: the projection-owned outputs differed from the approved result at the approved snapshot and the replay wrote the committed fixed point again under the original receipt. Excluded from receiptDigest."
1346
+ },
1027
1347
  "majorChangeAcceptance": {
1028
1348
  "const": "declined-unprovable-proof",
1029
1349
  "description": "Present only when the request sent acceptObservedMajorChange and the provider declined it because a capability proof is unprovable; humanActions then carries unprovable-required-flow instead of unresolved-major-change."
1030
1350
  },
1351
+ "coverage": {
1352
+ "$ref": "#/$defs/coverage"
1353
+ },
1031
1354
  "receiptDigest": {
1032
1355
  "$ref": "#/$defs/digest"
1033
1356
  }
@@ -1122,6 +1445,43 @@
1122
1445
  }
1123
1446
  }
1124
1447
  },
1448
+ {
1449
+ "if": {
1450
+ "properties": {
1451
+ "status": {
1452
+ "enum": [
1453
+ "applied-partial",
1454
+ "planned-partial"
1455
+ ]
1456
+ }
1457
+ },
1458
+ "required": [
1459
+ "status"
1460
+ ]
1461
+ },
1462
+ "then": {
1463
+ "required": [
1464
+ "coverage"
1465
+ ],
1466
+ "not": {
1467
+ "required": [
1468
+ "applyReceipt"
1469
+ ]
1470
+ },
1471
+ "properties": {
1472
+ "refreshSignals": {
1473
+ "maxItems": 0
1474
+ }
1475
+ }
1476
+ },
1477
+ "else": {
1478
+ "not": {
1479
+ "required": [
1480
+ "coverage"
1481
+ ]
1482
+ }
1483
+ }
1484
+ },
1125
1485
  {
1126
1486
  "if": {
1127
1487
  "required": [
@@ -1130,7 +1490,8 @@
1130
1490
  },
1131
1491
  "then": {
1132
1492
  "required": [
1133
- "applyReceipt"
1493
+ "applyReceipt",
1494
+ "written"
1134
1495
  ],
1135
1496
  "properties": {
1136
1497
  "status": {
@@ -1141,6 +1502,18 @@
1141
1502
  }
1142
1503
  }
1143
1504
  }
1505
+ },
1506
+ {
1507
+ "if": {
1508
+ "required": [
1509
+ "written"
1510
+ ]
1511
+ },
1512
+ "then": {
1513
+ "required": [
1514
+ "replayed"
1515
+ ]
1516
+ }
1144
1517
  }
1145
1518
  ]
1146
1519
  },
@@ -1234,7 +1607,7 @@
1234
1607
  "$ref": "#/$defs/digestSet"
1235
1608
  },
1236
1609
  "rendererVersion": {
1237
- "const": "archcontext.docs-renderer/v5"
1610
+ "const": "archcontext.docs-renderer/v6"
1238
1611
  },
1239
1612
  "layoutVersion": {
1240
1613
  "const": "archcontext.docs-layout/v1"
@@ -1252,7 +1625,7 @@
1252
1625
  "const": "@colbymchenry/codegraph"
1253
1626
  },
1254
1627
  "codeGraphVersion": {
1255
- "const": "1.6.1"
1628
+ "const": "1.6.2"
1256
1629
  },
1257
1630
  "codeGraphStatus": {
1258
1631
  "enum": [
@@ -1400,6 +1773,96 @@
1400
1773
  "$ref": "#/$defs/digest"
1401
1774
  }
1402
1775
  }
1776
+ },
1777
+ "coverage": {
1778
+ "type": "object",
1779
+ "additionalProperties": false,
1780
+ "description": "Present exactly on planned-partial and applied-partial results; a result that covers every target omits it. Canonical wire orders, the capability bindings and the exclusion of carried-forward paths from files are enforced by projectionCoverageIssues.",
1781
+ "required": [
1782
+ "complete",
1783
+ "blockedCapabilityIds",
1784
+ "blockedTargets",
1785
+ "appliedTargetIds"
1786
+ ],
1787
+ "properties": {
1788
+ "complete": {
1789
+ "const": false
1790
+ },
1791
+ "blockedCapabilityIds": {
1792
+ "type": "array",
1793
+ "minItems": 1,
1794
+ "uniqueItems": true,
1795
+ "items": {
1796
+ "type": "string",
1797
+ "minLength": 1
1798
+ }
1799
+ },
1800
+ "blockedTargets": {
1801
+ "type": "array",
1802
+ "minItems": 1,
1803
+ "items": {
1804
+ "type": "object",
1805
+ "additionalProperties": false,
1806
+ "required": [
1807
+ "targetId",
1808
+ "path",
1809
+ "capabilityIds",
1810
+ "reasonCodes"
1811
+ ],
1812
+ "properties": {
1813
+ "targetId": {
1814
+ "type": "string",
1815
+ "minLength": 1
1816
+ },
1817
+ "path": {
1818
+ "type": "string",
1819
+ "minLength": 1,
1820
+ "not": {
1821
+ "anyOf": [
1822
+ {
1823
+ "pattern": "^/"
1824
+ },
1825
+ {
1826
+ "pattern": "\\\\"
1827
+ },
1828
+ {
1829
+ "pattern": "(^|/)\\.\\.(/|$)"
1830
+ }
1831
+ ]
1832
+ }
1833
+ },
1834
+ "capabilityIds": {
1835
+ "type": "array",
1836
+ "minItems": 1,
1837
+ "uniqueItems": true,
1838
+ "items": {
1839
+ "type": "string",
1840
+ "minLength": 1
1841
+ }
1842
+ },
1843
+ "reasonCodes": {
1844
+ "type": "array",
1845
+ "minItems": 1,
1846
+ "uniqueItems": true,
1847
+ "items": {
1848
+ "enum": [
1849
+ "unprovable-required-flow",
1850
+ "verified-flow-proof-changed"
1851
+ ]
1852
+ }
1853
+ }
1854
+ }
1855
+ }
1856
+ },
1857
+ "appliedTargetIds": {
1858
+ "type": "array",
1859
+ "uniqueItems": true,
1860
+ "items": {
1861
+ "type": "string",
1862
+ "minLength": 1
1863
+ }
1864
+ }
1865
+ }
1403
1866
  }
1404
1867
  }
1405
1868
  }
@@ -41,7 +41,7 @@
41
41
  "required": ["codeGraphPackage", "codeGraphVersion", "codeGraphStatus"],
42
42
  "properties": {
43
43
  "codeGraphPackage": { "const": "@colbymchenry/codegraph" },
44
- "codeGraphVersion": { "const": "1.6.1" },
44
+ "codeGraphVersion": { "const": "1.6.2" },
45
45
  "codeGraphStatus": { "enum": ["ready", "unavailable"] }
46
46
  }
47
47
  },
@@ -132,7 +132,7 @@
132
132
  "codeGraphDigest": { "$ref": "#/$defs/digest" },
133
133
  "indexedWorktreeDigest": { "type": ["string", "null"], "pattern": "^sha256:[a-f0-9]{64}$" },
134
134
  "projectionInputDigest": { "$ref": "#/$defs/digest" },
135
- "rendererVersion": { "const": "archcontext.docs-renderer/v5" },
135
+ "rendererVersion": { "const": "archcontext.docs-renderer/v6" },
136
136
  "layoutVersion": { "const": "archcontext.docs-layout/v1" },
137
137
  "generatedFrom": { "$ref": "#/$defs/readyGeneratedFrom" }
138
138
  }