Funciones de minimización de corpus

function HPDFMinimizeCorpusCase(const Input: TBytes;
  const Predicate: THPDFFailurePredicate; MaximumAttempts: Integer;
  out AInfo: THPDFCorpusMinimizationInfo): TBytes;

El reducer primero elimina spans completos de indirect objects y luego aplica reducciones de rangos de bytes progresivamente más pequeñas

Un candidato se acepta solo cuando el predicate sigue reportando la signature de fallo original

AInfo reporta los intentos, las reducciones aceptadas, los spans de objetos eliminados, los rangos de bytes eliminados, los tamaños original y final, y la signature preservada

Almacenamiento continuo de corpus

function HPDFDefaultCorpusStoreOptions: THPDFCorpusStoreOptions;

function HPDFMinimizeAndStoreCorpusCase(const Input: TBytes;
  const Predicate: THPDFFailurePredicate;
  const CorpusDirectory: string;
  const Options: THPDFCorpusStoreOptions;
  out AInfo: THPDFCorpusCaseInfo): Boolean;

function HPDFCorpusCaseInfoToJSON(
  const AInfo: THPDFCorpusCaseInfo): AnsiString;
type
  THPDFCorpusStoreAction = (csaAdded, csaReplaced, csaKeptExisting);

  THPDFCorpusStoreOptions = record
    MaximumAttempts: Integer;
    MaximumInputBytes: Int64;
    MaximumStoredBytes: Int64;
    LockRetryCount: Integer;
  end;

El store deriva un case ID estable a partir del digest SHA-256 de la signature de fallo, revalida cualquier caso existente, minimiza tanto el candidato existente como el entrante y conserva el resultado más pequeño

Un lock entre procesos serializa las decisiones de un directorio de corpus, mientras que los archivos temporales de write-through y el reemplazo atómico impiden que los lectores observen archivos PDF o de metadata parciales

THPDFCorpusStoreOptions acota los intentos de minimización, los bytes entrantes, los bytes almacenados y los reintentos de lock, y THPDFCorpusCaseInfo.Action reporta si el caso fue agregado, reemplazado o retenido

El schema sidecar hotpdf.corpus.case.v1 registra el case ID, la signature de fallo exacta, el SHA-256 del contenido y el conteo de bytes almacenados en un orden estable de campos

HPDFCompareRegressionResultsDeterministic compara signatures repetidas entre engines en los dominios de parse, render, texto y save, y rechaza las corridas inestables o fallidas