During #134/#132 qualification, the existing Node output-preservation harness fails its nested XeTeX cases even in an identical-engine A/A control.
nested/main.tex successfully produces XDV and dvipdfmx reports nested/main.xdv -> nested/main.pdf and bytes written, but the SDK returns success: false and pdf: null. Root documents succeed. This reproduces with the established 2025 engine and the missing-SFD-only build; it is not introduced by the index or warning fix. The prior limitation is also recorded under #118 / compile-performance documentation.
Repro: run scripts/check-output-preservation.mjs with --engine xelatex, identical --baseline and --candidate public roots, and an immutable mirror. Default scope includes both root and nested paths. PR #134 adds --report to retain raw PDFs and complete logs, and explicit --scope root|nested|all to distinguish scoped evidence; the default remains all and still fails this case.
Root comparisons also need deterministic Node-worker clocks: creation dates reside inside compressed PDF object streams. Use node --require ./scripts/lib/fixed-engine-clock.cjs for the diagnostic. An ESM --import preload did not reach CommonJS eval workers in Node 24.18.0; --require does. The fix does not broaden PDF normalization.
Follow-up: identify the actual written/read output paths in XeTeX and dvipdfmx, add a root-to-nested repeated-worker regression, and qualify both annual lines. Do not infer nested support from root-only qualification or relax the default checker to call a missing PDF successful.
During #134/#132 qualification, the existing Node output-preservation harness fails its nested XeTeX cases even in an identical-engine A/A control.
nested/main.texsuccessfully produces XDV and dvipdfmx reportsnested/main.xdv -> nested/main.pdfand bytes written, but the SDK returnssuccess: falseandpdf: null. Root documents succeed. This reproduces with the established 2025 engine and the missing-SFD-only build; it is not introduced by the index or warning fix. The prior limitation is also recorded under #118 / compile-performance documentation.Repro: run
scripts/check-output-preservation.mjswith--engine xelatex, identical--baselineand--candidatepublic roots, and an immutable mirror. Default scope includes both root and nested paths. PR #134 adds--reportto retain raw PDFs and complete logs, and explicit--scope root|nested|allto distinguish scoped evidence; the default remainsalland still fails this case.Root comparisons also need deterministic Node-worker clocks: creation dates reside inside compressed PDF object streams. Use
node --require ./scripts/lib/fixed-engine-clock.cjsfor the diagnostic. An ESM--importpreload did not reach CommonJS eval workers in Node 24.18.0;--requiredoes. The fix does not broaden PDF normalization.Follow-up: identify the actual written/read output paths in XeTeX and dvipdfmx, add a root-to-nested repeated-worker regression, and qualify both annual lines. Do not infer nested support from root-only qualification or relax the default checker to call a missing PDF successful.