Skip to content

View Verification Results

Every ./dev/test run produces a report describing what happened: the build, the transformation’s translated plan, and the contract verification outcome. You can read it as JSON or through the mobile-friendly web UI.

  1. Generate a report if you haven’t already:

    Terminal window
    ./dev/test
  2. Start the viewer:

    Terminal window
    ./dev/report
  3. Open http://localhost:3000. In Codespaces, forward port 3000 and open it on your phone — the UI is responsive down to 375px screens and polls for a new report every 2 seconds while open.

The page shows:

  • Status badge — ✓ PASS or ✕ FAIL, large and mobile-visible
  • Build information — plugin, Spark, and Java versions, run duration
  • Test results — unit and integration test pass/fail counts
  • Input/output data — row count, schema, sample rows
  • Transformation IR — the real translated plan, rendered
  • Contract verification — PASSED/FAILED, with violation detail
  • Plugin events — the transformation’s execution timeline and diagnostics
  • Errors — full error messages, if execution failed
Terminal window
cat demo/output/report.json | jq .

Relevant top-level fields:

FieldMeaning
status"PASS" or "FAIL" for the overall job run
contractVerification.status"PASSED" or "FAILED" — did the output satisfy the contract
contractVerification.violationsList of violations, if any — see Violation Types
transformationIR.planThe rendered Spark plan, translated to Invaract’s IR
transformationIR.lineageColumn-level lineage traced from that plan
plugin.eventsThe transformation’s own execution timeline
errorPresent if the job itself failed to execute

status and contractVerification.status are deliberately separate fields — “did the Spark job execute” and “does its output satisfy the contract” are different questions, and conflating them would hide which one actually failed.

This format is internal to the example harness (report.json isn’t versioned or published as an API) — if you need a machine-readable result from the engine itself in your own job, that’s VerificationResult (see Reference → Contract Format), not this file.