Loading
Loading
A six-facet structure that pins each deposit to a concrete context. The grouping key for confidence and conflict.
Scope is a dataclass with six optional fields. Each field narrows where the claim applies; together they form the deposit's "scope bag".
model — e.g. "gpt-5", "claude-opus-4-7".dataset — the data slice the claim applies to.env — "dev", "staging", "prod".version — code or schema version.n — sample size behind the claim.seed — RNG seed if reproducible.note — free-form text for anything not covered (folded into the FTS index).from atlaso import Scope
scope = Scope(
model="gpt-5",
dataset="prod-2026-q1",
env="prod",
version="v3.2",
n=10000,
note="A/B test arm B",
)Shape:
@dataclass(frozen=True, slots=True)
class Scope:
model: str | None = None
dataset: str | None = None
env: str | None = None
version: str | None = None
n: int | None = None
seed: int | None = None
note: str | None = None # folded into the FTS index alongside contentScope is the grouping key for confidence and conflict. Two deposits with the same six facets land in the same scope bag. The bag is what gets a precision score, a conflict check, and the is_confident verdict.
A claim with no scope is broader than one with three facets — which is why broad positives need stronger evidence to pass the gate.
Pass a scope to recall()to restrict results to deposits whose scope facets match. Partial matches work — facets you don't pass aren't filtered.
hits = user.recall(
"threshold",
scope=Scope(env="prod"), # only deposits scoped to env=prod
)Was this page helpful?