archctx-contracts 0.6.2 → 0.7.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.
Files changed (29) hide show
  1. package/fixtures/invalid/recommendation-v3-structural-before-evidence.json +59 -0
  2. package/fixtures/valid/archctx-capabilities.json +3 -3
  3. package/fixtures/valid/product-version-manifest.json +6 -6
  4. package/fixtures/valid/projection-manifest.json +175 -0
  5. package/fixtures/valid/projection-result.json +5 -5
  6. package/fixtures/valid/recommendation-v3.json +69 -0
  7. package/fixtures/valid/runtime-recommendation-show.json +312 -0
  8. package/fixtures/valid/runtime-refactor-scan.json +542 -0
  9. package/package.json +1 -1
  10. package/schemas/runtime/archctx-capabilities.schema.json +7 -2
  11. package/schemas/runtime/architecture-refresh-signal.schema.json +27 -0
  12. package/schemas/runtime/changeset.schema.json +42 -16
  13. package/schemas/runtime/projection-apply-readback.schema.json +351 -10
  14. package/schemas/runtime/projection-apply-recovery.schema.json +24 -3
  15. package/schemas/runtime/projection-manifest.schema.json +491 -0
  16. package/schemas/runtime/projection-request.schema.json +11 -2
  17. package/schemas/runtime/projection-result.schema.json +108 -8
  18. package/schemas/runtime/recommendation-v3.schema.json +1166 -0
  19. package/schemas/runtime/runtime-recommendation-show.schema.json +2449 -0
  20. package/schemas/runtime/runtime-refactor-scan.schema.json +2489 -0
  21. package/schemas/runtime/structural-observation-payload.schema.json +578 -0
  22. package/src/index.ts +1 -0
  23. package/src/ledger.ts +26 -10
  24. package/src/product-version.ts +2 -2
  25. package/src/projection-manifest.ts +346 -0
  26. package/src/projection.ts +338 -6
  27. package/src/refactor.ts +268 -1
  28. package/src/schema.ts +20 -4
  29. package/src/validator.ts +87 -15
@@ -0,0 +1,59 @@
1
+ {
2
+ "schemaVersion": "archcontext.recommendation/v3",
3
+ "recommendationId": "recommendation.c8c842b3d8529388",
4
+ "runId": "recommendation_run.9d3423295f1a45e6",
5
+ "fingerprint": "sha256:27b2fed8524041b6003797081dbf77355d7fccfa54327becf00ecaef0728db2a",
6
+ "subject": "capability.architecture.context",
7
+ "status": "open",
8
+ "confidence": "low",
9
+ "enforcement": "advisory",
10
+ "risk": "medium",
11
+ "uncertainty": "high",
12
+ "evidenceBindingIds": [
13
+ "binding.7577455e29083b0b"
14
+ ],
15
+ "explanation": [
16
+ "capability.architecture.context declares no source.include footprint, so none of its files or imports are measured.",
17
+ "It declares no entrypoint paths either."
18
+ ],
19
+ "authoredBy": {
20
+ "kind": "daemon",
21
+ "id": "archctxd",
22
+ "source": "daemon"
23
+ },
24
+ "subjectSelectorId": "subject.node.d4eae75fb5b5121f",
25
+ "relations": {},
26
+ "createdAt": "2026-10-11T04:21:31.000Z",
27
+ "updatedAt": "2026-10-11T04:21:31.000Z",
28
+ "category": "structural_observation",
29
+ "payload": {
30
+ "assessmentDigest": "sha256:308510d9a08558453b9644d33fe24a73f4579832c448602b24c5053bdc4aa5ca",
31
+ "kind": "undeclared-footprint",
32
+ "affectedNodeIds": [
33
+ "capability.architecture.context"
34
+ ],
35
+ "baselineSnapshotDigest": "sha256:35796bb112cab526dfe31a9ad84bc9df5d28b6a9ef4154d7d3c2d7d3a7753f7e",
36
+ "derivedOutcomes": [
37
+ {
38
+ "metric": "module.footprintDeclared",
39
+ "subjectSelectorId": "subject.node.d4eae75fb5b5121f",
40
+ "nodeId": "capability.architecture.context",
41
+ "operator": "present",
42
+ "value": null,
43
+ "required": true,
44
+ "outcomeId": "outcome.58946c9d4f0f41c1"
45
+ }
46
+ ]
47
+ },
48
+ "extensions": {
49
+ "assessmentDigest": "sha256:308510d9a08558453b9644d33fe24a73f4579832c448602b24c5053bdc4aa5ca",
50
+ "baselineSnapshotDigest": "sha256:35796bb112cab526dfe31a9ad84bc9df5d28b6a9ef4154d7d3c2d7d3a7753f7e",
51
+ "riskSignals": [
52
+ "ownership-change"
53
+ ],
54
+ "uncertaintySignals": [
55
+ "low-coverage"
56
+ ],
57
+ "score": 23
58
+ }
59
+ }
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "schemaVersion": "archcontext.capabilities/v1",
3
- "package": { "name": "archctx", "version": "0.6.2" },
3
+ "package": { "name": "archctx", "version": "0.7.0" },
4
4
  "protocols": {
5
5
  "projectionRequest": "archcontext.projection-request/v1",
6
6
  "projectionResult": "archcontext.projection-result/v2",
7
7
  "architectureRefreshSignal": "archcontext.architecture-refresh-signal/v1"
8
8
  },
