Skip to main content

axiom_truth/
lib.rs

1// Copyright 2024-2026 Reflective Labs
2// SPDX-License-Identifier: MIT
3// See LICENSE file in the project root for full license information.
4//! Development tools for Converge.
5//!
6//! This crate provides tooling for developing Converge applications:
7//!
8//! - [`gherkin`]: Converge Truths validation (business sense, compilability, conventions)
9//!
10//! # Converge Truths Validation
11//!
12//! Converge uses `.truths` files as the canonical format, with `.truth` and
13//! `.feature` accepted for compatibility.
14//! The validator uses LLMs to check specs for:
15//!
16//! 1. **Business Sense**: Does the spec describe a meaningful invariant?
17//! 2. **Compilability**: Can this be translated to a Rust invariant?
18//! 3. **Conventions**: Does it follow Converge's patterns?
19//!
20//! # Example
21//!
22//! ```ignore
23//! use axiom_truth::gherkin::{GherkinValidator, ValidationConfig};
24//! use axiom_truth::mock_llm::StaticChatBackend;
25//! use std::sync::Arc;
26//!
27//! let backend = Arc::new(StaticChatBackend::constant("Valid spec"));
28//! let validator = GherkinValidator::new(backend, ValidationConfig::default());
29//!
30//! let result = validator.validate_file("specs/money.truths").await?;
31//! println!("Valid: {}", result.is_valid);
32//! ```
33
34pub mod codegen;
35pub mod compile;
36pub mod gherkin;
37pub mod guidance;
38pub mod jtbd;
39pub mod mock_llm;
40pub mod policy_lens;
41pub mod predicate;
42pub mod simulation;
43pub mod truths;
44pub mod validation_view;
45
46pub use gherkin::{
47    GherkinValidator, InvariantClassTag, IssueCategory, ScenarioKind, ScenarioMeta, Severity,
48    SpecGenerator, SpecValidation, ValidationConfig, ValidationIssue, extract_all_metas,
49    extract_scenario_meta,
50};
51pub use mock_llm::StaticChatBackend;
52pub use policy_lens::{
53    PolicyCoverageReport, PolicyRequirements, PolicyRule, SpendingThreshold, check_coverage,
54};
55pub use simulation::{
56    SimulationConfig, SimulationReport, VendorSelectionCoverage, Verdict, simulate, simulate_spec,
57};
58pub use truths::{
59    AuthorityBlock, ConstraintBlock, EvidenceBlock, ExceptionBlock, IntentBlock, TruthDocument,
60    TruthGovernance, parse_truth_document,
61};