From 1a2bad8699b15dd9deb6282d2330fa2e365fa428 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Ech=C3=A1niz?= Date: Tue, 4 Aug 2026 04:03:14 -0300 Subject: [PATCH 1/2] feat: prepare registration-v4 legal contract --- README.md | 5 +- assets/hmp-commerce.js | 26 +-- assets/meta-pixel.js | 4 +- automatizacion-inscripciones/README.md | 2 +- build.js | 8 + docs/registration-v4-cutover.md | 64 +++++++ inscripcion/index.html | 2 +- legal/terms/registration-v3.html | 223 +++++++++++++++++++++++++ legal/terms/registration-v4.html | 223 +++++++++++++++++++++++++ politica/index.html | 10 +- tests/hmp-commerce.test.js | 21 ++- tests/registration-pages.test.js | 27 ++- 12 files changed, 585 insertions(+), 30 deletions(-) create mode 100644 docs/registration-v4-cutover.md create mode 100644 legal/terms/registration-v3.html create mode 100644 legal/terms/registration-v4.html diff --git a/README.md b/README.md index 4536571..1af0f59 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Después abrir . ## Inscripción y pago -`/inscripcion/` usa el contrato `registration-v3` de PMP Myth Bot. El navegador conserva una +`/inscripcion/` usa el contrato legal `registration-v4` con PMP Myth Bot. El navegador conserva una clave idempotente hasta recibir una respuesta válida, abre únicamente el checkout específico que devuelve la API y consulta después un estado canónico con un token separado. Apps Script queda como importador legacy `registration-v2`; no recibe el formulario actual ni envía emails. @@ -51,6 +51,9 @@ GitHub Pages desde `main` / root. ## Documentos legales públicos Los documentos consumidos por sistemas externos se publican con nombres versionados e inmutables. +Las evidencias HTML exactas de inscripción permanecen en `legal/terms/registration-v3.html` y +`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. diff --git a/assets/hmp-commerce.js b/assets/hmp-commerce.js index b5399ba..bb817f7 100644 --- a/assets/hmp-commerce.js +++ b/assets/hmp-commerce.js @@ -3,8 +3,9 @@ const REGISTRATION_OPEN = true; const API_ORIGIN = 'https://bot.harmonicbeacon.com'; - const IDEMPOTENCY_KEY = 'hb-registration-v3-idempotency-key'; - const STATUS_CONTEXT_KEY = 'hb-registration-v3-status-context'; + const IDEMPOTENCY_KEY = 'hb-registration-v4-idempotency-key'; + const STATUS_CONTEXT_KEY = 'hb-registration-v4-status-context'; + const LEGACY_STATUS_CONTEXT_KEYS = Object.freeze(['hb-registration-v3-status-context']); const REGISTRATION_TIMEOUT_MS = 15000; const STATUS_TIMEOUT_MS = 8000; const TICKET_TAILOR_WIDGET_SCRIPT = 'https://cdn.tickettailor.com/js/widgets/min/widget.js'; @@ -258,17 +259,18 @@ } function readStatusContext() { - try { - const value = JSON.parse(storage().getItem(STATUS_CONTEXT_KEY) || 'null'); - return value && - value.schema_version === 'registration-status-context.v1' && - REGISTRATION_ID_PATTERN.test(value.registration_id || '') && - STATUS_TOKEN_PATTERN.test(value.commerce_status_token || '') - ? value - : null; - } catch (_) { - return null; + for (const key of [STATUS_CONTEXT_KEY, ...LEGACY_STATUS_CONTEXT_KEYS]) { + try { + const value = JSON.parse(storage().getItem(key) || 'null'); + if ( + value && + value.schema_version === 'registration-status-context.v1' && + REGISTRATION_ID_PATTERN.test(value.registration_id || '') && + STATUS_TOKEN_PATTERN.test(value.commerce_status_token || '') + ) return value; + } catch (_) {} } + return null; } async function commerceStatus(context) { diff --git a/assets/meta-pixel.js b/assets/meta-pixel.js index baf7dc6..577845b 100644 --- a/assets/meta-pixel.js +++ b/assets/meta-pixel.js @@ -30,7 +30,7 @@ es: { label: 'Preferencias de privacidad', title: 'Medición y publicidad', - text: 'Usamos el píxel de Meta para medir visitas y compras, y mejorar nuestras campañas. Meta puede usar cookies y datos del dispositivo. Podés aceptar o continuar sin esta medición.', + text: 'Usamos el píxel de Meta para medir visitas, inscripciones completadas y compras pagas, y mejorar nuestras campañas. Meta puede usar cookies y datos del dispositivo. Podés aceptar o continuar sin esta medición.', policy: 'Ver política de privacidad', reject: 'No aceptar', accept: 'Aceptar', @@ -39,7 +39,7 @@ en: { label: 'Privacy preferences', title: 'Measurement and advertising', - text: 'We use the Meta pixel to measure visits and purchases and improve our campaigns. Meta may use cookies and device data. You can accept or continue without this measurement.', + text: 'We use the Meta pixel to measure visits, completed registrations and paid purchases and improve our campaigns. Meta may use cookies and device data. You can accept or continue without this measurement.', policy: 'View privacy policy', reject: 'Decline', accept: 'Accept', diff --git a/automatizacion-inscripciones/README.md b/automatizacion-inscripciones/README.md index 67a3522..098e9a9 100644 --- a/automatizacion-inscripciones/README.md +++ b/automatizacion-inscripciones/README.md @@ -1,7 +1,7 @@ # Inscripciones en Google Sheets Esta automatización se conserva únicamente para la transición de registros `registration-v2`. -Guarda inscripciones legacy en Google Sheets y no envía emails. La landing `registration-v3` +Guarda inscripciones legacy en Google Sheets y no envía emails. La landing `registration-v4` usa la API canónica de PMP Myth Bot; Ticket Tailor envía su comprobante y el bot envía el acceso. ## Activación desde info@harmonicbeacon.com diff --git a/build.js b/build.js index cba2662..6cf90cb 100644 --- a/build.js +++ b/build.js @@ -39,4 +39,12 @@ if (fs.existsSync('inscripcion')) { console.log('✓ Copiado: inscripcion/'); } +// Conservar la política vigente y sus evidencias legales versionadas. +for (const directory of ['politica', 'legal']) { + if (fs.existsSync(directory)) { + copyRecursiveSync(directory, path.join('dist', directory)); + console.log(`✓ Copiado: ${directory}/`); + } +} + console.log('\n✅ Build completado en dist/'); diff --git a/docs/registration-v4-cutover.md b/docs/registration-v4-cutover.md new file mode 100644 index 0000000..ea35abf --- /dev/null +++ b/docs/registration-v4-cutover.md @@ -0,0 +1,64 @@ +# Registration v4 cutover + +Status: prepared, not authorized for production cutover. + +## Canonical legal artifacts + +| Version | Public artifact | SHA-256 | +| --- | --- | --- | +| `registration-v3` | `/legal/terms/registration-v3.html` | `0d65e0c03acd635f08c3e04628a19ef0e674e08612e2ac2446502f3b10b6b54e` | +| `registration-v4` | `/legal/terms/registration-v4.html` | `3566b7a597d10c75ad6e898879502740bc2b3ff67dfbb373dafff6973313a806` | + +The v3 artifact is byte-identical to the policy accepted since August 1, 2026. It must remain +immutable. Existing registration rows already retain their accepted `terms_version` and +`terms_sha256`; migration must not rewrite them. + +V4 adds an explicit bilingual disclosure of the consent-gated Meta events `PageView`, +`CompleteRegistration` and `Purchase`, their canonical firing boundaries and the fields that are +never sent to Meta. It does not authorize additional standard events. + +## Backend contract Mariano must incorporate + +The browser sends `terms_version=registration-v4`. PMP Myth Bot must associate that exact version +with SHA-256 `3566b7a597d10c75ad6e898879502740bc2b3ff67dfbb373dafff6973313a806` and the canonical immutable +URL `https://harmonicbeacon.com/legal/terms/registration-v4.html`. `/politica/` serves the same bytes +as the human-facing current policy at cutover time. + +The current Bot accepts only one configured terms version. A no-downtime rollout therefore needs a +small compatibility window in which both immutable pairs are accepted: + +- `registration-v3` → `0d65e0c03acd635f08c3e04628a19ef0e674e08612e2ac2446502f3b10b6b54e` +- `registration-v4` → `3566b7a597d10c75ad6e898879502740bc2b3ff67dfbb373dafff6973313a806` + +The server must choose the hash from the submitted, allowlisted version; it must never accept a hash +from the browser. It must store the selected version/hash on the registration exactly as it does +today. Unknown versions remain rejected. Idempotent retries made under v3 must continue resolving to +their original v3 result; a v4 payload uses a version-scoped browser idempotency key. + +If dual acceptance is not implemented, registration must be closed for the coordinated cutover. Do +not deploy backend-v4 and landing-v3, or landing-v4 and backend-v3, while registration is open. + +## Safe rollout + +1. Verify the v3 archive hash and the v4 policy hash from committed bytes. +2. Deploy Bot support for both allowlisted version/hash pairs; keep v3 as the current browser version. +3. Verify synthetic v3 and v4 requests against a non-production environment, including idempotent + retry, legacy v3 confirmation-context recovery and rejection of unknown versions/hashes. +4. Deploy the landing with v4 form, notice and policy. +5. Verify a synthetic v4 registration, stored evidence and checkout handoff end to end. +6. Keep v3 accepted for at least the maximum in-flight browser retry window. Retire it from new + submissions only after confirming there are no unresolved v3 attempts; never delete historical + evidence. + +This procedure does not authorize opening registration, enabling commerce or changing a real event. + +## Rollback + +1. Close new registration before changing only one side of the contract. +2. Restore the landing commit that submits `registration-v3` and restore the Bot's current version to + the v3 pair above. +3. Verify v3 registration in a non-production/synthetic flow, then reopen only with explicit approval. +4. Preserve all v4 rows and the v4 document as historical evidence; do not rewrite or delete them. + +When dual acceptance is active, a landing rollback to v3 does not require an emergency Bot rollback: +the Bot can continue accepting both exact pairs until the incident is understood. diff --git a/inscripcion/index.html b/inscripcion/index.html index 95aeb2e..6d8eb90 100644 --- a/inscripcion/index.html +++ b/inscripcion/index.html @@ -186,7 +186,7 @@

