Skip to main content

Stave Terminology Glossary

This glossary maps Stave's internal terminology to security industry standards (NIST SP 800-53, CSA CCM, OSCAL) and defines concepts introduced by Stave.

Core Terms

Stave TermSecurity StandardReferenceDefinition
Control (CTL.)NIST AC-3, CSA CCMSP 800-53 rev5, CCM v4A declarative YAML rule that defines a condition which should never be true. Evaluated by the CEL predicate engine.
AssetNIST RA-2, CSA IVS-01SP 800-53 rev5An infrastructure resource being evaluated. Identified by id, type, and vendor fields.
FindingNIST SP 800-53AAssessment reportsA violation detected by a control. Includes evidence, remediation, and compliance references.
ObservationOSCAL <observation>NIST OSCALA point-in-time snapshot of infrastructure state (obs.v0.1 JSON). Raw data input to evaluation.
EvidenceNIST SP 800-53AAssessment reportsValidated proof attached to a Finding: timestamps, misconfigurations, unsafe duration, temporal risk.
SanitizeNIST MP-6SP 800-53 rev5Deterministic removal of infrastructure identifiers (account IDs, ARNs) from output.

Evaluation Terms

TermDefinition
AssessorThe core evaluation engine (internal/core/evaluation/engine/). Evaluates controls against asset snapshots. Cloud-agnostic — knows nothing about AWS, GCP, or any specific service.
Unsafe StateA condition where an asset's configuration matches a control's unsafe_predicate. The most common control type.
Unsafe DurationHow long an asset has been in an unsafe state across snapshots. Compared against the SLA threshold (--max-unsafe).
Exposure WindowA continuous period during which an asset is in an unsafe state. Bounded by the first and last observation where the predicate matches.
Exposure LifecycleThe full history of an asset's exposure windows across all snapshots. Used for recurrence detection.
SLA ThresholdThe maximum allowed unsafe duration (--max-unsafe). Findings fire when the unsafe duration exceeds this threshold.
Security StateThe overall evaluation result: COMPLIANT, AT_RISK, or NON_COMPLIANT.
VerdictPer-control×asset evaluation result: PASS, VIOLATION, SKIPPED, INCONCLUSIVE, or NOT_APPLICABLE.
ConfidenceHow certain the engine is about a verdict: HIGH, MEDIUM, or LOW. Affected by observation coverage gaps.

Control Types

TypeWhen it fires
unsafe_statePredicate matches at evaluation time. Most common.
unsafe_durationAsset has been unsafe longer than the SLA threshold.
unsafe_recurrenceAsset has been unsafe too many times within a window.
prefix_exposureProtected S3 key prefixes are publicly readable.
authorization_boundaryIAM permission boundary violation.
audience_boundaryUnintended principal scope exposure.

Domain Terms

TermDefinition
DomainA grouping of controls by service area: s3 (AWS S3 storage), iam (AWS IAM identity), gcs (GCP Cloud Storage), dns (DNS records).
Property NamespaceThe properties.* path structure for a domain. S3 uses properties.storage.*, IAM uses properties.identity.*, DNS uses properties.dns.*.
KindA discriminator within a property namespace. storage.kind: "bucket", identity.kind: "user", identity.kind: "account".
VendorThe cloud provider or service hosting the asset. Open string — accepts aws, gcp, azure, cloudflare, namecheap, or any value. Controls never evaluate vendor.
Observation ContractThe specification (docs/contract/README.md) that tells extractor authors what properties to populate for each domain. Stave's multi-domain capability is this contract, not code.
INCOMPLETE ControlA control that fires when the extractor provides insufficient data. Prevents false compliant verdicts. Every domain must have one.

Logic Trace Terms

TermDefinition
Logic TraceA structured audit trail (trace.v0.1 JSON) recording every decision the engine makes during evaluation. One assessment per control×asset pair.
Proof of PassPositive evidence that a control was evaluated and the asset was compliant — not just absence of a finding. Captured in the trace.
AssessmentA single control×asset evaluation record in the trace. Contains ordered steps with inputs and results.
StepA decision point in the evaluation chain: exemption_check, predicate_evaluation, threshold_check, coverage_check, verdict_decision.

Compliance Terms

TermDefinition
ProfileA named set of controls for a compliance framework: aws-s3, aws-iam, gcp-gcs, hipaa.
Compound RiskA dangerous combination of individual control results (e.g., public access + wildcard actions = lateral movement). Detected after individual evaluation.
Acknowledged ExceptionA declared, documented risk acceptance in stave.yaml with mandatory compensating controls.
Compensating ControlA control that must pass for an exception to be valid. If it fails, the original finding stands.
Compliance ReferenceA mapping from a control to a regulatory section (e.g., hipaa: "164.312(a)(1)").

Tooling Terms

TermDefinition
Policy ForgeThe make forge tool that scaffolds new controls with validated YAML and pass/fail E2E test fixtures.
ExtractorAn external program (any language) that produces obs.v0.1 JSON from cloud infrastructure. Not part of Stave.
Semantic AliasA named shorthand for a predicate (e.g., s3.is_public_readable). Resolved at control load time.
PackA named collection of controls (e.g., s3, iam, gcs, dns, hipaa). Registered in index.yaml.
Policy HashDeterministic SHA-256 of all embedded control YAML files. Printed by stave version --verify.

Architecture Terms

TermDefinition
Hexagonal ArchitectureThe layering model: core/ (domain, zero external imports) → app/ (services) → adapters/ (infrastructure) → cmd/ (CLI).
PortAn interface defined in app/contracts or core/ports that adapters implement.
AdapterAn infrastructure implementation in internal/adapters/ (YAML loader, JSON writer, filesystem).
Formal Proof SystemStave's identity: a policy evaluation engine for JSON-represented infrastructure. The engine is cloud-agnostic. Asset types and vendors are open strings. Adding a new cloud provider requires only YAML controls and a contract extension — zero engine changes.

Rejected Terms

These terms were used during development and have been replaced. Do not use them.

Rejected TermCanonical Term
invariantcontrol
inventoryobservation / snapshot
resourceasset
issue, violation, resultfinding
ignore, suppress, skipexemption
redact, scrubsanitize
delta, changedrift
EpisodeExposureWindow (renamed)
TimelineExposureLifecycle
Runner (engine)Assessor

Design Notes

AssetID vs AssetURN

AssetID is a local identifier within a single observation snapshot (e.g., my-phi-bucket). For globally unique identifiers, cloud-native URNs (ARN, GCP resource name) appear in the observation's id field. The AssetID type intentionally avoids prescribing a format — it accepts whatever the observation source provides.

Observation → Evidence Relationship

Observations are raw point-in-time snapshots (input). Evidence is the validated proof attached to a specific Finding (output). The evaluation engine transforms observation data into evidence by matching control predicates and computing unsafe durations.

Vendor-Agnostic DNS

DNS controls evaluate properties.dns.* regardless of DNS provider. The vendor field (route53, cloudflare, namecheap) is extractor metadata — controls never reference it. The same control evaluates identically for any DNS hosting service.