9
9
  "renderers": {
10
- "architectureDocs": "archcontext.docs-renderer/v4",
10
+ "architectureDocs": "archcontext.docs-renderer/v5",
11
11
  "agentContext": "archcontext.agent-context-renderer/v1"
12
12
  },
13
- "features": ["architecture-docs-renderer-v2", "architecture-refresh-signal-v1", "module-statistics-v1", "projection-apply-readback-v1", "projection-apply-receipt-v1", "projection-apply-recovery-v1", "projection-prior-committed-applies-v1", "projection-protocol-v2", "recommendation-v3", "refactor-assessment-v1", "refactor-resolution-v1"]
13
+ "features": ["architecture-change-capabilities-v1", "architecture-docs-renderer-v2", "architecture-refresh-signal-v1", "changeset-entity-operations-v1", "code-facts-unavailable-error-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-v2", "projection-observed-major-change-acceptance-v1", "projection-orphan-review-v1", "projection-preview-v1", "projection-prior-committed-applies-v1", "projection-protocol-v2", "recommendation-scan-decision-v1", "recommendation-v3", "refactor-assessment-v1", "refactor-observation-evidence-v1", "refactor-resolution-v1", "refactor-scan-limits-v1"]
14
14
  }
@@ -2,35 +2,35 @@
2
2
  "schemaVersion": "archcontext.product-version-manifest/v1",
3
3
  "product": {
4
4
  "name": "archctx",
5
- "version": "0.6.2",
5
+ "version": "0.7.0",
6
6
  "distribution": "one-package"
7
7
  },
8
- "packageManager": "bun@1.4.0",
8
+ "packageManager": "bun@1.4.3",
9
9
  "engines": {
10
10
  "node": ">=22.22 <26"
11
11
  },
12
12
  "surfaces": {
13
13
  "cli": {
14
14
  "packageName": "@archcontext/surfaces",
15
- "version": "0.6.2",
15
+ "version": "0.7.0",
16
16
  "entrypoint": "archctx"
17
17
  },
18
18
  "daemon": {
19
19
  "packageName": "@archcontext/local-runtime",
20
- "version": "0.6.2",
20
+ "version": "0.7.0",
21
21
  "entrypoint": "archctx daemon start",
22
22
  "rpcSchemaVersion": "archcontext.runtime-rpc/v1"
23
23
  },
24
24
  "mcp": {
25
25
  "packageName": "@archcontext/surfaces",
26
- "version": "0.6.2",
26
+ "version": "0.7.0",
27
27
  "entrypoint": "archctx mcp",
28
28
  "transport": "stdio"
29
29
  }
30
30
  },
