Analysis, posture & rules
Statistics, estate posture and business-rule reconciliation.
AnalysisServiceruns statistical methods on data you send: forecasting, lag features, clustering, causal intervention and descriptive statistics.PostureServiceserves the data-maturity picture that a fetch produced, maps the connected estate into a domain graph, and runs causal interventions over estate columns.RulesServiceserves the business rules the reconciliation agent derived and stores the operator’s enforcement policy for each.
Summary
| Service | RPC | Kind | Purpose |
|---|---|---|---|
| AnalysisService | AnalyzeTimeSeries | Unary | Backtest-selected forecast, stationarity and anomalies |
| AnalysisService | AnalyzeFeature | Unary | Significant autocorrelation lags |
| AnalysisService | ClusterRefinement | Unary | Density clustering of embedding vectors |
| AnalysisService | AnalyzeCausal | Unary | Do-intervention over a graph you state |
| AnalysisService | InferBayesian | Unary | Bayesian posterior (no network defined) |
| AnalysisService | AnalyzeDescriptiveStats | Unary | Mean, median, variance, skewness, kurtosis |
| AnalysisService | ClassifyESGRelevance | Unary | ESG relevance score for text |
| PostureService | GetHealthScore | Unary | Domain health, assessments, measures and contexts |
| PostureService | BuildDomainGraph | Unary | Map the connected estate into domains |
| PostureService | AnalyzeEstateCausal | Unary | Do-intervention over estate columns |
| PostureService | ListIncidents | Unary | Data-maturity assessments |
| PostureService | GetContext | Unary | Semantic context clusters |
| RulesService | ListRules | Unary | Derived business rules, with policies |
| RulesService | AnalyzeCode | Unary | Rules from the latest snapshot or from source code |
| RulesService | CheckCode | Unary | Model review of a code snippet |
| RulesService | UpdateRulePolicy | Unary | Set a rule’s enforcement policy |
AnalysisService
Full name semantics.v1.AnalysisService.
These RPCs compute on the values in the request. They read no data source. Some errors are
returned without a specific gRPC code, and clients see UNKNOWN for those.
AnalyzeTimeSeries
rpc AnalyzeTimeSeries(AnalyzeTimeSeriesRequest) returns (AnalyzeTimeSeriesResponse);- Kind: Unary.
- Auth: Bearer session.
- Errors: None. Too little data is reported in the response.
Runs an exploratory time-series analysis over data. The server chooses a Prophet decomposition
or an ARIMA model by backtest, applies an ADF stationarity test (differencing a non-stationary
series before modelling), and forecasts forecast_horizon steps. If no model fits, it falls back
to linear regression and says so in recommended_model and anomalies. With 5 or fewer points,
the response has only recommended_model: "Insufficient Data (Need > 5 points)".
Request: AnalyzeTimeSeriesRequest
| Field | Type | Description |
|---|---|---|
data | repeated double | The series, in time order. More than 5 points are needed. |
forecast_horizon | int32 | Steps to forecast. 0 or negative means 3. |
frequency | string | Series frequency label. Not used by the server. |
domain | string | Domain label. Not used by the server. |
telemetry_source | string | Source label. Not used by the server. |
Response: AnalyzeTimeSeriesResponse
| Field | Type | Description |
|---|---|---|
forecast | repeated double | Forecast values for the next forecast_horizon steps. |
anomalies | repeated string | Findings and anomalies, as sentences. |
stationarity_test | string | ADF result, for example ADF: stationary (stat=… < crit5=…), or ADF: inconclusive. Empty on the fallback. |
recommended_model | string | The chosen model, for example ARIMA(1,1,0) [backtest-selected], or Linear Regression (Fallback). |
AnalyzeFeature
rpc AnalyzeFeature(AnalyzeFeatureRequest) returns (AnalyzeFeatureResponse);- Kind: Unary.
- Auth: Bearer session.
- Errors: None.
Computes the autocorrelation of target at lags 1 to 5 and reports each lag with |ACF| > 0.5 as
significant, with a target_lag_<k> feature for it. Fewer than 10 points returns
generated_features: ["Insufficient data"], and a constant series returns ["Constant target"].
Request: AnalyzeFeatureRequest
| Field | Type | Description |
|---|---|---|
target | repeated double | The target series. At least 10 points. |
external_vars | repeated double | Not used by the server. |
Response: AnalyzeFeatureResponse
| Field | Type | Description |
|---|---|---|
significant_lags | repeated string | For example Lag-2 (ACF: 0.63). |
generated_features | repeated string | Feature names such as target_lag_2, or a sentence when there are none. |
ClusterRefinement
rpc ClusterRefinement(ClusterRefinementRequest) returns (ClusterRefinementResponse);- Kind: Unary.
- Auth: Bearer session.
- Errors: Returned without a specific code (clients see
UNKNOWN) whenvectorsis empty, no vector has any dimensions, or clustering fails.
Clusters vectors with HDBSCAN (minimum cluster size 3, Euclidean distance), choosing parameters
by silhouette. When the deployment has a re-ranking model, the clusters are refined with it,
using BM25 scores of items against data_metadata (or telemetry_source) when items lines
up with vectors. The dimension is taken from the first non-empty vector. Vectors of any other
dimension are labelled noise (-1).
Request: ClusterRefinementRequest
| Field | Type | Description |
|---|---|---|
items | repeated string | Text items, one per vector. Used for BM25 scoring when the counts match. |
granularity | string | PARAGRAPH or COLUMN. Not used by the server. |
vectors | repeated Embedding | Required. The vectors to cluster. |
domain | string | Context for re-ranking. |
access_level | string | Context for re-ranking. |
telemetry_source | string | Context for re-ranking, and the BM25 query when data_metadata is empty. |
data_metadata | string | Context for re-ranking, and the BM25 query. |
business_unit | string | Not used by the server. |
Response: ClusterRefinementResponse
| Field | Type | Description |
|---|---|---|
clusters | repeated int32 | A cluster label per input vector, in input order. -1 is noise. |
noise | repeated int32 | Indices of the vectors labelled noise. |
health_score | double | Cluster quality: the silhouette score, or the re-ranker’s cluster health when refinement ran. |
AnalyzeCausal
rpc AnalyzeCausal(AnalyzeCausalRequest) returns (AnalyzeCausalResponse);- Kind: Unary.
- Auth: Bearer session.
- Errors:
INVALID_ARGUMENTif an edge is refused: an endpoint missing fromnodes, or an edge that would create a cycle. An intervention failure is returned without a specific code.
Builds the graph exactly as you state it and sets intervention_node to intervention_value
(the do-operator). The change propagates along edges by multiplying by each effect_size. With
no edges, nothing propagates and the effect is 0. That means “no structure was given”, not “no
effect was measured”. For a graph built from the connected estate, use
AnalyzeEstateCausal.
Request: AnalyzeCausalRequest
| Field | Type | Description |
|---|---|---|
nodes | map<string, double> | Node name to observed value. |
intervention_node | string | The node to set. |
intervention_value | double | The value to set it to. |
target_node | string | The node whose change to report. |
edges | repeated CausalEdge | The graph’s edges. Both endpoints must be in nodes, and the graph must stay acyclic. |
Response: AnalyzeCausalResponse
| Field | Type | Description |
|---|---|---|
effect | double | Predicted change in target_node. 0 when the target is not reached or not named. |
new_target_value | double | The target’s value after the intervention. |
InferBayesian
rpc InferBayesian(InferBayesianRequest) returns (InferBayesianResponse);- Kind: Unary.
- Auth: Bearer session.
- Errors:
FAILED_PRECONDITIONon every call in the current release. No Bayesian network is defined on the instance, and the request cannot carry one.
Request: InferBayesianRequest
| Field | Type | Description |
|---|---|---|
evidence | map<string, string> | Variable to observed state. |
target_node | string | The variable whose posterior to return. |
Response: InferBayesianResponse
| Field | Type | Description |
|---|---|---|
probabilities | map<string, double> | State to posterior probability. Not returned in the current release. |
AnalyzeDescriptiveStats
rpc AnalyzeDescriptiveStats(AnalyzeDescriptiveStatsRequest) returns (AnalyzeDescriptiveStatsResponse);- Kind: Unary.
- Auth: Bearer session.
- Errors: None. Empty
datareturns an empty response, with every field 0.
Request: AnalyzeDescriptiveStatsRequest
| Field | Type | Description |
|---|---|---|
data | repeated double | The values. |
Response: AnalyzeDescriptiveStatsResponse
| Field | Type | Description |
|---|---|---|
mean | double | Mean. |
median | double | Median. |
variance | double | Variance. |
std_dev | double | Standard deviation. |
skewness | double | Skewness. |
kurtosis | double | Kurtosis. |
ClassifyESGRelevance
rpc ClassifyESGRelevance(ClassifyESGRelevanceRequest) returns (ClassifyESGRelevanceResponse);- Kind: Unary.
- Auth: Bearer session.
- Errors: Returned without a specific code if classification fails.
Scores the texts together for ESG relevance with a keyword classifier. No model is involved. The texts are also passed to the deployment’s knowledge-ingestion pipeline when one is configured.
Request: ClassifyESGRelevanceRequest
| Field | Type | Description |
|---|---|---|
texts | repeated string | The texts to score, as one group. |
Response: ClassifyESGRelevanceResponse
| Field | Type | Description |
|---|---|---|
relevance_score | double | ESG relevance of the group. |
PostureService
Full name semantics.v1.PostureService.
Posture comes from a fetch. After a fetch, GetHealthScore serves that run’s snapshot. Without a
snapshot, the posture agent runs on the model plane. For how a fetch is started, see
Fetch & traces. Long posture runs are visible live
through ActivityService.
GetHealthScore
rpc GetHealthScore(GetHealthScoreRequest) returns (GetHealthScoreResponse);- Kind: Unary. It can take minutes when no snapshot exists and the posture agent has to run.
- Auth: Bearer session.
- Errors:
FAILED_PRECONDITIONif the instance has no data sources.UNAVAILABLEif the posture analysis cannot run. The server reports these rather than returning a grade it did not compute.
Returns the latest fetch’s posture snapshot, or runs the posture agent when there is none. Before
it is returned, readiness figures are normalised, edges are cleaned, each assessment is assigned
a domain, and each semantic context is grounded in the tenant’s knowledge corpus where one
exists. graph_nodes and graph_edges are empty on this RPC.
Request: GetHealthScoreRequest
No fields.
Response: GetHealthScoreResponse
Also returned by BuildDomainGraph.
| Field | Type | Description |
|---|---|---|
domains | map<string, DomainHealth> | Health per business domain. |
assessments | repeated DataMaturityAssessment | Data-maturity findings. |
sops | repeated OptimizationSOP | Recommended measures. |
contexts | repeated SemanticContextItem | Semantic context clusters. |
graph_nodes | repeated KnowledgeGraphNode | The estate graph’s nodes. Set only by BuildDomainGraph with include_connected_sources. |
graph_edges | repeated KnowledgeGraphEdge | The estate graph’s edges. Each edge’s evidence is in relation. |
BuildDomainGraph
rpc BuildDomainGraph(BuildDomainGraphRequest) returns (GetHealthScoreResponse);- Kind: Unary.
- Auth: Bearer session.
- Errors:
FAILED_PRECONDITIONwheninclude_connected_sourcesis false (there are no instance data files to map), when no data sources are configured, or when the server has no metadata store.INTERNALif the configured connections cannot be listed.
With include_connected_sources: true, the server asks every configured connection for its
catalogue (bounded at 30 seconds per source, concurrently), profiles columns, samples values
except where excluded, and groups the discovered datasets into domains. A connection that
refused, has no connector, or holds nothing still appears as a source node with its reason.
Sampled values are used only to infer structure. A sampled value never reaches the graph, a log line, an error, a lineage record or a model prompt: the graph carries counts and shapes, never a cell.
Request: BuildDomainGraphRequest
| Field | Type | Description |
|---|---|---|
include_connected_sources | bool | Deprecated. Ask the connected sources. The cockpit’s estate map now uses the platform’s shared estate service. This field is still served, and without it the RPC refuses. |
metadata_only_connection_ids | repeated string | Connections to read as catalogue only, with no rows sampled. Sampling is on by default for every other connection. |
Response
GetHealthScoreResponse with graph_nodes and graph_edges
set.
AnalyzeEstateCausal
rpc AnalyzeEstateCausal(AnalyzeEstateCausalRequest) returns (AnalyzeEstateCausalResponse);- Kind: Unary. It builds the estate graph first, so it has the same cost as
BuildDomainGraph. - Auth: Bearer session.
- Errors: The same preconditions as
BuildDomainGraph.INVALID_ARGUMENTif the coefficients cannot be wired, for example because aneffect_sizeis not finite.
Runs a do-intervention over estate causal nodes: columns of connected datasets that came back
with a measured value. The structure comes from the coefficients you assert. The estate
proposes candidate pairs but never supplies a coefficient. Without at least one admitted edge, the
RPC refuses (answered: false) rather than returning an effect of 0. Read answered first, and
show basis_statement beside any number.
Request: AnalyzeEstateCausalRequest
| Field | Type | Description |
|---|---|---|
metadata_only_connection_ids | repeated string | As in BuildDomainGraphRequest. An excluded connection contributes no causal node. |
intervention_node | string | Estate causal node to set: <qualified dataset>.<column>. |
intervention_value | double | Value to set it to. |
target_node | string | Estate causal node whose change to report. |
coefficients | repeated EstateCausalCoefficient | Your structural coefficients. At least one must be admitted. |
Response: AnalyzeEstateCausalResponse
| Field | Type | Description |
|---|---|---|
answered | bool | false when nothing was propagated. Read this first. |
refusal | string | Why it declined, in full. effect and new_target_value are 0 and meaningless then. |
effect | double | Predicted change in the target. |
new_target_value | double | Target value after the intervention. |
weakest_basis | string | The weakest basis among the edges used: OPERATOR_ASSERTED or DECLARED_KEY_REPURPOSED. |
basis_statement | string | What that basis means. Show it verbatim beside the number. |
edges | repeated string | Every edge that entered the graph, basis first. |
candidate_pairs | repeated string | Every pair the estate proposed, priced or not. |
node_refusals | repeated string | Columns that were not made nodes, with reasons. Structure only, no figures. |
edge_refusals | repeated string | Coefficients that were not admitted, with reasons. |
nodes_added | int32 | Causal nodes built. |
columns_refused | int32 | Columns refused a node. Read nodes_added against it. |
ListIncidents
rpc ListIncidents(ListIncidentsRequest) returns (ListIncidentsResponse);- Kind: Unary. It runs the posture agent.
- Auth: Bearer session.
- Errors: None. If the posture analysis cannot run, the list is empty. An empty list therefore does not mean “no incidents”.
Returns the posture agent’s data-maturity assessments. Entries that repeat the agent template’s
example are dropped. domain is not set on this RPC.
Request: ListIncidentsRequest
No fields.
Response: ListIncidentsResponse
| Field | Type | Description |
|---|---|---|
assessments | repeated DataMaturityAssessment | The assessments. |
GetContext
rpc GetContext(GetContextRequest) returns (GetContextResponse);- Kind: Unary. It runs the posture agent.
- Auth: Bearer session.
- Errors: None. If the posture analysis cannot run, it returns
context_json: "{}"and no items.
Request: GetContextRequest
| Field | Type | Description |
|---|---|---|
agent_type | string | Not used by the server. |
Response: GetContextResponse
| Field | Type | Description |
|---|---|---|
context_json | string | The semantic contexts as JSON. |
items | repeated SemanticContextItem | The same contexts, typed. |
RulesService
Full name semantics.v1.RulesService.
A rule has two halves with different authors. Fields such as name, logic_plain_english,
proposed_code and reconciliation_status are findings of the reconciliation agent, and
nothing on this API can edit them. policy is the operator’s decision about the rule. It is
written through UpdateRulePolicy and survives the next fetch.
ListRules
rpc ListRules(ListRulesRequest) returns (ListRulesResponse);- Kind: Unary.
- Auth: Bearer session.
- Errors: Returned without a specific code if the rules agent cannot run (for example, no model plane).
Derives rules from the latest fetch session’s analysis, using a cached result when one exists, then merges in each rule’s stored policy. With no fetch session yet, it returns an empty list.
Request: ListRulesRequest
| Field | Type | Description |
|---|---|---|
domain_filter | string | Keep only rules whose category equals this, case-insensitively. Empty returns all. |
Response: ListRulesResponse
| Field | Type | Description |
|---|---|---|
rules | repeated Rule | The rules. |
AnalyzeCode
rpc AnalyzeCode(AnalyzeCodeRequest) returns (AnalyzeCodeResponse);- Kind: Unary.
- Auth: Bearer session.
- Errors:
FAILED_PRECONDITIONwhen no rules snapshot exists andsource_codeis empty. Model, template and parse failures are returned without a specific code.
If a fetch has written a rules snapshot, returns those rules and ignores the request. Otherwise
the reconciliation agent derives rules from source_code.
Request: AnalyzeCodeRequest
| Field | Type | Description |
|---|---|---|
source_path | string | Not used by the server. |
source_code | string | Code to derive rules from, used only when no snapshot exists. |
Response: AnalyzeCodeResponse
| Field | Type | Description |
|---|---|---|
found_rules | repeated Rule | The rules. |
CheckCode
rpc CheckCode(CheckCodeRequest) returns (CheckCodeResponse);- Kind: Unary.
- Auth: Bearer session.
- Errors:
PERMISSION_DENIEDif the snippet trips the rules agent’s guardrail.
Asks the model plane to review the snippet. valid reports whether the model answered, not
whether the code is valid. Read report.
Request: CheckCodeRequest
| Field | Type | Description |
|---|---|---|
source_code | string | The code. |
language | string | Its language. |
Response: CheckCodeResponse
| Field | Type | Description |
|---|---|---|
valid | bool | true when the model answered. Not a verdict on the code. |
issues | repeated string | Always empty. |
report | string | The model’s review, or the error when the call failed. |
UpdateRulePolicy
rpc UpdateRulePolicy(UpdateRulePolicyRequest) returns (UpdateRulePolicyResponse);- Kind: Unary.
- Auth: Bearer session. The author is the verified session subject.
- Errors:
INVALID_ARGUMENTifrule_idorpolicyis missing.UNAUTHENTICATEDif the session has no subject.FAILED_PRECONDITIONif no rules have been derived yet.NOT_FOUNDifrule_idis not in the current rules.INTERNALif the policy cannot be stored.
Stores the operator’s enforcement policy for an existing rule. It does not create rules.
updated_by and updated_at_unix are set by the server.
Request: UpdateRulePolicyRequest
| Field | Type | Description |
|---|---|---|
rule_id | string | Required. An existing rule’s id. |
policy | RulePolicy | Required. Author fields are ignored. |
Response: UpdateRulePolicyResponse
| Field | Type | Description |
|---|---|---|
policy | RulePolicy | The stored policy, with the server-set author and time. |
Messages
Embedding
| Field | Type | Description |
|---|---|---|
vector | repeated float | One embedding vector. |
CausalEdge
| Field | Type | Description |
|---|---|---|
from | string | Cause node. |
to | string | Effect node. |
effect_size | double | Structural coefficient: a unit change in from moves to by this much. An edge at 0 is a declared non-relationship; a missing edge is an unknown one. |
EstateCausalCoefficient
| Field | Type | Description |
|---|---|---|
from | string | Estate causal node, <qualified dataset>.<column>, in the source’s own spelling. It must have a measured value. |
to | string | Estate causal node. |
effect_size | double | Your assertion of the coefficient. Must be finite. |
DomainHealth
| Field | Type | Description |
|---|---|---|
status | string | Stable, At Risk or Critical. |
grade | string | Letter grade, for example A, B or C. |
quality_stability_pct | double | Quality stability percentage. |
risk_pii_pct | double | PII risk percentage. |
lineage_pct | double | Lineage coverage percentage. |
freshness_pct | double | Freshness percentage. |
policy_pct | double | Policy coverage percentage. |
cost_efficiency_pct | double | Cost efficiency percentage. |
issues | string | Issues, as text. |
uses_and_alignment | repeated MaturityIndicator | Maturity indicators. |
data_and_architecture | repeated MaturityIndicator | Maturity indicators. |
analysis_and_predictive | repeated MaturityIndicator | Maturity indicators. |
tools_and_automation | repeated MaturityIndicator | Maturity indicators. |
skills_and_fluency | repeated MaturityIndicator | Maturity indicators. |
spatial_logistics | repeated MaturityIndicator | Maturity indicators. |
empty_trip | repeated MaturityIndicator | Always empty, on purpose. Nothing in the platform measures empty-trip running, so the server clears this field on every response. Display it as not measured. |
shadow_search_ingestion | repeated MaturityIndicator | Maturity indicators. |
MaturityIndicator
| Field | Type | Description |
|---|---|---|
indicator_name | string | Indicator name. |
rating | int32 | 1 to 5. |
metric | string | The metric. |
description | string | Description. |
DataMaturityAssessment
| Field | Type | Description |
|---|---|---|
incident | string | The finding. |
severity | string | Severity. |
impact | string | Impact. |
root_cause | string | Root cause. |
blast_radius | string | Blast radius. |
fix | string | Suggested fix. |
domain | string | The business domain it affects, matched against the fetch’s derived domains. |
OptimizationSOP
| Field | Type | Description |
|---|---|---|
type | string | Measure type. |
title | string | Title. |
action | string | The action. |
reason_impact | string | Why, and the expected impact. |
button_label | string | Suggested action label. |
provenance | MeasureProvenance | Where the wording came from. Only MEASURE_PROVENANCE_MODEL_GENERATED may be labelled AI-generated. |
SemanticContextItem
| Field | Type | Description |
|---|---|---|
cluster_name | string | Context cluster name. |
attributes | string | Attributes. |
relationships | string | Relationships. |
database_objects | repeated string | Database objects in the cluster. |
relevant_documents | repeated string | Relevant documents. |
quality_pillars | repeated DataQualityPillar | Data-quality checks. |
risk_checks | repeated RiskComplianceCheck | Risk and compliance checks. |
DataQualityPillar
| Field | Type | Description |
|---|---|---|
name | string | Pillar name. |
status | string | Pass, Warning or Fail. |
description | string | Description. |
RiskComplianceCheck
| Field | Type | Description |
|---|---|---|
check_name | string | Check name. |
status | string | Pass, Warning or Fail. |
details | string | Details. |
KnowledgeGraphNode
| Field | Type | Description |
|---|---|---|
id | string | Node id. |
label | string | Display label. |
properties | map<string, string> | Node properties. |
domain | string | Business domain. |
access_level | string | Access level. |
telemetry_source | string | Telemetry source. |
data_metadata | string | Metadata. |
business_unit | string | Business unit. |
KnowledgeGraphEdge
| Field | Type | Description |
|---|---|---|
source | string | Source node id. |
target | string | Target node id. |
relation | string | The edge’s evidence, as KIND or KIND: detail. DECLARED_FOREIGN_KEY is the source’s own constraint. INFERRED_* kinds are FACE’s measurements. GUESSED_* kinds are guesses and say so. Display the three differently. |
Rule
| Field | Type | Description |
|---|---|---|
id | string | Rule id. |
name | string | Rule name. |
logic_plain_english | string | The rule in plain English. |
source_document | string | Document the rule was found in. |
category | string | For example Logistics or Finance. |
severity | string | Critical, High, Medium or Low. |
maturity | string | High, Medium or Low. |
inferred_objective | string | The rule’s inferred objective. |
related_documents | repeated string | Related documents. |
proposed_code | string | Proposed implementation. |
rule_type | string | Rule type. |
reconciliation_status | string | Code-versus-policy verdict: Aligned, Drift, Shadow or Missing. Empty means nobody has judged it, which is not Aligned. |
implementation_file | string | Where the rule is implemented in code. |
policy_document | string | The governing policy document the agent grounded the rule in. |
reconciliation_confidence | optional double | Unset on every response. Nothing measures a confidence for the verdict. Read reconciliation_status, and display an absent value as “not measured”. |
policy | RulePolicy | The operator’s enforcement policy. |
RulePolicy
| Field | Type | Description |
|---|---|---|
enforcement_action | EnforcementAction | What happens on a breach. |
tolerance | string | Tolerance in the rule’s own units, as typed. |
policy_reference | string | The clause the operator cites, for example ISO-42001 §9.4. |
updated_by | string | Server-set. The verified subject that last wrote it. |
updated_at_unix | int64 | Server-set. 0 means never written. |
rationale | string | Free-text justification. |
Enums
EnforcementAction
| Value | Meaning |
|---|---|
ENFORCEMENT_ACTION_UNSPECIFIED | Not set. |
ENFORCEMENT_ACTION_AUDIT_ONLY | Observe and record. Nothing is blocked. |
ENFORCEMENT_ACTION_REVIEW_REQUIRED | Flag the breach for a human before the action proceeds. |
ENFORCEMENT_ACTION_BLOCK | Refuse the action outright. |
MeasureProvenance
| Value | Meaning |
|---|---|
MEASURE_PROVENANCE_UNSPECIFIED | Written before this field existed. Says nothing. |
MEASURE_PROVENANCE_MEASURED | Read verbatim from a source the fetch pulled. |
MEASURE_PROVENANCE_DERIVED | Computed deterministically from measured data. |
MEASURE_PROVENANCE_MODEL_GENERATED | Written by a model. |