Tu nombre en este viaje

Your name in t - +
diff --git a/legal/terms/registration-v3.html b/legal/terms/registration-v3.html new file mode 100644 index 0000000..cfb0b76 --- /dev/null +++ b/legal/terms/registration-v3.html @@ -0,0 +1,223 @@ + + + + + +Términos de inscripción, grabación, imagen y privacidad — Harmonic Beacon + + + + + + + + + + + + +
+ +
+ + + Harmonic Beacon + + +
+ +

Encuentros Beacon · Proyección Armónica del MitoBeacon gatherings · Harmonic Myth Projection

+

Términos de inscripción, grabación, imagen y privacidadRegistration, recording, image and privacy terms

+

Qué aceptás al inscribirte y cómo tratamos tus datos y tu participación.What you accept when registering and how we handle your data and participation.

+

Versión registration-v3 · Vigente desde el 1 de agosto de 2026Version registration-v3 · In force since August 1, 2026

+ +
+
Resumen breveShort summary
+

Para inscribirte pedimos nombre, apellido, email y sesión elegida. Usamos estos datos para gestionar tu inscripción, pago, comunicaciones y acceso. Con tu elección previa, usamos el píxel de Meta para medir visitas y compras y mejorar campañas; podés rechazarlo o cambiar la elección desde “Privacidad”. Las sesiones se graban para registro interno, pero nada donde aparezcas se publica sin un consentimiento posterior y tu aprobación de la pieza final. Esta inscripción no autoriza el uso del bot ni el procesamiento de tu relato con inteligencia artificial.

+

To register, we ask for your first name, last name, email and selected session. We use this data to manage your registration, payment, communications and access. With your prior choice, we use the Meta pixel to measure visits and purchases and improve campaigns; you can decline it or change your choice through “Privacy”. Sessions are recorded for internal purposes, but nothing featuring you is published without later consent and your approval of the final piece. This registration does not authorize use of the bot or AI processing of your narrative.

+
+ +
+

01AlcanceScope

+

Estos términos se aplican a la inscripción y participación en los encuentros virtuales y presenciales del Harmonic Beacon y de la Proyección Armónica del Mito organizados por AlterMundi. Al marcar la casilla del formulario declarás que leíste y aceptás esta versión. Si no la aceptás, no podremos completar tu inscripción.

+

These terms apply to registration and participation in online and in-person Harmonic Beacon and Harmonic Myth Projection (HMP) gatherings organized by AlterMundi. By checking the form box, you declare that you have read and accepted this version. If you do not accept it, we cannot complete your registration.

+
+ +
+

02Datos obligatorios y finalidadesRequired data and purposes

+

Nombre, apellido, email y sesión elegida son obligatorios. También registramos fecha, idioma, identificadores técnicos, versión y momento de aceptación, estado de la inscripción y estado del pago. Si los datos faltan o son inexactos, puede que no podamos confirmar tu lugar, enviarte información o darte acceso.

+

First name, last name, email and selected session are required. We also record the date, language, technical identifiers, terms version and acceptance time, registration status and payment status. If data is missing or inaccurate, we may be unable to confirm your place, send information or provide access.

+

Los usamos para gestionar la inscripción y el pago, enviar confirmaciones e instrucciones, organizar la sesión, atender consultas, mantener seguridad y trazabilidad operativa y cumplir obligaciones legales. Los valores escritos en el formulario —como nombre y email— no se envían al píxel de Meta.

+

We use them to manage registration and payment, send confirmations and instructions, organize the session, answer questions, maintain security and operational traceability, and meet legal obligations. Values entered in the form—such as name and email—are not sent to the Meta pixel.

+
+ +
+

03Infraestructura y proveedoresInfrastructure and providers

+

La página está alojada en GitHub Pages, que registra datos técnicos de visita como la dirección IP. Los campos del formulario se envían por HTTPS a la API de PMP Myth Bot, alojada en infraestructura administrada por AlterMundi, y se almacenan en su base PostgreSQL. Google Sheets puede recibir una copia operativa para revisión humana, pero no decide pagos ni accesos. Los datos del formulario no se guardan en el repositorio público de GitHub.

+

The page is hosted on GitHub Pages, which logs technical visit data such as IP addresses. Form fields are sent over HTTPS to the PMP Myth Bot API, hosted on infrastructure managed by AlterMundi, and stored in its PostgreSQL database. Google Sheets may receive an operational copy for human review, but it does not decide payments or access. Form data is not stored in the public GitHub repository.

+

