This appears to be owing to changes that I made to Operation::operate in April 2025:

8666c9194 (Willem van Straten 2025-04-29 11:42:39 +1200 107)

  try
  {
    //! call the pure virtual method defined by sub-classes
    operation();
  }
  catch (Error& error)
  {
    cerr << "dsp::Operation::operate exception " << error << endl;
    operation_status = -1;
  }

This change causes any exceptions to be swallowed; however, Truncate::operation throws a special exception that indicates EndOfFile ... swallowing this exception stops it from working as needed.