Repository navigation
v1.63.0
transcend-reject 1.5.1 - refuse where a page-built airgap hid a replaced engine
Transcend's stand-in refusal - the purpose list written where their engine is
gone, so a filter author gets a record and a log line instead of silence -
never fired on a page that builds self.airgap itself. Routledge does, in two
inline scripts above their tag, the second their documented "Advanced Consent
Override" block:
self.airgap?.ready || (self.airgap = { readyQueue: [],
ready(e) { this.readyQueue.push(e) }, ...self.airgap });
self.airgap = { overrides: [], cookieOverrides: [], ...self.airgap };That object outlives their file never arriving, and withoutTheirs() tested
for the object rather than for their engine - so it came back false, the
refusal was skipped, and the resource reported refused=(none) via=no engine:
no engine and theirs-is-present in the same breath, with nothing written to
either store.
The object alone cannot separate the two cases, because their own prelude
dying mid-boot leaves the same shape and inventing a purpose list there would
be guessing at a tenant whose engine may still arrive. So the cause is read
off the install: served in place of a file, their loader asked for that url
and got this, so their file is gone; injected as a scriptlet it may not be.
Their markers are what proves theirs is really there - purposes from their
prelude, getConsent/setConsent from the booted engine - and a page's own
prelude carries none of the three.
Only transcend-reject.js changes. Every other resource is byte-identical to
v1.62.0.