Skip to content
Output modes & stats

Output modes and metadata trust

Choose which rows to write separately from what to validate. Terms: output modes.

Choose which rows to write

ModeRow filesAlso written
all (default with URI)pass, warn, errorissues, raw rejects, indexes, summary, manifest
failureswarn, errorissues, raw rejects, indexes, summary, manifest
report (default without URI)none, no raw rejectsissues, indexes, summary, evidence, manifest
valet validate -p pipeline.yml -i input.parquet -o results/ --output-mode failures
valet validate -p pipeline.yml -i input.parquet -o reports/ --output-mode report
  • Without a URI, only the stdout summary is produced; all/failures are rejected.
  • Every mode runs full validation. row_output reports omitted buckets and row counts.
  • report is not anonymization: names, schemas and messages may be sensitive.
output:
  uri: results/
  format: parquet
  mode: failures

Use Parquet statistics only when you trust the producer

Warning

Statistics can be wrong or tampered with. Keep the default off for untrusted data.

--parquet-stats trusted lets a row group pass from footer null counts and bounds without decoding.

valet validate -p numeric-checks.yml -i input.parquet -o reports/ \
  --output-mode report --parquet-stats trusted --log-format json
input:
  type: parquet
  parquet:
    statistics: off
  schema:
    columns:
      amount: {type: int64, required: true, nullable: false}

output:
  mode: report

rules:
  - code: AMOUNT_POSITIVE
    column: amount
    level: error
    checks:
      valid_range: {min: 0, exclusive_min: true}
SituationResult
Null count 0, minimum > 0Group passes from statistics
Missing stats, nulls, unprovable bound, warn-level violationGroup is scanned
--output-mode allAlways scans
Conversions, conditions, references, uniqueness, global checksAlways scans
valet schema --parquet-statsRejected

Valet-written files are never trusted automatically. See trust and tampering; proof rules: Engineering spec.

Read coverage, not just the outcome

FieldMeaning
total, pass, warn, error, coverage.value_rowsRows decoded and checked
coverage.metadata_claimed_rowsRows passed from statistics
coverage.accounted_rowsSum of both
verificationvalues, metadata_assisted, not_evaluated
trust_policy, ingestion_verificationAccepted assumptions; ingestion coverage
rule_coverageBoth counts per rule

A metadata_assisted pass depends on trusting the producer, and total can be 0. Trusted runs also write an evidence ledger (Engineering spec).

Write bounded statistics for downstream consumers

Off by default. Writes integer, decimal and boolean statistics only:

output:
  format: parquet
  parquet:
    statistics: bounded

Inspect performance without mixing it into result JSON

valet validate -p pipeline.yml -i input.parquet -o results/ \
  --json-output - --log-format json --log-level debug
Stream/eventContent
stdoutResult JSON
stderrNDJSON logs
run.phasePer-phase work (phases overlap; don’t sum)
run.finishedOutcome, time, memory, bytes, coverage
parquet.stats_decision (debug)Skip/scan reason

Exit 3: use the committed manifest; don’t rerun.