spring-runtime-mcp 0.2.0__py3-none-any.whl

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 (118) hide show
  1. spring_runtime_mcp/__init__.py +3 -0
  2. spring_runtime_mcp/adapters/__init__.py +1 -0
  3. spring_runtime_mcp/adapters/beans.py +159 -0
  4. spring_runtime_mcp/adapters/conditions.py +333 -0
  5. spring_runtime_mcp/adapters/config.py +295 -0
  6. spring_runtime_mcp/adapters/drift.py +790 -0
  7. spring_runtime_mcp/adapters/health.py +164 -0
  8. spring_runtime_mcp/adapters/mapping_predicates.py +201 -0
  9. spring_runtime_mcp/adapters/mappings.py +294 -0
  10. spring_runtime_mcp/adapters/migrations.py +373 -0
  11. spring_runtime_mcp/adapters/openapi.py +683 -0
  12. spring_runtime_mcp/adapters/source_catalog.py +119 -0
  13. spring_runtime_mcp/adapters/startup.py +202 -0
  14. spring_runtime_mcp/analyzers/__init__.py +1 -0
  15. spring_runtime_mcp/analyzers/bean_graph.py +172 -0
  16. spring_runtime_mcp/analyzers/condition_failures.py +359 -0
  17. spring_runtime_mcp/cli.py +248 -0
  18. spring_runtime_mcp/contracts/__init__.py +1 -0
  19. spring_runtime_mcp/contracts/definitions.py +425 -0
  20. spring_runtime_mcp/diagnostics.py +254 -0
  21. spring_runtime_mcp/models/__init__.py +1 -0
  22. spring_runtime_mcp/models/bean_graph.py +77 -0
  23. spring_runtime_mcp/models/common.py +99 -0
  24. spring_runtime_mcp/models/conditions.py +56 -0
  25. spring_runtime_mcp/models/queries.py +140 -0
  26. spring_runtime_mcp/models/source_catalog.py +35 -0
  27. spring_runtime_mcp/models/timestamps.py +71 -0
  28. spring_runtime_mcp/policy/__init__.py +1 -0
  29. spring_runtime_mcp/policy/configuration.py +32 -0
  30. spring_runtime_mcp/policy/output_guard.py +117 -0
  31. spring_runtime_mcp/policy/sanitization.py +616 -0
  32. spring_runtime_mcp/py.typed +0 -0
  33. spring_runtime_mcp/replay.py +220 -0
  34. spring_runtime_mcp/replay_data/bean_graph/README.md +26 -0
  35. spring_runtime_mcp/replay_data/bean_graph/factory-method/conditions.json +43 -0
  36. spring_runtime_mcp/replay_data/bean_graph/factory-method/source-catalog.json +54 -0
  37. spring_runtime_mcp/replay_data/bean_graph/nested-conditions/beans.json +99 -0
  38. spring_runtime_mcp/replay_data/bean_graph/nested-conditions/conditions.json +25 -0
  39. spring_runtime_mcp/replay_data/bean_graph/parent-child/beans.json +92 -0
  40. spring_runtime_mcp/replay_data/bean_graph/shape-metadata.json +32 -0
  41. spring_runtime_mcp/replay_data/bean_graph/stripe-missing/conditions.json +43 -0
  42. spring_runtime_mcp/replay_data/bean_graph/stripe-missing/source-catalog.json +54 -0
  43. spring_runtime_mcp/replay_data/conformance/README.md +41 -0
  44. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/beans.json +92 -0
  45. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/conditions.json +52 -0
  46. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/configprops.json +20 -0
  47. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/env.json +16 -0
  48. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/flyway.json +40 -0
  49. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/health-v2.json +14 -0
  50. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/health-v3.json +38 -0
  51. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/liquibase.json +30 -0
  52. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/mappings.json +40 -0
  53. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/openapi.json +54 -0
  54. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/source-catalog.json +90 -0
  55. spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/startup.json +45 -0
  56. spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/beans.json +92 -0
  57. spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/conditions.json +52 -0
  58. spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/configprops.json +20 -0
  59. spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/env.json +16 -0
  60. spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/flyway.json +40 -0
  61. spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/health-v3.json +38 -0
  62. spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/liquibase.json +30 -0
  63. spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/mappings.json +40 -0
  64. spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/openapi.json +54 -0
  65. spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/source-catalog.json +90 -0
  66. spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/startup.json +45 -0
  67. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/beans.json +92 -0
  68. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/conditions.json +52 -0
  69. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/configprops.json +20 -0
  70. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/env.json +16 -0
  71. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/flyway.json +40 -0
  72. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/health-v3.json +38 -0
  73. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/liquibase.json +30 -0
  74. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/mappings.json +40 -0
  75. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/openapi.json +54 -0
  76. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/servlet-namespace-comparison.json +4 -0
  77. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/source-catalog.json +90 -0
  78. spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/startup.json +45 -0
  79. spring_runtime_mcp/replay_data/conformance/contracts/springboot_analyze_startup.json +62 -0
  80. spring_runtime_mcp/replay_data/conformance/contracts/springboot_check_migrations.json +63 -0
  81. spring_runtime_mcp/replay_data/conformance/contracts/springboot_detect_drift.json +64 -0
  82. spring_runtime_mcp/replay_data/conformance/contracts/springboot_diagnose_health.json +59 -0
  83. spring_runtime_mcp/replay_data/conformance/contracts/springboot_inspect_beans.json +56 -0
  84. spring_runtime_mcp/replay_data/conformance/contracts/springboot_inspect_config.json +62 -0
  85. spring_runtime_mcp/replay_data/conformance/contracts/springboot_search_openapi.json +80 -0
  86. spring_runtime_mcp/replay_data/conformance/contracts/springboot_verify_mappings.json +58 -0
  87. spring_runtime_mcp/replay_data/conformance/faults/cases.json +63 -0
  88. spring_runtime_mcp/replay_data/conformance/faults/health-hidden.expected.json +54 -0
  89. spring_runtime_mcp/replay_data/conformance/faults/health-hidden.json +3 -0
  90. spring_runtime_mcp/replay_data/conformance/large/beans-2500.json +22506 -0
  91. spring_runtime_mcp/replay_data/conformance/manifest.json +46 -0
  92. spring_runtime_mcp/schemas/tools-contract.json +1902 -0
  93. spring_runtime_mcp/server.py +322 -0
  94. spring_runtime_mcp/services.py +44 -0
  95. spring_runtime_mcp/snapshots.py +340 -0
  96. spring_runtime_mcp/tools/__init__.py +1 -0
  97. spring_runtime_mcp/tools/analyze_startup.py +79 -0
  98. spring_runtime_mcp/tools/check_migrations.py +99 -0
  99. spring_runtime_mcp/tools/detect_drift.py +323 -0
  100. spring_runtime_mcp/tools/diagnose_health.py +88 -0
  101. spring_runtime_mcp/tools/inspect_beans.py +479 -0
  102. spring_runtime_mcp/tools/inspect_config.py +102 -0
  103. spring_runtime_mcp/tools/registry.py +48 -0
  104. spring_runtime_mcp/tools/search_openapi.py +79 -0
  105. spring_runtime_mcp/tools/support.py +166 -0
  106. spring_runtime_mcp/tools/verify_mappings.py +62 -0
  107. spring_runtime_mcp/transport/__init__.py +1 -0
  108. spring_runtime_mcp/transport/actuator_http.py +459 -0
  109. spring_runtime_mcp/transport/bounded_json.py +144 -0
  110. spring_runtime_mcp/transport/replay_files.py +71 -0
  111. spring_runtime_mcp/transport/response_gate.py +186 -0
  112. spring_runtime_mcp/transport/responses.py +82 -0
  113. spring_runtime_mcp/transport/stdio.py +44 -0
  114. spring_runtime_mcp-0.2.0.dist-info/METADATA +320 -0
  115. spring_runtime_mcp-0.2.0.dist-info/RECORD +118 -0
  116. spring_runtime_mcp-0.2.0.dist-info/WHEEL +4 -0
  117. spring_runtime_mcp-0.2.0.dist-info/entry_points.txt +2 -0
  118. spring_runtime_mcp-0.2.0.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,20 @@