31
31
  "schemas": {
32
32
  "schemaSetVersion": "2026-06-25.al0-ledger",
33
- "contractsPackageVersion": "0.6.2",
33
+ "contractsPackageVersion": "0.7.0",
34
34
  "reviewChallenge": "archcontext.review-challenge/v2",
35
35
  "attestation": "archcontext.attestation/v2",
36
36
  "deviceIdentity": "archcontext.device-identity/v1",
@@ -0,0 +1,175 @@
1
+ {
2
+ "schemaVersion": "archcontext.architecture-docs-projection-manifest/v2",
3
+ "rendererVersion": "archcontext.docs-renderer/v5",
4
+ "profile": "repo-harness/v1",
5
+ "sourceDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
6
+ "provenance": {
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",
19
+ "semanticBaseline": {
20
+ "semanticState": {
21
+ "schemaVersion": "archcontext.architecture-semantic-state/v1",
22
+ "capabilities": [
23
+ {
24
+ "capabilityId": "capability.example.billing",
25
+ "memberNodeIds": [
26
+ "capability.example.billing"
27
+ ],
28
+ "semanticFingerprint": "sha256:a6357941efd4f3307106c1650eca068e30db5d704e83a90ff238a1cda3c39471",
29
+ "flowProofFingerprint": "sha256:066fed47f724c54dca2e7c9d01c79bc05362004b1c49edb593bf80cd239e66f8",
30
+ "proofStatus": {
31
+ "p1": "unprovable",
32
+ "p2": "not-applicable"
33
+ },
34
+ "facets": {
35
+ "constraints": "sha256:d1c61fe896c27d26f03ec0c3d4ee584954bedee94abc988f5cc2ba12fa9aa246",
36
+ "entrypoints": "sha256:040e1e188d64957a0fbf33d790c062bb4b63ceae21e8d054720d2ef3c974ebca",
37
+ "interfaces": "sha256:78dd8a6e8eb5a106964ebdd464b873b6ed58f857c3d816a0b595106addac12b2",
38
+ "lifecycle": "sha256:45e0f02c02e3b6b1b9a7d4b30e9acb7aac52e68ca7fea468377cfa6e7ed1236f",
39
+ "names": "sha256:1e91c01c88f9156cc043971b089aa573d1ab0873a4ea73fbe12728775142f9b7",
40
+ "ownership": "sha256:a00ea5710e08406444452ccf3bce97d054e2c2d6595d0f560e98b32b04500c01",
41
+ "placement": "sha256:b5f9e3fd0ce231d6b4b05bd918c93043cc15d7f3b592b12b84972904e0f1b74d",
42
+ "relations": "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
43
+ "responsibilities": "sha256:310fb2a928123d4df66bd32884e7eba3a854be1928f8d7c73e99fef59a5fb91a",
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
99
+ },
100
+ "lineCountBucket": {
101
+ "lower": 500,
102
+ "upper": 1000
103
+ }
104
+ }
105
+ },
106
+ {
107
+ "targetId": "projection_target.decision.index",
108
+ "type": "decision-index",
109
+ "scope": {
110
+ "kind": "decision"
111
+ },
112
+ "path": "docs/architecture/decisions/index.md",
113
+ "ownership": "mixed",
114
+ "rendererVersion": "archcontext.docs-renderer/v5",
115
+ "format": "markdown",
116
+ "sourceDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
117
+ "outputDigest": "sha256:34055a2aa0fbe868ce5dea7df5354de5da63830e5972ff683d9647f97374ec26"
118
+ },
119
+ {
120
+ "targetId": "projection_target.architecture.changelog",
121
+ "type": "architecture-changelog",
122
+ "scope": {
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
+ ]
175
+ }
@@ -13,9 +13,9 @@
13
13
  "codeGraphDigest": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
14
14
  "indexedWorktreeDigest": "sha256:4545454545454545454545454545454545454545454545454545454545454545",
15
15
  "projectionInputDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
16
- "rendererVersion": "archcontext.docs-renderer/v4",
16
+ "rendererVersion": "archcontext.docs-renderer/v5",
17
17
  "layoutVersion": "archcontext.docs-layout/v1",
18
- "generatedFrom": { "codeGraphPackage": "@colbymchenry/codegraph", "codeGraphVersion": "1.6.1", "codeGraphBinaryDigest": "sha256:4646464646464646464646464646464646464646464646464646464646464646", "codeGraphStatus": "ready" }
18
+ "generatedFrom": { "codeGraphPackage": "@colbymchenry/codegraph", "codeGraphVersion": "1.6.1", "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/v4",
31
+ "rendererVersion": "archcontext.docs-renderer/v5",
32
32
  "layoutVersion": "archcontext.docs-layout/v1",
33
- "generatedFrom": { "codeGraphPackage": "@colbymchenry/codegraph", "codeGraphVersion": "1.6.1", "codeGraphBinaryDigest": "sha256:9797979797979797979797979797979797979797979797979797979797979797", "codeGraphStatus": "ready" }
33
+ "generatedFrom": { "codeGraphPackage": "@colbymchenry/codegraph", "codeGraphVersion": "1.6.1", "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:edc04769fba2c7c488fde58e2dafa803b81f40af37a236f948e7fc8719eae6a8"
46
+ "receiptDigest": "sha256:efd5f90c12bb14cf64bfe2b5f244eac776ec7984dbbdfebc4bc89bc963818843"
47
47
  }
@@ -0,0 +1,69 @@
1
+ {
2
+ "schemaVersion": "archcontext.recommendation/v3",
3
+ "recommendationId": "recommendation.c8c842b3d8529388",
4
+ "runId": "recommendation_run.9d3423295f1a45e6",
5
+ "fingerprint": "sha256:27b2fed8524041b6003797081dbf77355d7fccfa54327becf00ecaef0728db2a",
6
+ "subject": "capability.architecture.context",
7
+ "status": "open",
8
+ "confidence": "low",
9
+ "enforcement": "advisory",
10
+ "risk": "medium",
11
+ "uncertainty": "high",
12
+ "evidenceBindingIds": [
13
+ "binding.7577455e29083b0b"
14
+ ],
15
+ "explanation": [
16
+ "capability.architecture.context declares no source.include footprint, so none of its files or imports are measured.",
17
+ "It declares no entrypoint paths either."
18
+ ],
19
+ "authoredBy": {
20
+ "kind": "daemon",
21
+ "id": "archctxd",
22
+ "source": "daemon"
23
+ },
24
+ "subjectSelectorId": "subject.node.d4eae75fb5b5121f",
25
+ "relations": {},
26
+ "createdAt": "2026-10-11T04:21:31.000Z",
27
+ "updatedAt": "2026-10-11T04:21:31.000Z",
28
+ "category": "structural_observation",
29
+ "payload": {
30
+ "assessmentDigest": "sha256:308510d9a08558453b9644d33fe24a73f4579832c448602b24c5053bdc4aa5ca",
31
+ "kind": "undeclared-footprint",
32
+ "affectedNodeIds": [
33
+ "capability.architecture.context"
34
+ ],
35
+ "baselineSnapshotDigest": "sha256:35796bb112cab526dfe31a9ad84bc9df5d28b6a9ef4154d7d3c2d7d3a7753f7e",
36
+ "derivedOutcomes": [
37
+ {
38
+ "metric": "module.footprintDeclared",
39
+ "subjectSelectorId": "subject.node.d4eae75fb5b5121f",
40
+ "nodeId": "capability.architecture.context",
41
+ "operator": "present",
42
+ "value": null,
43
+ "required": true,
44
+ "outcomeId": "outcome.58946c9d4f0f41c1"
45
+ }
46
+ ],
47
+ "metrics": {},
48
+ "signalIds": [
49
+ "signal.undeclared-footprint.bc66b760c4329111"
50
+ ],
51
+ "evidence": {
52
+ "kind": "undeclared-footprint",
53
+ "paths": [],
54
+ "totalCount": 0,
55
+ "truncated": false
56
+ }
57
+ },
58
+ "extensions": {
59
+ "assessmentDigest": "sha256:308510d9a08558453b9644d33fe24a73f4579832c448602b24c5053bdc4aa5ca",
60
+ "baselineSnapshotDigest": "sha256:35796bb112cab526dfe31a9ad84bc9df5d28b6a9ef4154d7d3c2d7d3a7753f7e",
61
+ "riskSignals": [
62
+ "ownership-change"
63
+ ],
64
+ "uncertaintySignals": [
65
+ "low-coverage"
66
+ ],
67
+ "score": 23
68
+ }
69
+ }