stemedb/applications/aphoria/src/cli/verify.rs
jml 3b5f88b4f0 feat(aphoria): implement claims architecture (A1-A5) with verify engine, corpus, coverage, and explain
Complete Aphoria claims system overhaul:
- A1: Rename ExtractedClaim to Observation (extractors produce observations, not claims)
- A2: Add AuthoredClaim with full provenance, invariants, and authority tiers
- A3: Verify engine comparing observations against authored claims, CLI + formatters
- A4: Corpus as first-class assertions with predicate indexing, authority lens, trust packs
- A5: Coverage analysis, explain/docs generation, self-audit extractor, claim suggester skill

Also includes: 42 extractors updated for Observation type, verifiable_predicates trait,
conflict detection with comparison modes, claims TOML persistence, Grafana dashboard,
backup/restore scripts, and comprehensive test coverage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 09:11:47 +00:00

48 lines
1.2 KiB
Rust

//! CLI definitions for the `aphoria verify` command.
use std::path::PathBuf;
use clap::Subcommand;
/// Verify commands for checking code against authored claims.
#[derive(Subcommand)]
pub enum VerifyCommands {
/// Run verification: check observations against authored claims
Run {
/// Path to the project root
#[arg(default_value = ".")]
path: PathBuf,
/// Output format: table or json
#[arg(short, long, default_value = "table")]
format: String,
/// Exit with non-zero code on conflicts
#[arg(long)]
exit_code: bool,
/// Only scan staged/changed files (for pre-commit hooks)
#[arg(long)]
changed_only: bool,
/// Include UNCLAIMED observations in output
#[arg(long)]
show_unclaimed: bool,
/// Filter to specific claim IDs (comma-separated)
#[arg(long, value_delimiter = ',')]
claim: Vec<String>,
/// Filter by category
#[arg(long)]
category: Option<String>,
},
/// Show claim-to-extractor mapping
Map {
/// Path to the project root
#[arg(default_value = ".")]
path: PathBuf,
},
}