// audit-extraction.mjs — report-only grader for the extraction-readiness bar. // // Every DUPRE builder should be liftable out of the gallery without archaeology: // a contract comment documenting opts + handle, its CSS in DUPRE_CSS rather than // the page stylesheet, and no page code reaching past a handle into instrument // DOM. This audit is static (no browser): it reads the sources and reports a // worklist. It gates nothing — the gate flips on only when the sweep reaches // 100% (the VSTATUS/policy ratchet pattern). Exit 0 always, unless the audit // itself cannot parse the sources. // // Checks: // C1 contract comment — the block comment directly above DUPRE. = // function mentions both opts and the handle (the split-flap shape). // C2 page-styled internals — class selectors in the page