observability tier

observability-sentinel

Security and identification layer: device fingerprinting, behavioral biometrics, risk scoring, and session replay

Security and identification layer: device fingerprinting, behavioral biometrics, risk scoring, and session replay

Tierobservability
Roleunclassified (baselined)
Pathcrates/observability/sentinel
Edition2021
Targetsobservability_sentinel
Public items46 across 28 modules
Tests21

What it is for

Sentinel: Security and identification layer

Provides device fingerprinting, behavioral biometrics, continuous authentication signals, risk scoring, and session replay on top of telemetry.

Telemetry answers: "What happened?" Analytics answers: "What does it mean?" Sentinel answers: "Who is this, and should we trust them?"

Capabilities

BiometricsConfig

_No module-level documentation is present in the source._

Item
pub struct BiometricsConfig
BiometricsConfig :: fn default() -> Self

KeystrokeConfig

_No module-level documentation is present in the source._

Item
pub struct KeystrokeConfig
KeystrokeConfig :: fn default() -> Self

PointerConfig

_No module-level documentation is present in the source._

Item
pub struct PointerConfig
PointerConfig :: fn default() -> Self

SampleRate

_No module-level documentation is present in the source._

Item
pub enum SampleRate

TouchConfig

_No module-level documentation is present in the source._

Item
pub struct TouchConfig
TouchConfig :: fn default() -> Self

SentinelConfig

_No module-level documentation is present in the source._

Item
pub struct SentinelConfig

FingerprintComponentConfig

_No module-level documentation is present in the source._

Item
pub struct FingerprintComponentConfig
FingerprintComponentConfig :: fn all() -> Self
FingerprintComponentConfig :: fn default() -> Self

FingerprintConfig

_No module-level documentation is present in the source._

Item
pub struct FingerprintConfig
FingerprintConfig :: fn default() -> Self

ComponentSpec

The browser-fingerprint component map and its entropy weighting.

Item
pub struct ComponentSpec
pub const COMPONENT_SPECS: & ComponentSpec

FingerprintComponents

The browser-fingerprint component map and its entropy weighting.

Item
pub struct FingerprintComponents
FingerprintComponents :: fn value(& self, name : & str) -> Option <& str>
FingerprintComponents :: fn is_empty(& self) -> bool
FingerprintComponents :: fn high_entropy_weight(& self) -> f64
FingerprintComponents :: fn stable_hash(& self) -> String

fingerprint::matcher (other)

Component-weighted fuzzy fingerprint matching (Sprint 23).

Item
pub const MATCHER_VERSION: & str
fn match_fingerprint(query : & FingerprintComponents, candidates : & FingerprintCandidate, cfg : & MatchConfig,) -> MatchOutcome

AmbiguityReason

Component-weighted fuzzy fingerprint matching (Sprint 23).

Item
pub enum AmbiguityReason

FingerprintCandidate

Component-weighted fuzzy fingerprint matching (Sprint 23).

Item
pub struct FingerprintCandidate

MatchConfig

Component-weighted fuzzy fingerprint matching (Sprint 23).

Item
pub struct MatchConfig
MatchConfig :: fn default() -> Self

MatchOutcome

Component-weighted fuzzy fingerprint matching (Sprint 23).

Item
pub enum MatchOutcome

MatchFlag

_No module-level documentation is present in the source._

Item
pub enum MatchFlag

MatchResult

_No module-level documentation is present in the source._

Item
pub struct MatchResult

MatchType

_No module-level documentation is present in the source._

Item
pub enum MatchType
MatchType :: fn confidence_threshold(& self) -> f32

ReplayConfig

_No module-level documentation is present in the source._

Item
pub struct ReplayConfig
ReplayConfig :: fn default() -> Self

RiskConfig

_No module-level documentation is present in the source._

Item
pub struct RiskConfig
RiskConfig :: fn default() -> Self

RiskLevel

_No module-level documentation is present in the source._

