Skip to main content

soma_som_core/
lib.rs

1// SPDX-License-Identifier: LGPL-3.0-only
2#![warn(missing_docs)]
3#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used, clippy::panic))]
4#![doc = include_str!("../README.md")]
5
6//! # soma-som-core
7//!
8//! Universal structural primitives for the SOMA/SOM circular architecture.
9//!
10//! This crate defines the ring's structural backbone: Quad, Ring, unit identities,
11//! SOM layers, fingerprints, the temporal ledger, and the Genesis protocol.
12//! It contains no IPC, no IO, no side effects, and no application-specific
13//! governance types.
14//!
15//! ## Ring Foundation Purity
16//!
17//! soma-som-core defines the seven §13.1 pluggable governance trait surfaces
18//! (`AuthorizationProvider`, `AutonomyEvaluator`, `ConfigurationProvider`,
19//! `EvidenceValidator`, `ProcessEngine`, `ProcessGate`, `CycleAnnotator`)
20//! and their no-op defaults. Concrete §13.2 policy data is application-tier.
21//!
22//! ## Paper traceability — soma(som) v1.0 (State of Mind)
23//!
24//! | Type / Module       | Reference                        |
25//! |---------------------|----------------------------------|
26//! | `Quad`              | OPUS §2 (Definition 1)           |
27//! | `UnitId`, `Layer`   | OPUS §5, §4                      |
28//! | `UnitId::W_LABELS`  | SOMA_FRONTEND_SPEC §2.4          |
29//! | `Ring`              | OPUS §3, §6                      |
30//! | `Fingerprint`       | OPUS §8 (Definitions 7–8)        |
31//! | `TemporalLedger`    | OPUS §9.5                        |
32//! | `Genesis`           | OPUS §10                         |
33//! | `Position`          | OPUS §8.1                        |
34//! | `Envelope`          | Contracts §2                     |
35//! | `PerspectivalChain` | Perspectival Ledger §2           |
36//! | `CrossingRecord`    | Contracts §2.1 (Def. 2)          |
37//! | `RingStore`         | L0 persistence trait          |
38//! | `Extension`+5 traits| Ring-extension family                |
39//! | `World`             | OPUS §6 (State-of-Mind worlds)          |
40//! | `VocabTerm`         | OPUS §5.1–§5.6 (72 terms)        |
41//! | `WorldRegistry`     | OPUS §1.2 + §6              |
42//!
43
44pub mod authorization;
45pub mod autonomy;
46pub mod codec;
47pub mod configuration;
48pub mod crossing;
49pub mod envelope;
50pub mod processor;
51pub mod error;
52pub mod evidence;
53pub mod extension;
54pub mod federation;
55pub mod fingerprint;
56pub mod genesis;
57pub mod governance_context;
58pub mod ledger;
59pub mod lexicon;
60pub mod perspectival;
61pub mod position;
62pub mod signing_provider;
63pub mod timing;
64pub mod process_engine;
65pub mod process_gate;
66pub mod quad;
67pub mod ring;
68pub mod ring_store;
69pub mod sibling;
70pub mod traceability;
71pub mod types;
72pub mod vocab;
73pub mod world;
74
75#[cfg(feature = "test-support")]
76pub mod testing;
77
78// ── Re-exports for ergonomic use ────────────────────────────────────────────
79
80pub use authorization::{
81    AuthorizationProvider, AuthorizationTable, AuthorizationTableEntry, AuthorizationTableResult,
82    PermissionCollision, PermissionRegistry, PermissionRequirement, PermitAll,
83    SharedAuthorizationTable, SharedPermissionRegistry,
84};
85pub use codec::{CodecError, persist_decode, persist_encode};
86pub use crossing::CrossingRecord;
87pub use envelope::Envelope;
88pub use evidence::{
89    AcceptAll, EvidenceValidator, verify_ring_cycle_evidence, verify_ring_cycle_evidence_with_key,
90    verify_view_cycle_evidence,
91};
92pub use signing_provider::{CrossingSigner, NoopSigner, SigningProviderError};
93pub use timing::{CycleTimer, TimingConfig, TimingError, UnitTiming};
94pub use error::SomaError;
95pub use extension::{
96    AfterRing, AroundRing, BeforeRing, CommandSchema, DelegationError, Extension, GateRejection,
97    SchemaField, SchemaFieldType, ThroughRing,
98};
99pub use federation::{
100    DescriptorEnvelope, DescriptorPayload, EnvelopeDestination, OrientationSummary, PeerRecord,
101    PeerStatus, RingAnnounce, RingFingerprint, federation_ns,
102};
103pub use fingerprint::{awareness_fingerprint, ring_fingerprint, system_fingerprint};
104pub use genesis::Genesis;
105pub use governance_context::GovernanceContext;
106pub use ledger::{LedgerEntry, TemporalLedger};
107pub use lexicon::{
108    CoordinateError, LexiconEntry, LexiconProvider, Medium, Rendering, RenderingPack,
109    ResolvedRendering, TermDescription, VocabCoord, resolve_rendering,
110};
111pub use perspectival::{
112    PerspectivalChain, PerspectivalEntry, PerspectivalState, cross_verification_digest,
113};
114pub use position::Position;
115pub use processor::{UnitProcessor, UnitProcessorError};
116pub use quad::Quad;
117pub use ring::{Ring, RingState};
118pub use ring_store::{RingStore, RingStoreBackendError, RingStoreError, RingStoreResult};
119pub use sibling::{
120    CapabilityDeclaration, DomainRequest, HttpMethod, RegistrationError, RouteMount,
121    SiblingManifest, SiblingStatus, SurfaceSection,
122};
123pub use traceability::{CycleContext, CycleKind, LEGACY_SEMANTIC_HASH};
124pub use types::{CrossingType, Element, Layer, LayerTransition, UnitId, World};
125pub use vocab::{VocabTerm, all_terms, domain_term};
126pub use world::{OrganEntry, WorldRegistry};