archctx-contracts 0.6.3 → 0.7.1

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 (38) 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/capability-dependencies.json +35 -0
  4. package/fixtures/valid/docs-anchors.json +105 -0
  5. package/fixtures/valid/flow-selector-check.json +50 -0
  6. package/fixtures/valid/product-version-manifest.json +6 -6
  7. package/fixtures/valid/projection-manifest.json +175 -0
  8. package/fixtures/valid/projection-result.json +5 -5
  9. package/fixtures/valid/recommendation-v3.json +69 -0
  10. package/fixtures/valid/runtime-recommendation-show.json +312 -0
  11. package/fixtures/valid/runtime-refactor-scan.json +543 -0
  12. package/package.json +1 -1
  13. package/schemas/runtime/archctx-capabilities.schema.json +7 -2
  14. package/schemas/runtime/architecture-refresh-signal.schema.json +27 -0
  15. package/schemas/runtime/capability-dependencies.schema.json +116 -0
  16. package/schemas/runtime/changeset.schema.json +42 -16
  17. package/schemas/runtime/docs-anchors.schema.json +143 -0
  18. package/schemas/runtime/flow-selector-check.schema.json +109 -0
  19. package/schemas/runtime/projection-apply-readback.schema.json +351 -10
  20. package/schemas/runtime/projection-apply-recovery.schema.json +24 -3
  21. package/schemas/runtime/projection-manifest.schema.json +491 -0
  22. package/schemas/runtime/projection-request.schema.json +11 -2
  23. package/schemas/runtime/projection-result.schema.json +108 -8
  24. package/schemas/runtime/recommendation-v3.schema.json +1167 -0
  25. package/schemas/runtime/runtime-recommendation-show.schema.json +2463 -0
  26. package/schemas/runtime/runtime-refactor-scan.schema.json +2508 -0
  27. package/schemas/runtime/structural-observation-payload.schema.json +579 -0
  28. package/src/architecture.ts +6 -3
  29. package/src/docs-anchors.ts +126 -0
  30. package/src/index.ts +3 -0
  31. package/src/ledger.ts +26 -10
  32. package/src/ownership-dependencies.ts +129 -0
  33. package/src/product-version.ts +2 -2
  34. package/src/projection-manifest.ts +346 -0
  35. package/src/projection.ts +406 -6
  36. package/src/refactor.ts +305 -1
  37. package/src/schema.ts +20 -4
  38. 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.3" },
3
+ "package": { "name": "archctx", "version": "0.7.1" },
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", "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-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", "refactor-scan-untracked-count-v1"]
14
14
  }