Item
pub enum RiskLevel
RiskLevel :: fn threshold(& self) -> f32

RiskThresholds

_No module-level documentation is present in the source._

Item
pub struct RiskThresholds
RiskThresholds :: fn default() -> Self

RiskWeights

_No module-level documentation is present in the source._

Item
pub struct RiskWeights
RiskWeights :: fn balanced() -> Self
RiskWeights :: fn default() -> Self

SignalType

_No module-level documentation is present in the source._

Item
pub enum SignalType
SignalType :: fn is_positive(& self) -> bool

How to use it

No examples/ target and no doctest in this crate's rustdoc. The tests listed under Verification are the closest executable usage.

Module structure

observability_sentinel

_28 modules: past 25 the diagram stops being readable, so the tree above is the complete picture._

Public surface

`biometrics`

ItemWhat it is
pub struct BiometricsConfig
BiometricsConfig :: fn default() -> Self
pub struct KeystrokeConfig
KeystrokeConfig :: fn default() -> Self
pub struct PointerConfig
PointerConfig :: fn default() -> Self
pub struct TouchConfig
TouchConfig :: fn default() -> Self
pub enum SampleRate

`config`

ItemWhat it is
pub struct SentinelConfig

`fingerprint`

ItemWhat it is
pub struct FingerprintConfig
FingerprintConfig :: fn default() -> Self
pub struct FingerprintComponentConfig
FingerprintComponentConfig :: fn all() -> Self
FingerprintComponentConfig :: fn default() -> Self

`fingerprint::components`

ItemWhat it is
pub struct ComponentSpecThe fixed weighting and entropy class of one fingerprint component.
pub const COMPONENT_SPECS: & ComponentSpecEvery fingerprint component, with its weight and entropy class
pub struct FingerprintComponentsThe browser-fingerprint component map
FingerprintComponents :: fn value(& self, name : & str) -> Option <& str>The value of a component by its ComponentSpec name.
FingerprintComponents :: fn is_empty(& self) -> boolWhether no component was collected at all.
FingerprintComponents :: fn high_entropy_weight(& self) -> f64The total high-entropy weight actually present — how much strong identifying signal this fingerprint carries.
FingerprintComponents :: fn stable_hash(& self) -> StringA stable hex hash over every component — the exact-match fast path

`fingerprint::matcher`

ItemWhat it is
pub const MATCHER_VERSION: & strThe matcher version — bump on any scoring or threshold change, so a stored fuzzy decision stays attributable to the logic that made it.
pub struct FingerprintCandidateA known visitor's fingerprint, supplied by the caller as a match candidate
pub enum AmbiguityReasonWhy the matcher refused to commit to an identity.
pub enum MatchOutcomeThe outcome of a match attempt.
pub struct MatchConfigTunable thresholds for match_fingerprint.
MatchConfig :: fn default() -> Self
fn match_fingerprint(query : & FingerprintComponents, candidates : & FingerprintCandidate, cfg : & MatchConfig,) -> MatchOutcomeMatch a query fingerprint against the fingerprints of known visitors

`identity`

ItemWhat it is
pub enum MatchType
MatchType :: fn confidence_threshold(& self) -> f32
pub struct MatchResult
pub enum MatchFlag

`replay`

ItemWhat it is
pub struct ReplayConfig
ReplayConfig :: fn default() -> Self

`risk`

ItemWhat it is
pub struct RiskConfig
RiskConfig :: fn default() -> Self
pub struct RiskThresholds
RiskThresholds :: fn default() -> Self
pub struct RiskWeights
RiskWeights :: fn balanced() -> Self
RiskWeights :: fn default() -> Self
pub enum RiskLevel
RiskLevel :: fn threshold(& self) -> f32
pub enum SignalType
SignalType :: fn is_positive(& self) -> bool

Re-exports. Exported here, defined elsewhere.

