Skip to content

Optional operator data-quality certification

NE-114 adds an operator-only composition boundary for Great Expectations or Pandera. It is intentionally separate from the Arrow preparation kernel and is not an agent tool, an ingest gate, or a second graph authority. The native engine's SHACL/ICV result remains authoritative; a certification result is an optional observation that cannot alter an already-committed fact.

flowchart LR
    S[Authorized bounded Arrow sample] --> G[Sample policy + size gate]
    G --> A{Selected optional adapter}
    A -->|lazy import| GE[Great Expectations]
    A -->|lazy import| PA[Pandera]
    GE --> O[Bounded aggregate observation]
    PA --> O
    O --> P{Report policy equals sample policy?}
    P -->|no| D[Failed / no publication]
    P -->|yes| H[Access-controlled Data Docs reference]
    O --> Q[Ed25519 signed result summary]
    H --> R[Operator evidence only]
    Q --> R
    R -. never mutates .-> KG[(Engine SHACL/ICV authority)]

Contract

Install exactly one provider extra in an isolated operator job:

uv run --extra data-quality-ge python operator_certify.py
# or
uv run --extra data-quality-pandera python operator_certify.py

The job calls run_certification_job(table, job, adapter=..., signer=...) where job.sample is an AuthorizedArrowSample with a non-expired authorization reference, tenant, classification, retention, deletion, and access-policy references, plus finite row/column/byte limits. The Arrow table is checked against those limits before provider code runs. A list of records, an unbounded IPC stream, a URL, a query, or a provider secret is not a valid sample input or evidence field.

Provider-specific suite/schema lookup and Data Docs publication belong to the trusted operator runner supplied to GreatExpectationsAdapter or PanderaAdapter. The runner returns only AdapterObservation; any human report is published through the deployment's access-controlled artifact store and returned as a CertificationArtifact reference. The reference must carry the exact sample policy, including tenant classification, retention, deletion, and access control. The job rejects a weaker or different policy.

The result is deliberately small: provider version, check counts, allow-listed failure codes, an opaque report reference, and an Ed25519 signature over a canonical digest. Raw rows, report bodies, exception strings, bearer tokens, URLs, queries, paths, and provider configuration never enter logs or evidence.

Honest optional states

not_requested means no operator job was selected. unavailable means Arrow or the selected provider is not installed. denied means authorization or sample bounds failed. failed means the provider or signing contract did not complete. Only a signed passed or failed execution may carry an artifact reference. Missing optional certification is therefore never represented as success, and a failure cannot replace or retroactively revise an engine SHACL/ICV decision.

The adapter package itself imports neither provider. The base agent-utilities runtime gains no Great Expectations, Pandera, pandas, or NumPy dependency; the two named extras are operator-only and are not required by the NE-115 governed profile → prepare → validate → commit path.