@@ -0,0 +1,35 @@
1
+ {
2
+ "schemaVersion": "archcontext.capability-dependencies/v1",
3
+ "ownershipRule": "parent-chain",
4
+ "filter": { "from": null, "into": "capability.billing" },
5
+ "capabilities": ["capability.billing", "capability.checkout"],
6
+ "matrix": [
7
+ { "from": "capability.checkout", "to": "capability.billing", "imports": 2, "calls": null }
8
+ ],
9
+ "imports": {
10
+ "coverage": "complete",
11
+ "reasonCodes": [],
12
+ "truncated": false,
13
+ "importNodeCount": 14,
14
+ "importNodeLimit": 50000,
15
+ "importNodeLimitExceeded": false,
16
+ "edgeCount": 3,
17
+ "unresolvedCount": 0,
18
+ "unattributed": { "unownedEndpoint": 1, "contestedEndpoint": 0, "noCapabilityEndpoint": 0 }
19
+ },
20
+ "calls": { "coverage": "unknown", "reasonCodes": ["call-edges-not-exposed"] },
21
+ "edges": {
22
+ "limit": 200,
23
+ "count": 2,
24
+ "omittedCount": 0,
25
+ "items": [
26
+ { "fromPath": "src/checkout/cart.ts", "toPath": "src/billing/invoice.ts", "fromCapability": "capability.checkout", "toCapability": "capability.billing" },
27
+ { "fromPath": "src/checkout/pay.ts", "toPath": "src/billing/invoice.ts", "fromCapability": "capability.checkout", "toCapability": "capability.billing" }
28
+ ]
29
+ },
30
+ "worktree": {
31
+ "headSha": "0123456789abcdef0123456789abcdef01234567",
32
+ "worktreeDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
33
+ },
34
+ "privacy": { "writes": "none" }
35
+ }
@@ -0,0 +1,105 @@
1
+ {
2
+ "schemaVersion": "archcontext.docs-anchors/v1",
3
+ "profile": "repo-harness/v1",
4
+ "codeGraph": {
5
+ "availability": "ready"
6
+ },
7
+ "summary": {
8
+ "nodes": 3,
9
+ "documents": 2,
10
+ "citations": 6,
11
+ "findings": 4,
12
+ "unchecked": 1,
13
+ "byKind": {
14
+ "line-moved": 1,
15
+ "line-out-of-range": 1,
16
+ "missing-path": 1,
17
+ "missing-symbol": 1
18
+ }
19
+ },
20
+ "nodes": [
21
+ {
22
+ "nodeId": "capability.runtime-harness.evals-checks",
23
+ "documentPath": "docs/architecture/modules/runtime-harness/evals-checks.md",
24
+ "citationCount": 2,
25
+ "findings": [
26
+ {
27
+ "kind": "missing-symbol",
28
+ "origin": {
29
+ "kind": "node-responsibility",
30
+ "index": 0
31
+ },
32
+ "citation": {
33
+ "text": "is_evidence_producer_command()",
34
+ "symbol": "is_evidence_producer_command"
35
+ }
36
+ }
37
+ ],
38
+ "unchecked": []
39
+ },
40
+ {
41
+ "nodeId": "capability.runtime-harness.hook-adapters",
42
+ "documentPath": "docs/architecture/modules/runtime-harness/hook-adapters.md",
43
+ "citationCount": 4,
44
+ "findings": [
45
+ {
46
+ "kind": "line-moved",
47
+ "origin": {
48
+ "kind": "document",
49
+ "path": "docs/architecture/modules/runtime-harness/hook-adapters.md",
50
+ "line": 41
51
+ },
52
+ "citation": {
53
+ "text": "route-registry.ts:52",
54
+ "path": "route-registry.ts",
55
+ "resolvedPath": "src/hooks/route-registry.ts",
56
+ "line": 52,
57
+ "symbol": "registerRoute"
58
+ },
59
+ "currentLines": [
60
+ 54
61
+ ]
62
+ },
63
+ {
64
+ "kind": "line-out-of-range",
65
+ "origin": {
66
+ "kind": "document",
67
+ "path": "docs/architecture/modules/runtime-harness/hook-adapters.md",
68
+ "line": 44
69
+ },
70
+ "citation": {
71
+ "text": "src/hooks/runtime.ts:410",
72
+ "path": "src/hooks/runtime.ts",
73
+ "line": 410
74
+ },
75
+ "lineCount": 362
76
+ },
77
+ {
78
+ "kind": "missing-path",
79
+ "origin": {
80
+ "kind": "node-summary"
81
+ },
82
+ "citation": {
83
+ "text": "src/hooks/legacy-adapter.ts",
84
+ "path": "src/hooks/legacy-adapter.ts"
85
+ }
86
+ }
87
+ ],
88
+ "unchecked": [
89
+ {
90
+ "reasonCode": "path-ambiguous",
91
+ "origin": {
92
+ "kind": "document",
93
+ "path": "docs/architecture/modules/runtime-harness/hook-adapters.md",
94
+ "line": 50
95
+ },
96
+ "citation": {
97
+ "text": "index.ts:12",
98
+ "path": "index.ts",
99
+ "line": 12
100
+ }
101
+ }
102
+ ]
103
+ }
104
+ ]
105
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "schemaVersion": "archcontext.flow-selector-check/v1",
3
+ "ok": false,
4
+ "codeGraph": { "availability": "ready", "version": "1.6.1" },
5
+ "summary": { "selectors": 2, "proven": 1, "unproven": 1, "usedUnproven": 1 },
6
+ "selectors": [
7
+ {
8
+ "nodeId": "capability.runtime.hooks",
9
+ "entrypointId": "entrypoint.hook.stop",
10
+ "sourcePath": "src/hook.ts",
11
+ "sourceSymbol": "runHook",
12
+ "sinkId": "sink.hook.journal",
13
+ "sinkPath": "src/journal.ts",
14
+ "sinkSymbol": "writeEvent",
15
+ "status": "proven",
16
+ "callSites": [{ "path": "src/hook.ts", "line": 12 }],
17
+ "referenceSites": [],
18
+ "rejectedBuiltinCallSites": [],
19
+ "flowSteps": [{ "flowId": "flow.runtime.hooks.stop", "stepId": "persist" }]
20
+ },
21
+ {
22
+ "nodeId": "capability.runtime.hooks",
23
+ "entrypointId": "entrypoint.hook.stop",
24
+ "sourcePath": "src/hook.ts",
25
+ "sourceSymbol": "runHook",
26
+ "sinkId": "sink.hook.resolve",
27
+ "sinkPath": "src/paths.ts",
28
+ "sinkSymbol": "resolve",
29
+ "status": "false-builtin-call",
30
+ "callSites": [],
31
+ "referenceSites": [],
32
+ "rejectedBuiltinCallSites": [{ "path": "src/hook.ts", "line": 7 }],
33
+ "flowSteps": [{ "flowId": "flow.runtime.hooks.stop", "stepId": "resolve" }]
34
+ }
35
+ ],
36
+ "capabilities": [
37
+ {
38
+ "capabilityId": "capability.runtime.hooks",
39
+ "p2Status": "unprovable",
40
+ "diagnostics": [
41
+ {
42
+ "code": "selector-evidence-unmatched",
43
+ "flowId": "flow.runtime.hooks.stop",
44
+ "stepId": "resolve",
45
+ "detail": "entrypoint.hook.stop runHook sink.hook.resolve"
46
+ }
47
+ ]
48
+ }
49
+ ]
50
+ }
@@ -2,35 +2,35 @@
2
2
  "schemaVersion": "archcontext.product-version-manifest/v1",
3
3
  "product": {
4
4
  "name": "archctx",
5
- "version": "0.6.3",
5
+ "version": "0.7.1",
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.3",
15
+ "version": "0.7.1",
16
16
  "entrypoint": "archctx"
17
17
  },
18
18
  "daemon": {
19
19
  "packageName": "@archcontext/local-runtime",
20
- "version": "0.6.3",
20
+ "version": "0.7.1",
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.3",
26
+ "version": "0.7.1",
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.3",
33
+ "contractsPackageVersion": "0.7.1",
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
+ }