graphcheck 0.3.0__tar.gz → 0.4.0__tar.gz

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 (269) hide show
  1. {graphcheck-0.3.0 → graphcheck-0.4.0}/.gitignore +1 -0
  2. {graphcheck-0.3.0 → graphcheck-0.4.0}/CHANGELOG.md +154 -0
  3. {graphcheck-0.3.0 → graphcheck-0.4.0}/PKG-INFO +19 -7
  4. {graphcheck-0.3.0 → graphcheck-0.4.0}/README.md +18 -6
  5. graphcheck-0.4.0/docs/schemas/results-1.0.schema.json +715 -0
  6. graphcheck-0.4.0/docs/schemas/results-1.1.schema.json +742 -0
  7. graphcheck-0.3.0/docs/schemas/results.schema.json → graphcheck-0.4.0/docs/schemas/results-1.2.schema.json +5 -5
  8. {graphcheck-0.3.0 → graphcheck-0.4.0}/pyproject.toml +17 -0
  9. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/__init__.py +1 -1
  10. graphcheck-0.4.0/src/graphcheck/application/artifacts.py +218 -0
  11. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/application/run.py +63 -28
  12. graphcheck-0.4.0/src/graphcheck/application/suites.py +86 -0
  13. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/baselines.py +27 -12
  14. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/cli.py +121 -86
  15. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/connection_profiles.py +13 -21
  16. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/contracts/check.py +24 -3
  17. graphcheck-0.4.0/src/graphcheck/contracts/historical_results.py +34 -0
  18. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/contracts/profile.py +31 -3
  19. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/contracts/results.py +13 -1
  20. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/contracts/schemas.py +0 -35
  21. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/diff.py +83 -4
  22. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/engine/baseline.py +95 -23
  23. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/engine/compiler.py +191 -3
  24. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/engine/core_pack.py +29 -10
  25. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/engine/evaluator.py +313 -44
  26. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/engine/executor.py +0 -4
  27. graphcheck-0.4.0/src/graphcheck/engine/graphrag_pack.py +449 -0
  28. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/engine/identifiers.py +2 -1
  29. graphcheck-0.4.0/src/graphcheck/engine/limits.py +18 -0
  30. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/engine/parameters.py +2 -32
  31. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/engine/pii_pack.py +13 -15
  32. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/engine/runner.py +300 -64
  33. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/mcp/adapter.py +9 -2
  34. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/neo4j_adapter.py +66 -21
  35. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/packs/__init__.py +12 -1
  36. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/packs/catalog.py +3 -0
  37. graphcheck-0.4.0/src/graphcheck/packs/graphrag.py +97 -0
  38. graphcheck-0.4.0/src/graphcheck/packs/graphrag.yml +68 -0
  39. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/packs/metadata.py +68 -2
  40. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/profiler.py +311 -11
  41. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/project.py +65 -10
  42. graphcheck-0.4.0/src/graphcheck/provenance.py +9 -0
  43. graphcheck-0.4.0/src/graphcheck/reporting/changes.py +236 -0
  44. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/reporting/explorer.py +33 -13
  45. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/reporting/history.py +270 -76
  46. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/reporting/presentation.py +3 -0
  47. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/reporting/redaction.py +20 -10
  48. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/reporting/writer.py +34 -3
  49. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/policy.py +1 -16
  50. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/posthog.py +9 -2
  51. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/yaml_loader.py +2 -2
  52. graphcheck-0.3.0/.gitattributes +0 -2
  53. graphcheck-0.3.0/.github/CODEOWNERS +0 -2
  54. graphcheck-0.3.0/.github/ISSUE_TEMPLATE/bug_report.md +0 -30
  55. graphcheck-0.3.0/.github/ISSUE_TEMPLATE/deliverable.md +0 -15
  56. graphcheck-0.3.0/.github/ISSUE_TEMPLATE/docs.md +0 -19
  57. graphcheck-0.3.0/.github/ISSUE_TEMPLATE/feature_request.md +0 -18
  58. graphcheck-0.3.0/.github/pull_request_template.md +0 -16
  59. graphcheck-0.3.0/.github/scripts/first-run.sh +0 -107
  60. graphcheck-0.3.0/.github/scripts/first_run_evidence.py +0 -403
  61. graphcheck-0.3.0/.github/workflows/ci.yml +0 -144
  62. graphcheck-0.3.0/.github/workflows/extended-ci.yml +0 -232
  63. graphcheck-0.3.0/.github/workflows/graphcheck.yml +0 -35
  64. graphcheck-0.3.0/.github/workflows/hostile-scale.yml +0 -26
  65. graphcheck-0.3.0/.github/workflows/release.yml +0 -73
  66. graphcheck-0.3.0/.gitmodules +0 -3
  67. graphcheck-0.3.0/.pre-commit-config.yaml +0 -7
  68. graphcheck-0.3.0/.python-version +0 -1
  69. graphcheck-0.3.0/CONTRIBUTING.md +0 -115
  70. graphcheck-0.3.0/docs/README.md +0 -9
  71. graphcheck-0.3.0/docs/assets/graphcheck-demo.gif +0 -0
  72. graphcheck-0.3.0/docs/getting-started/quickstart.md +0 -30
  73. graphcheck-0.3.0/docs/guides/agents.md +0 -275
  74. graphcheck-0.3.0/docs/guides/ci-cd.md +0 -400
  75. graphcheck-0.3.0/docs/guides/github-actions.md +0 -87
  76. graphcheck-0.3.0/docs/guides/troubleshooting.md +0 -73
  77. graphcheck-0.3.0/docs/guides/user-guide.md +0 -484
  78. graphcheck-0.3.0/docs/llms.txt +0 -94
  79. graphcheck-0.3.0/docs/maintainers/ci.md +0 -97
  80. graphcheck-0.3.0/docs/maintainers/clean-machine-test.md +0 -105
  81. graphcheck-0.3.0/docs/maintainers/releasing.md +0 -56
  82. graphcheck-0.3.0/docs/reference/checks.md +0 -161
  83. graphcheck-0.3.0/docs/reference/compatibility.md +0 -66
  84. graphcheck-0.3.0/docs/reference/telemetry.md +0 -259
  85. graphcheck-0.3.0/docs/samples/report-clean.html +0 -12
  86. graphcheck-0.3.0/docs/samples/report-findings.html +0 -12
  87. graphcheck-0.3.0/docs/samples/reports/report-clean.html +0 -1530
  88. graphcheck-0.3.0/docs/samples/reports/report-findings.html +0 -1530
  89. graphcheck-0.3.0/docs/schemas/check.envelope.schema.json +0 -404
  90. graphcheck-0.3.0/docs/schemas/check.schema.json +0 -1130
  91. graphcheck-0.3.0/docs/schemas/pack.schema.json +0 -604
  92. graphcheck-0.3.0/docs/schemas/profile.schema.json +0 -419
  93. graphcheck-0.3.0/docs/specifications/spec-01-results-json.md +0 -173
  94. graphcheck-0.3.0/docs/specifications/spec-02-check-yaml.md +0 -102
  95. graphcheck-0.3.0/docs/specifications/spec-03-connector.md +0 -331
  96. graphcheck-0.3.0/docs/specifications/spec-04-engine.md +0 -688
  97. graphcheck-0.3.0/docs/specifications/spec-05-profiler-baseline.md +0 -397
  98. graphcheck-0.3.0/docs/specifications/spec-06-scorer-html-report.md +0 -453
  99. graphcheck-0.3.0/docs/specifications/spec-09-packs.md +0 -393
  100. graphcheck-0.3.0/docs/specifications/spec-10-telemetry-events.md +0 -790
  101. graphcheck-0.3.0/docs/specifications/spec-11-generate.md +0 -1286
  102. graphcheck-0.3.0/docs/specifications/spec-12-observability-support.md +0 -417
  103. graphcheck-0.3.0/examples/README.md +0 -8
  104. graphcheck-0.3.0/examples/fraud-ring/README.md +0 -84
  105. graphcheck-0.3.0/examples/fraud-ring/checks/fraud-ring-conformance.yml +0 -19
  106. graphcheck-0.3.0/examples/fraud-ring/checks/smoke.yml +0 -7
  107. graphcheck-0.3.0/examples/fraud-ring/compose.yml +0 -57
  108. graphcheck-0.3.0/examples/fraud-ring/graphcheck.yml +0 -4
  109. graphcheck-0.3.0/examples/fraud-ring/profiles.example.yml +0 -16
  110. graphcheck-0.3.0/examples/minimal/README.md +0 -17
  111. graphcheck-0.3.0/examples/minimal/checks/example.yml +0 -13
  112. graphcheck-0.3.0/examples/minimal/graphcheck.yml +0 -4
  113. graphcheck-0.3.0/examples/minimal/optional-checks/customer-count-drift.yml +0 -8
  114. graphcheck-0.3.0/examples/minimal/profiles.example.yml +0 -8
  115. graphcheck-0.3.0/examples/monitoring/README.md +0 -71
  116. graphcheck-0.3.0/examples/monitoring/compose.yml +0 -35
  117. graphcheck-0.3.0/examples/monitoring/grafana/dashboards/graphcheck-database-health.json +0 -229
  118. graphcheck-0.3.0/examples/monitoring/grafana/provisioning/dashboards/dashboards.yml +0 -11
  119. graphcheck-0.3.0/examples/monitoring/grafana/provisioning/datasources/prometheus-datasource.yml +0 -9
  120. graphcheck-0.3.0/examples/monitoring/prometheus/README.md +0 -21
  121. graphcheck-0.3.0/examples/monitoring/prometheus/prometheus.yml +0 -13
  122. graphcheck-0.3.0/src/graphcheck/application/artifacts.py +0 -145
  123. graphcheck-0.3.0/src/graphcheck/application/suites.py +0 -44
  124. graphcheck-0.3.0/tests/__init__.py +0 -1
  125. graphcheck-0.3.0/tests/conftest.py +0 -198
  126. graphcheck-0.3.0/tests/integration/conftest.py +0 -62
  127. graphcheck-0.3.0/tests/integration/hostile/README.md +0 -41
  128. graphcheck-0.3.0/tests/integration/hostile/apoc-less.yml +0 -10
  129. graphcheck-0.3.0/tests/integration/hostile/cases.yml +0 -42
  130. graphcheck-0.3.0/tests/integration/hostile/empty.yml +0 -6
  131. graphcheck-0.3.0/tests/integration/hostile/llm-kg-builder.cypher +0 -71
  132. graphcheck-0.3.0/tests/integration/hostile/llm-kg-builder.yml +0 -14
  133. graphcheck-0.3.0/tests/integration/hostile/neo4j-44-cluster.yml +0 -62
  134. graphcheck-0.3.0/tests/integration/hostile/public-scale.yml +0 -6
  135. graphcheck-0.3.0/tests/integration/test_generate_integration.py +0 -211
  136. graphcheck-0.3.0/tests/integration/test_generate_live.py +0 -56
  137. graphcheck-0.3.0/tests/integration/test_hostile_graphs.py +0 -376
  138. graphcheck-0.3.0/tests/integration/test_integration_engine.py +0 -279
  139. graphcheck-0.3.0/tests/integration/test_integration_neo4j_adapter.py +0 -280
  140. graphcheck-0.3.0/tests/integration/test_mcp_agent_surface.py +0 -59
  141. graphcheck-0.3.0/tests/integration/test_mcp_failure_isolation.py +0 -189
  142. graphcheck-0.3.0/tests/integration/test_mcp_neo4j_workflow.py +0 -78
  143. graphcheck-0.3.0/tests/integration/test_performance_plans.py +0 -235
  144. graphcheck-0.3.0/tests/performance/__init__.py +0 -1
  145. graphcheck-0.3.0/tests/performance/budgets.json +0 -50
  146. graphcheck-0.3.0/tests/performance/gates.py +0 -118
  147. graphcheck-0.3.0/tests/performance/helpers.py +0 -322
  148. graphcheck-0.3.0/tests/performance/test_cli_startup.py +0 -138
  149. graphcheck-0.3.0/tests/performance/test_engine_budget.py +0 -335
  150. graphcheck-0.3.0/tests/performance/test_measurement_helpers.py +0 -126
  151. graphcheck-0.3.0/tests/performance/test_memory_gates.py +0 -119
  152. graphcheck-0.3.0/tests/performance/test_regression_gates.py +0 -76
  153. graphcheck-0.3.0/tests/property/test_evaluator_properties.py +0 -321
  154. graphcheck-0.3.0/tests/repository/test_ci_action_boundary.py +0 -19
  155. graphcheck-0.3.0/tests/repository/test_docker_quickstart.py +0 -102
  156. graphcheck-0.3.0/tests/repository/test_first_run_evidence.py +0 -174
  157. graphcheck-0.3.0/tests/repository/test_hostile_manifest.py +0 -66
  158. graphcheck-0.3.0/tests/repository/test_minimal_example.py +0 -31
  159. graphcheck-0.3.0/tests/repository/test_packaging.py +0 -16
  160. graphcheck-0.3.0/tests/repository/test_sample_reports.py +0 -305
  161. graphcheck-0.3.0/tests/unit/application/test_baselines.py +0 -215
  162. graphcheck-0.3.0/tests/unit/application/test_debug_diagnostics.py +0 -223
  163. graphcheck-0.3.0/tests/unit/application/test_diff.py +0 -303
  164. graphcheck-0.3.0/tests/unit/application/test_profiler.py +0 -889
  165. graphcheck-0.3.0/tests/unit/application/test_project_profiles.py +0 -261
  166. graphcheck-0.3.0/tests/unit/cli/test_cli.py +0 -1148
  167. graphcheck-0.3.0/tests/unit/cli/test_cli_lazy_imports.py +0 -198
  168. graphcheck-0.3.0/tests/unit/cli/test_generate_cli.py +0 -104
  169. graphcheck-0.3.0/tests/unit/cli/test_monitor_cli.py +0 -124
  170. graphcheck-0.3.0/tests/unit/cli/test_run_cli.py +0 -1716
  171. graphcheck-0.3.0/tests/unit/connectors/test_neo4j_adapter.py +0 -2177
  172. graphcheck-0.3.0/tests/unit/contracts/fixtures/agent-suite.yml +0 -20
  173. graphcheck-0.3.0/tests/unit/contracts/fixtures/baseline.json +0 -114
  174. graphcheck-0.3.0/tests/unit/contracts/fixtures/results.clean.json +0 -124
  175. graphcheck-0.3.0/tests/unit/contracts/fixtures/results.complete.json +0 -191
  176. graphcheck-0.3.0/tests/unit/contracts/fixtures/results.complete.rendered.json +0 -191
  177. graphcheck-0.3.0/tests/unit/contracts/fixtures/results.failed.json +0 -39
  178. graphcheck-0.3.0/tests/unit/contracts/fixtures/results.generated-only.json +0 -94
  179. graphcheck-0.3.0/tests/unit/contracts/fixtures/results.partial.json +0 -122
  180. graphcheck-0.3.0/tests/unit/contracts/fixtures/suite.invalid-bad-expect.yml +0 -6
  181. graphcheck-0.3.0/tests/unit/contracts/fixtures/suite.invalid-duplicate-key.yml +0 -2
  182. graphcheck-0.3.0/tests/unit/contracts/fixtures/suite.invalid-unknown-check.yml +0 -5
  183. graphcheck-0.3.0/tests/unit/contracts/fixtures/suite.invalid-unknown-key.yml +0 -6
  184. graphcheck-0.3.0/tests/unit/contracts/fixtures/suite.valid.yml +0 -21
  185. graphcheck-0.3.0/tests/unit/contracts/test_agents_example.py +0 -13
  186. graphcheck-0.3.0/tests/unit/contracts/test_check_validation.py +0 -642
  187. graphcheck-0.3.0/tests/unit/contracts/test_profile.py +0 -305
  188. graphcheck-0.3.0/tests/unit/contracts/test_results.py +0 -474
  189. graphcheck-0.3.0/tests/unit/engine/test_baseline.py +0 -362
  190. graphcheck-0.3.0/tests/unit/engine/test_compiler.py +0 -240
  191. graphcheck-0.3.0/tests/unit/engine/test_core_pack_compiler.py +0 -363
  192. graphcheck-0.3.0/tests/unit/engine/test_evaluator.py +0 -867
  193. graphcheck-0.3.0/tests/unit/engine/test_executor.py +0 -153
  194. graphcheck-0.3.0/tests/unit/engine/test_identifiers.py +0 -37
  195. graphcheck-0.3.0/tests/unit/engine/test_packs.py +0 -607
  196. graphcheck-0.3.0/tests/unit/engine/test_parameters.py +0 -176
  197. graphcheck-0.3.0/tests/unit/engine/test_pii_pack_runtime.py +0 -555
  198. graphcheck-0.3.0/tests/unit/engine/test_runner.py +0 -1160
  199. graphcheck-0.3.0/tests/unit/engine/test_sampling.py +0 -276
  200. graphcheck-0.3.0/tests/unit/engine/test_sampling_runner.py +0 -177
  201. graphcheck-0.3.0/tests/unit/engine/test_scoring.py +0 -144
  202. graphcheck-0.3.0/tests/unit/generation/test_client.py +0 -548
  203. graphcheck-0.3.0/tests/unit/generation/test_generation.py +0 -361
  204. graphcheck-0.3.0/tests/unit/generation/test_service.py +0 -372
  205. graphcheck-0.3.0/tests/unit/mcp/test_mcp_adapter.py +0 -37
  206. graphcheck-0.3.0/tests/unit/observability/__init__.py +0 -1
  207. graphcheck-0.3.0/tests/unit/observability/test_collector.py +0 -253
  208. graphcheck-0.3.0/tests/unit/observability/test_health.py +0 -104
  209. graphcheck-0.3.0/tests/unit/observability/test_monitoring_config.py +0 -89
  210. graphcheck-0.3.0/tests/unit/observability/test_runner.py +0 -30
  211. graphcheck-0.3.0/tests/unit/observability/test_server.py +0 -23
  212. graphcheck-0.3.0/tests/unit/reporting/test_coverage.py +0 -25
  213. graphcheck-0.3.0/tests/unit/reporting/test_redaction.py +0 -251
  214. graphcheck-0.3.0/tests/unit/reporting/test_report_explorer.py +0 -286
  215. graphcheck-0.3.0/tests/unit/reporting/test_report_history.py +0 -485
  216. graphcheck-0.3.0/tests/unit/reporting/test_reporting.py +0 -1147
  217. graphcheck-0.3.0/tests/unit/reporting/test_result_presentation.py +0 -246
  218. graphcheck-0.3.0/tests/unit/telemetry/test_boundary_payloads.py +0 -190
  219. graphcheck-0.3.0/tests/unit/telemetry/test_cli_boundary_integration.py +0 -804
  220. graphcheck-0.3.0/tests/unit/telemetry/test_cli_controls.py +0 -146
  221. graphcheck-0.3.0/tests/unit/telemetry/test_engine_events.py +0 -302
  222. graphcheck-0.3.0/tests/unit/telemetry/test_events.py +0 -171
  223. graphcheck-0.3.0/tests/unit/telemetry/test_policy.py +0 -165
  224. graphcheck-0.3.0/tests/unit/telemetry/test_posthog.py +0 -171
  225. graphcheck-0.3.0/tests/unit/telemetry/test_privacy_properties.py +0 -54
  226. graphcheck-0.3.0/tests/unit/telemetry/test_transparency_doc.py +0 -38
  227. graphcheck-0.3.0/tools/generate_sample_reports.py +0 -375
  228. graphcheck-0.3.0/tools/run_hostile_graphs.py +0 -54
  229. graphcheck-0.3.0/uv.lock +0 -2294
  230. {graphcheck-0.3.0 → graphcheck-0.4.0}/LICENSE +0 -0
  231. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/application/__init__.py +0 -0
  232. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/application/paths.py +0 -0
  233. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/bootstrap.py +0 -0
  234. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/contracts/__init__.py +0 -0
  235. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/contracts/scalars.py +0 -0
  236. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/debug_diagnostics.py +0 -0
  237. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/engine/__init__.py +0 -0
  238. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/engine/sampling.py +0 -0
  239. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/errors.py +0 -0
  240. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/generation/__init__.py +0 -0
  241. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/generation/client.py +0 -0
  242. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/generation/config.py +0 -0
  243. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/generation/disclosure.py +0 -0
  244. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/generation/prompts.py +0 -0
  245. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/generation/proposals.py +0 -0
  246. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/generation/service.py +0 -0
  247. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/generation/transmission.py +0 -0
  248. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/generation/writer.py +0 -0
  249. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/mcp/server.py +0 -0
  250. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/observability/__init__.py +0 -0
  251. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/observability/collector.py +0 -0
  252. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/observability/health.py +0 -0
  253. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/observability/metrics.py +0 -0
  254. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/observability/runner.py +0 -0
  255. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/observability/server.py +0 -0
  256. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/packs/core.yml +0 -0
  257. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/packs/pii.yml +0 -0
  258. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/reporting/__init__.py +0 -0
  259. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/reporting/coverage.py +0 -0
  260. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/reporting/html.py +0 -0
  261. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/scoring.py +0 -0
  262. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/__init__.py +0 -0
  263. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/collector.py +0 -0
  264. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/consent.py +0 -0
  265. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/events.py +0 -0
  266. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/inactive.py +0 -0
  267. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/release.py +0 -0
  268. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/runtime.py +0 -0
  269. {graphcheck-0.3.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/types.py +0 -0
@@ -97,6 +97,7 @@ ipython_config.py
97
97
  # Pipfile.lock
98
98
 
99
99
  # UV
100
+ .uv-cache*/
100
101
  # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
101
102
  # This is especially recommended for binary packages to ensure reproducibility, and is more
102
103
  # commonly ignored for libraries.
@@ -2,6 +2,160 @@
2
2
 
3
3
  All notable changes to this project are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4
4
 
5
+ ## [0.4.0] - 2026-09-18
6
+
7
+ ### Added
8
+
9
+ - The agent guide and schema descriptions now explain regression value shapes, evidence identities,
10
+ and count scope, with a complete aggregate-witness example in the guide. Missing-evidence
11
+ diagnostics identify accepted element aliases and retain the failed assertion.
12
+
13
+ - Published a 10-million-node audit ceiling and sampling thresholds.
14
+ Larger graphs fail before check dispatch with `engine.graph_size_exceeded` and a
15
+ `Fix:` diagnostic; the reference 2 GiB transaction-memory limit cannot complete PII at 10M.
16
+
17
+ - Published the [artifact compatibility policy](docs/reference/artifact-compatibility.md), with
18
+ committed results fixtures for schemas 1.0, 1.1, 1.2, and 2.0 and archived 1.x JSON Schemas.
19
+ The policy includes a tested transformer that writes a validated 2.0 copy. Migration of 1.0/1.1
20
+ requires trusted historical inventory because those schemas did not record it.
21
+ - GraphRAG `chunk_coverage` reports the share of Chunks linked to at least one Entity against
22
+ a configurable threshold (default 0.95), naming entity-less Chunks in evidence.
23
+ `label_explosion` flags labels and relationship types across the whole schema at or below
24
+ a configurable threshold (default 1), reporting findings and node evidence; graphs under a
25
+ configurable minimum node count (default 50) are not evaluated rather than flagged, since a
26
+ small graph makes almost every label look like a singleton.
27
+ - After a comparable previous run, `summary.json` includes a compact `changes` block with new
28
+ failures, fixed checks, and node/relationship count deltas from the runs. Check lists retain
29
+ at most 20 entries each and report omitted counts; first runs and unavailable comparisons
30
+ omit the block. Artifact retries preserve the original block after history is pruned.
31
+ - Runs now include `previous_run_id`, `baseline_ref`, and `config_hash` in results schema 2.0,
32
+ with compatibility for older artifacts and a new lineage fixture. Profile references identify
33
+ the latest existing timestamped snapshot; running checks does not trigger profiling. History
34
+ summaries and `graphcheck report --history` show the previous-run links, assigned under the
35
+ publication lock for concurrent CLI and MCP runs. Redacted exports clear lineage metadata.
36
+ - Added `graphcheck changes [--since <run-id|previous>] [--json]` to combine check outcome,
37
+ coverage, suite-score, and profile deltas through the existing report comparison and profile
38
+ diff implementations. JSON is deterministic; exit codes distinguish no regressions (`0`),
39
+ regressions or new failures (`1`), and invalid or unavailable comparison inputs (`2`).
40
+ - Changes output includes appeared and disappeared evidence element IDs per check, sharing the
41
+ smaller input evidence cap across both directions, counting dropped deltas, and identifying
42
+ truncated input evidence. Added fraud-ring and public-scale hostile acceptance coverage.
43
+ - GraphRAG `embedding_consistency` checks every chunk for missing, invalid, empty, zero,
44
+ NaN-containing, and inconsistent-dimension embeddings. It uses the most frequent valid
45
+ dimension (smallest on ties) and returns exact counts plus capped element-ID, dimension,
46
+ and defect evidence without transferring vectors to Python.
47
+ - Hostile GraphRAG planted/clean cases with expected CLI exit codes, assertions identifying every
48
+ planted defect, and a copyable suite under `examples/graphrag/`. Singleton labels and uncovered
49
+ chunks remain fixture-only assertions. The public-scale hostile lane exercises all five checks
50
+ with a 60-second pack-run budget and verifies planted embedding defects over 265,214 nodes.
51
+ - Drift metrics `degree_distribution` (degree quantiles `p50`/`p95`/`max` per label, relationship
52
+ type, and direction, using `percentileDisc` and `COUNT { }` for Cypher 5/25 compatibility) and
53
+ `schema_inventory` (labels, relationship types, and label-scoped property names added or
54
+ removed since baseline, evaluated as the count of differences rather than net inventory size
55
+ so a simultaneous addition and removal cannot cancel out to zero). See
56
+ [SPEC-04](docs/specifications/spec-04-engine.md) and
57
+ [SPEC-05](docs/specifications/spec-05-profiler-baseline.md) for details.
58
+ - Optional GraphRAG pack enabled by `graphcheck init --pack graphrag`, with configurable
59
+ Document, Chunk, and Entity labels, relationship types/directions, extraction relationship
60
+ selection, and name/embedding properties in `graphcheck.yml`.
61
+ - GraphRAG provenance checks `orphan_chunks`, `entity_without_provenance`, and
62
+ `dangling_extraction_relationships`, with exhaustive counts, capped element-ID evidence,
63
+ and missing configured paths. Chunks may have multiple documents; entity provenance requires
64
+ a direct chunk link, and extraction relationships are flagged when either endpoint lacks one.
65
+ - Seeded `near_duplicate_entities` sampling with normalized-name equality or character-bigram
66
+ Dice similarity strictly above a configurable threshold (default 0.9). Connected duplicate
67
+ groups include normalized keys and element IDs. Samples default to 1,000 names, allow up to
68
+ 2,000 subject to engine limits, and exclude non-string names and names over 256 characters.
69
+ Sampled results state sample size/population without inferring a population confidence interval.
70
+ - GraphRAG metadata/schema validation, planted and clean builder fixtures, and opt-in fraud-ring
71
+ and public-scale acceptance coverage. [GraphRAG documentation](docs/graphrag.md) details the new
72
+ check semantics requiring separate approval.
73
+ - Added `engine.result_row_limit` project configuration, shared by CLI and MCP, with a default
74
+ ceiling of 100,000 competency rows and strict positive-integer validation.
75
+ - Baseline schema 1.1 preserves declared RANGE index property order while reading legacy 1.0
76
+ profiles with unknown order. Diff format 1.1 explains property inventory/type changes and
77
+ distinguishes newly available index-order metadata from known definition changes.
78
+
79
+ ### Changed
80
+
81
+ - Source distributions now contain only application sources, runtime compatibility schemas, and
82
+ release metadata/documentation. Repository tooling, tests, examples, and local caches are excluded.
83
+ - Schema file generation moves to `tools/generate_schemas.py`; runtime schema generation and
84
+ validation remain available. Removed unused Python helpers `default_profiles`, `print_profile`,
85
+ and `count_band`, plus the repository-only `SCHEMAS_DIR` constant and `write_*schema*` helpers
86
+ from `graphcheck.contracts.schemas`.
87
+
88
+ - Reading pre-2.0 results emits one `results.schema_deprecated` warning on stderr per artifact
89
+ read. Removal is planned for CLI 0.5.0, postponed while the current/previous-schema guarantee
90
+ requires support. The warning must ship at least one release before removal. Migrate saved
91
+ artifacts with the transformer above; current 2.0 reads and model revalidation stay quiet.
92
+ - GraphRAG checks report `skipped:model_absent` with an explicit reason when the model is
93
+ unconfigured or any configured role label has no nodes. Completed runs containing only these
94
+ skips exit 0 with a null score and incomplete report coverage. Missing relationship types remain
95
+ defects when role populations exist; actual execution errors remain errors. This new skip/exit
96
+ policy requires separate approval.
97
+ - `no_orphans` accepts optional `to_label` filtering for the opposite endpoint; omitting it
98
+ preserves existing behavior. This additional check semantic requires separate approval.
99
+ - Runs prepare suites once, prefer the C-backed safe YAML parser, and show loading, connecting,
100
+ running, and report-writing stages in interactive terminals.
101
+ - Graph inventory uses one combined request, and built-in same-label completeness checks share
102
+ bounded scans while retaining individual verdicts, evidence, and executed-query provenance.
103
+ - PII candidate selection orders eligible properties within each node while preserving its
104
+ deterministic sampling inputs and final sample ordering.
105
+ - Optional telemetry delivery gets a 50 ms command-exit allowance and pending events may be dropped.
106
+ - Report IDs include a unique component; redacted exports use independent random identifiers.
107
+ Existing history names remain readable, and identical artifact publication can be retried.
108
+ - Corrected read-consistency documentation: measurement and evidence share a transaction and
109
+ deadline, but Neo4j read-committed isolation permits concurrent writes to change observations.
110
+
111
+ ### Fixed
112
+
113
+ - Redaction preserves historical results schema context: 1.0/1.1 artifacts retain unknown
114
+ inventory and 1.2 artifacts keep their original version when exported by `graphcheck redact`.
115
+ - Historical results are validated against their declared archived JSON Schema before
116
+ normalization, rejecting fields and enum values introduced by later schemas. Installed wheels
117
+ include the same contracts.
118
+ - Historical exports also validate the final payload before serialization, rejecting incompatible
119
+ model mutations such as aggregate evidence in schema 1.0 before writing any output file.
120
+ - Schema 1.0 exports always omit graph counts, even if a loaded model was subsequently populated.
121
+ Schema 1.1 exports preserve recorded counts and omit unknown (null) counts.
122
+ - Run configuration hashes include the authenticated username so permission changes between
123
+ users have distinct provenance, while passwords and password environment variables stay excluded.
124
+ - Integration CI initializes the pinned fraud-ring fixture submodule for every Neo4j target,
125
+ so the changes acceptance test can load its Cypher parser and seed data.
126
+ - The fraud-ring changes acceptance test uses the explicit `node_element_id` evidence alias,
127
+ so its planted tax-ID finding fails with evidence and then passes after the repair.
128
+ - GraphRAG embedding consistency accepts stored numeric arrays on Neo4j 5.26 LTS by using
129
+ concrete non-null integer/float list predicates. GraphRAG integration tests now run in every
130
+ supported CI lane, including stored integer, float, and mixed-numeric embedding regressions.
131
+ - Drift checks retain partial run status when using present measurements from incomplete
132
+ baselines, without changing their measured verdict or exit-code precedence.
133
+ - Connection and credential preflight now share the run deadline with check execution.
134
+ - Baseline references and parsed snapshots are pinned per run, and snapshots/selection metadata
135
+ are published atomically so interrupted writes cannot become selectable partial files.
136
+ - Distinct runs cannot overwrite history on timestamp collisions. Managed report readers now
137
+ coordinate with publication/deletion and retain access to healthy records beside corrupt ones.
138
+ - Pruning uses compact summaries instead of retaining full historical results, and partial
139
+ profiles preserve successfully collected relationship counts and property coverage.
140
+ - Equality checks stop on decisive unexpected values or excess duplicates while preserving bag
141
+ semantics, honest partial-stream measurements, and graph-evidence requirements.
142
+ - Escaped Unicode-encoded backticks in schema identifiers and shared the same escaping between
143
+ check compilation and profiling to prevent identifiers from changing the generated Cypher.
144
+ - Configuration errors no longer echo input values or YAML source snippets, connection profile
145
+ representations hide passwords, and project/profile files reject duplicate mapping keys.
146
+ - Missing requested suites now make a run partial with an actionable diagnostic, including when
147
+ the other requested suites pass.
148
+ - Read preflights now reject missing-schema warnings before bounded queries can stop early;
149
+ permissive empty-graph preflights cannot satisfy a stricter cached read.
150
+ - Competency assertions compare every field of ordinary result maps, including maps resembling
151
+ evidence pointers, and graph properties cannot override actual Neo4j element identities.
152
+ - Reduced `contains` assertion work from repeated scans to hash-based membership in both streaming
153
+ and final evaluation while preserving typed value comparisons.
154
+ - Report deletion and pruning now share the publication lock so history mutations cannot race
155
+ with publication or restoration of the `latest` report.
156
+ - The local report explorer rejects malformed authentication without crashing, responds to
157
+ unauthorized requests without waiting for their bodies, and limits socket inactivity.
158
+
5
159
  ## [0.3.0] - 2026-09-04
6
160
 
7
161
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: graphcheck
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: Semantic observability for property graphs.
5
5
  Project-URL: Homepage, https://github.com/graphora/graphcheck
6
6
  Project-URL: Repository, https://github.com/graphora/graphcheck
@@ -40,7 +40,7 @@ Description-Content-Type: text/markdown
40
40
 
41
41
  # GraphCheck
42
42
 
43
- [![Release](https://img.shields.io/badge/release-v0.2.0-5b5bd6)](https://github.com/graphora/graphcheck/releases)
43
+ [![Release](https://img.shields.io/badge/release-v0.4.0-5b5bd6)](https://github.com/graphora/graphcheck/releases)
44
44
  [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13%20%7C%203.14-3776ab)](https://www.python.org/)
45
45
  [![License](https://img.shields.io/badge/license-Apache--2.0-2ea44f)](LICENSE)
46
46
 
@@ -72,6 +72,8 @@ the **[full user guide](docs/guides/user-guide.md)**.
72
72
 
73
73
  GraphCheck requires Python 3.12, 3.13, or 3.14 and a supported Neo4j server. See the
74
74
  [compatibility matrix](docs/reference/compatibility.md) for the tested Neo4j and Cypher versions.
75
+ The audit ceiling is **10 million nodes**, see [supported graph size](docs/reference/compatibility.md#supported-graph-size)
76
+ for measured runtimes, sampling, and the transaction-memory limitation observed with PII at 10M.
75
77
 
76
78
  Install the published CLI and scaffold a project:
77
79
 
@@ -190,11 +192,21 @@ Suite YAML is strict: duplicate keys, unknown fields, invalid payloads, and inco
190
192
  fail before execution. Runtime evaluation is rule-based; generated check suggestions remain inert
191
193
  until a person reviews and activates them.
192
194
 
193
- For the full contracts, see the [check YAML specification](docs/specifications/spec-02-check-yaml.md),
194
- [`results.json` specification](docs/specifications/spec-01-results-json.md), and
195
- [engine and CLI specification](docs/specifications/spec-04-engine.md). The
196
- [agent guide](docs/guides/agents.md), [telemetry disclosure](docs/reference/telemetry.md),
197
- and [contributor guide](CONTRIBUTING.md) cover integration and operational workflows.
195
+ For document/chunk/entity graphs, enable the optional [GraphRAG pack](docs/graphrag.md) with
196
+ `graphcheck init --pack graphrag`. It checks provenance, embedding consistency, and sampled duplicate names using your
197
+ configured labels, relationships, and properties.
198
+
199
+ For authoring and execution details, see the [user guide](docs/guides/user-guide.md) and
200
+ [JSON Schemas](docs/schemas/). The [agent guide](docs/guides/agents.md),
201
+ [telemetry disclosure](docs/reference/telemetry.md), and [contributor guide](CONTRIBUTING.md)
202
+ cover integration and operational workflows.
203
+
204
+ ## Support
205
+
206
+ See the [Neo4j compatibility matrix](docs/reference/compatibility.md) for supported servers and
207
+ the [artifact compatibility policy](docs/reference/artifact-compatibility.md) for schema support,
208
+ deprecation deadlines, and migration of saved `results.json` files. Schema versions are independent
209
+ of CLI versions; the current and previous schemas remain readable.
198
210
 
199
211
  ## Non-goals
200
212
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # GraphCheck
4
4
 
5
- [![Release](https://img.shields.io/badge/release-v0.2.0-5b5bd6)](https://github.com/graphora/graphcheck/releases)
5
+ [![Release](https://img.shields.io/badge/release-v0.4.0-5b5bd6)](https://github.com/graphora/graphcheck/releases)
6
6
  [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13%20%7C%203.14-3776ab)](https://www.python.org/)
7
7
  [![License](https://img.shields.io/badge/license-Apache--2.0-2ea44f)](LICENSE)
8
8
 
@@ -34,6 +34,8 @@ the **[full user guide](docs/guides/user-guide.md)**.
34
34
 
35
35
  GraphCheck requires Python 3.12, 3.13, or 3.14 and a supported Neo4j server. See the
36
36
  [compatibility matrix](docs/reference/compatibility.md) for the tested Neo4j and Cypher versions.
37
+ The audit ceiling is **10 million nodes**, see [supported graph size](docs/reference/compatibility.md#supported-graph-size)
38
+ for measured runtimes, sampling, and the transaction-memory limitation observed with PII at 10M.
37
39
 
38
40
  Install the published CLI and scaffold a project:
39
41
 
@@ -152,11 +154,21 @@ Suite YAML is strict: duplicate keys, unknown fields, invalid payloads, and inco
152
154
  fail before execution. Runtime evaluation is rule-based; generated check suggestions remain inert
153
155
  until a person reviews and activates them.
154
156
 
155
- For the full contracts, see the [check YAML specification](docs/specifications/spec-02-check-yaml.md),
156
- [`results.json` specification](docs/specifications/spec-01-results-json.md), and
157
- [engine and CLI specification](docs/specifications/spec-04-engine.md). The
158
- [agent guide](docs/guides/agents.md), [telemetry disclosure](docs/reference/telemetry.md),
159
- and [contributor guide](CONTRIBUTING.md) cover integration and operational workflows.
157
+ For document/chunk/entity graphs, enable the optional [GraphRAG pack](docs/graphrag.md) with
158
+ `graphcheck init --pack graphrag`. It checks provenance, embedding consistency, and sampled duplicate names using your
159
+ configured labels, relationships, and properties.
160
+
161
+ For authoring and execution details, see the [user guide](docs/guides/user-guide.md) and
162
+ [JSON Schemas](docs/schemas/). The [agent guide](docs/guides/agents.md),
163
+ [telemetry disclosure](docs/reference/telemetry.md), and [contributor guide](CONTRIBUTING.md)
164
+ cover integration and operational workflows.
165
+
166
+ ## Support
167
+
168
+ See the [Neo4j compatibility matrix](docs/reference/compatibility.md) for supported servers and
169
+ the [artifact compatibility policy](docs/reference/artifact-compatibility.md) for schema support,
170
+ deprecation deadlines, and migration of saved `results.json` files. Schema versions are independent
171
+ of CLI versions; the current and previous schemas remain readable.
160
172
 
161
173
  ## Non-goals
162
174