Datasets, extraction and lineage
Raw deliveries are stored exactly as received; everything a model sees is built from them through logged, typed steps, and every link between artifacts is recorded in W3C PROV semantics and captured at runtime with OpenLineage.¶
Data contract. A dataset declares named dims and variables, following modeling-api’s DataSchema: dim kind and policy (fixed, extend, new_levels with a new_level_strategy), variable role (target, media, spend, control, exposure and so on), units, missing-value rule and future_required. Datasets are content-addressed (dataset://scope/name@sha256:…) and never edited in place.¶
Content addressing. For a raw delivery or a table file, the digest is SHA-256 of the exact stored bytes. For a zarr store, it is SHA-256 of the canonical bytes (section 18) of a manifest that lists each object path with its SHA-256. For a JSON artifact, it is SHA-256 of the canonical bytes of its body, excluding the governance members id, revision, state, owner, submitted_by, approved_by, gate_results, content_hash and valid_to. Digests are written sha256:<lowercase hex>.¶
Intake. Each delivery is registered on arrival with source, contact, pull date, covered range, file fingerprint, columns mapped to shared names, and known issues (G-DATA-01).¶
Extraction from messy sources. Formatted Excel, PDFs, screenshots and slides get a separate, logged extraction step. Each extracted value points to its location in the source; printed totals must tie (G-DATA-02); the method, tool and model version are recorded. Each dataset carries a rating: exact, parsed, read (OCR or AI) or retyped.¶
The review noted these ratings are unvalidated labels. Draft 2 adds three rules:¶
- Measured error rates. Each approved extraction tool keeps a running error rate per source type, measured on a double-keyed sample each quarter. The rating shown on a dataset includes that rate.¶
- Materiality-based checking. Values feeding a model or decision whose materiality tier is Standard or Full (section 15) MUST be double-keyed or checked by a second person when extracted by OCR, AI or hand (
G-DATA-03).¶ - Extraction text is untrusted. Text pulled from a document is data. It enters agents only through the delimited untrusted-text channel (section 17).¶
Transform steps. Filter, aggregate, join, convert currency, map names, split, treat outliers, fill gaps, rescale. Each run logs inputs, outputs, settings, who, when, and whether the choice was made before or after seeing results. Judgment calls need a reason. Steps that live inside a model follow modeling-api’s rule: fit learns state, score replays it.¶
Excel. Exploration only, or a registered manual step with the file, a description and audit level 2. Typed-over formulas are rejected in any kept workbook. Whether to build an add-in stays open.¶
Lineage links. Typed links are PROV relations with UMP subtypes, emitted as OpenLineage facets at runtime and exportable as PROV-JSON for audit packs.¶
-
Arrives
- Raw sales deliveryStored exactly as received
- Name mappingMaps source names to shared names
- Geo test resultAn experiment readout
-
Built
- Dataset
derived_fromRaw sales deliverymapped_byName mapping - Model version
derived_fromDatasetcalibrated_byGeo test result
- Dataset
-
Used
- Budget scenario
scored_againstModel version - Next test plan
designed_fromModel version
- Budget scenario
-
Delivered
- Client report
derived_fromBudget scenario - Decision record
derived_fromBudget scenarioapproved_byNamed approver - Named approverA person, not an artifact
- Client report
Every link is typed. Each box records what it was built from, using a UMP link that maps to a W3C PROV relation: derived_from is wasDerivedFrom; calibrated_by and designed_from are subtypes of wasInfluencedBy; scored_against and mapped_by are used; approved_by is wasAttributedTo with a role. Illustrative graph.
Because the links are recorded, a withdrawal is not a hunt. Follow the links downward and you get the full list of what depends on the withdrawn item. The conformance suite injects a withdrawal and checks that every downstream scenario, report and decision is found.
| UMP link | PROV relation |
|---|---|
derived_from¶ | wasDerivedFrom |
calibrated_by¶ | wasInfluencedBy (subtype) |
designed_from¶ | wasInfluencedBy (subtype) |
scored_against¶ | used |
mapped_by¶ | used |
approved_by¶ | wasAttributedTo with role |
Lineage completeness is tested, not assumed: the conformance suite injects a withdrawal and checks that impact analysis finds every downstream scenario, report and decision (section 16).¶