DEMO MODE — identity is self-asserted, not authenticated. Roles are picker-selected; audit attribution is not a verified identity. Set AUTH_SECRET to enable SSO.
DxLookup
Trust…

Reference

Glossary

Every term in the demo, in plain English. Linked from the demo map.

Core concepts

Quality gate
A pure, deterministic validator (same input → same verdict). MFGLookup has eight. Each runs in two places over identical logic: the batch curation pipeline AND the agent's query-time tools. That twin-use is the guarantee that a number which fails a gate is never surfaced./controls
Refusal
When an honest answer would require data that fails a gate, the agent returns a typed refusal naming the gate, the threshold, and the observed value — instead of fabricating a number. The most important thing the product does./ask
Curation tier
T0 Raw → T1 Validated → T2 Curated → T3 Published. A column is promoted tier-by-tier only by passing the relevant gates. The agent may only serve answers from T2/T3./zones
Provenance
The signed record of where a value came from and which gates it passed. Every agent answer and gate decision is ed25519-signed and hash-chained, so you can trust a number after the fact./audit/lineage
Data Trust Score
0–100 posture metric. Starts at 100; each quality dimension loses weight proportional to how many of its gates fail across the catalog (a fail costs a full unit, a warn costs half)./sprs

Fetch & stitch (the Lookup pattern)

