archctx-contracts 0.7.1 → 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/fixtures/invalid/hook-debt-checkpoint-failed-read.json +54 -0
- package/fixtures/invalid/native-context-invalid-model-summary.json +635 -0
- package/fixtures/invalid/native-context-missing-contract-bytes.json +636 -0
- package/fixtures/invalid/native-context-missing-input-bytes.json +636 -0
- package/fixtures/invalid/native-context-mixed-snapshot.json +637 -0
- package/fixtures/invalid/projection-result-applied-incomplete-coverage.json +78 -0
- package/fixtures/invalid/refactor-decision-open-status.json +38 -0
- package/fixtures/valid/archctx-capabilities.json +3 -3
- package/fixtures/valid/capability-dependencies.json +1 -1
- package/fixtures/valid/docs-anchors.json +2 -1
- package/fixtures/valid/flow-selector-check.json +1 -1
- package/fixtures/valid/hook-debt-checkpoint.json +54 -0
- package/fixtures/valid/native-context-export.json +636 -0
- package/fixtures/valid/product-version-manifest.json +8 -8
- package/fixtures/valid/projection-manifest.json +47 -169
- package/fixtures/valid/projection-result.json +5 -5
- package/fixtures/valid/refactor-decision.json +38 -0
- package/fixtures/valid/runtime-recommendation-show.json +1 -0
- package/fixtures/valid/runtime-refactor-scan.json +6 -0
- package/package.json +1 -1
- 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
- package/src/architecture-debt.ts +115 -0
- package/src/changeset-recovery.ts +49 -0
- package/src/docs-anchors.ts +2 -1
- package/src/failure.ts +776 -0
- package/src/index.ts +6 -0
- package/src/ledger.ts +14 -3
- package/src/native-context.ts +277 -0
- package/src/ownership-dependencies.ts +39 -1
- package/src/practices.ts +2 -0
- package/src/product-version.ts +37 -4
- package/src/projection-manifest.ts +372 -130
- package/src/projection-recovery.ts +111 -0
- package/src/projection.ts +443 -11
- package/src/refactor.ts +525 -2
- package/src/schema.ts +6 -0
- package/src/validator.ts +8 -3
|
@@ -1,175 +1,53 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schemaVersion": "archcontext.architecture-docs-projection-manifest/
|
|
3
|
-
"rendererVersion": "archcontext.docs-renderer/
|
|
2
|
+
"schemaVersion": "archcontext.architecture-docs-projection-manifest/v3",
|
|
3
|
+
"rendererVersion": "archcontext.docs-renderer/v6",
|
|
4
4
|
"profile": "repo-harness/v1",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"schemaVersion": "archcontext.architecture-docs-projection-provenance/v3",
|
|
8
|
-
"sourceTreeDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
|
9
|
-
"modelDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
10
|
-
"rendererVersion": "archcontext.docs-renderer/v5",
|
|
11
|
-
"layoutVersion": "archcontext.docs-layout/v1",
|
|
12
|
-
"generatedFrom": {
|
|
13
|
-
"codeGraphPackage": "@colbymchenry/codegraph",
|
|
14
|
-
"codeGraphVersion": "1.6.1"
|
|
15
|
-
},
|
|
16
|
-
"projectionInputDigest": "sha256:16f337f3a1e0eac82b565ca1a0dc04629af1df60d7e2b9ad9b767c21ae581d4c"
|
|
17
|
-
},
|
|
18
|
-
"projectionDigest": "sha256:336562d0f1772c32f64a5fe7ee62d49fb17ac6ef7c9d820385c05e538ed1e5d1",
|
|
5
|
+
"layoutVersion": "archcontext.docs-layout/v1",
|
|
6
|
+
"generatedFrom": {"codeGraphPackage":"@colbymchenry/codegraph","codeGraphVersion":"1.6.2"},
|
|
19
7
|
"semanticBaseline": {
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"riskBoundaries": "sha256:6457da469f290fa149c5eccbbc6347d7604fee7c59f5b231d10493e7722a57fe"
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
],
|
|
48
|
-
"semanticFingerprint": "sha256:e5a66426ccb094ed525d4640727fa051f56cf447ade1a30c3d4034956fe376ab",
|
|
49
|
-
"flowProofFingerprint": "sha256:e435532a8614ec60bcae46f17b28e81bc847e4429d26fad19070264eca5dce3e"
|
|
50
|
-
},
|
|
51
|
-
"digests": {
|
|
52
|
-
"modelDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
53
|
-
"sourceTreeDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
|
54
|
-
"flowProofDigest": "sha256:e435532a8614ec60bcae46f17b28e81bc847e4429d26fad19070264eca5dce3e",
|
|
55
|
-
"projectionDigest": "sha256:336562d0f1772c32f64a5fe7ee62d49fb17ac6ef7c9d820385c05e538ed1e5d1"
|
|
56
|
-
},
|
|
57
|
-
"evidence": {
|
|
58
|
-
"sourceTreeDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
|
59
|
-
"selectorEvidenceDigest": "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
|
60
|
-
"rendererVersion": "archcontext.docs-renderer/v5"
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
"receiptDigest": "sha256:9f11bf3efe26f8ba7654d036e39316176e8d78b3270b886760e526a83b617e58",
|
|
64
|
-
"targetCount": 7,
|
|
65
|
-
"fileCount": 7,
|
|
66
|
-
"targets": [
|
|
67
|
-
{
|
|
68
|
-
"targetId": "projection_target.architecture.index",
|
|
69
|
-
"type": "architecture-index",
|
|
70
|
-
"scope": {
|
|
71
|
-
"kind": "repository"
|
|
72
|
-
},
|
|
73
|
-
"path": "docs/architecture/index.md",
|
|
74
|
-
"ownership": "mixed",
|
|
75
|
-
"rendererVersion": "archcontext.docs-renderer/v5",
|
|
76
|
-
"format": "markdown",
|
|
77
|
-
"sourceDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
|
78
|
-
"outputDigest": "sha256:64f1a29733be5033316aa99f657bfeb543df2fca99a2ba8b4103be22d46eeb57"
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
"targetId": "projection_target.entity.capability-example-billing",
|
|
82
|
-
"type": "entity-summary",
|
|
83
|
-
"scope": {
|
|
84
|
-
"kind": "entity",
|
|
85
|
-
"id": "capability.example.billing",
|
|
86
|
-
"entityKind": "capability"
|
|
87
|
-
},
|
|
88
|
-
"path": "docs/architecture/modules/example/billing.md",
|
|
89
|
-
"ownership": "mixed",
|
|
90
|
-
"rendererVersion": "archcontext.docs-renderer/v5",
|
|
91
|
-
"format": "markdown",
|
|
92
|
-
"sourceDigest": "sha256:b817894a048392bcfd08bcf0cb2db65be60c93b52adeba3c3858aab88fff2e55",
|
|
93
|
-
"outputDigest": "sha256:2963da98797bba21c3e87b86e60dca3b7c19f75a592723e4c98e0f41b2eb8f58",
|
|
94
|
-
"sourceFootprintDigest": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
|
95
|
-
"scale": {
|
|
96
|
-
"fileCountBucket": {
|
|
97
|
-
"lower": 10,
|
|
98
|
-
"upper": 20
|
|
8
|
+
"modelDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
9
|
+
"capabilities": [
|
|
10
|
+
{
|
|
11
|
+
"capabilityId": "capability.example.billing",
|
|
12
|
+
"memberNodeIds": [
|
|
13
|
+
"capability.example.billing"
|
|
14
|
+
],
|
|
15
|
+
"semanticFingerprint": "sha256:a6357941efd4f3307106c1650eca068e30db5d704e83a90ff238a1cda3c39471",
|
|
16
|
+
"flowProofFingerprint": "sha256:066fed47f724c54dca2e7c9d01c79bc05362004b1c49edb593bf80cd239e66f8",
|
|
17
|
+
"proofStatus": {
|
|
18
|
+
"p1": "unprovable",
|
|
19
|
+
"p2": "not-applicable"
|
|
20
|
+
},
|
|
21
|
+
"facets": {
|
|
22
|
+
"constraints": "sha256:d1c61fe896c27d26f03ec0c3d4ee584954bedee94abc988f5cc2ba12fa9aa246",
|
|
23
|
+
"entrypoints": "sha256:040e1e188d64957a0fbf33d790c062bb4b63ceae21e8d054720d2ef3c974ebca",
|
|
24
|
+
"interfaces": "sha256:78dd8a6e8eb5a106964ebdd464b873b6ed58f857c3d816a0b595106addac12b2",
|
|
25
|
+
"lifecycle": "sha256:45e0f02c02e3b6b1b9a7d4b30e9acb7aac52e68ca7fea468377cfa6e7ed1236f",
|
|
26
|
+
"names": "sha256:1e91c01c88f9156cc043971b089aa573d1ab0873a4ea73fbe12728775142f9b7",
|
|
27
|
+
"ownership": "sha256:a00ea5710e08406444452ccf3bce97d054e2c2d6595d0f560e98b32b04500c01",
|
|
28
|
+
"placement": "sha256:b5f9e3fd0ce231d6b4b05bd918c93043cc15d7f3b592b12b84972904e0f1b74d",
|
|
29
|
+
"relations": "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
|
30
|
+
"responsibilities": "sha256:310fb2a928123d4df66bd32884e7eba3a854be1928f8d7c73e99fef59a5fb91a",
|
|
31
|
+
"riskBoundaries": "sha256:6457da469f290fa149c5eccbbc6347d7604fee7c59f5b231d10493e7722a57fe"
|
|
99
32
|
},
|
|
100
|
-
"
|
|
101
|
-
"lower": 500,
|
|
102
|
-
"upper": 1000
|
|
103
|
-
}
|
|
33
|
+
"selectorEvidenceDigest": "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
|
|
104
34
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
"scope":
|
|
110
|
-
|
|
111
|
-
},
|
|
112
|
-
|
|
113
|
-
"ownership":
|
|
114
|
-
|
|
115
|
-
"format":
|
|
116
|
-
|
|
117
|
-
"outputDigest":
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
"type":
|
|
122
|
-
|
|
123
|
-
"kind": "changelog"
|
|
124
|
-
},
|
|
125
|
-
"path": "docs/architecture/changelog.md",
|
|
126
|
-
"ownership": "mixed",
|
|
127
|
-
"rendererVersion": "archcontext.docs-renderer/v5",
|
|
128
|
-
"format": "markdown",
|
|
129
|
-
"sourceDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
|
130
|
-
"outputDigest": "sha256:1f723aeb74466aae7d607eeab8c438a830c36f49a48e6622f868a8151afabea6"
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
"targetId": "projection_target.diagram.mermaid",
|
|
134
|
-
"type": "diagram-mermaid",
|
|
135
|
-
"scope": {
|
|
136
|
-
"kind": "diagram",
|
|
137
|
-
"id": "architecture"
|
|
138
|
-
},
|
|
139
|
-
"path": "docs/architecture/diagrams/architecture.mmd",
|
|
140
|
-
"ownership": "generated",
|
|
141
|
-
"rendererVersion": "archcontext.docs-renderer/v5",
|
|
142
|
-
"format": "mermaid",
|
|
143
|
-
"sourceDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
|
144
|
-
"outputDigest": "sha256:cab3b5ef19166b5dafbd869ba6060eb52a05f14670db938fa1b13ca4b8bb31bd"
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
"targetId": "projection_target.diagram.structurizr",
|
|
148
|
-
"type": "diagram-structurizr",
|
|
149
|
-
"scope": {
|
|
150
|
-
"kind": "diagram",
|
|
151
|
-
"id": "architecture"
|
|
152
|
-
},
|
|
153
|
-
"path": "docs/architecture/diagrams/architecture.structurizr.json",
|
|
154
|
-
"ownership": "generated",
|
|
155
|
-
"rendererVersion": "archcontext.docs-renderer/v5",
|
|
156
|
-
"format": "structurizr-json",
|
|
157
|
-
"sourceDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
|
158
|
-
"outputDigest": "sha256:c886230580a87c89ee758db91fc26f6fb2100eb1017cfe0619a3e2332171c42d"
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
"targetId": "projection_target.diagram.likec4",
|
|
162
|
-
"type": "diagram-likec4",
|
|
163
|
-
"scope": {
|
|
164
|
-
"kind": "diagram",
|
|
165
|
-
"id": "architecture"
|
|
166
|
-
},
|
|
167
|
-
"path": "docs/architecture/diagrams/architecture.likec4",
|
|
168
|
-
"ownership": "generated",
|
|
169
|
-
"rendererVersion": "archcontext.docs-renderer/v5",
|
|
170
|
-
"format": "likec4",
|
|
171
|
-
"sourceDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
|
172
|
-
"outputDigest": "sha256:99c534ffdd668102413d47529127887cba120ef9a3f4c2cd62b40e41ef8757e5"
|
|
173
|
-
}
|
|
174
|
-
]
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
"targets": {
|
|
38
|
+
"projection_target.architecture.changelog":
|
|
39
|
+
{"type":"architecture-changelog","scope":{"kind":"changelog"},"path":"docs/architecture/changelog.md","ownership":"mixed","format":"markdown","outputDigest":"sha256:1f723aeb74466aae7d607eeab8c438a830c36f49a48e6622f868a8151afabea6"},
|
|
40
|
+
"projection_target.architecture.index":
|
|
41
|
+
{"type":"architecture-index","scope":{"kind":"repository"},"path":"docs/architecture/index.md","ownership":"mixed","format":"markdown","outputDigest":"sha256:64f1a29733be5033316aa99f657bfeb543df2fca99a2ba8b4103be22d46eeb57"},
|
|
42
|
+
"projection_target.decision.index":
|
|
43
|
+
{"type":"decision-index","scope":{"kind":"decision"},"path":"docs/architecture/decisions/index.md","ownership":"mixed","format":"markdown","outputDigest":"sha256:34055a2aa0fbe868ce5dea7df5354de5da63830e5972ff683d9647f97374ec26"},
|
|
44
|
+
"projection_target.diagram.likec4":
|
|
45
|
+
{"type":"diagram-likec4","scope":{"kind":"diagram","id":"architecture"},"path":"docs/architecture/diagrams/architecture.likec4","ownership":"generated","format":"likec4","outputDigest":"sha256:99c534ffdd668102413d47529127887cba120ef9a3f4c2cd62b40e41ef8757e5"},
|
|
46
|
+
"projection_target.diagram.mermaid":
|
|
47
|
+
{"type":"diagram-mermaid","scope":{"kind":"diagram","id":"architecture"},"path":"docs/architecture/diagrams/architecture.mmd","ownership":"generated","format":"mermaid","outputDigest":"sha256:cab3b5ef19166b5dafbd869ba6060eb52a05f14670db938fa1b13ca4b8bb31bd"},
|
|
48
|
+
"projection_target.diagram.structurizr":
|
|
49
|
+
{"type":"diagram-structurizr","scope":{"kind":"diagram","id":"architecture"},"path":"docs/architecture/diagrams/architecture.structurizr.json","ownership":"generated","format":"structurizr-json","outputDigest":"sha256:c886230580a87c89ee758db91fc26f6fb2100eb1017cfe0619a3e2332171c42d"},
|
|
50
|
+
"projection_target.entity.capability-example-billing":
|
|
51
|
+
{"type":"entity-summary","scope":{"kind":"entity","id":"capability.example.billing","entityKind":"capability"},"path":"docs/architecture/modules/example/billing.md","ownership":"mixed","format":"markdown","outputDigest":"sha256:2963da98797bba21c3e87b86e60dca3b7c19f75a592723e4c98e0f41b2eb8f58","sourceStamps":{"capability.example.billing":"sha256:6666666666666666666666666666666666666666666666666666666666666666"},"scale":{"fileCountBucket":{"lower":10,"upper":20},"lineCountBucket":{"lower":500,"upper":1000}}}
|
|
52
|
+
}
|
|
175
53
|
}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"codeGraphDigest": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
|
14
14
|
"indexedWorktreeDigest": "sha256:4545454545454545454545454545454545454545454545454545454545454545",
|
|
15
15
|
"projectionInputDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
|
16
|
-
"rendererVersion": "archcontext.docs-renderer/
|
|
16
|
+
"rendererVersion": "archcontext.docs-renderer/v6",
|
|
17
17
|
"layoutVersion": "archcontext.docs-layout/v1",
|
|
18
|
-
"generatedFrom": { "codeGraphPackage": "@colbymchenry/codegraph", "codeGraphVersion": "1.6.
|
|
18
|
+
"generatedFrom": { "codeGraphPackage": "@colbymchenry/codegraph", "codeGraphVersion": "1.6.2", "codeGraphStatus": "ready" }
|
|
19
19
|
},
|
|
20
20
|
"outputSnapshot": {
|
|
21
21
|
"repositoryId": "repo.example",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"codeGraphDigest": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
|
29
29
|
"indexedWorktreeDigest": "sha256:9898989898989898989898989898989898989898989898989898989898989898",
|
|
30
30
|
"projectionInputDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
31
|
-
"rendererVersion": "archcontext.docs-renderer/
|
|
31
|
+
"rendererVersion": "archcontext.docs-renderer/v6",
|
|
32
32
|
"layoutVersion": "archcontext.docs-layout/v1",
|
|
33
|
-
"generatedFrom": { "codeGraphPackage": "@colbymchenry/codegraph", "codeGraphVersion": "1.6.
|
|
33
|
+
"generatedFrom": { "codeGraphPackage": "@colbymchenry/codegraph", "codeGraphVersion": "1.6.2", "codeGraphStatus": "ready" }
|
|
34
34
|
},
|
|
35
35
|
"affectedNodeIds": ["capability.api"],
|
|
36
36
|
"files": [
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
],
|
|
44
44
|
"humanActions": [],
|
|
45
45
|
"refreshSignals": [],
|
|
46
|
-
"receiptDigest": "sha256:
|
|
46
|
+
"receiptDigest": "sha256:b080eaee9ba5c2d617b00a91e5848162f6c65eb53a367849f390237bac574a3e"
|
|
47
47
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.refactor-decision/v1",
|
|
3
|
+
"namespace": "product.architecture-context",
|
|
4
|
+
"recommendationId": "recommendation.4aa8477d81e9d473",
|
|
5
|
+
"fingerprint": "sha256:5fcec35f40c11d3c1fbc62d2ee21c794f4abcd201ada86940fe142773cb736c4",
|
|
6
|
+
"fingerprintSchemaVersion": "archcontext.recommendation-fingerprint/v3",
|
|
7
|
+
"category": "structural_observation",
|
|
8
|
+
"kind": "cycle",
|
|
9
|
+
"subject": {
|
|
10
|
+
"selectorKind": "repository",
|
|
11
|
+
"stableKey": "pair:component.architecture-context.core.changeset-engine|component.architecture-context.core.policy-engine",
|
|
12
|
+
"subjectSelectorId": "subject.repository.b7c61fc13826e1e3"
|
|
13
|
+
},
|
|
14
|
+
"affectedNodeIds": [
|
|
15
|
+
"component.architecture-context.core.changeset-engine",
|
|
16
|
+
"component.architecture-context.core.policy-engine"
|
|
17
|
+
],
|
|
18
|
+
"affectedNodeCount": 2,
|
|
19
|
+
"regressesFrom": null,
|
|
20
|
+
"status": "rejected",
|
|
21
|
+
"observationMetrics": {
|
|
22
|
+
"backwardEdgeCount": 4,
|
|
23
|
+
"forwardEdgeCount": 1,
|
|
24
|
+
"thinDirectionEdgeCount": 1,
|
|
25
|
+
"totalEdgeCount": 5
|
|
26
|
+
},
|
|
27
|
+
"reason": "The policy engine owns the path allowlist; the back edge is the intended seam.",
|
|
28
|
+
"actor": {
|
|
29
|
+
"kind": "cli",
|
|
30
|
+
"id": "developer"
|
|
31
|
+
},
|
|
32
|
+
"decidedAt": "2026-10-13T09:00:00.000Z",
|
|
33
|
+
"provenance": {
|
|
34
|
+
"headSha": "0c6bc11d00000000000000000000000000000000",
|
|
35
|
+
"assessmentDigest": "sha256:3c0eb0020e00e35b734ac0396c00ef1c01733543ad7863938edcf7906b89c971",
|
|
36
|
+
"baselineSnapshotDigest": "sha256:b5bcfda3c89d235c429f584439f5db74f833abd91d4c12f0b7a477ed49b60e80"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"worktreeDigest": "sha256:96cbb5ccf708d8b7c56c2633e8937311338957998b7154879461706460d4c467"
|
|
13
13
|
},
|
|
14
14
|
"requestId": "refactor_request.d514edefd58b7a9e",
|
|
15
|
+
"namespace": "product.architecture-context",
|
|
15
16
|
"request": {
|
|
16
17
|
"schemaVersion": "archcontext.refactor-request/v1",
|
|
17
18
|
"scope": {
|
|
@@ -111,6 +112,7 @@
|
|
|
111
112
|
"moduleDigest": "sha256:32d887790fe89e1415d1cb0e68557509e025b4026184ad8a463f4d886a3de182"
|
|
112
113
|
}
|
|
113
114
|
],
|
|
115
|
+
"moduleDependencies": [],
|
|
114
116
|
"repositorySummary": {
|
|
115
117
|
"moduleCount": 2,
|
|
116
118
|
"undeclaredFootprintNodeCount": 1,
|
|
@@ -140,6 +142,7 @@
|
|
|
140
142
|
{
|
|
141
143
|
"kind": "evidence-gap",
|
|
142
144
|
"subjectSelectorId": "repository:repo.537182127c5f2134",
|
|
145
|
+
"affectedNodeIds": [],
|
|
143
146
|
"metrics": {
|
|
144
147
|
"unresolvedImportCount": 0,
|
|
145
148
|
"edgeLimit": 5000
|
|
@@ -164,6 +167,9 @@
|
|
|
164
167
|
{
|
|
165
168
|
"kind": "undeclared-footprint",
|
|
166
169
|
"subjectSelectorId": "capability.architecture.context",
|
|
170
|
+
"affectedNodeIds": [
|
|
171
|
+
"capability.architecture.context"
|
|
172
|
+
],
|
|
167
173
|
"metrics": {},
|
|
168
174
|
"evidence": {
|
|
169
175
|
"kind": "undeclared-footprint",
|
package/package.json
CHANGED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://archctx.repoharness.com/schemas/repo/refactor-decision.schema.json",
|
|
4
|
+
"title": "RefactorDecision",
|
|
5
|
+
"description": "The latest human decision for one refactor recommendation generation, stored at .archcontext/refactor-decisions/<recommendationId>.json (ADR-0046). Identity that needs the core hashers (recommendationId from fingerprint and regressesFrom, the namespace-scoped subject selector) is checked by the runtime reader.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schemaVersion",
|
|
10
|
+
"namespace",
|
|
11
|
+
"recommendationId",
|
|
12
|
+
"fingerprint",
|
|
13
|
+
"fingerprintSchemaVersion",
|
|
14
|
+
"category",
|
|
15
|
+
"kind",
|
|
16
|
+
"subject",
|
|
17
|
+
"affectedNodeIds",
|
|
18
|
+
"affectedNodeCount",
|
|
19
|
+
"regressesFrom",
|
|
20
|
+
"status",
|
|
21
|
+
"observationMetrics",
|
|
22
|
+
"reason",
|
|
23
|
+
"actor",
|
|
24
|
+
"decidedAt",
|
|
25
|
+
"provenance"
|
|
26
|
+
],
|
|
27
|
+
"properties": {
|
|
28
|
+
"schemaVersion": {
|
|
29
|
+
"const": "archcontext.refactor-decision/v1"
|
|
30
|
+
},
|
|
31
|
+
"namespace": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"pattern": "^[a-z][a-z0-9]*(\\.[a-z0-9][a-z0-9-]*)+$"
|
|
34
|
+
},
|
|
35
|
+
"recommendationId": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"pattern": "^recommendation\\.[a-f0-9]{16}$"
|
|
38
|
+
},
|
|
39
|
+
"fingerprint": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
42
|
+
},
|
|
43
|
+
"fingerprintSchemaVersion": {
|
|
44
|
+
"const": "archcontext.recommendation-fingerprint/v3"
|
|
45
|
+
},
|
|
46
|
+
"category": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"enum": [
|
|
49
|
+
"refactor_proposal",
|
|
50
|
+
"structural_observation"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"kind": {
|
|
54
|
+
"anyOf": [
|
|
55
|
+
{
|
|
56
|
+
"type": "null"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"type": "string",
|
|
60
|
+
"enum": [
|
|
61
|
+
"cycle",
|
|
62
|
+
"direction-violation",
|
|
63
|
+
"evidence-gap",
|
|
64
|
+
"ownership-ambiguous",
|
|
65
|
+
"residual-cycle",
|
|
66
|
+
"undeclared-footprint",
|
|
67
|
+
"unowned-paths"
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"subject": {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"additionalProperties": false,
|
|
75
|
+
"required": [
|
|
76
|
+
"selectorKind",
|
|
77
|
+
"stableKey",
|
|
78
|
+
"subjectSelectorId"
|
|
79
|
+
],
|
|
80
|
+
"properties": {
|
|
81
|
+
"selectorKind": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"enum": [
|
|
84
|
+
"node",
|
|
85
|
+
"repository"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"stableKey": {
|
|
89
|
+
"type": "string",
|
|
90
|
+
"minLength": 1,
|
|
91
|
+
"maxLength": 512,
|
|
92
|
+
"pattern": "^\\S(?:[^\\u0000-\\u001f\\u007f]*\\S)?$"
|
|
93
|
+
},
|
|
94
|
+
"subjectSelectorId": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"pattern": "^subject\\.(node|repository)\\.[a-f0-9]{16}$"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"affectedNodeIds": {
|
|
101
|
+
"type": "array",
|
|
102
|
+
"maxItems": 32,
|
|
103
|
+
"uniqueItems": true,
|
|
104
|
+
"items": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"minLength": 1
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"affectedNodeCount": {
|
|
110
|
+
"type": "integer",
|
|
111
|
+
"minimum": 0
|
|
112
|
+
},
|
|
113
|
+
"regressesFrom": {
|
|
114
|
+
"anyOf": [
|
|
115
|
+
{
|
|
116
|
+
"type": "null"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"type": "string",
|
|
120
|
+
"pattern": "^recommendation\\.[a-f0-9]{16}$"
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
"status": {
|
|
125
|
+
"type": "string",
|
|
126
|
+
"enum": [
|
|
127
|
+
"acknowledged",
|
|
128
|
+
"accepted",
|
|
129
|
+
"deferred",
|
|
130
|
+
"rejected",
|
|
131
|
+
"resolved",
|
|
132
|
+
"waived"
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
"observationMetrics": {
|
|
136
|
+
"anyOf": [
|
|
137
|
+
{
|
|
138
|
+
"type": "null"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"type": "object",
|
|
142
|
+
"additionalProperties": {
|
|
143
|
+
"anyOf": [
|
|
144
|
+
{
|
|
145
|
+
"type": "null"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"type": "number"
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
"reason": {
|
|
156
|
+
"type": "string",
|
|
157
|
+
"minLength": 1,
|
|
158
|
+
"maxLength": 1024,
|
|
159
|
+
"pattern": "^\\S(?:[^\\u0000-\\u001f\\u007f]*\\S)?$"
|
|
160
|
+
},
|
|
161
|
+
"actor": {
|
|
162
|
+
"type": "object",
|
|
163
|
+
"additionalProperties": false,
|
|
164
|
+
"required": [
|
|
165
|
+
"kind",
|
|
166
|
+
"id"
|
|
167
|
+
],
|
|
168
|
+
"properties": {
|
|
169
|
+
"kind": {
|
|
170
|
+
"type": "string",
|
|
171
|
+
"enum": [
|
|
172
|
+
"cli",
|
|
173
|
+
"daemon",
|
|
174
|
+
"developer",
|
|
175
|
+
"hook",
|
|
176
|
+
"mcp",
|
|
177
|
+
"migration",
|
|
178
|
+
"subagent",
|
|
179
|
+
"system"
|
|
180
|
+
]
|
|
181
|
+
},
|
|
182
|
+
"id": {
|
|
183
|
+
"type": "string",
|
|
184
|
+
"minLength": 1,
|
|
185
|
+
"maxLength": 128,
|
|
186
|
+
"pattern": "^\\S(?:[^\\u0000-\\u001f\\u007f]*\\S)?$"
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
"decidedAt": {
|
|
191
|
+
"type": "string",
|
|
192
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$"
|
|
193
|
+
},
|
|
194
|
+
"provenance": {
|
|
195
|
+
"type": "object",
|
|
196
|
+
"additionalProperties": false,
|
|
197
|
+
"required": [
|
|
198
|
+
"headSha",
|
|
199
|
+
"assessmentDigest",
|
|
200
|
+
"baselineSnapshotDigest"
|
|
201
|
+
],
|
|
202
|
+
"properties": {
|
|
203
|
+
"headSha": {
|
|
204
|
+
"type": "string",
|
|
205
|
+
"pattern": "^[a-f0-9]{40}$"
|
|
206
|
+
},
|
|
207
|
+
"assessmentDigest": {
|
|
208
|
+
"type": "string",
|
|
209
|
+
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
210
|
+
},
|
|
211
|
+
"baselineSnapshotDigest": {
|
|
212
|
+
"type": "string",
|
|
213
|
+
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"additionalProperties": false,
|
|
32
32
|
"required": ["architectureDocs", "agentContext"],
|
|
33
33
|
"properties": {
|
|
34
|
-
"architectureDocs": { "const": "archcontext.docs-renderer/
|
|
34
|
+
"architectureDocs": { "const": "archcontext.docs-renderer/v6" },
|
|
35
35
|
"agentContext": { "const": "archcontext.agent-context-renderer/v1" }
|
|
36
36
|
}
|
|
37
37
|
},
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"type": "string",
|
|
44
44
|
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*-v[0-9]+$",
|
|
45
45
|
"description": "One feature flag: a lowercase kebab-case name that ends in a version suffix (-v1, -v2, ...). The pattern is open, so a validator built from this schema accepts flags that a later archctx adds. A consumer must ignore a flag it does not know. examples lists the flags this schema version knows.",
|
|
46
|
-
"examples": ["architecture-change-capabilities-v1", "architecture-docs-renderer-v2", "architecture-refresh-signal-v1", "capability-dependencies-v1", "changeset-entity-operations-v1", "changeset-ownership-delta-v1", "code-facts-unavailable-error-v1", "docs-anchors-v1", "flow-selector-check-v1", "module-statistics-v1", "projection-apply-readback-v1", "projection-apply-receipt-v1", "projection-apply-recovery-v1", "projection-apply-replay-v1", "projection-check-freshness-v1", "projection-manifest-contract-
|
|
46
|
+
"examples": ["architecture-change-capabilities-v1", "architecture-debt-v1", "architecture-docs-renderer-v2", "architecture-refresh-signal-v1", "capability-dependencies-declared-v1", "capability-dependencies-v1", "changeset-entity-operations-v1", "changeset-ownership-delta-v1", "code-facts-unavailable-error-v1", "docs-anchors-v1", "flow-selector-check-v1", "module-statistics-v1", "native-context-export-v1", "projection-apply-readback-v1", "projection-apply-receipt-v1", "projection-apply-recovery-v1", "projection-apply-replay-restore-v1", "projection-apply-replay-v1", "projection-architecture-debt-v1", "projection-capability-isolation-v1", "projection-change-classification-v1", "projection-check-freshness-v1", "projection-freshness-v1", "projection-manifest-contract-v3", "projection-observed-major-change-acceptance-v1", "projection-orphan-review-v1", "projection-preview-v1", "projection-prior-committed-applies-v1", "projection-protocol-v2", "projection-snapshot-v1", "recommendation-scan-decision-v1", "recommendation-v3", "refactor-assessment-v1", "refactor-observation-evidence-v1", "refactor-resolution-v1", "refactor-scan-limits-v1", "refactor-scan-untracked-count-v1"]
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
}
|