compass-kb-validation 2.6.1__tar.gz → 2.7.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.
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/PKG-INFO +9 -3
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/README.md +8 -2
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/compass_kb_validation.egg-info/PKG-INFO +9 -3
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/compass_kb_validation.egg-info/SOURCES.txt +3 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/discover_and_validate.py +5 -1
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/__init__.py +1 -1
- compass_kb_validation-2.7.0/ingestion_validation/citation.py +696 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/cli.py +115 -16
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/config/__init__.py +71 -14
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/grounding.py +125 -31
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/live_dashboard.py +1 -1
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/mcp_server.py +2 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/notifications.py +3 -1
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/providers/vectorstore.py +4 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/report/analysis.py +19 -7
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/validators/api_upload.py +1 -1
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/validators/base_sparql.py +14 -4
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/validators/redis_chunks.py +6 -1
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/validators/registry.py +1 -1
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/validators/retrieval_quality.py +21 -7
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/validators/s3_storage.py +11 -1
- compass_kb_validation-2.7.0/tests/test_citation.py +406 -0
- compass_kb_validation-2.7.0/tests/test_review_hardening.py +113 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/LICENSE +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/compass_kb_validation.egg-info/dependency_links.txt +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/compass_kb_validation.egg-info/entry_points.txt +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/compass_kb_validation.egg-info/requires.txt +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/compass_kb_validation.egg-info/top_level.txt +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/__main__.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/ask.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/baseline.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/chunk_coherence.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/config_lint.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/content_inspect.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/corpus.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/corpus_health.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/diagnostics.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/embedding_drift.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/eval_interop.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/init_wizard.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/models/__init__.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/pipeline/__init__.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/profiler.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/provenance.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/providers/__init__.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/providers/embedding.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/providers/graph.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/providers/source.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/providers/storage.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/remediation.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/report/__init__.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/report/_report_css.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/report/_report_js.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/report/export.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/report/shell.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/retrieval_analysis.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/trend_tracker.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/utils/__init__.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/validators/__init__.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/validators/base.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/validators/cross_stage.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/validators/graphdb_metadata.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/ingestion_validation/validators/neptune_metadata.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/profile_kb.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/pyproject.toml +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/run_validation.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/setup.cfg +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_alt_adapters.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_analysis_report.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_api_upload.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_ask.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_baseline.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_benchmark.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_check_catalog.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_cli.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_config.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_config_lint.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_content_inspect.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_corpus.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_corpus_health.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_coverage.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_cross_stage.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_diagnostics.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_discover_cli.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_discovery_parallel.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_embedding_drift.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_eval_interop.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_gate.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_graph_transport.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_graph_validators.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_grounding.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_init_wizard.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_manifest.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_mcp.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_migration.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_models.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_neptune_bugfixes.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_neptune_bugfixes2.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_notifications.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_pipeline.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_profiler.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_providers.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_redis_chunks.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_registry.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_remediation.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_reporting.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_retrieval_assertions.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_retrieval_quality.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_run_cli.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_sources.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_storage_validator.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_trends.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_universal_concerns.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_utils.py +0 -0
- {compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/tests/test_vectorstore_filters.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: compass-kb-validation
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.7.0
|
|
4
4
|
Summary: Knowledge-base readiness validation for RAG & AI agents — config-driven, deterministic pipeline integrity checks.
|
|
5
5
|
Author: COMPASS
|
|
6
6
|
License: MIT
|
|
@@ -229,8 +229,14 @@ compass ask --project my-kb --batch questions.jsonl --format eval --output eval_
|
|
|
229
229
|
compass quality --project my-kb
|
|
230
230
|
compass freshness --project my-kb --stale-after 30
|
|
231
231
|
|
|
232
|
-
#
|
|
233
|
-
#
|
|
232
|
+
# Validate an EXTERNAL eval's output against the KB COMPASS already has access to. Not an eval,
|
|
233
|
+
# not a tracer: the eval (an LLM judge, or the bot's captured trace) claims "grounded",
|
|
234
|
+
# "cited MIS p.1", "28%" - COMPASS deterministically checks those claims against ground truth
|
|
235
|
+
# in the KB and attributes any failure to a layer (retrieval vs the model), never scoring answer
|
|
236
|
+
# quality. Verifies each CITED claim at its cited location: a fabricated number, a wrong page, a
|
|
237
|
+
# fact present in the KB but not retrieved, or a source not in the KB. Uses the eval's retrieved
|
|
238
|
+
# chunks when present (Level 1) and the live KB (Level 2); the answer text + a reachable KB alone
|
|
239
|
+
# still catches fabricated figures and phantom citations.
|
|
234
240
|
compass grounding-audit --project my-kb --eval-result case.json --fail-on-fabrication
|
|
235
241
|
```
|
|
236
242
|
|
|
@@ -162,8 +162,14 @@ compass ask --project my-kb --batch questions.jsonl --format eval --output eval_
|
|
|
162
162
|
compass quality --project my-kb
|
|
163
163
|
compass freshness --project my-kb --stale-after 30
|
|
164
164
|
|
|
165
|
-
#
|
|
166
|
-
#
|
|
165
|
+
# Validate an EXTERNAL eval's output against the KB COMPASS already has access to. Not an eval,
|
|
166
|
+
# not a tracer: the eval (an LLM judge, or the bot's captured trace) claims "grounded",
|
|
167
|
+
# "cited MIS p.1", "28%" - COMPASS deterministically checks those claims against ground truth
|
|
168
|
+
# in the KB and attributes any failure to a layer (retrieval vs the model), never scoring answer
|
|
169
|
+
# quality. Verifies each CITED claim at its cited location: a fabricated number, a wrong page, a
|
|
170
|
+
# fact present in the KB but not retrieved, or a source not in the KB. Uses the eval's retrieved
|
|
171
|
+
# chunks when present (Level 1) and the live KB (Level 2); the answer text + a reachable KB alone
|
|
172
|
+
# still catches fabricated figures and phantom citations.
|
|
167
173
|
compass grounding-audit --project my-kb --eval-result case.json --fail-on-fabrication
|
|
168
174
|
```
|
|
169
175
|
|
{compass_kb_validation-2.6.1 → compass_kb_validation-2.7.0}/compass_kb_validation.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: compass-kb-validation
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.7.0
|
|
4
4
|
Summary: Knowledge-base readiness validation for RAG & AI agents — config-driven, deterministic pipeline integrity checks.
|
|
5
5
|
Author: COMPASS
|
|
6
6
|
License: MIT
|
|
@@ -229,8 +229,14 @@ compass ask --project my-kb --batch questions.jsonl --format eval --output eval_
|
|
|
229
229
|
compass quality --project my-kb
|
|
230
230
|
compass freshness --project my-kb --stale-after 30
|
|
231
231
|
|
|
232
|
-
#
|
|
233
|
-
#
|
|
232
|
+
# Validate an EXTERNAL eval's output against the KB COMPASS already has access to. Not an eval,
|
|
233
|
+
# not a tracer: the eval (an LLM judge, or the bot's captured trace) claims "grounded",
|
|
234
|
+
# "cited MIS p.1", "28%" - COMPASS deterministically checks those claims against ground truth
|
|
235
|
+
# in the KB and attributes any failure to a layer (retrieval vs the model), never scoring answer
|
|
236
|
+
# quality. Verifies each CITED claim at its cited location: a fabricated number, a wrong page, a
|
|
237
|
+
# fact present in the KB but not retrieved, or a source not in the KB. Uses the eval's retrieved
|
|
238
|
+
# chunks when present (Level 1) and the live KB (Level 2); the answer text + a reachable KB alone
|
|
239
|
+
# still catches fabricated figures and phantom citations.
|
|
234
240
|
compass grounding-audit --project my-kb --eval-result case.json --fail-on-fabrication
|
|
235
241
|
```
|
|
236
242
|
|
|
@@ -15,6 +15,7 @@ ingestion_validation/__main__.py
|
|
|
15
15
|
ingestion_validation/ask.py
|
|
16
16
|
ingestion_validation/baseline.py
|
|
17
17
|
ingestion_validation/chunk_coherence.py
|
|
18
|
+
ingestion_validation/citation.py
|
|
18
19
|
ingestion_validation/cli.py
|
|
19
20
|
ingestion_validation/config_lint.py
|
|
20
21
|
ingestion_validation/content_inspect.py
|
|
@@ -67,6 +68,7 @@ tests/test_ask.py
|
|
|
67
68
|
tests/test_baseline.py
|
|
68
69
|
tests/test_benchmark.py
|
|
69
70
|
tests/test_check_catalog.py
|
|
71
|
+
tests/test_citation.py
|
|
70
72
|
tests/test_cli.py
|
|
71
73
|
tests/test_config.py
|
|
72
74
|
tests/test_config_lint.py
|
|
@@ -101,6 +103,7 @@ tests/test_remediation.py
|
|
|
101
103
|
tests/test_reporting.py
|
|
102
104
|
tests/test_retrieval_assertions.py
|
|
103
105
|
tests/test_retrieval_quality.py
|
|
106
|
+
tests/test_review_hardening.py
|
|
104
107
|
tests/test_run_cli.py
|
|
105
108
|
tests/test_sources.py
|
|
106
109
|
tests/test_storage_validator.py
|
|
@@ -479,7 +479,11 @@ def main(argv=None) -> int:
|
|
|
479
479
|
print(f" Run ID: {run_id}")
|
|
480
480
|
print("=" * 60)
|
|
481
481
|
|
|
482
|
-
|
|
482
|
+
try:
|
|
483
|
+
documents = discover_documents(settings, folder_filter=args.folder, limit=args.limit)
|
|
484
|
+
except Exception as exc: # noqa: BLE001 - an unreachable/misconfigured source must not traceback
|
|
485
|
+
print(f"\n Could not discover documents (is the storage/index reachable and configured?): {exc}")
|
|
486
|
+
return EXIT_CONFIG
|
|
483
487
|
print(f"\n Found {len(documents)} document(s)\n")
|
|
484
488
|
# Corpus-level minimum-document gate (s3.min_documents). A no-arg --limit run that
|
|
485
489
|
# finds fewer than expected is a real problem worth failing on.
|