Deterministic Differential Regression Probes
HPDFCompareRegressionResultsDeterministic runs two engine adapters repeatedly across selected domains, rejects unstable or failed runs, and records one ordered machine-readable result
API
function HPDFCompareRegressionResultsDeterministic(
const Input: TBytes;
Domains: THPDFRegressionDomains;
const LeftProbe, RightProbe: THPDFRegressionProbe;
const Options: THPDFDifferentialProbeOptions;
out AInfo: THPDFDifferentialRegressionInfo): Boolean;
function HPDFProbeHotPDFDocument(
Domain: THPDFRegressionDomain;
const Input: TBytes): AnsiString;
function HPDFDifferentialRegressionInfoToJSON(
const AInfo: THPDFDifferentialRegressionInfo): AnsiString;
Domains
| Domain | Built-in HotPDF signature |
|---|---|
rgdParser | Page, object, version, annotation, font, image, form, signature, encryption, AcroForm, and structure summary |
rgdRenderer | Top-to-bottom BGR pixel SHA-256 at a fixed DPI with alpha and scan-line padding excluded |
rgdText | Page-delimited UTF-8 SHA-256 after CRLF and CR normalization |
rgdSave | SHA-256 and byte length of bounded output produced with deterministic dictionary order |
The legacy rgdSignature and rgdConformance values remain available so existing probe adapters keep their ordinal values and source compatibility
Stability contract
HPDFDefaultDifferentialProbeOptions selects three runs, a 256 MiB input limit, and stable fallback engine names
RepeatCount accepts 2 through 64 runs; a signature change within one engine marks that domain unstable even when its first signature matches the other engine
Probe exceptions are converted to stable error signatures containing the exception class and a SHA-256 of the message, and any error makes the domain disagree fail-closed
The same immutable input is supplied in fixed domain and engine order, and every selected domain appears once in the JSON report
Built-in bounds
The configurable HPDFProbeHotPDFDocument overload accepts a render DPI, maximum page count, and maximum output bytes
Render fingerprints exclude alpha and row padding, text fingerprints normalize newline representation, and save output uses a bounded stream before hashing
Report
THPDFDifferentialRegressionInfo carries compared and differing domain sets, left and right signatures, unstable sets, error sets, engine names, repeat count, and the input SHA-256
HPDFDifferentialRegressionInfoToJSON emits the fixed schema hotpdf.differential.v1 with stable field and domain order for CI, corpus triage, and audit storage
Compatibility helper
HPDFCompareRegressionResults retains the original single-run callback behavior for callers that already produce externally stabilized signatures