El pago se realiza por separado en Ticket Tailor y sus procesadores de pago; AlterMundi consulta y registra el estado de la orden y de cada entrada, pero no recibe en este formulario los datos de tu tarjeta. Para vincular la compra se envía a Ticket Tailor un contexto técnico opaco, temporal y sin nombre ni email. Estos proveedores pueden procesar datos fuera de Argentina bajo sus propias condiciones. No vendemos tus datos.

+

Payment is completed separately through Ticket Tailor and its payment processors; AlterMundi checks and records the status of the order and each ticket, but it does not receive your card details through this form. To link the purchase, Ticket Tailor receives a temporary opaque technical context containing no name or email. These providers may process data outside Argentina under their own terms. We do not sell your data.

+

Si elegís “Aceptar” en el aviso de privacidad, cargamos el píxel de Meta (identificador 2232853310607122). Meta puede usar cookies, balizas web, dirección IP, datos del navegador y del dispositivo para medir visitas y compras, atribuir resultados y orientar publicidad. Registramos PageView en las páginas visitadas y Purchase únicamente después de que nuestra API confirma el pago; llegar a una URL de retorno no basta. Podés rechazar esta medición y usar el sitio igualmente, o cambiar tu elección desde el botón “Privacidad”.

+

If you choose “Accept” in the privacy notice, we load the Meta pixel (ID 2232853310607122). Meta may use cookies, web beacons, IP address, browser and device data to measure visits and purchases, attribute results and target advertising. We record PageView on visited pages and Purchase only after our API confirms payment; reaching a return URL is not enough. You may decline this measurement and still use the site, or change your choice through the “Privacy” button.

+ + +
+ +
+

04ConservaciónRetention

+

Conservamos los datos de inscripción y las grabaciones internas durante seis meses desde la fecha del encuentro y luego los eliminamos o anonimizamos. La evidencia mínima de aceptación, los registros de pago y otra información necesaria para cumplir obligaciones legales o contables, resolver reclamos o defender derechos pueden conservarse durante el plazo aplicable. Una pieza pública aprobada y su autorización se conservan mientras ese uso siga autorizado o resulte necesario documentarlo.

+

We retain registration data and internal recordings for six months from the gathering date, after which we delete or anonymize them. Minimal evidence of acceptance, payment records and other information needed to comply with legal or accounting obligations, resolve claims or defend rights may be retained for the applicable period. An approved public piece and its authorization are retained while that use remains authorized or documentation is necessary.

+
+ +
+

05Grabación de las sesionesSession recording

+

Las sesiones se graban para registro interno del equipo AlterMundi: para acompañar y mejorar la práctica, formar al equipo y mantener trazabilidad de la experiencia. La grabación, por sí sola, no habilita ningún uso público.

+

Sessions are recorded for the internal records of the AlterMundi team: to support and improve the practice, train the team and maintain traceability of the experience. The recording, on its own, does not enable any public use.

+
+ +
+

06Qué no autoriza la grabaciónWhat the recording does not authorize

+

Por sí sola, la grabación no autoriza:

+

On its own, the recording does not authorize:

+
    +
  • Publicación o difusión en cualquier medio o plataforma.
  • +
  • Uso testimonial, promocional o publicitario.
  • +
  • Entrenamiento de modelos de inteligencia artificial.
  • +
  • Conformación de datasets o bases de investigación.
  • +
  • Investigación clínica.
  • +
+
    +
  • Publication or distribution on any medium or platform.
  • +
  • Testimonial, promotional or advertising use.
  • +
  • Training artificial intelligence models.
  • +
  • Building research datasets or databases.
  • +
  • Clinical research.
  • +
+

Cualquiera de estos usos requiere un consentimiento específico y posterior.

+

Any of these uses requires specific, later consent.

+
+ +
+

07Tus opciones durante la sesiónYour choices during the session

+

La inscripción requiere los datos indicados en el punto 02. Durante el encuentro podés mantener cámara y micrófono apagados, permanecer en silencio, pausar o salir en cualquier momento. También podés pedir que tu intervención no quede registrada de manera identificable. Avisanos antes o durante la sesión para que el equipo pueda aplicar esa opción.

+

Registration requires the data listed in section 02. During the gathering you may keep your camera and microphone off, remain silent, pause or leave at any time. You may also ask not to have your contribution recorded in an identifiable way. Let us know before or during the session so the team can apply that choice.

+
+ +
+

08Uso público y aprobación finalPublic use and final approval

+

Antes de publicar cualquier pieza donde aparezcas —video, audio, imagen o texto— hablamos personalmente con vos y pedimos un consentimiento específico. Después te mostramos la pieza final ya editada para que la apruebes. Si no la aprobás, no se publica.

+

Before publishing any piece featuring you—video, audio, image or text—we speak with you personally and request specific consent. We then show you the final edited piece for approval. If you do not approve it, it is not published.

+
+ +
+

09Bot, inteligencia artificial e Historia de ProyecciónBot, artificial intelligence and Projection History

+

Aceptar esta inscripción no autoriza a enviar relatos, audios o grabaciones a proveedores de inteligencia artificial, ni a generar una ampliación del mito. Si después decidís usar el bot, recibirás una autorización separada que deberás aceptar antes de enviar tu experiencia. Sólo después de esa aceptación podremos vincular esta inscripción —por ejemplo mediante tu email— con tu Historia de Proyección.

+

Accepting this registration does not authorize sending narratives, audio or recordings to artificial intelligence providers or generating a myth amplification. If you later choose to use the bot, you will receive a separate authorization that you must accept before submitting your experience. Only after that acceptance may we link this registration—for example through your email—to your Projection History.

+
+ +
+

10Tus derechosYour rights

+

Podés solicitar acceso, rectificación, actualización o supresión de tus datos y retirar tu consentimiento para tratamientos futuros. La eliminación puede estar limitada cuando exista una obligación legal de conservación o sea necesario mantener evidencia mínima para resolver reclamos o defender derechos. Para proteger tu información podremos pedirte que acredites tu identidad.

+

You may request access, correction, updating or deletion of your data and withdraw consent for future processing. Deletion may be limited where a legal retention obligation applies or minimal evidence is needed to resolve claims or defend rights. To protect your information, we may ask you to verify your identity.

+
+ +
+

11Responsable y contactoController and contact

+

Responsable: Asociación Civil AlterMundi, CUIT 30-71498982-7. Domicilio social: Las Acacias S/N, José de la Quintana, Departamento Santa María, Córdoba, Argentina. Para consultas, opciones de grabación o ejercicio de derechos, escribinos a info@altermundi.net o por WhatsApp.

+

Controller: AlterMundi Civil Association, tax ID 30-71498982-7. Registered address: Las Acacias S/N, José de la Quintana, Santa María Department, Córdoba, Argentina. For questions, recording choices or privacy rights, write to info@altermundi.net or contact us via WhatsApp.

+

La Agencia de Acceso a la Información Pública, en su carácter de órgano de control de la Ley N.º 25.326, tiene la atribución de atender las denuncias y reclamos que interpongan quienes resulten afectados en sus derechos por incumplimiento de las normas vigentes en materia de protección de datos personales. Más información: https://www.argentina.gob.ar/aaip/datospersonales.

+

Argentina's Agency for Access to Public Information, as the supervisory authority for Law No. 25,326, is empowered to receive complaints from people whose rights are affected by failures to comply with personal data protection rules. More information: https://www.argentina.gob.ar/aaip/datospersonales.

