Optional, and deliberately so. Every reading and every pattern act elsewhere on this site runs against an application that references nothing — this package buys the handful that cannot be taken from outside a process.
It references the engine not at all. An application that referenced the engine would ship a test harness to its users, and the two halves are separate assemblies precisely so an application takes the one it needs without inheriting the other.
An application shipped to its users reports nothing and writes no file. That is what makes the protocol safe to leave in, which is the only version of this idea that survives contact with a release branch.