ExportDefined in
{ComponentSpec,FingerprintComponents,COMPONENT_SPECS}components::{ComponentSpec,FingerprintComponents,COMPONENT_SPECS}
{match_fingerprint,AmbiguityReason,FingerprintCandidate,MatchConfig,MatchOutcome,MATCHER_VERSION,}matcher::{match_fingerprint,AmbiguityReason,FingerprintCandidate,MatchConfig,MatchOutcome,MATCHER_VERSION,}

Boundary

Reaches into foundation.

Shares tier observability with 1 other crate: observability-analytics.

_What this crate deliberately does NOT own is a judgment. No committed registry records one for it, so none is stated here._

Where it sits

Tier (ontology)observability
Architectural role (taxonomy)unclassified (baselined)
Locationcrates/observability/sentinel
Vocabulary in force (lexicon)current

Tier flow. Which tiers this crate's own edges cross.

flowchart LR
  n_observability["observability"] --> n_foundation["foundation"]

Dependencies

Runtime, in this workspace.

CrateTierOptionalOnly on
`foundation-telemetry`foundationnoalways

Runtime, from outside the workspace.

CrateRequirementFeaturesOptionalOnly on
async-trait^0.1noalways
chrono^0.4serdenoalways
serde^1derivenoalways
serde_json^1noalways
sha2^0.10noalways
thiserror^2noalways
tokio^1fullnoalways
uuid^1v4, v7, serde, jsnoalways

Development, from outside the workspace.

CrateRequirementFeaturesOptionalOnly on
tokio^1full, rt-multi-thread, macrosnoalways

Build. None.

Depended on by. 1 workspace crate.

Signal flow — what reaches this crate, and what it reaches.

flowchart LR
  n_application_sentinel["application-sentinel"] -->|uses| SELF
  SELF["observability-sentinel"]
  SELF -->|runtime| n_foundation_telemetry["foundation-telemetry"]
  classDef self fill:#1f883d,stroke:#1f883d,color:#fff;
  class SELF self;

Feature flags

No Cargo features are defined: every capability is unconditional, so no consumer can receive a half-wired crate.

Targets

KindNameSource
libobservability_sentinel`src/lib.rs`

Error model

No public error type was detected: no public item declares a type named *Error, and no public signature returns one.

Operational characteristics

PropertyEvidence
async public surfacenone detected
async runtimeyes
database accessnone detected
network I/Onone detected
unsafe codenone detected
environment variablesnone detected

No unsafe block, unsafe fn, unsafe impl or unsafe trait was found by the parser anywhere in this crate's source.

Configuration

No environment variable is read with a literal name anywhere in this crate. A variable whose key is computed at run time cannot be listed here, and is not claimed to be absent.

1 workspace crate depends on this one: application-sentinel.

Verification

KindCount
Unit tests21
Integration tests0
Examples0
Doctests0

Evidence by module. How often each public module is named by something executable.

ModuleTestsExamplesConsumers
biometrics500
config100
fingerprint200
fingerprint::components300
fingerprint::matcher600
identity300
replay100
risk500

What the tests establish, by name:

Documentation coverage

MeasureDocumentedTotal
Public items with rustdoc1346
Public modules with a //! block228
pie showData
    title Public items with rustdoc
    "Documented" : 13
    "No rustdoc detected" : 33

Metrics

MetricValue
Rust source files29
Source lines1120
Code lines890
Public API items46
Public modules28
Tests21
Examples0
Cargo features0
Direct runtime dependencies9
Workspace reverse dependencies1
pie showData
    title Public API by kind
    "constant" : 2
    "enum" : 7
    "function" : 1
    "method" : 20
    "struct" : 16
pie showData
    title Rust source composition
    "Code" : 890
    "Blank or comment" : 230

Generation

Rendered by tools-corpus corpus readme from repository evidence alone, renderer schema 2, lexicon current. No model, network service or database was consulted. Regenerate with tools-corpus corpus readme --write; verify with --check.

All observability · Manual