+
+ +
+ © 2026 AlterMundi · Harmonic Beacon + + Harmonic Beacon · + InvitaciónInvitation + +
+ +
+ + + + diff --git a/legal/terms/registration-v4.html b/legal/terms/registration-v4.html new file mode 100644 index 0000000..3b37e05 --- /dev/null +++ b/legal/terms/registration-v4.html @@ -0,0 +1,223 @@ + + + + + +Términos de inscripción, grabación, imagen y privacidad — Harmonic Beacon + + + + + + + + + + + + +
+ +
+ + + Harmonic Beacon + + +
+ +

Encuentros Beacon · Proyección Armónica del MitoBeacon gatherings · Harmonic Myth Projection

+

Términos de inscripción, grabación, imagen y privacidadRegistration, recording, image and privacy terms

+

Qué aceptás al inscribirte y cómo tratamos tus datos y tu participación.What you accept when registering and how we handle your data and participation.

+

Versión registration-v4 · Vigente desde el 4 de agosto de 2026Version registration-v4 · In force since August 4, 2026

+ +
+
Resumen breveShort summary
+

Para inscribirte pedimos nombre, apellido, email y sesión elegida. Usamos estos datos para gestionar tu inscripción, pago, comunicaciones y acceso. Con tu elección previa, usamos el píxel de Meta para medir visitas, inscripciones completadas y compras pagas, y mejorar campañas; podés rechazarlo o cambiar la elección desde “Privacidad”. Las sesiones se graban para registro interno, pero nada donde aparezcas se publica sin un consentimiento posterior y tu aprobación de la pieza final. Esta inscripción no autoriza el uso del bot ni el procesamiento de tu relato con inteligencia artificial.

+

To register, we ask for your first name, last name, email and selected session. We use this data to manage your registration, payment, communications and access. With your prior choice, we use the Meta pixel to measure visits, completed registrations and paid purchases and improve campaigns; you can decline it or change your choice through “Privacy”. Sessions are recorded for internal purposes, but nothing featuring you is published without later consent and your approval of the final piece. This registration does not authorize use of the bot or AI processing of your narrative.

+
+ +
+

01AlcanceScope

+

Estos términos se aplican a la inscripción y participación en los encuentros virtuales y presenciales del Harmonic Beacon y de la Proyección Armónica del Mito organizados por AlterMundi. Al marcar la casilla del formulario declarás que leíste y aceptás esta versión. Si no la aceptás, no podremos completar tu inscripción.

+

These terms apply to registration and participation in online and in-person Harmonic Beacon and Harmonic Myth Projection (HMP) gatherings organized by AlterMundi. By checking the form box, you declare that you have read and accepted this version. If you do not accept it, we cannot complete your registration.

+
+ +
+

02Datos obligatorios y finalidadesRequired data and purposes

+

Nombre, apellido, email y sesión elegida son obligatorios. También registramos fecha, idioma, identificadores técnicos, versión y momento de aceptación, estado de la inscripción y estado del pago. Si los datos faltan o son inexactos, puede que no podamos confirmar tu lugar, enviarte información o darte acceso.

+

First name, last name, email and selected session are required. We also record the date, language, technical identifiers, terms version and acceptance time, registration status and payment status. If data is missing or inaccurate, we may be unable to confirm your place, send information or provide access.

+

Los usamos para gestionar la inscripción y el pago, enviar confirmaciones e instrucciones, organizar la sesión, atender consultas, mantener seguridad y trazabilidad operativa y cumplir obligaciones legales. Los valores escritos en el formulario —como nombre y email— no se envían al píxel de Meta.

+

We use them to manage registration and payment, send confirmations and instructions, organize the session, answer questions, maintain security and operational traceability, and meet legal obligations. Values entered in the form—such as name and email—are not sent to the Meta pixel.

+
+ +
+

03Infraestructura y proveedoresInfrastructure and providers

+

La página está alojada en GitHub Pages, que registra datos técnicos de visita como la dirección IP. Los campos del formulario se envían por HTTPS a la API de PMP Myth Bot, alojada en infraestructura administrada por AlterMundi, y se almacenan en su base PostgreSQL. Google Sheets puede recibir una copia operativa para revisión humana, pero no decide pagos ni accesos. Los datos del formulario no se guardan en el repositorio público de GitHub.

+

The page is hosted on GitHub Pages, which logs technical visit data such as IP addresses. Form fields are sent over HTTPS to the PMP Myth Bot API, hosted on infrastructure managed by AlterMundi, and stored in its PostgreSQL database. Google Sheets may receive an operational copy for human review, but it does not decide payments or access. Form data is not stored in the public GitHub repository.

+

El pago se realiza por separado en Ticket Tailor y sus procesadores de pago; AlterMundi consulta y registra el estado de la orden y de cada entrada, pero no recibe en este formulario los datos de tu tarjeta. Para vincular la compra se envía a Ticket Tailor un contexto técnico opaco, temporal y sin nombre ni email. Estos proveedores pueden procesar datos fuera de Argentina bajo sus propias condiciones. No vendemos tus datos.

+

Payment is completed separately through Ticket Tailor and its payment processors; AlterMundi checks and records the status of the order and each ticket, but it does not receive your card details through this form. To link the purchase, Ticket Tailor receives a temporary opaque technical context containing no name or email. These providers may process data outside Argentina under their own terms. We do not sell your data.

+

Si elegís “Aceptar” en el aviso de privacidad, cargamos el píxel de Meta (identificador 2232853310607122). Meta puede usar cookies, balizas web, dirección IP, datos del navegador y del dispositivo para medir resultados, atribuirlos y orientar publicidad. Registramos PageView en las páginas visitadas; CompleteRegistration sólo después de que nuestra API acepta canónicamente la inscripción; y Purchase sólo después de que nuestra API confirma una compra paga de valor positivo, con su importe y moneda reales. Un clic, una validación local, una página de retorno, una invitación, una cortesía o un acceso gratuito no bastan. Enviamos únicamente el nombre genérico de la experiencia, el código de la sesión y, para Purchase, el importe y la moneda: nunca enviamos a Meta los valores del formulario —como nombre o email—, los términos aceptados, tokens, contexto de checkout ni identificadores crudos del proveedor de pagos. Podés rechazar esta medición y usar el sitio igualmente, o cambiar tu elección desde el botón “Privacidad”.

+

If you choose “Accept” in the privacy notice, we load the Meta pixel (ID 2232853310607122). Meta may use cookies, web beacons, IP address, browser and device data to measure and attribute results and target advertising. We record PageView on visited pages; CompleteRegistration only after our API canonically accepts the registration; and Purchase only after our API confirms a positive-value paid purchase, using its real amount and currency. A click, local validation, a return page, an invitation, a complimentary place or free access is not enough. We send only the generic experience name, session code and, for Purchase, amount and currency: we never send Meta form values—such as name or email—accepted terms, tokens, checkout context or raw payment-provider identifiers. You may decline this measurement and still use the site, or change your choice through the “Privacy” button.

+ + +
+ +
+

04ConservaciónRetention

+

Conservamos los datos de inscripción y las grabaciones internas durante seis meses desde la fecha del encuentro y luego los eliminamos o anonimizamos. La evidencia mínima de aceptación, los registros de pago y otra información necesaria para cumplir obligaciones legales o contables, resolver reclamos o defender derechos pueden conservarse durante el plazo aplicable. Una pieza pública aprobada y su autorización se conservan mientras ese uso siga autorizado o resulte necesario documentarlo.

+

We retain registration data and internal recordings for six months from the gathering date, after which we delete or anonymize them. Minimal evidence of acceptance, payment records and other information needed to comply with legal or accounting obligations, resolve claims or defend rights may be retained for the applicable period. An approved public piece and its authorization are retained while that use remains authorized or documentation is necessary.

