Skip to main content

trellis_core/
lib.rs

1//! Core graph skeleton for Trellis.
2//!
3//! This crate currently defines typed identities, graph metadata, scope
4//! metadata, declared dependencies, deterministic inspection, input
5//! transactions, pure derived node recomputation, collection diffs, and
6//! data-only resource plans with recursive scope teardown and materialized
7//! output frames. Transaction results include deterministic phase traces, and
8//! failures expose typed categories.
9//!
10//! # API stability
11//!
12//! Trellis is pre-1.0. Core semantics are intended to be more stable than item
13//! names and exact signatures: resource plans are data, graph mutation is
14//! transactional, dependencies are explicit, scopes own lifecycle, outputs are
15//! revisioned, and incremental behavior must remain checkable against full
16//! recompute.
17
18#![forbid(unsafe_code)]
19#![deny(missing_docs)]
20
21mod audit;
22mod audit_types;
23mod collection;
24mod collection_build;
25mod collection_diff;
26mod collection_recompute;
27mod debug;
28mod dependency;
29mod derive;
30mod error;
31mod graph;
32mod graph_support;
33mod ids;
34mod input;
35mod model;
36mod node;
37mod oracle;
38mod output;
39mod output_build;
40mod output_reconcile;
41mod read;
42mod resource;
43mod resource_build;
44mod resource_reconcile;
45mod scope;
46mod scope_lifecycle;
47mod trace;
48mod transaction;
49mod transaction_build;
50mod transaction_types;
51
52pub(crate) use audit_types::AuditState;
53pub use audit_types::{
54    NodeChangeExplanation, OutputFrameExplanation, ResourceCommandCause,
55    ResourceCommandExplanation, ScopeResourceInventory,
56};
57pub use collection::CollectionContext;
58pub use collection_diff::{Added, MapDiff, Removed, SetDiff, Unchanged, Updated};
59pub use dependency::DependencyList;
60pub use derive::{DeriveContext, DeriveError};
61pub use error::{
62    ErrorAuditEvent, ErrorCategory, ErrorTarget, GraphError, GraphResult, HostResourceStatus,
63    OutputError, PlanError,
64};
65pub use graph::Graph;
66pub use ids::{NodeId, OutputKey, Revision, ScopeId, TransactionId};
67pub use node::{CollectionNode, DerivedNode, InputNode, NodeHandle, NodeKind, NodeMeta};
68pub use oracle::FullRecomputeCheck;
69pub use output::{
70    ClearReason, MaterializedOutput, OutputContext, OutputFrame, OutputFrameKind, OutputMeta,
71    OutputOptions, RebaselineReason,
72};
73pub use resource::{PlanContext, ResourceCommand, ResourceKey, ResourcePlan};
74pub use scope::ScopeMeta;
75pub use trace::{
76    OutputFrameKindTrace, OutputFrameTrace, ResourceCommandKind, ResourceCommandTrace,
77    TraceMismatch, TransactionTrace, assert_transaction_traces_match,
78};
79pub use transaction::Transaction;
80pub use transaction_types::{
81    AuditEntry, AuditEvent, TransactionOptions, TransactionPhase, TransactionResult,
82};
83
84/// Deterministic model-test helpers for oracle and replay checks.
85pub mod testing {
86    pub use crate::model::{ModelGenerator, ModelScript, ModelStep, ModelTopology};
87}