diff --git a/crates/ethos-cli/src/cmd/verify.rs b/crates/ethos-cli/src/cmd/verify.rs index 3c55619..d24f70c 100644 --- a/crates/ethos-cli/src/cmd/verify.rs +++ b/crates/ethos-cli/src/cmd/verify.rs @@ -6,8 +6,8 @@ use ethos_core::error::EthosError; use ethos_core::fingerprint::{is_fingerprint_form, source_fingerprint}; use ethos_core::geom::QRect; use ethos_core::grounding::{ - Capabilities, GroundingElement, GroundingSource, GroundingSpan, GroundingTable, PageGeometry, - ParserIdentity, + Capabilities, CoordinateOrigin, GroundingElement, GroundingSource, GroundingSpan, + GroundingTable, PageGeometry, ParserIdentity, }; use ethos_core::model::Document; use ethos_core::verify_types::{ @@ -133,6 +133,10 @@ fn verification_report_summary_bytes(report: &VerificationReport) -> Result Result &'static str { } } +fn grounding_capabilities_label(capabilities: Capabilities) -> String { + format!( + "spans={},char_offsets={},tables={},fingerprint={},coordinate_origin={},crop_support={}", + capabilities.spans, + capabilities.char_offsets, + capabilities.tables, + capabilities.fingerprint, + coordinate_origin_label(capabilities.coordinate_origin), + capabilities.crop_support + ) +} + +fn coordinate_origin_label(origin: CoordinateOrigin) -> &'static str { + match origin { + CoordinateOrigin::TopLeft => "top-left", + CoordinateOrigin::BottomLeft => "bottom-left", + CoordinateOrigin::Unknown => "unknown", + } +} + fn claim_kind_label(kind: ClaimKind) -> &'static str { match kind { ClaimKind::Quote => "quote", diff --git a/crates/ethos-cli/tests/verify.rs b/crates/ethos-cli/tests/verify.rs index 375f2f5..6cd7fd7 100644 --- a/crates/ethos-cli/tests/verify.rs +++ b/crates/ethos-cli/tests/verify.rs @@ -337,7 +337,13 @@ fn summary_format_reports_reason_before_fail_on_ungrounded_exit() { ); let summary = String::from_utf8(output.stdout).expect("summary output is UTF-8"); assert!(summary.contains("ethos verify summary\n")); + assert!(summary.contains( + "verification_config_sha256: 4bb224166a04a25fed2dd3ecdb9638ddcc5b398658532b73f1c0547e4983d0b0\n" + )); assert!(summary.contains("all_evidence_grounded: false\n")); + assert!(summary.contains( + "grounding_capabilities: spans=false,char_offsets=false,tables=false,fingerprint=false,coordinate_origin=unknown,crop_support=false\n" + )); assert!(summary.contains("checks_capability_blocked: 1\n")); assert!(summary.contains("capability_limits: missing_fingerprint,missing_spans,missing_char_offsets,missing_tables,unknown_coordinate_origin\n")); assert!(summary.contains("- v0001 status=capability_blocked reason=missing_table_capability kind=table_cell locator=table_id:odl-t1;cell:1,1 match_method=none\n")); @@ -362,7 +368,13 @@ fn summary_format_reports_no_non_grounded_checks_for_grounded_input() { assert_eq!(output.status.code(), Some(0)); assert_eq!(output.stderr, b""); let summary = String::from_utf8(output.stdout).expect("summary output is UTF-8"); + assert!(summary.contains( + "verification_config_sha256: 4bb224166a04a25fed2dd3ecdb9638ddcc5b398658532b73f1c0547e4983d0b0\n" + )); assert!(summary.contains("all_evidence_grounded: true\n")); + assert!(summary.contains( + "grounding_capabilities: spans=true,char_offsets=true,tables=true,fingerprint=true,coordinate_origin=top-left,crop_support=false\n" + )); assert!(summary.contains("checks_grounded: 3\n")); assert!(summary.contains("capability_limits: none\n")); assert!(summary.contains("warnings: none\n")); diff --git a/docs/demos/verify-alpha.md b/docs/demos/verify-alpha.md index 4701ef1..b688a61 100644 --- a/docs/demos/verify-alpha.md +++ b/docs/demos/verify-alpha.md @@ -43,6 +43,10 @@ Golden report: examples/verify/goldens/native_grounded_report.json ``` +For terminal review, `--format summary` emits a compact text view with the verification config +hash, declared grounding capabilities, check counts, warnings, and non-grounded check reasons. +The JSON report remains the canonical artifact. + ## Native Ethos Ungrounded Citations ```bash diff --git a/examples/verify/README.md b/examples/verify/README.md index 34e3a6d..2db496a 100644 --- a/examples/verify/README.md +++ b/examples/verify/README.md @@ -22,6 +22,9 @@ ethos verify schemas/examples/document.example.json \ --format summary ``` +The summary includes the verification config hash, declared grounding capabilities, check counts, +report warnings, and non-grounded check reasons. + ## Native Ethos Ungrounded Citations ```bash