+
+ +
+

05Grabación de las sesionesSession recording

+

Las sesiones se graban para registro interno del equipo AlterMundi: para acompañar y mejorar la práctica, formar al equipo y mantener trazabilidad de la experiencia. La grabación, por sí sola, no habilita ningún uso público.

+

Sessions are recorded for the internal records of the AlterMundi team: to support and improve the practice, train the team and maintain traceability of the experience. The recording, on its own, does not enable any public use.

+
+ +
+

06Qué no autoriza la grabaciónWhat the recording does not authorize

+

Por sí sola, la grabación no autoriza:

+

On its own, the recording does not authorize:

+
    +
  • Publicación o difusión en cualquier medio o plataforma.
  • +
  • Uso testimonial, promocional o publicitario.
  • +
  • Entrenamiento de modelos de inteligencia artificial.
  • +
  • Conformación de datasets o bases de investigación.
  • +
  • Investigación clínica.
  • +
+
    +
  • Publication or distribution on any medium or platform.
  • +
  • Testimonial, promotional or advertising use.
  • +
  • Training artificial intelligence models.
  • +
  • Building research datasets or databases.
  • +
  • Clinical research.
  • +
+

Cualquiera de estos usos requiere un consentimiento específico y posterior.

+

Any of these uses requires specific, later consent.

+
+ +
+

07Tus opciones durante la sesiónYour choices during the session

+

La inscripción requiere los datos indicados en el punto 02. Durante el encuentro podés mantener cámara y micrófono apagados, permanecer en silencio, pausar o salir en cualquier momento. También podés pedir que tu intervención no quede registrada de manera identificable. Avisanos antes o durante la sesión para que el equipo pueda aplicar esa opción.

+

Registration requires the data listed in section 02. During the gathering you may keep your camera and microphone off, remain silent, pause or leave at any time. You may also ask not to have your contribution recorded in an identifiable way. Let us know before or during the session so the team can apply that choice.

+
+ +
+

08Uso público y aprobación finalPublic use and final approval

+

Antes de publicar cualquier pieza donde aparezcas —video, audio, imagen o texto— hablamos personalmente con vos y pedimos un consentimiento específico. Después te mostramos la pieza final ya editada para que la apruebes. Si no la aprobás, no se publica.

+

Before publishing any piece featuring you—video, audio, image or text—we speak with you personally and request specific consent. We then show you the final edited piece for approval. If you do not approve it, it is not published.

+
+ +
+

09Bot, inteligencia artificial e Historia de ProyecciónBot, artificial intelligence and Projection History

+

Aceptar esta inscripción no autoriza a enviar relatos, audios o grabaciones a proveedores de inteligencia artificial, ni a generar una ampliación del mito. Si después decidís usar el bot, recibirás una autorización separada que deberás aceptar antes de enviar tu experiencia. Sólo después de esa aceptación podremos vincular esta inscripción —por ejemplo mediante tu email— con tu Historia de Proyección.

+

Accepting this registration does not authorize sending narratives, audio or recordings to artificial intelligence providers or generating a myth amplification. If you later choose to use the bot, you will receive a separate authorization that you must accept before submitting your experience. Only after that acceptance may we link this registration—for example through your email—to your Projection History.

+
+ +
+

10Tus derechosYour rights

+

Podés solicitar acceso, rectificación, actualización o supresión de tus datos y retirar tu consentimiento para tratamientos futuros. La eliminación puede estar limitada cuando exista una obligación legal de conservación o sea necesario mantener evidencia mínima para resolver reclamos o defender derechos. Para proteger tu información podremos pedirte que acredites tu identidad.

+

You may request access, correction, updating or deletion of your data and withdraw consent for future processing. Deletion may be limited where a legal retention obligation applies or minimal evidence is needed to resolve claims or defend rights. To protect your information, we may ask you to verify your identity.

+
+ +
+

11Responsable y contactoController and contact

+

Responsable: Asociación Civil AlterMundi, CUIT 30-71498982-7. Domicilio social: Las Acacias S/N, José de la Quintana, Departamento Santa María, Córdoba, Argentina. Para consultas, opciones de grabación o ejercicio de derechos, escribinos a info@altermundi.net o por WhatsApp.

+

Controller: AlterMundi Civil Association, tax ID 30-71498982-7. Registered address: Las Acacias S/N, José de la Quintana, Santa María Department, Córdoba, Argentina. For questions, recording choices or privacy rights, write to info@altermundi.net or contact us via WhatsApp.

+

La Agencia de Acceso a la Información Pública, en su carácter de órgano de control de la Ley N.º 25.326, tiene la atribución de atender las denuncias y reclamos que interpongan quienes resulten afectados en sus derechos por incumplimiento de las normas vigentes en materia de protección de datos personales. Más información: https://www.argentina.gob.ar/aaip/datospersonales.

+

Argentina's Agency for Access to Public Information, as the supervisory authority for Law No. 25,326, is empowered to receive complaints from people whose rights are affected by failures to comply with personal data protection rules. More information: https://www.argentina.gob.ar/aaip/datospersonales.

+
+ +
+ © 2026 AlterMundi · Harmonic Beacon + + Harmonic Beacon · + InvitaciónInvitation + +
+ +
+ + + + diff --git a/politica/index.html b/politica/index.html index cfb0b76..3b37e05 100644 --- a/politica/index.html +++ b/politica/index.html @@ -86,12 +86,12 @@

Encuentros Beacon · Proyección Armónica del MitoBeacon gatherings · Harmonic Myth Projection

Términos de inscripción, grabación, imagen y privacidadRegistration, recording, image and privacy terms

Qué aceptás al inscribirte y cómo tratamos tus datos y tu participación.What you accept when registering and how we handle your data and participation.

-

Versión registration-v3 · Vigente desde el 1 de agosto de 2026Version registration-v3 · In force since August 1, 2026

+

Versión registration-v4 · Vigente desde el 4 de agosto de 2026Version registration-v4 · In force since August 4, 2026

Resumen breveShort summary
-

Para inscribirte pedimos nombre, apellido, email y sesión elegida. Usamos estos datos para gestionar tu inscripción, pago, comunicaciones y acceso. Con tu elección previa, usamos el píxel de Meta para medir visitas y compras y mejorar campañas; podés rechazarlo o cambiar la elección desde “Privacidad”. Las sesiones se graban para registro interno, pero nada donde aparezcas se publica sin un consentimiento posterior y tu aprobación de la pieza final. Esta inscripción no autoriza el uso del bot ni el procesamiento de tu relato con inteligencia artificial.

-

To register, we ask for your first name, last name, email and selected session. We use this data to manage your registration, payment, communications and access. With your prior choice, we use the Meta pixel to measure visits and purchases and improve campaigns; you can decline it or change your choice through “Privacy”. Sessions are recorded for internal purposes, but nothing featuring you is published without later consent and your approval of the final piece. This registration does not authorize use of the bot or AI processing of your narrative.

+

Para inscribirte pedimos nombre, apellido, email y sesión elegida. Usamos estos datos para gestionar tu inscripción, pago, comunicaciones y acceso. Con tu elección previa, usamos el píxel de Meta para medir visitas, inscripciones completadas y compras pagas, y mejorar campañas; podés rechazarlo o cambiar la elección desde “Privacidad”. Las sesiones se graban para registro interno, pero nada donde aparezcas se publica sin un consentimiento posterior y tu aprobación de la pieza final. Esta inscripción no autoriza el uso del bot ni el procesamiento de tu relato con inteligencia artificial.

