graphcheck 0.2.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.
- {graphcheck-0.2.0 → graphcheck-0.4.0}/.gitignore +2 -1
- {graphcheck-0.2.0 → graphcheck-0.4.0}/CHANGELOG.md +219 -4
- {graphcheck-0.2.0 → graphcheck-0.4.0}/PKG-INFO +40 -12
- {graphcheck-0.2.0 → graphcheck-0.4.0}/README.md +38 -11
- graphcheck-0.4.0/docs/schemas/results-1.0.schema.json +715 -0
- graphcheck-0.4.0/docs/schemas/results-1.1.schema.json +742 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/pyproject.toml +21 -1
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/__init__.py +1 -1
- graphcheck-0.4.0/src/graphcheck/application/artifacts.py +218 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/application/run.py +63 -28
- graphcheck-0.4.0/src/graphcheck/application/suites.py +86 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/baselines.py +27 -12
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/cli.py +149 -95
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/connection_profiles.py +13 -21
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/contracts/check.py +24 -3
- graphcheck-0.4.0/src/graphcheck/contracts/historical_results.py +34 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/contracts/profile.py +31 -3
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/contracts/results.py +27 -9
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/contracts/schemas.py +0 -35
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/diff.py +83 -4
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/engine/baseline.py +95 -23
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/engine/compiler.py +191 -3
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/engine/core_pack.py +29 -10
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/engine/evaluator.py +313 -44
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/engine/executor.py +0 -4
- graphcheck-0.4.0/src/graphcheck/engine/graphrag_pack.py +449 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/engine/identifiers.py +2 -1
- graphcheck-0.4.0/src/graphcheck/engine/limits.py +18 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/engine/parameters.py +2 -32
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/engine/pii_pack.py +13 -15
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/engine/runner.py +305 -69
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/mcp/adapter.py +9 -2
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/neo4j_adapter.py +67 -22
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/packs/__init__.py +12 -1
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/packs/catalog.py +3 -0
- graphcheck-0.4.0/src/graphcheck/packs/graphrag.py +97 -0
- graphcheck-0.4.0/src/graphcheck/packs/graphrag.yml +68 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/packs/metadata.py +68 -2
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/profiler.py +311 -11
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/project.py +67 -12
- graphcheck-0.4.0/src/graphcheck/provenance.py +9 -0
- graphcheck-0.4.0/src/graphcheck/reporting/changes.py +236 -0
- graphcheck-0.4.0/src/graphcheck/reporting/coverage.py +18 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/reporting/explorer.py +34 -14
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/reporting/history.py +280 -93
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/reporting/html.py +24 -15
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/reporting/presentation.py +10 -7
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/reporting/redaction.py +21 -11
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/reporting/writer.py +50 -13
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/policy.py +1 -16
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/posthog.py +9 -2
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/yaml_loader.py +2 -2
- graphcheck-0.2.0/.gitattributes +0 -2
- graphcheck-0.2.0/.github/CODEOWNERS +0 -5
- graphcheck-0.2.0/.github/ISSUE_TEMPLATE/bug_report.md +0 -30
- graphcheck-0.2.0/.github/ISSUE_TEMPLATE/deliverable.md +0 -15
- graphcheck-0.2.0/.github/ISSUE_TEMPLATE/docs.md +0 -19
- graphcheck-0.2.0/.github/ISSUE_TEMPLATE/feature_request.md +0 -18
- graphcheck-0.2.0/.github/actions/graphcheck-action/README.md +0 -94
- graphcheck-0.2.0/.github/actions/graphcheck-action/action.yml +0 -127
- graphcheck-0.2.0/.github/actions/graphcheck-action/generate_profile.py +0 -53
- graphcheck-0.2.0/.github/actions/graphcheck-action/write_summary.py +0 -102
- graphcheck-0.2.0/.github/pull_request_template.md +0 -16
- graphcheck-0.2.0/.github/scripts/first-run.sh +0 -43
- graphcheck-0.2.0/.github/workflows/ci.yml +0 -269
- graphcheck-0.2.0/.github/workflows/graphcheck.yml +0 -33
- graphcheck-0.2.0/.github/workflows/release.yml +0 -73
- graphcheck-0.2.0/.gitmodules +0 -3
- graphcheck-0.2.0/.pre-commit-config.yaml +0 -7
- graphcheck-0.2.0/.python-version +0 -1
- graphcheck-0.2.0/CONTRIBUTING.md +0 -95
- graphcheck-0.2.0/docker-compose.yml +0 -57
- graphcheck-0.2.0/docs/agents.md +0 -269
- graphcheck-0.2.0/docs/check-reference.md +0 -161
- graphcheck-0.2.0/docs/ci-setup.md +0 -89
- graphcheck-0.2.0/docs/clean-machine-test-protocol.md +0 -105
- graphcheck-0.2.0/docs/compatibility.md +0 -61
- graphcheck-0.2.0/docs/docker-quickstart.md +0 -79
- graphcheck-0.2.0/docs/graphcheck-demo.gif +0 -0
- graphcheck-0.2.0/docs/llms.txt +0 -93
- graphcheck-0.2.0/docs/quickstart.md +0 -27
- graphcheck-0.2.0/docs/releasing.md +0 -53
- graphcheck-0.2.0/docs/samples/report-clean.html +0 -1528
- graphcheck-0.2.0/docs/samples/report-findings.html +0 -1528
- graphcheck-0.2.0/docs/specs/SPEC-01-results-json.md +0 -166
- graphcheck-0.2.0/docs/specs/SPEC-02-check-yaml.md +0 -102
- graphcheck-0.2.0/docs/specs/SPEC-03-connector.md +0 -330
- graphcheck-0.2.0/docs/specs/SPEC-04 Engine.md +0 -687
- graphcheck-0.2.0/docs/specs/SPEC-05-profiler-baseline.md +0 -397
- graphcheck-0.2.0/docs/specs/SPEC-06-scorer-html-report.md +0 -445
- graphcheck-0.2.0/docs/specs/SPEC-09-packs.md +0 -393
- graphcheck-0.2.0/docs/specs/SPEC-10-telemetry-events.md +0 -790
- graphcheck-0.2.0/docs/specs/SPEC-11-generate.md +0 -1286
- graphcheck-0.2.0/docs/specs/SPEC-12-observability-support +0 -417
- graphcheck-0.2.0/docs/specs/check.envelope.schema.json +0 -404
- graphcheck-0.2.0/docs/specs/check.schema.json +0 -1130
- graphcheck-0.2.0/docs/specs/pack.schema.json +0 -604
- graphcheck-0.2.0/docs/specs/profile.schema.json +0 -419
- graphcheck-0.2.0/docs/telemetry.md +0 -259
- graphcheck-0.2.0/docs/troubleshooting.md +0 -71
- graphcheck-0.2.0/docs/user-guide.md +0 -481
- graphcheck-0.2.0/examples/checks/example.yml +0 -20
- graphcheck-0.2.0/graphcheck.yml +0 -4
- graphcheck-0.2.0/monitoring/README.md +0 -71
- graphcheck-0.2.0/monitoring/docker-compose.yml +0 -35
- graphcheck-0.2.0/monitoring/grafana/dashboards/graphcheck-database-health.json +0 -229
- graphcheck-0.2.0/monitoring/grafana/provisioning/dashboards/dashboards.yml +0 -11
- graphcheck-0.2.0/monitoring/grafana/provisioning/datasources/prometheus-datasource.yml +0 -9
- graphcheck-0.2.0/monitoring/prometheus/README.md +0 -21
- graphcheck-0.2.0/monitoring/prometheus/prometheus.yml +0 -13
- graphcheck-0.2.0/profiles.yml +0 -15
- graphcheck-0.2.0/scripts/generate_sample_reports.py +0 -375
- graphcheck-0.2.0/src/graphcheck/application/artifacts.py +0 -145
- graphcheck-0.2.0/src/graphcheck/application/suites.py +0 -44
- graphcheck-0.2.0/tests/__init__.py +0 -1
- graphcheck-0.2.0/tests/conftest.py +0 -196
- graphcheck-0.2.0/tests/contracts/fixtures/agent-suite.yml +0 -20
- graphcheck-0.2.0/tests/contracts/fixtures/baseline.json +0 -114
- graphcheck-0.2.0/tests/contracts/fixtures/results.clean.json +0 -124
- graphcheck-0.2.0/tests/contracts/fixtures/results.complete.json +0 -191
- graphcheck-0.2.0/tests/contracts/fixtures/results.complete.rendered.json +0 -191
- graphcheck-0.2.0/tests/contracts/fixtures/results.failed.json +0 -39
- graphcheck-0.2.0/tests/contracts/fixtures/results.generated-only.json +0 -94
- graphcheck-0.2.0/tests/contracts/fixtures/results.partial.json +0 -122
- graphcheck-0.2.0/tests/contracts/fixtures/suite.invalid-bad-expect.yml +0 -6
- graphcheck-0.2.0/tests/contracts/fixtures/suite.invalid-duplicate-key.yml +0 -2
- graphcheck-0.2.0/tests/contracts/fixtures/suite.invalid-unknown-check.yml +0 -5
- graphcheck-0.2.0/tests/contracts/fixtures/suite.invalid-unknown-key.yml +0 -6
- graphcheck-0.2.0/tests/contracts/fixtures/suite.valid.yml +0 -21
- graphcheck-0.2.0/tests/contracts/test_agents_example.py +0 -13
- graphcheck-0.2.0/tests/contracts/test_check_validation.py +0 -646
- graphcheck-0.2.0/tests/contracts/test_profile.py +0 -305
- graphcheck-0.2.0/tests/contracts/test_results.py +0 -486
- graphcheck-0.2.0/tests/engine/test_baseline.py +0 -362
- graphcheck-0.2.0/tests/engine/test_compiler.py +0 -240
- graphcheck-0.2.0/tests/engine/test_core_pack_compiler.py +0 -363
- graphcheck-0.2.0/tests/engine/test_evaluator.py +0 -867
- graphcheck-0.2.0/tests/engine/test_executor.py +0 -153
- graphcheck-0.2.0/tests/engine/test_identifiers.py +0 -37
- graphcheck-0.2.0/tests/engine/test_parameters.py +0 -176
- graphcheck-0.2.0/tests/engine/test_pii_pack_runtime.py +0 -555
- graphcheck-0.2.0/tests/engine/test_runner.py +0 -1156
- graphcheck-0.2.0/tests/engine/test_sampling.py +0 -276
- graphcheck-0.2.0/tests/engine/test_sampling_runner.py +0 -177
- graphcheck-0.2.0/tests/generation/test_client.py +0 -548
- graphcheck-0.2.0/tests/generation/test_generation.py +0 -361
- graphcheck-0.2.0/tests/generation/test_service.py +0 -372
- graphcheck-0.2.0/tests/integration/conftest.py +0 -62
- graphcheck-0.2.0/tests/integration/test_generate_integration.py +0 -211
- graphcheck-0.2.0/tests/integration/test_generate_live.py +0 -56
- graphcheck-0.2.0/tests/integration/test_integration_engine.py +0 -279
- graphcheck-0.2.0/tests/integration/test_integration_neo4j_adapter.py +0 -280
- graphcheck-0.2.0/tests/integration/test_mcp_agent_surface.py +0 -57
- graphcheck-0.2.0/tests/integration/test_mcp_failure_isolation.py +0 -189
- graphcheck-0.2.0/tests/integration/test_mcp_neo4j_workflow.py +0 -78
- graphcheck-0.2.0/tests/integration/test_performance_plans.py +0 -235
- graphcheck-0.2.0/tests/observability/__init__.py +0 -1
- graphcheck-0.2.0/tests/observability/test_collector.py +0 -253
- graphcheck-0.2.0/tests/observability/test_health.py +0 -104
- graphcheck-0.2.0/tests/observability/test_monitoring_config.py +0 -89
- graphcheck-0.2.0/tests/observability/test_runner.py +0 -109
- graphcheck-0.2.0/tests/observability/test_server.py +0 -63
- graphcheck-0.2.0/tests/performance/__init__.py +0 -1
- graphcheck-0.2.0/tests/performance/budgets.json +0 -50
- graphcheck-0.2.0/tests/performance/gates.py +0 -118
- graphcheck-0.2.0/tests/performance/helpers.py +0 -322
- graphcheck-0.2.0/tests/performance/test_cli_startup.py +0 -138
- graphcheck-0.2.0/tests/performance/test_engine_budget.py +0 -335
- graphcheck-0.2.0/tests/performance/test_measurement_helpers.py +0 -126
- graphcheck-0.2.0/tests/performance/test_memory_gates.py +0 -119
- graphcheck-0.2.0/tests/performance/test_regression_gates.py +0 -76
- graphcheck-0.2.0/tests/property/test_evaluator_properties.py +0 -320
- graphcheck-0.2.0/tests/telemetry/test_boundary_payloads.py +0 -190
- graphcheck-0.2.0/tests/telemetry/test_cli_boundary_integration.py +0 -800
- graphcheck-0.2.0/tests/telemetry/test_cli_controls.py +0 -146
- graphcheck-0.2.0/tests/telemetry/test_engine_events.py +0 -302
- graphcheck-0.2.0/tests/telemetry/test_events.py +0 -171
- graphcheck-0.2.0/tests/telemetry/test_policy.py +0 -165
- graphcheck-0.2.0/tests/telemetry/test_posthog.py +0 -171
- graphcheck-0.2.0/tests/telemetry/test_privacy_properties.py +0 -54
- graphcheck-0.2.0/tests/telemetry/test_transparency_doc.py +0 -38
- graphcheck-0.2.0/tests/test_baselines.py +0 -215
- graphcheck-0.2.0/tests/test_cli.py +0 -1086
- graphcheck-0.2.0/tests/test_cli_lazy_imports.py +0 -198
- graphcheck-0.2.0/tests/test_debug_diagnostics.py +0 -223
- graphcheck-0.2.0/tests/test_diff.py +0 -303
- graphcheck-0.2.0/tests/test_docker_quickstart.py +0 -99
- graphcheck-0.2.0/tests/test_generate_cli.py +0 -104
- graphcheck-0.2.0/tests/test_mcp_adapter.py +0 -37
- graphcheck-0.2.0/tests/test_monitor_cli.py +0 -124
- graphcheck-0.2.0/tests/test_neo4j_adapter.py +0 -2174
- graphcheck-0.2.0/tests/test_packaging.py +0 -16
- graphcheck-0.2.0/tests/test_packs.py +0 -607
- graphcheck-0.2.0/tests/test_profiler.py +0 -889
- graphcheck-0.2.0/tests/test_project_profiles.py +0 -255
- graphcheck-0.2.0/tests/test_redaction.py +0 -251
- graphcheck-0.2.0/tests/test_report_explorer.py +0 -255
- graphcheck-0.2.0/tests/test_report_history.py +0 -393
- graphcheck-0.2.0/tests/test_reporting.py +0 -1131
- graphcheck-0.2.0/tests/test_result_presentation.py +0 -187
- graphcheck-0.2.0/tests/test_run_cli.py +0 -1696
- graphcheck-0.2.0/tests/test_sample_reports.py +0 -293
- graphcheck-0.2.0/tests/test_scoring.py +0 -144
- graphcheck-0.2.0/uv.lock +0 -2294
- {graphcheck-0.2.0 → graphcheck-0.4.0}/LICENSE +0 -0
- /graphcheck-0.2.0/docs/specs/results.schema.json → /graphcheck-0.4.0/docs/schemas/results-1.2.schema.json +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/application/__init__.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/application/paths.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/bootstrap.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/contracts/__init__.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/contracts/scalars.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/debug_diagnostics.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/engine/__init__.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/engine/sampling.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/errors.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/generation/__init__.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/generation/client.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/generation/config.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/generation/disclosure.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/generation/prompts.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/generation/proposals.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/generation/service.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/generation/transmission.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/generation/writer.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/mcp/server.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/observability/__init__.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/observability/collector.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/observability/health.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/observability/metrics.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/observability/runner.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/observability/server.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/packs/core.yml +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/packs/pii.yml +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/reporting/__init__.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/scoring.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/__init__.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/collector.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/consent.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/events.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/inactive.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/release.py +0 -0
- {graphcheck-0.2.0 → graphcheck-0.4.0}/src/graphcheck/telemetry/runtime.py +0 -0
- {graphcheck-0.2.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.
|
|
@@ -222,8 +223,8 @@ __marimo__/
|
|
|
222
223
|
# GraphCheck
|
|
223
224
|
/checks/
|
|
224
225
|
profiles.yml
|
|
225
|
-
!/profiles.yml
|
|
226
226
|
.graphcheck/
|
|
227
|
+
.hostile-artifacts/
|
|
227
228
|
.superpowers/
|
|
228
229
|
|
|
229
230
|
|
|
@@ -2,7 +2,221 @@
|
|
|
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
|
-
## [
|
|
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
|
+
|
|
159
|
+
## [0.3.0] - 2026-09-04
|
|
160
|
+
|
|
161
|
+
### Added
|
|
162
|
+
|
|
163
|
+
- The GitHub Action now emits bounded inline workflow annotations for failed, errored, and
|
|
164
|
+
warning-severity checks, attaches repository source locations when available, and reports any
|
|
165
|
+
annotations dropped at the per-run cap while retaining the existing Step Summary.
|
|
166
|
+
- Added one CI/CD guide with copy-paste workflows for pull-request gating, scheduled audits with
|
|
167
|
+
alerting, staging merges, and server-enforced read-only production runs.
|
|
168
|
+
- Added a scripted hostile-graph certification set that runs the real `debug`, `profile`, and
|
|
169
|
+
`run` command boundary against noisy LLM Graph Builder-shaped data, a checksum-pinned Stanford
|
|
170
|
+
SNAP scale graph, a three-member Neo4j 4.4 cluster, an APOC-less server, and an empty graph. Its
|
|
171
|
+
manifest drives the runner and integration expectations; the legacy lane uses Docker-assigned
|
|
172
|
+
ports and verifies three unique cluster members, one leader, and two followers before testing.
|
|
173
|
+
|
|
174
|
+
### Changed
|
|
175
|
+
|
|
176
|
+
- Reduced pull-request CI from 26 expanded jobs to 12: driver compatibility now tests the two
|
|
177
|
+
supported edge combinations, pull requests scan only their commit range for secrets, and the
|
|
178
|
+
Neo4j 4.4 hostile lane, cross-platform first-run trials, and Windows performance gates moved to
|
|
179
|
+
a weekly and manually runnable Extended CI workflow.
|
|
180
|
+
- Added Python 3.14 to the CI test matrix and package classifiers.
|
|
181
|
+
- Reduced GitHub Action startup overhead with cached `uv` and Python setup, binary-only package
|
|
182
|
+
installation, consolidated configuration/profile preparation, and direct helper execution from
|
|
183
|
+
the Action environment.
|
|
184
|
+
- Regenerated the canonical fraud-ring sample reports and linked them from `README.md` and
|
|
185
|
+
`docs/guides/user-guide.md`.
|
|
186
|
+
- Reorganized repository-facing material into dedicated `examples/`, `docs/`, `tools/`, and
|
|
187
|
+
layered `tests/` directories, including a minimal starter and the preserved fraud-ring demo, so
|
|
188
|
+
the repository root stays focused on project essentials.
|
|
189
|
+
- First-run CI now records three independent clean-runner install-to-first-valid-result samples on
|
|
190
|
+
Linux, macOS, and Windows/WSL, uploads structured timing evidence, publishes the per-platform
|
|
191
|
+
medians in the Actions summary, records both the tested GitHub SHA and pull-request head SHA, and
|
|
192
|
+
enforces the under-15-minute adoption budget.
|
|
193
|
+
- The default check concurrency is now two workers across project scaffolding, the engine, and the
|
|
194
|
+
Neo4j connection pool; `graphcheck.yml` and `graphcheck run --concurrency N` still override it.
|
|
195
|
+
- Migrated the breaking results contract from schema 1.2 to 2.0: `run.status` is now
|
|
196
|
+
`run.run_status`, summary `status` is now `coverage_status`, and `load_results()` retains a
|
|
197
|
+
compatibility path for historical artifacts.
|
|
198
|
+
- The Step Summary of `graphora/graphcheck-action` reports the run status and the coverage status
|
|
199
|
+
separately from `v1.0.2`, which reads the schema 2.0 fields and falls back to the historical
|
|
200
|
+
`run.status` and summary `status` for artifacts produced before this migration.
|
|
201
|
+
- The measured first-run path now installs a built wheel without a package cache and verifies the
|
|
202
|
+
baseline-free `init` → `run` path directly and persists that evidence before `profile` runs as a
|
|
203
|
+
separate post-timing smoke check.
|
|
204
|
+
|
|
205
|
+
### Fixed
|
|
206
|
+
|
|
207
|
+
- Preserved the established GitHub Pages URLs for both sample reports with tested compatibility
|
|
208
|
+
redirects after moving the canonical HTML files under `docs/samples/reports/`.
|
|
209
|
+
- Kept the minimal example's documented first run baseline-free by moving its optional drift check
|
|
210
|
+
outside the default `checks/` discovery directory.
|
|
211
|
+
- Restored pull-request smoke CI after the repository reorganization by staging the fraud-ring
|
|
212
|
+
`graphcheck.yml` and `checks/` at the workspace root expected by the published GitHub Action.
|
|
213
|
+
- First-run stage failures, unexpected profiling faults, and baseline write errors now return an
|
|
214
|
+
actionable `Fix:` diagnostic without exposing a Python traceback.
|
|
215
|
+
|
|
216
|
+
### Removed
|
|
217
|
+
|
|
218
|
+
- Removed the retired in-repository GraphCheck Action copy and its implementation tests; CI now
|
|
219
|
+
guards the boundary and consumes only the standalone `graphora/graphcheck-action@v1` release.
|
|
6
220
|
|
|
7
221
|
## [0.2.0] - 2026-08-20
|
|
8
222
|
|
|
@@ -34,7 +248,7 @@ All notable changes to this project are documented here. Format follows [Keep a
|
|
|
34
248
|
- PyPI release tooling: a Trusted Publishing (OIDC) release workflow triggered by a published
|
|
35
249
|
GitHub Release, guarding that the release tag matches the built version and smoke-testing a
|
|
36
250
|
clean install before upload; packaging metadata (project URLs, classifiers, keywords, author);
|
|
37
|
-
and a single-source version literal in `src/graphcheck/__init__.py`, read at build time by hatch. See `docs/releasing.md`.
|
|
251
|
+
and a single-source version literal in `src/graphcheck/__init__.py`, read at build time by hatch. See `docs/maintainers/releasing.md`.
|
|
38
252
|
- A release-oriented top-level README with a versioned project header, embedded CLI demo,
|
|
39
253
|
concise problem statement, quickstart, check-suite example, explicit non-goals, and a preserved
|
|
40
254
|
full user guide for detailed operational workflows.
|
|
@@ -126,7 +340,7 @@ All notable changes to this project are documented here. Format follows [Keep a
|
|
|
126
340
|
timed-out, refused, or otherwise unsuccessful delivery.
|
|
127
341
|
- Telemetry privacy and transparency safeguards: no queries, schema tokens, graph values,
|
|
128
342
|
credentials, project/check identity, results, verdicts, paths, arguments, or free-form
|
|
129
|
-
diagnostics; a complete public event/field inventory in `docs/telemetry.md`; CI enforcement
|
|
343
|
+
diagnostics; a complete public event/field inventory in `docs/reference/telemetry.md`; CI enforcement
|
|
130
344
|
against allowlist drift; property-based anonymization coverage; explicit network-failure tests;
|
|
131
345
|
and a fresh-install command matrix proving zero events before opt-in.
|
|
132
346
|
- A fifteen-part performance roadmap with repeatable cold-CLI, query-plan, allocation-retention,
|
|
@@ -143,7 +357,8 @@ All notable changes to this project are documented here. Format follows [Keep a
|
|
|
143
357
|
predicates while preserving the existing eager connector API.
|
|
144
358
|
- Positive project and CLI concurrency controls through `graphcheck.yml` and
|
|
145
359
|
`graphcheck run --concurrency`, with deterministic output ordering, deadline-aware scheduling,
|
|
146
|
-
|
|
360
|
+
an initial conservative default of one worker, and Neo4j pool sizing matched to effective
|
|
361
|
+
concurrency.
|
|
147
362
|
- A secure local report explorer launched by `graphcheck report --open`, with searchable history,
|
|
148
363
|
in-place report switching, two-run comparisons, multi-select deletion, safe `latest` repair,
|
|
149
364
|
authenticated same-origin APIs, restrictive browser security headers, and idle shutdown.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: graphcheck
|
|
3
|
-
Version: 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
|
|
@@ -17,6 +17,7 @@ Classifier: Operating System :: OS Independent
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
21
|
Classifier: Topic :: Database
|
|
21
22
|
Classifier: Topic :: Software Development :: Quality Assurance
|
|
22
23
|
Classifier: Topic :: Software Development :: Testing
|
|
@@ -39,8 +40,8 @@ Description-Content-Type: text/markdown
|
|
|
39
40
|
|
|
40
41
|
# GraphCheck
|
|
41
42
|
|
|
42
|
-
[](https://www.python.org/)
|
|
43
|
+
[](https://github.com/graphora/graphcheck/releases)
|
|
44
|
+
[](https://www.python.org/)
|
|
44
45
|
[](LICENSE)
|
|
45
46
|
|
|
46
47
|
**Semantic observability for property graphs.**
|
|
@@ -48,7 +49,12 @@ Description-Content-Type: text/markdown
|
|
|
48
49
|
</div>
|
|
49
50
|
|
|
50
51
|
<p align="center">
|
|
51
|
-
<img src="docs/graphcheck-demo.gif" width="900" alt="GraphCheck command-line demo">
|
|
52
|
+
<img src="docs/assets/graphcheck-demo.gif" width="900" alt="GraphCheck command-line demo">
|
|
53
|
+
</p>
|
|
54
|
+
|
|
55
|
+
<p align="center">
|
|
56
|
+
See a real report: <a href="https://graphora.github.io/graphcheck/docs/samples/report-findings.html">findings</a> and
|
|
57
|
+
<a href="https://graphora.github.io/graphcheck/docs/samples/report-clean.html">clean run</a>
|
|
52
58
|
</p>
|
|
53
59
|
|
|
54
60
|
## The problem
|
|
@@ -62,10 +68,12 @@ YAML and produces deterministic, evidence-backed JSON and offline HTML reports f
|
|
|
62
68
|
## Quickstart
|
|
63
69
|
|
|
64
70
|
For complete setup, credential, authoring, redaction, baseline, and configuration instructions, see
|
|
65
|
-
the **[full user guide](docs/user-guide.md)**.
|
|
71
|
+
the **[full user guide](docs/guides/user-guide.md)**.
|
|
66
72
|
|
|
67
|
-
GraphCheck requires Python 3.12 or 3.
|
|
68
|
-
[compatibility matrix](docs/compatibility.md) for the tested Neo4j and Cypher versions.
|
|
73
|
+
GraphCheck requires Python 3.12, 3.13, or 3.14 and a supported Neo4j server. See the
|
|
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.
|
|
69
77
|
|
|
70
78
|
Install the published CLI and scaffold a project:
|
|
71
79
|
|
|
@@ -95,6 +103,9 @@ checks/example.yml Example check suite
|
|
|
95
103
|
.graphcheck/ Baselines, run history, JSON, and HTML reports
|
|
96
104
|
```
|
|
97
105
|
|
|
106
|
+
New projects run up to two checks concurrently by default. Set `concurrency` in `graphcheck.yml`
|
|
107
|
+
or pass `graphcheck run --concurrency N` to choose a different positive worker limit.
|
|
108
|
+
|
|
98
109
|
Edit `profiles.yml` with the URI, database, and credential for your Neo4j instance. Enterprise and
|
|
99
110
|
Developer deployments must use a user assigned only Neo4j's built-in `reader` role plus the
|
|
100
111
|
automatic `PUBLIC` role; GraphCheck rejects missing, additional, or custom roles. Community
|
|
@@ -112,14 +123,18 @@ Each prepared run writes immutable history plus convenient `latest` copies:
|
|
|
112
123
|
|
|
113
124
|
```text
|
|
114
125
|
.graphcheck/runs/<run-id>/results.json
|
|
126
|
+
.graphcheck/runs/<run-id>/summary.json
|
|
115
127
|
.graphcheck/runs/<run-id>/report.html
|
|
116
128
|
.graphcheck/runs/latest/results.json
|
|
129
|
+
.graphcheck/runs/latest/summary.json
|
|
117
130
|
.graphcheck/runs/latest/report.html
|
|
118
131
|
```
|
|
119
132
|
|
|
120
133
|
The HTML report is self-contained and works offline. Exit codes are stable for CI: `0` means all
|
|
121
134
|
executed checks passed, `1` means an error-severity finding or execution error, `2` means a warning or
|
|
122
135
|
incomplete evaluation, and `3` means the run could not be prepared or completed.
|
|
136
|
+
See the **[CI/CD guide](docs/guides/ci-cd.md)** for copy-paste pull-request, scheduled, staging, and
|
|
137
|
+
production workflows using the published GitHub Action.
|
|
123
138
|
|
|
124
139
|
For development, use the locked environment instead:
|
|
125
140
|
|
|
@@ -128,6 +143,9 @@ uv sync --group dev
|
|
|
128
143
|
uv run graphcheck --version
|
|
129
144
|
```
|
|
130
145
|
|
|
146
|
+
Complete runnable projects and reference deployments live under [`examples/`](examples/), including
|
|
147
|
+
the self-contained fraud-ring Docker quickstart and the Prometheus/Grafana monitoring stack.
|
|
148
|
+
|
|
131
149
|
## Example
|
|
132
150
|
|
|
133
151
|
Replace `checks/example.yml` with a suite that matches labels in your graph:
|
|
@@ -174,11 +192,21 @@ Suite YAML is strict: duplicate keys, unknown fields, invalid payloads, and inco
|
|
|
174
192
|
fail before execution. Runtime evaluation is rule-based; generated check suggestions remain inert
|
|
175
193
|
until a person reviews and activates them.
|
|
176
194
|
|
|
177
|
-
For
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
and [
|
|
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.
|
|
182
210
|
|
|
183
211
|
## Non-goals
|
|
184
212
|
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
# GraphCheck
|
|
4
4
|
|
|
5
|
-
[](https://www.python.org/)
|
|
5
|
+
[](https://github.com/graphora/graphcheck/releases)
|
|
6
|
+
[](https://www.python.org/)
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
|
|
9
9
|
**Semantic observability for property graphs.**
|
|
@@ -11,7 +11,12 @@
|
|
|
11
11
|
</div>
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
14
|
-
<img src="docs/graphcheck-demo.gif" width="900" alt="GraphCheck command-line demo">
|
|
14
|
+
<img src="docs/assets/graphcheck-demo.gif" width="900" alt="GraphCheck command-line demo">
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
<p align="center">
|
|
18
|
+
See a real report: <a href="https://graphora.github.io/graphcheck/docs/samples/report-findings.html">findings</a> and
|
|
19
|
+
<a href="https://graphora.github.io/graphcheck/docs/samples/report-clean.html">clean run</a>
|
|
15
20
|
</p>
|
|
16
21
|
|
|
17
22
|
## The problem
|
|
@@ -25,10 +30,12 @@ YAML and produces deterministic, evidence-backed JSON and offline HTML reports f
|
|
|
25
30
|
## Quickstart
|
|
26
31
|
|
|
27
32
|
For complete setup, credential, authoring, redaction, baseline, and configuration instructions, see
|
|
28
|
-
the **[full user guide](docs/user-guide.md)**.
|
|
33
|
+
the **[full user guide](docs/guides/user-guide.md)**.
|
|
29
34
|
|
|
30
|
-
GraphCheck requires Python 3.12 or 3.
|
|
31
|
-
[compatibility matrix](docs/compatibility.md) for the tested Neo4j and Cypher versions.
|
|
35
|
+
GraphCheck requires Python 3.12, 3.13, or 3.14 and a supported Neo4j server. See the
|
|
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.
|
|
32
39
|
|
|
33
40
|
Install the published CLI and scaffold a project:
|
|
34
41
|
|
|
@@ -58,6 +65,9 @@ checks/example.yml Example check suite
|
|
|
58
65
|
.graphcheck/ Baselines, run history, JSON, and HTML reports
|
|
59
66
|
```
|
|
60
67
|
|
|
68
|
+
New projects run up to two checks concurrently by default. Set `concurrency` in `graphcheck.yml`
|
|
69
|
+
or pass `graphcheck run --concurrency N` to choose a different positive worker limit.
|
|
70
|
+
|
|
61
71
|
Edit `profiles.yml` with the URI, database, and credential for your Neo4j instance. Enterprise and
|
|
62
72
|
Developer deployments must use a user assigned only Neo4j's built-in `reader` role plus the
|
|
63
73
|
automatic `PUBLIC` role; GraphCheck rejects missing, additional, or custom roles. Community
|
|
@@ -75,14 +85,18 @@ Each prepared run writes immutable history plus convenient `latest` copies:
|
|
|
75
85
|
|
|
76
86
|
```text
|
|
77
87
|
.graphcheck/runs/<run-id>/results.json
|
|
88
|
+
.graphcheck/runs/<run-id>/summary.json
|
|
78
89
|
.graphcheck/runs/<run-id>/report.html
|
|
79
90
|
.graphcheck/runs/latest/results.json
|
|
91
|
+
.graphcheck/runs/latest/summary.json
|
|
80
92
|
.graphcheck/runs/latest/report.html
|
|
81
93
|
```
|
|
82
94
|
|
|
83
95
|
The HTML report is self-contained and works offline. Exit codes are stable for CI: `0` means all
|
|
84
96
|
executed checks passed, `1` means an error-severity finding or execution error, `2` means a warning or
|
|
85
97
|
incomplete evaluation, and `3` means the run could not be prepared or completed.
|
|
98
|
+
See the **[CI/CD guide](docs/guides/ci-cd.md)** for copy-paste pull-request, scheduled, staging, and
|
|
99
|
+
production workflows using the published GitHub Action.
|
|
86
100
|
|
|
87
101
|
For development, use the locked environment instead:
|
|
88
102
|
|
|
@@ -91,6 +105,9 @@ uv sync --group dev
|
|
|
91
105
|
uv run graphcheck --version
|
|
92
106
|
```
|
|
93
107
|
|
|
108
|
+
Complete runnable projects and reference deployments live under [`examples/`](examples/), including
|
|
109
|
+
the self-contained fraud-ring Docker quickstart and the Prometheus/Grafana monitoring stack.
|
|
110
|
+
|
|
94
111
|
## Example
|
|
95
112
|
|
|
96
113
|
Replace `checks/example.yml` with a suite that matches labels in your graph:
|
|
@@ -137,11 +154,21 @@ Suite YAML is strict: duplicate keys, unknown fields, invalid payloads, and inco
|
|
|
137
154
|
fail before execution. Runtime evaluation is rule-based; generated check suggestions remain inert
|
|
138
155
|
until a person reviews and activates them.
|
|
139
156
|
|
|
140
|
-
For
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
and [
|
|
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.
|
|
145
172
|
|
|
146
173
|
## Non-goals
|
|
147
174
|
|