1
+ {
2
+ "contexts": {
3
+ "application": {
4
+ "beans": {
5
+ "spring.application-example.ApplicationProperties": {
6
+ "prefix": "spring.application",
7
+ "properties": {
8
+ "name": "orders"
9
+ },
10
+ "inputs": {
11
+ "name": {
12
+ "value": "orders",
13
+ "origin": "class path resource [application.yaml] - 2:9"
14
+ }
15
+ }
16
+ }
17
+ }
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "activeProfiles": [
3
+ "dev"
4
+ ],
5
+ "propertySources": [
6
+ {
7
+ "name": "applicationConfig: [classpath:/application.yaml]",
8
+ "properties": {
9
+ "spring.application.name": {
10
+ "value": "orders",
11
+ "origin": "class path resource [application.yaml] - 2:9"
12
+ }
13
+ }
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "contexts": {
3
+ "application": {
4
+ "flywayBeans": {
5
+ "ordersFlyway": {
6
+ "migrations": [
7
+ {
8
+ "type": "SQL",
9
+ "checksum": 12345,
10
+ "version": "1",
11
+ "description": "create ordersFlyway",
12
+ "script": "V1__create_tables.sql",
13
+ "state": "SUCCESS",
14
+ "installedBy": "fixture",
15
+ "installedOn": "2026-10-16T00:00:00Z",
16
+ "installedRank": 1,
17
+ "executionTime": 12
18
+ }
19
+ ]
20
+ },
21
+ "auditFlyway": {
22
+ "migrations": [
23
+ {
24
+ "type": "SQL",
25
+ "checksum": -54321,
26
+ "version": "1",
27
+ "description": "create auditFlyway",
28
+ "script": "V1__create_tables.sql",
29
+ "state": "SUCCESS",
30
+ "installedBy": "fixture",
31
+ "installedOn": "2026-10-16T00:00:00Z",
32
+ "installedRank": 1,
33
+ "executionTime": 12
34
+ }
35
+ ]
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "status": "DOWN",
3
+ "components": {
4
+ "db": {
5
+ "status": "DOWN",
6
+ "details": {
7
+ "database": "H2",
8
+ "error": "java.sql.SQLException: synthetic connection unavailable"
9
+ }
10
+ },
11
+ "redis": {
12
+ "status": "UP"
13
+ },
14
+ "kafka": {
15
+ "status": "UP"
16
+ },
17
+ "rabbit": {
18
+ "status": "UP"
19
+ },
20
+ "diskSpace": {
21
+ "status": "UP"
22
+ },
23
+ "livenessState": {
24
+ "status": "UP"
25
+ },
26
+ "readinessState": {
27
+ "status": "DOWN"
28
+ },
29
+ "dependencies": {
30
+ "status": "DOWN",
31
+ "components": {
32
+ "ordersDb": {
33
+ "status": "DOWN"
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "contexts": {
3
+ "application": {
4
+ "liquibaseBeans": {
5
+ "ordersLiquibase": {
6
+ "changeSets": [
7
+ {
8
+ "author": "fixture",
9
+ "changeLog": "db/changelog/master.yaml",
10
+ "comments": "synthetic table creation",
11
+ "contexts": [],
12
+ "dateExecuted": "2026-10-16T00:00:00Z",
13
+ "deploymentId": "fixture-deployment",
14
+ "description": "createTable",
15
+ "execType": "EXECUTED",
16
+ "id": "001",
17
+ "labels": [],
18
+ "checksum": "9:0123456789abcdef0123456789abcdef",
19
+ "orderExecuted": 1,
20
+ "tag": null
21
+ }
22
+ ]
23
+ },
24
+ "auditLiquibase": {
25
+ "changeSets": []
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "contexts": {
3
+ "application": {
4
+ "mappings": {
5
+ "dispatcherHandlers": {
6
+ "webHandler": [
7
+ {
8
+ "handler": "example.OrderController#list",
9
+ "predicate": "{GET /orders}",
10
+ "details": {
11
+ "handlerMethod": {
12
+ "className": "example.OrderController",
13
+ "name": "list",
14
+ "descriptor": "(Lorg/springframework/web/server/ServerWebExchange;)Lreactor/core/publisher/Mono;"
15
+ },
16
+ "requestMappingConditions": {
17
+ "methods": [
18
+ "GET"
19
+ ],
20
+ "patterns": [
21
+ "/orders"
22
+ ],
23
+ "headers": [],
24
+ "params": [],
25
+ "consumes": [],
26
+ "produces": [
27
+ {
28
+ "mediaType": "application/json",
29
+ "negated": false
30
+ }
31
+ ]
32
+ }
33
+ }
34
+ }
35
+ ]
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "openapi": "3.0.3",
3
+ "info": {
4
+ "title": "Synthetic Orders",
5
+ "version": "1"
6
+ },
7
+ "paths": {
8
+ "/orders": {
9
+ "get": {
10
+ "operationId": "listOrders",
11
+ "responses": {
12
+ "200": {
13
+ "description": "Success",
14
+ "content": {
15
+ "application/json": {
16
+ "schema": {
17
+ "$ref": "#/components/schemas/Order"
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
23
+ }
24
+ }
25
+ },
26
+ "components": {
27
+ "schemas": {
28
+ "Order": {
29
+ "type": "object",
30
+ "properties": {
31
+ "customer": {
32
+ "$ref": "#/components/schemas/Customer"
33
+ }
34
+ }
35
+ },
36
+ "Customer": {
37
+ "type": "object",
38
+ "properties": {
39
+ "address": {
40
+ "$ref": "#/components/schemas/Address"
41
+ }
42
+ }
43
+ },
44
+ "Address": {
45
+ "type": "object",
46
+ "properties": {
47
+ "city": {
48
+ "type": "string"
49
+ }
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "provenance": "synthetic supplementary MVC example, not a WebFlux handler",
3
+ "descriptor": "(Ljakarta/servlet/http/HttpServletRequest;)Ljava/lang/String;"
4
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "targetId": "local",
3
+ "sourceRevision": "workspace-a1",
4
+ "types": [
5
+ {
6
+ "name": "example.PaymentGateway",
7
+ "directSupertypes": []
8
+ },
9
+ {
10
+ "name": "example.StripePaymentGateway",
11
+ "directSupertypes": [
12
+ "example.PaymentGateway"
13
+ ]
14
+ },
15
+ {
16
+ "name": "example.StripeClient",
17
+ "directSupertypes": []
18
+ },
19
+ {
20
+ "name": "example.ConnectionFactory",
21
+ "directSupertypes": []
22
+ },
23
+ {
24
+ "name": "example.DataSource",
25
+ "directSupertypes": []
26
+ },
27
+ {
28
+ "name": "example.OrderRepository",
29
+ "directSupertypes": []
30
+ },
31
+ {
32
+ "name": "example.ParentClient",
33
+ "directSupertypes": []
34
+ },
35
+ {
36
+ "name": "example.AuditService",
37
+ "directSupertypes": []
38
+ },
39
+ {
40
+ "name": "example.ChildClient",
41
+ "directSupertypes": []
42
+ },
43
+ {
44
+ "name": "example.OrderService",
45
+ "directSupertypes": []
46
+ },
47
+ {
48
+ "name": "example.OrderController",
49
+ "directSupertypes": []
50
+ },
51
+ {
52
+ "name": "example.StripeConfiguration",
53
+ "directSupertypes": []
54
+ }
55
+ ],
56
+ "producers": [
57
+ {
58
+ "contextId": "application",
59
+ "beanName": "stripePaymentGateway",
60
+ "aliases": [
61
+ "paymentGateway"
62
+ ],
63
+ "declaredType": "example.StripePaymentGateway",
64
+ "implementationType": "example.StripePaymentGateway",
65
+ "configurationClass": "example.StripePaymentGateway",
66
+ "factoryMethod": null,
67
+ "conditionSources": [
68
+ "example.StripePaymentGateway"
69
+ ],
70
+ "sourceFile": "src/main/java/example/StripePaymentGateway.java",
71
+ "sourceLine": 12
72
+ },
73
+ {
74
+ "contextId": "application",
75
+ "beanName": "stripeClient",
76
+ "aliases": [
77
+ "stripeApiClient"
78
+ ],
79
+ "declaredType": "example.StripeClient",
80
+ "implementationType": null,
81
+ "configurationClass": "example.StripeConfiguration",
82
+ "factoryMethod": "stripeClient",
83
+ "conditionSources": [
84
+ "example.StripeConfiguration#stripeClient"
85
+ ],
86
+ "sourceFile": "src/main/java/example/StripeConfiguration.java",
87
+ "sourceLine": 18
88
+ }
89
+ ]
90
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "springBootVersion": "4.1.1",
3
+ "timeline": {
4
+ "startTime": "2026-10-16T00:00:00Z",
5
+ "events": [
6
+ {
7
+ "startTime": "2026-10-16T00:00:00.000Z",
8
+ "endTime": "2026-10-16T00:00:00.900Z",
9
+ "duration": "PT0.9S",
10
+ "startupStep": {
11
+ "id": 1,
12
+ "name": "spring.boot.application.starting",
13
+ "tags": []
14
+ }
15
+ },
16
+ {
17
+ "startTime": "2026-10-16T00:00:00.100Z",
18
+ "endTime": "2026-10-16T00:00:00.800Z",
19
+ "duration": "PT0.7S",
20
+ "startupStep": {
21
+ "id": 2,
22
+ "name": "spring.beans.instantiate",
23
+ "tags": [
24
+ {
25
+ "key": "beanName",
26
+ "value": "orderService"
27
+ }
28
+ ],
29
+ "parentId": 1
30
+ }
31
+ },
32
+ {
33
+ "startTime": "2026-10-16T00:00:00.200Z",
34
+ "endTime": "2026-10-16T00:00:00.400Z",
35
+ "duration": "PT0.2S",
36
+ "startupStep": {
37
+ "id": 3,
38
+ "name": "spring.context.base-packages.scan",
39
+ "tags": [],
40
+ "parentId": 2
41
+ }
42
+ }
43
+ ]
44
+ }
45
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "schemaVersion": "2",
3
+ "status": "ok",
4
+ "source": {
5
+ "targetId": "local",
6
+ "snapshotId": "fixture-snapshot",
7
+ "observedAt": "2026-10-16T00:00:00Z",
8
+ "endpointIds": [
9
+ "startup"
10
+ ],
11
+ "bootVersion": null,
12
+ "adapterVersion": "fixture-1",
13
+ "policyVersion": "fixture-1"
14
+ },
15
+ "data": {
16
+ "springBootVersion": "3.4.13",
17
+ "totalDurationMs": 900,
18
+ "durationBasis": "timelineSpan",
19
+ "timelineComplete": true,
20
+ "items": [
21
+ {
22
+ "id": "item_1",
23
+ "endpointId": "startup",
24
+ "observationId": "fixture_observation",
25
+ "stepId": "2",
26
+ "parentStepId": "1",
27
+ "name": "spring.beans.instantiate",
28
+ "startedAt": "2026-10-16T00:00:00.100Z",
29
+ "durationNanos": "700000000",
30
+ "durationMs": 700,
31
+ "tags": [
32
+ {
33
+ "key": "beanName",
34
+ "value": "orderService"
35
+ }
36
+ ],
37
+ "ancestorIds": [
38
+ "1"
39
+ ],
40
+ "relationState": "resolved",
41
+ "bottleneckCode": "BEAN_INSTANTIATION"
42
+ }
43
+ ]
44
+ },
45
+ "totalMatched": 1,
46
+ "truncated": false,
47
+ "truncationReasons": [],
48
+ "coverage": {
49
+ "state": "complete",
50
+ "scope": "contract_fixture",
51
+ "gaps": []
52
+ },
53
+ "warnings": [],
54
+ "redactions": [],
55
+ "nextCursor": null,
56
+ "nextAction": {
57
+ "kind": "done",
58
+ "reasonCode": "COMPLETE",
59
+ "filterSuggestions": []
60
+ },
61
+ "errors": []
62
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "schemaVersion": "2",
3
+ "status": "ok",
4
+ "source": {
5
+ "targetId": "local",
6
+ "snapshotId": "fixture-snapshot",
7
+ "observedAt": "2026-10-16T00:00:00Z",
8
+ "endpointIds": [
9
+ "flyway"
10
+ ],
11
+ "bootVersion": null,
12
+ "adapterVersion": "fixture-1",
13
+ "policyVersion": "fixture-1"
14
+ },
15
+ "data": {
16
+ "pendingVisibility": "unknown",
17
+ "items": [
18
+ {
19
+ "id": "item_1",
20
+ "endpointId": "flyway",
21
+ "observationId": "fixture_observation",
22
+ "contextId": "application",
23
+ "parentContextId": null,
24
+ "engine": "flyway",
25
+ "migrationBean": "ordersFlyway",
26
+ "identity": "ordersFlyway:1",
27
+ "script": "V1__create_tables.sql",
28
+ "changeLog": null,
29
+ "changeSetId": null,
30
+ "author": null,
31
+ "version": "1",
32
+ "description": null,
33
+ "checksum": "12345",
34
+ "checksumType": "number",
35
+ "checksumAlgorithm": null,
36
+ "executionTimeMs": 12,
37
+ "orderExecuted": 1,
38
+ "executedAt": "2026-10-16T00:00:00Z",
39
+ "rawState": "SUCCESS",
40
+ "state": "APPLIED",
41
+ "stateEvidence": "reported",
42
+ "attentionRequired": false
43
+ }
44
+ ]
45
+ },
46
+ "totalMatched": 1,
47
+ "truncated": false,
48
+ "truncationReasons": [],
49
+ "coverage": {
50
+ "state": "complete",
51
+ "scope": "contract_fixture",
52
+ "gaps": []
53
+ },
54
+ "warnings": [],
55
+ "redactions": [],
56
+ "nextCursor": null,
57
+ "nextAction": {
58
+ "kind": "done",
59
+ "reasonCode": "COMPLETE",
60
+ "filterSuggestions": []
61
+ },
62
+ "errors": []
63
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "schemaVersion": "2",
3
+ "status": "ok",
4
+ "source": {
5
+ "targetId": "local",
6
+ "snapshotId": "fixture-snapshot",
7
+ "observedAt": "2026-10-16T00:00:00Z",
8
+ "endpointIds": [
9
+ "beans",
10
+ "env"
11
+ ],
12
+ "bootVersion": null,
13
+ "adapterVersion": "fixture-1",
14
+ "policyVersion": "fixture-1"
15
+ },
16
+ "data": {
17
+ "missingInRuntime": [
18
+ {
19
+ "id": "diff_1",
20
+ "dimension": "beans",
21
+ "identity": "application:expectedService",
22
+ "contextId": "application",
23
+ "expected": "present",
24
+ "actual": "absent",
25
+ "evidenceLevel": "observed",
26
+ "affectedDependencyIds": []
27
+ }
28
+ ],
29
+ "unexpectedInRuntime": [],
30
+ "profileMismatch": {
31
+ "expected": [
32
+ "dev"
33
+ ],
34
+ "actual": [
35
+ "dev"
36
+ ],
37
+ "state": "match"
38
+ },
39
+ "rootCauseInferences": [
40
+ {
41
+ "code": "INSUFFICIENT_EVIDENCE",
42
+ "confidence": "unknown",
43
+ "evidenceIds": []
44
+ }
45
+ ]
46
+ },
47
+ "totalMatched": 1,
48
+ "truncated": false,
49
+ "truncationReasons": [],
50
+ "coverage": {
51
+ "state": "complete",
52
+ "scope": "contract_fixture",
53
+ "gaps": []
54
+ },
55
+ "warnings": [],
56
+ "redactions": [],
57
+ "nextCursor": null,
58
+ "nextAction": {
59
+ "kind": "done",
60
+ "reasonCode": "COMPLETE",
61
+ "filterSuggestions": []
62
+ },
63
+ "errors": []
64
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "schemaVersion": "2",
3
+ "status": "ok",
4
+ "source": {
5
+ "targetId": "local",
6
+ "snapshotId": "fixture-snapshot",
7
+ "observedAt": "2026-10-16T00:00:00Z",
8
+ "endpointIds": [
9
+ "health"
10
+ ],
11
+ "bootVersion": null,
12
+ "adapterVersion": "fixture-1",
13
+ "policyVersion": "fixture-1"
14
+ },
15
+ "data": {
16
+ "overallStatus": "DOWN",
17
+ "activeGroup": "application",
18
+ "items": [
19
+ {
20
+ "id": "item_1",
21
+ "endpointId": "health",
22
+ "observationId": "fixture_observation",
23
+ "componentPath": [
24
+ "db"
25
+ ],
26
+ "parentId": null,
27
+ "status": "DOWN",
28
+ "details": [
29
+ {
30
+ "name": "database",
31
+ "value": "H2"
32
+ }
33
+ ],
34
+ "errorType": "java.sql.SQLException",
35
+ "remediationCodes": [
36
+ "REVIEW_DATABASE_CONNECTIVITY"
37
+ ],
38
+ "childrenComplete": true
39
+ }
40
+ ]
41
+ },
42
+ "totalMatched": 1,
43
+ "truncated": false,
44
+ "truncationReasons": [],
45
+ "coverage": {
46
+ "state": "complete",
47
+ "scope": "contract_fixture",
48
+ "gaps": []
49
+ },
50
+ "warnings": [],
51
+ "redactions": [],
52
+ "nextCursor": null,
53
+ "nextAction": {
54
+ "kind": "done",
55
+ "reasonCode": "COMPLETE",
56
+ "filterSuggestions": []
57
+ },
58
+ "errors": []
59
+ }