diff --git a/README.md b/README.md index 1af0f59..af4727a 100644 --- a/README.md +++ b/README.md @@ -55,5 +55,5 @@ Las evidencias HTML exactas de inscripción permanecen en `legal/terms/registrat `legal/terms/registration-v4.html`; `/politica/` refleja la versión vigente y cada URL/hash inmutable se coordina con el Bot antes del cutover. La autorización vigente del bot de Harmonic Myth Projection está en -`legal/terms/bot-v8.pdf`; `bot-v6.pdf` y `bot-v7.pdf` permanecen como evidencia histórica y no se -sobrescriben. +`legal/terms/bot-v9.pdf`; `bot-v6.pdf`, `bot-v7.pdf` y `bot-v8.pdf` permanecen como evidencia +histórica y no se sobrescriben. diff --git a/legal/terms/bot-v9.pdf b/legal/terms/bot-v9.pdf new file mode 100644 index 0000000..6d3e9a3 Binary files /dev/null and b/legal/terms/bot-v9.pdf differ diff --git a/tests/registration-pages.test.js b/tests/registration-pages.test.js index 205a57a..d5793ca 100644 --- a/tests/registration-pages.test.js +++ b/tests/registration-pages.test.js @@ -252,3 +252,12 @@ test('registration-v4 discloses the three consent-gated Meta events without PII' assert.match(policy, /invitación, una cortesía o un acceso gratuito no bastan/); assert.match(policy, /an invitation, a complimentary place or free access is not enough/); }); + +test('bot-v9 PDF remains byte-exact as the active Myth Bot authorization', () => { + const bytes = fs.readFileSync(path.join(root, 'legal/terms/bot-v9.pdf')); + assert.equal( + crypto.createHash('sha256').update(bytes).digest('hex'), + 'aae264d8f1e2e5cdf398cd1496a64323440c70e57575d4461ae40ee7aebe04d0' + ); + assert.match(bytes.subarray(0, 5).toString('ascii'), /^%PDF-/); +});