Функции минимизации корпуса
function HPDFMinimizeCorpusCase(const Input: TBytes;
const Predicate: THPDFFailurePredicate; MaximumAttempts: Integer;
out AInfo: THPDFCorpusMinimizationInfo): TBytes;
Редьюсер сначала удаляет целые диапазоны косвенных объектов, а затем применяет всё более мелкие сокращения диапазонов байтов
Кандидат принимается, только когда predicate по-прежнему сообщает исходную сигнатуру отказа
AInfo сообщает попытки, принятые сокращения, удалённые диапазоны объектов и байтов, исходный и итоговый размеры и сохранённую сигнатуру
Непрерывное хранилище корпуса
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;
Хранилище выводит стабильный case ID из SHA-256 сигнатуры отказа, перепроверяет существующий кейс, минимизирует и существующего, и входящего кандидата и оставляет наименьший результат
Межпроцессная блокировка сериализует решения для одной директории корпуса, а временные файлы со сквозной записью и атомарная замена не дают читателям увидеть частичные PDF или файлы метаданных
THPDFCorpusStoreOptions ограничивает попытки минимизации, входящие и сохраняемые байты и повторы захвата блокировки, а THPDFCorpusCaseInfo.Action сообщает, был ли кейс добавлен, заменён или сохранён прежний
Sidecar-схема hotpdf.corpus.case.v1 фиксирует case ID, точную сигнатуру отказа, SHA-256 содержимого и число сохранённых байтов в стабильном порядке полей
HPDFCompareRegressionResultsDeterministic сравнивает повторные междвижковые сигнатуры по доменам parse, render, text и save и отбраковывает нестабильные или упавшие прогоны