+

To register, we ask for your first name, last name, email and selected session. We use this data to manage your registration, payment, communications and access. With your prior choice, we use the Meta pixel to measure visits, completed registrations and paid purchases and improve campaigns; you can decline it or change your choice through “Privacy”. Sessions are recorded for internal purposes, but nothing featuring you is published without later consent and your approval of the final piece. This registration does not authorize use of the bot or AI processing of your narrative.

@@ -114,8 +114,8 @@

03Infraestructura y proveedoresThe page is hosted on GitHub Pages, which logs technical visit data such as IP addresses. Form fields are sent over HTTPS to the PMP Myth Bot API, hosted on infrastructure managed by AlterMundi, and stored in its PostgreSQL database. Google Sheets may receive an operational copy for human review, but it does not decide payments or access. Form data is not stored in the public GitHub repository.

El pago se realiza por separado en Ticket Tailor y sus procesadores de pago; AlterMundi consulta y registra el estado de la orden y de cada entrada, pero no recibe en este formulario los datos de tu tarjeta. Para vincular la compra se envía a Ticket Tailor un contexto técnico opaco, temporal y sin nombre ni email. Estos proveedores pueden procesar datos fuera de Argentina bajo sus propias condiciones. No vendemos tus datos.

Payment is completed separately through Ticket Tailor and its payment processors; AlterMundi checks and records the status of the order and each ticket, but it does not receive your card details through this form. To link the purchase, Ticket Tailor receives a temporary opaque technical context containing no name or email. These providers may process data outside Argentina under their own terms. We do not sell your data.

-

Si elegís “Aceptar” en el aviso de privacidad, cargamos el píxel de Meta (identificador 2232853310607122). Meta puede usar cookies, balizas web, dirección IP, datos del navegador y del dispositivo para medir visitas y compras, atribuir resultados y orientar publicidad. Registramos PageView en las páginas visitadas y Purchase únicamente después de que nuestra API confirma el pago; llegar a una URL de retorno no basta. Podés rechazar esta medición y usar el sitio igualmente, o cambiar tu elección desde el botón “Privacidad”.

-

If you choose “Accept” in the privacy notice, we load the Meta pixel (ID 2232853310607122). Meta may use cookies, web beacons, IP address, browser and device data to measure visits and purchases, attribute results and target advertising. We record PageView on visited pages and Purchase only after our API confirms payment; reaching a return URL is not enough. You may decline this measurement and still use the site, or change your choice through the “Privacy” button.

+

Si elegís “Aceptar” en el aviso de privacidad, cargamos el píxel de Meta (identificador 2232853310607122). Meta puede usar cookies, balizas web, dirección IP, datos del navegador y del dispositivo para medir resultados, atribuirlos y orientar publicidad. Registramos PageView en las páginas visitadas; CompleteRegistration sólo después de que nuestra API acepta canónicamente la inscripción; y Purchase sólo después de que nuestra API confirma una compra paga de valor positivo, con su importe y moneda reales. Un clic, una validación local, una página de retorno, una invitación, una cortesía o un acceso gratuito no bastan. Enviamos únicamente el nombre genérico de la experiencia, el código de la sesión y, para Purchase, el importe y la moneda: nunca enviamos a Meta los valores del formulario —como nombre o email—, los términos aceptados, tokens, contexto de checkout ni identificadores crudos del proveedor de pagos. Podés rechazar esta medición y usar el sitio igualmente, o cambiar tu elección desde el botón “Privacidad”.

+