Landscape
A registered family of related tables the agent can answer over — its schema, grain, foreign keys, and semantics, but not a copy of the data. Two are wired in: a synthetic plant, and AdventureWorks (16 real relational tables). Pick the active one from the header./landscape
Lookup / registry
The index of every table's schema + semantics across all landscapes. It holds what a column means and how tables connect — so the agent can plan a join without the data being centralized. Lookup replicates schema, not rows./landscape
Fetcher agent
A read-only worker that pulls just the slice of one table the plan asks for (filtered, projected). The data stays at the source until a fetcher needs it; nothing is pre-replicated./explore
Stitch
Joining the fetched slices into one answer — the multi-hop join across the foreign-key graph that a person would otherwise hand-write in SQL. Supports many-to-one joins, time-bucketing, multi-metric rollups, and temporal semi-joins./explore
Stitch plan
The validated recipe for an answer: base table (the metric's grain), dimensions to bring in, the metric, group-by, filters, and any temporal semi-join. Produced deterministically from the question, or by the local LLM — and always checked against the registry before it runs./explore
Join path / FK graph
Tables are nodes, foreign keys are edges. To bring a dimension into an answer the registry finds the shortest path between tables by breadth-first search over that graph — so the agent discovers the join rather than being told it./landscape
Grain
What one row of a table represents (one work order, one PO line, one product-at-location). A metric's base table must match the metric's grain, or the aggregate would double-count./landscape
Value vocabulary
The map from stored codes to human labels (R → Road, 0 → Online, 1 → Northwest). Applied on output so groupings read in plain English instead of raw keys./explore
Temporal semi-join
Keep only base rows that have a matching event within a time window (e.g. lots on machines with a maintenance event in the prior 7 days). An EXISTS-style filter across time, not a value join./explore
Correlate
Instead of one aggregate, align two metrics on a shared key (line × week) and report their Pearson r — does scrap move with downtime? A different answer shape from a grouped stitch./reports
Deep plan (LLM)
An opt-in toggle in Explore. Off (default), planning is deterministic and instant. On, the local LLM emits the stitch plan for open-ended phrasing — still validated against the registry before it runs./explore
Low-confidence answer
When no known metric matches the question, the agent still attempts an interpretation but flags it — so a guess never reads as a confident result. Shown as a banner in Explore./explore
AdventureWorks
Microsoft's sample relational database, loaded as the second landscape: 16 tables across Production, Purchasing, and Sales. Illustrative (not real plant) data, sampled for demo speed — it exists to show genuinely multi-table joins./landscape

The eight gates

Completeness
Field non-null coverage. A column more than 50% missing is quarantined (T0); above 20% is flagged (T1)./controls
Schema conformance
Constant or near-constant columns carry no signal. A column with one distinct value is dropped; ≤3 distinct is flagged. Catches C-MAPSS's flat-lined sensors automatically./lineage
Range / validity
Statistical outlier fraction beyond ±5σ (or physical rules where defined, e.g. AI4I process-temp > air-temp)./lineage
Coverage-for-aggregation
The query-time gate behind the hero refusal. An aggregate is only reported with ≥30 supporting observations and ≤20% missingness on the filtered set./ask
Freshness
Latest source record vs the SLA window (demo: 5 years). SECOM's 2008 timestamps fail it, so SECOM is curated but never auto-published./zones
Uniqueness
Conflicting duplicate natural keys (lot id / machine UID / engine+cycle) are quarantined./zones
Reconciliation
When two sources report the same metric, they must agree within tolerance. AI4I carries a within-source version: the machine-failure flag vs the OR of the five mode flags./zones
Confidence
A derived/imputed value below the confidence threshold is held for steward review rather than auto-published./checkpoints

Quality dimensions (ISO 8000 / DAMA)

Completeness
Are values present? Weight 25 in the Trust Score.
Validity
Schema & range conformance. Weight 25.
Consistency
Do sources agree? (reconciliation) Weight 15.
Timeliness
Is the data fresh enough? (freshness) Weight 10.
Uniqueness
No conflicting duplicates? Weight 10.
Accuracy
Is an aggregate well-supported? (coverage + confidence) Weight 15.

The datasets

SECOMsemiconductor manufacturing
UCI dataset, the messy hero: 1,567 wafer lots × 590 sensors, 41,951 missing values, 116 constant columns. Drives the bad-data refusal. From 2008 — so the freshness gate keeps it at curated, not published./zones
AI4I 2020machine telemetry
UCI, CC BY 4.0. 10,000 machines, product quality L/M/H, tidy temp/torque/speed/tool-wear, five failure modes (TWF/HDF/PWF/OSF/RNF). The clean contrast — most columns publish./zones
NASA C-MAPSSturbofan run-to-failure
NASA Prognostics, public domain. Run-to-failure trajectories: engine × cycle, 3 settings + 21 sensors, remaining-useful-life. Powers the asset-reliability view; several sensors are flat-lined and caught by the schema gate./ot-risk

Platform primitives

OPA / RegoOpen Policy Agent
The policy engine. Every agent tool call is evaluated against Rego policy before it runs — the same boundary the gates enforce, applied to who may invoke what./policies
Capability token
A scoped, orchestrator-signed token that says which datasets/tiers an agent may read. The lighter access-control layer./subagents
ed25519 + hash chain
Every provenance entry is signed with ed25519 and hash-chained to the previous, so tampering breaks the chain at a visible entry./audit
Local LLM (Ollama)
The model runs on the customer's hardware and only phrases answers — the deterministic gates decide them. If it's offline, a deterministic planner/synthesizer keeps the agent working./ask
Steward review queue
Low-confidence or borderline records held for a human data steward to approve before they publish./checkpoints

Assets & documents

Asset
A named operational entity — Machine 47, Line 3, Supplier A — that groups structured column references and uploaded documents under one trust score. The asset is the organizing unit for governance: structured data quality and document freshness both roll into it./assets
Asset trust score
0–100 composite: 60% from the column reputation gate verdicts of linked structured columns, 40% from the staleness gate scores of linked documents. When no documents are linked, 100% structured. Chronically bad columns cap the score at 30 regardless./assets
Doc staleness gate
Pass if the document was ingested/modified within the past year. Warn if 1–2 years old. Fail if older than 2 years. Directly penalizes the asset trust score for any linked asset./docs
Authority gate
A document warning if it has no linked assets — it exists in the index but isn't tied to any governed entity. Not a hard failure, but surfaces on the /docs page and trust ledger./docs
BM25
Best Match 25 — a keyword-based relevance ranking algorithm used to retrieve the top-k document chunks matching a question. Implemented in ~150 lines with no external dependency. Documents are chunked at ~300 words, tokenized, and indexed at ingest time; BM25 searches run in-process at query time./explore
Coverage gap
An asset with no linked documents. The doc staleness score defaults to 100% structured (no doc penalty), but the gap is surfaced in /trust-ledger and the Intelligence Hub as a signal that unstructured context is missing./intelligence
Domain vertical
Industry-specific configuration used by the onboarding wizard: discrete-mfg, process-mfg, food-bev, med-device, energy. Each preset identifies which column patterns map to which asset kinds and which document types are expected./onboard
Onboarding wizard
The five-step cold-start flow: pick industry → upload CSV (headers only, no data sent anywhere) → confirm detected assets → upload documents → see trust scores. Designed for an SMB with no prior data governance tooling./onboard