If you choose “Accept” in the privacy notice, we load the Meta pixel (ID 2232853310607122). Meta may use cookies, web beacons, IP address, browser and device data to measure and attribute results and target advertising. We record PageView on visited pages; CompleteRegistration only after our API canonically accepts the registration; and Purchase only after our API confirms a positive-value paid purchase, using its real amount and currency. A click, local validation, a return page, an invitation, a complimentary place or free access is not enough. We send only the generic experience name, session code and, for Purchase, amount and currency: we never send Meta form values—such as name or email—accepted terms, tokens, checkout context or raw payment-provider identifiers. You may decline this measurement and still use the site, or change your choice through the “Privacy” button.

  • Google: https://policies.google.com/privacy · https://policies.google.com/terms
  • GitHub: https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement · https://docs.github.com/en/site-policy/github-terms/github-terms-of-service
  • diff --git a/tests/hmp-commerce.test.js b/tests/hmp-commerce.test.js index 8c0f980..73830e7 100644 --- a/tests/hmp-commerce.test.js +++ b/tests/hmp-commerce.test.js @@ -68,7 +68,7 @@ const payload = { event_code: 'hmp-2026-08-08', session_code: 'es-0830-cr', locale: 'es', - terms_version: 'registration-v3', + terms_version: 'registration-v4', terms_accepted: true }; const checkoutContext = `ctx_v1_${'A'.repeat(43)}`; @@ -245,7 +245,7 @@ test('keeps the idempotency key when registration outcome is unknown', async () const {api, values} = runtime(async () => { throw new Error('network'); }); await assert.rejects(api.register(payload), /network/); assert.equal( - values.get('hb-registration-v3-idempotency-key'), + values.get('hb-registration-v4-idempotency-key'), '10000000-0000-4000-8000-000000000001' ); }); @@ -269,7 +269,7 @@ test('stores a separate status token only after a valid registration response', assert.equal(observed.url, 'https://bot.harmonicbeacon.com/v1/registrations'); assert.equal(observed.options.mode, 'cors'); assert.equal(observed.options.headers['Idempotency-Key'], '10000000-0000-4000-8000-000000000001'); - assert.equal(values.has('hb-registration-v3-idempotency-key'), false); + assert.equal(values.has('hb-registration-v4-idempotency-key'), false); assert.equal(api.readStatusContext().commerce_status_token, statusToken); assert.match(result.checkout.widget_url, /^https:\/\/tickets\.harmonicbeacon\.com\//); }); @@ -301,6 +301,19 @@ test('ignores malformed status context from session storage', () => { assert.equal(api.readStatusContext(), null); }); +test('reads a valid v3 status context after the v4 cutover', () => { + const {api, values} = runtime(async () => {}); + values.set('hb-registration-v3-status-context', JSON.stringify({ + schema_version: 'registration-status-context.v1', + registration_id: '20000000-0000-4000-8000-000000000001', + commerce_status_token: statusToken, + locale: 'es', + session_code: 'es-0830-cr' + })); + + assert.equal(api.readStatusContext().commerce_status_token, statusToken); +}); + test('aborts a stalled registration and keeps its idempotency key for a safe retry', async () => { const stalledFetch = (_url, options) => new Promise((_resolve, reject) => { if (options.signal.aborted) return reject(new Error('aborted')); @@ -313,7 +326,7 @@ test('aborts a stalled registration and keeps its idempotency key for a safe ret await assert.rejects(api.register(payload), error => error.code === 'registration_timeout'); assert.equal( - values.get('hb-registration-v3-idempotency-key'), + values.get('hb-registration-v4-idempotency-key'), '10000000-0000-4000-8000-000000000001' ); }); diff --git a/tests/registration-pages.test.js b/tests/registration-pages.test.js index 8a299a5..b2c2a18 100644 --- a/tests/registration-pages.test.js +++ b/tests/registration-pages.test.js @@ -21,14 +21,14 @@ test('events page opens only the August 8 virtual sessions', () => { assert.doesNotMatch(page, /data-event-date="2026-08-15"/); }); -test('registration form requires v3 terms and never bypasses its backend', () => { +test('registration form requires v4 terms and never bypasses its backend', () => { const page = read('inscripcion/index.html'); const commerce = read('assets/hmp-commerce.js'); assert.match(commerce, /const REGISTRATION_OPEN = true;/); assert.match(page, /id="registrationClosed"/); assert.match(page, /id="registrationFlow" hidden/); assert.match(page, /registrationOpen&&Boolean\(eventConfig\)/); - assert.match(page, /registrationTermsVersion" value="registration-v3"/); + assert.match(page, /registrationTermsVersion" value="registration-v4"/); assert.match(page, /registrationTermsAccepted" value="ACEPTO" required/); assert.match(page, /window\.HMPCommerce\.register\(payload\)/); assert.match(page, /window\.HMPCommerce\.mountCheckoutWidget\(widget,payload,result\.checkout/); @@ -69,11 +69,30 @@ test('Meta Purchase fails closed without canonical paid conversion facts', () => assert.doesNotMatch(pixel, /tt_order_id/); }); -test('registration-v3 legal page hash is pinned for server-side evidence', () => { - const bytes = fs.readFileSync(path.join(root, 'politica/index.html')); +test('registration-v3 remains byte-exact as immutable historical evidence', () => { + const bytes = fs.readFileSync(path.join(root, 'legal/terms/registration-v3.html')); assert.equal( crypto.createHash('sha256').update(bytes).digest('hex'), '0d65e0c03acd635f08c3e04628a19ef0e674e08612e2ac2446502f3b10b6b54e' ); assert.match(bytes.toString('utf8'), /Versión registration-v3/); }); + +test('registration-v4 discloses the three consent-gated Meta events without PII', () => { + const bytes = fs.readFileSync(path.join(root, 'politica/index.html')); + const immutableBytes = fs.readFileSync(path.join(root, 'legal/terms/registration-v4.html')); + const policy = bytes.toString('utf8'); + assert.equal( + crypto.createHash('sha256').update(bytes).digest('hex'), + '3566b7a597d10c75ad6e898879502740bc2b3ff67dfbb373dafff6973313a806' + ); + assert.deepEqual(bytes, immutableBytes); + assert.match(policy, /Versión registration-v4/); + assert.match(policy, /PageView/); + assert.match(policy, /CompleteRegistration/); + assert.match(policy, /Purchase/); + assert.match(policy, /nunca enviamos a Meta los valores del formulario/); + assert.match(policy, /we never send Meta form values/); + 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/); +}); From 5ef10053c9e47ec83c8514910cc9aacebd2c7a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Ech=C3=A1niz?= Date: Tue, 4 Aug 2026 04:08:06 -0300 Subject: [PATCH 2/2] docs: disclose opaque Purchase deduplication id --- docs/registration-v4-cutover.md | 6 +++--- legal/terms/registration-v4.html | 4 ++-- politica/index.html | 4 ++-- tests/registration-pages.test.js | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/registration-v4-cutover.md b/docs/registration-v4-cutover.md index ea35abf..713b83e 100644 --- a/docs/registration-v4-cutover.md +++ b/docs/registration-v4-cutover.md @@ -7,7 +7,7 @@ Status: prepared, not authorized for production cutover. | Version | Public artifact | SHA-256 | | --- | --- | --- | | `registration-v3` | `/legal/terms/registration-v3.html` | `0d65e0c03acd635f08c3e04628a19ef0e674e08612e2ac2446502f3b10b6b54e` | -| `registration-v4` | `/legal/terms/registration-v4.html` | `3566b7a597d10c75ad6e898879502740bc2b3ff67dfbb373dafff6973313a806` | +| `registration-v4` | `/legal/terms/registration-v4.html` | `c062b63921bf9a0d175a9770eaeaee647e65347bb3a1188285bc7c3706a1b773` | The v3 artifact is byte-identical to the policy accepted since August 1, 2026. It must remain immutable. Existing registration rows already retain their accepted `terms_version` and @@ -20,7 +20,7 @@ never sent to Meta. It does not authorize additional standard events. ## Backend contract Mariano must incorporate The browser sends `terms_version=registration-v4`. PMP Myth Bot must associate that exact version -with SHA-256 `3566b7a597d10c75ad6e898879502740bc2b3ff67dfbb373dafff6973313a806` and the canonical immutable +with SHA-256 `c062b63921bf9a0d175a9770eaeaee647e65347bb3a1188285bc7c3706a1b773` and the canonical immutable URL `https://harmonicbeacon.com/legal/terms/registration-v4.html`. `/politica/` serves the same bytes as the human-facing current policy at cutover time. @@ -28,7 +28,7 @@ The current Bot accepts only one configured terms version. A no-downtime rollout small compatibility window in which both immutable pairs are accepted: - `registration-v3` → `0d65e0c03acd635f08c3e04628a19ef0e674e08612e2ac2446502f3b10b6b54e` -- `registration-v4` → `3566b7a597d10c75ad6e898879502740bc2b3ff67dfbb373dafff6973313a806` +- `registration-v4` → `c062b63921bf9a0d175a9770eaeaee647e65347bb3a1188285bc7c3706a1b773` The server must choose the hash from the submitted, allowlisted version; it must never accept a hash from the browser. It must store the selected version/hash on the registration exactly as it does diff --git a/legal/terms/registration-v4.html b/legal/terms/registration-v4.html index 3b37e05..996445c 100644 --- a/legal/terms/registration-v4.html +++ b/legal/terms/registration-v4.html @@ -114,8 +114,8 @@

    03Infraestructura y proveedoresThe page is hosted on GitHub Pages, which logs technical visit data such as IP addresses. Form fields are sent over HTTPS to the PMP Myth Bot API, hosted on infrastructure managed by AlterMundi, and stored in its PostgreSQL database. Google Sheets may receive an operational copy for human review, but it does not decide payments or access. Form data is not stored in the public GitHub repository.

    El pago se realiza por separado en Ticket Tailor y sus procesadores de pago; AlterMundi consulta y registra el estado de la orden y de cada entrada, pero no recibe en este formulario los datos de tu tarjeta. Para vincular la compra se envía a Ticket Tailor un contexto técnico opaco, temporal y sin nombre ni email. Estos proveedores pueden procesar datos fuera de Argentina bajo sus propias condiciones. No vendemos tus datos.

    Payment is completed separately through Ticket Tailor and its payment processors; AlterMundi checks and records the status of the order and each ticket, but it does not receive your card details through this form. To link the purchase, Ticket Tailor receives a temporary opaque technical context containing no name or email. These providers may process data outside Argentina under their own terms. We do not sell your data.

    -

    Si elegís “Aceptar” en el aviso de privacidad, cargamos el píxel de Meta (identificador 2232853310607122). Meta puede usar cookies, balizas web, dirección IP, datos del navegador y del dispositivo para medir resultados, atribuirlos y orientar publicidad. Registramos PageView en las páginas visitadas; CompleteRegistration sólo después de que nuestra API acepta canónicamente la inscripción; y Purchase sólo después de que nuestra API confirma una compra paga de valor positivo, con su importe y moneda reales. Un clic, una validación local, una página de retorno, una invitación, una cortesía o un acceso gratuito no bastan. Enviamos únicamente el nombre genérico de la experiencia, el código de la sesión y, para Purchase, el importe y la moneda: nunca enviamos a Meta los valores del formulario —como nombre o email—, los términos aceptados, tokens, contexto de checkout ni identificadores crudos del proveedor de pagos. Podés rechazar esta medición y usar el sitio igualmente, o cambiar tu elección desde el botón “Privacidad”.

    -

    If you choose “Accept” in the privacy notice, we load the Meta pixel (ID 2232853310607122). Meta may use cookies, web beacons, IP address, browser and device data to measure and attribute results and target advertising. We record PageView on visited pages; CompleteRegistration only after our API canonically accepts the registration; and Purchase only after our API confirms a positive-value paid purchase, using its real amount and currency. A click, local validation, a return page, an invitation, a complimentary place or free access is not enough. We send only the generic experience name, session code and, for Purchase, amount and currency: we never send Meta form values—such as name or email—accepted terms, tokens, checkout context or raw payment-provider identifiers. You may decline this measurement and still use the site, or change your choice through the “Privacy” button.

    +

    Si elegís “Aceptar” en el aviso de privacidad, cargamos el píxel de Meta (identificador 2232853310607122). Meta puede usar cookies, balizas web, dirección IP, datos del navegador y del dispositivo para medir resultados, atribuirlos y orientar publicidad. Registramos PageView en las páginas visitadas; CompleteRegistration sólo después de que nuestra API acepta canónicamente la inscripción; y Purchase sólo después de que nuestra API confirma una compra paga de valor positivo, con su importe y moneda reales. Un clic, una validación local, una página de retorno, una invitación, una cortesía o un acceso gratuito no bastan. Enviamos únicamente el nombre genérico de la experiencia, el código de la sesión y, para Purchase, el importe, la moneda y un identificador técnico opaco de conversión para evitar duplicados: nunca enviamos a Meta los valores del formulario —como nombre o email—, los términos aceptados, tokens, contexto de checkout ni identificadores crudos del proveedor de pagos. Podés rechazar esta medición y usar el sitio igualmente, o cambiar tu elección desde el botón “Privacidad”.

    +

    If you choose “Accept” in the privacy notice, we load the Meta pixel (ID 2232853310607122). Meta may use cookies, web beacons, IP address, browser and device data to measure and attribute results and target advertising. We record PageView on visited pages; CompleteRegistration only after our API canonically accepts the registration; and Purchase only after our API confirms a positive-value paid purchase, using its real amount and currency. A click, local validation, a return page, an invitation, a complimentary place or free access is not enough. We send only the generic experience name, session code and, for Purchase, amount, currency and an opaque technical conversion identifier to prevent duplicates: we never send Meta form values—such as name or email—accepted terms, tokens, checkout context or raw payment-provider identifiers. You may decline this measurement and still use the site, or change your choice through the “Privacy” button.

    • Google: https://policies.google.com/privacy · https://policies.google.com/terms
    • GitHub: https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement · https://docs.github.com/en/site-policy/github-terms/github-terms-of-service
    • diff --git a/politica/index.html b/politica/index.html index 3b37e05..996445c 100644 --- a/politica/index.html +++ b/politica/index.html @@ -114,8 +114,8 @@

      03Infraestructura y proveedoresThe page is hosted on GitHub Pages, which logs technical visit data such as IP addresses. Form fields are sent over HTTPS to the PMP Myth Bot API, hosted on infrastructure managed by AlterMundi, and stored in its PostgreSQL database. Google Sheets may receive an operational copy for human review, but it does not decide payments or access. Form data is not stored in the public GitHub repository.

      El pago se realiza por separado en Ticket Tailor y sus procesadores de pago; AlterMundi consulta y registra el estado de la orden y de cada entrada, pero no recibe en este formulario los datos de tu tarjeta. Para vincular la compra se envía a Ticket Tailor un contexto técnico opaco, temporal y sin nombre ni email. Estos proveedores pueden procesar datos fuera de Argentina bajo sus propias condiciones. No vendemos tus datos.

      Payment is completed separately through Ticket Tailor and its payment processors; AlterMundi checks and records the status of the order and each ticket, but it does not receive your card details through this form. To link the purchase, Ticket Tailor receives a temporary opaque technical context containing no name or email. These providers may process data outside Argentina under their own terms. We do not sell your data.

      -

      Si elegís “Aceptar” en el aviso de privacidad, cargamos el píxel de Meta (identificador 2232853310607122). Meta puede usar cookies, balizas web, dirección IP, datos del navegador y del dispositivo para medir resultados, atribuirlos y orientar publicidad. Registramos PageView en las páginas visitadas; CompleteRegistration sólo después de que nuestra API acepta canónicamente la inscripción; y Purchase sólo después de que nuestra API confirma una compra paga de valor positivo, con su importe y moneda reales. Un clic, una validación local, una página de retorno, una invitación, una cortesía o un acceso gratuito no bastan. Enviamos únicamente el nombre genérico de la experiencia, el código de la sesión y, para Purchase, el importe y la moneda: nunca enviamos a Meta los valores del formulario —como nombre o email—, los términos aceptados, tokens, contexto de checkout ni identificadores crudos del proveedor de pagos. Podés rechazar esta medición y usar el sitio igualmente, o cambiar tu elección desde el botón “Privacidad”.

      -

      If you choose “Accept” in the privacy notice, we load the Meta pixel (ID 2232853310607122). Meta may use cookies, web beacons, IP address, browser and device data to measure and attribute results and target advertising. We record PageView on visited pages; CompleteRegistration only after our API canonically accepts the registration; and Purchase only after our API confirms a positive-value paid purchase, using its real amount and currency. A click, local validation, a return page, an invitation, a complimentary place or free access is not enough. We send only the generic experience name, session code and, for Purchase, amount and currency: we never send Meta form values—such as name or email—accepted terms, tokens, checkout context or raw payment-provider identifiers. You may decline this measurement and still use the site, or change your choice through the “Privacy” button.

      +

      Si elegís “Aceptar” en el aviso de privacidad, cargamos el píxel de Meta (identificador 2232853310607122). Meta puede usar cookies, balizas web, dirección IP, datos del navegador y del dispositivo para medir resultados, atribuirlos y orientar publicidad. Registramos PageView en las páginas visitadas; CompleteRegistration sólo después de que nuestra API acepta canónicamente la inscripción; y Purchase sólo después de que nuestra API confirma una compra paga de valor positivo, con su importe y moneda reales. Un clic, una validación local, una página de retorno, una invitación, una cortesía o un acceso gratuito no bastan. Enviamos únicamente el nombre genérico de la experiencia, el código de la sesión y, para Purchase, el importe, la moneda y un identificador técnico opaco de conversión para evitar duplicados: nunca enviamos a Meta los valores del formulario —como nombre o email—, los términos aceptados, tokens, contexto de checkout ni identificadores crudos del proveedor de pagos. Podés rechazar esta medición y usar el sitio igualmente, o cambiar tu elección desde el botón “Privacidad”.

      +

      If you choose “Accept” in the privacy notice, we load the Meta pixel (ID 2232853310607122). Meta may use cookies, web beacons, IP address, browser and device data to measure and attribute results and target advertising. We record PageView on visited pages; CompleteRegistration only after our API canonically accepts the registration; and Purchase only after our API confirms a positive-value paid purchase, using its real amount and currency. A click, local validation, a return page, an invitation, a complimentary place or free access is not enough. We send only the generic experience name, session code and, for Purchase, amount, currency and an opaque technical conversion identifier to prevent duplicates: we never send Meta form values—such as name or email—accepted terms, tokens, checkout context or raw payment-provider identifiers. You may decline this measurement and still use the site, or change your choice through the “Privacy” button.