# Programa de migración Style v10

Superficies: 49 · unidades de despliegue: 48.

Cada unidad corresponde a un solo target de despliegue. Sus URLs se verifican juntas.

## wave-0-assess

### cds-admin · blocked

Repositorio: `/srv/projects/cds/cis/cis-admin/cds_admin` · riesgo: `unresolved`.

Plataforma frontend: `assess-frontend` → `sin definir` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cds-admin: https://admin.circulodesantiago.cl

Bloqueos:

- audit:cds-admin:frontend-integration-unresolved
- audit:cds-admin:lifecycle-unverified

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Resolver la integración frontend de cds-admin antes de elegir la unidad Vite o servidor correspondiente.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-archivo · blocked

Repositorio: `/srv/projects/cds/archivo` · riesgo: `unresolved`.

Plataforma frontend: `assess-frontend` → `sin definir` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-archivo: https://archivo.innovacionsantiago.cl

Bloqueos:

- audit:cis-archivo:frontend-integration-unresolved

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Resolver la integración frontend de cis-archivo antes de elegir la unidad Vite o servidor correspondiente.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-collage · blocked

Repositorio: `/srv/projects/cis/cis-collage` · riesgo: `unresolved`.

Plataforma frontend: `preserve-static` → `static` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-collage: https://collage.innovacionsantiago.cl

Bloqueos:

- portfolio-site-unregistered:cis-collage

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] static-release-proven
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Migrar cis-collage a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-infra · blocked

Repositorio: `/srv/projects/cis/cis-infra` · riesgo: `unresolved`.

Plataforma frontend: `align-vite` → `vite` · estado `blocked`.

Baseline: 11 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `observed`.

Superficies:

- cis-infra: https://infra.innovacionsantiago.cl

Bloqueos:

- audit:cis-infra:lifecycle-unverified

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] vite-build-proven

Instrucción portable para Claude o ChatGPT:

> Alinear cis-infra sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-mailer · blocked

Repositorio: `/srv/projects/cis/cis-mailer` · riesgo: `unresolved`.

Plataforma frontend: `preserve-server-rendered` → `server-rendered` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-mailer: https://mailer.innovacionsantiago.cl

Bloqueos:

- audit:cis-mailer:lifecycle-unverified

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review
- [ ] charts-preserved-and-interactive
- [ ] embeds-branded-frame-and-provenance

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] data-contracts-verified

Instrucción portable para Claude o ChatGPT:

> Migrar cis-mailer a Style v10, preservar el render de servidor y usar Vite sólo para UI interactiva.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-mando · blocked

Repositorio: `/srv/projects/cis/cis-mando` · riesgo: `unresolved`.

Plataforma frontend: `preserve-server-rendered` → `server-rendered` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-mando: https://mando.innovacionsantiago.cl

Bloqueos:

- audit:cis-mando:lifecycle-unverified

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Migrar cis-mando a Style v10, preservar el render de servidor y usar Vite sólo para UI interactiva.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-monitoreo · blocked

Repositorio: `/srv/projects/cds/cis/cis-monitoreo` · riesgo: `unresolved`.

Plataforma frontend: `preserve-server-rendered` → `server-rendered` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-monitoreo: https://monitor.innovacionsantiago.cl

Bloqueos:

- audit:cis-monitoreo:lifecycle-unverified

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Migrar cis-monitoreo a Style v10, preservar el render de servidor y usar Vite sólo para UI interactiva.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-portal · blocked

Repositorio: `/srv/projects/cis/cis-portal` · riesgo: `unresolved`.

Plataforma frontend: `assess-frontend` → `sin definir` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-portal: https://portal.innovacionsantiago.cl

Bloqueos:

- audit:cis-portal:frontend-integration-unresolved

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Resolver la integración frontend de cis-portal antes de elegir la unidad Vite o servidor correspondiente.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-verify · blocked

Repositorio: `/srv/projects/cis/cis-verify` · riesgo: `unresolved`.

Plataforma frontend: `assess-frontend` → `sin definir` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cds-docs: https://docs.circulodesantiago.cl
- cis-docs: https://docs.innovacionsantiago.cl

Bloqueos:

- audit:cds-docs:frontend-integration-unresolved
- audit:cis-docs:frontend-integration-unresolved

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Resolver la integración frontend de cds-docs, cis-docs antes de elegir la unidad Vite o servidor correspondiente.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-vpn · blocked

Repositorio: `/srv/projects/cis/cis-vpn` · riesgo: `unresolved`.

Plataforma frontend: `preserve-server-rendered` → `server-rendered` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-vpn: https://vpn.innovacionsantiago.cl

Bloqueos:

- portfolio-site-unregistered:cis-vpn

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Migrar cis-vpn a Style v10, preservar el render de servidor y usar Vite sólo para UI interactiva.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid · blocked

Repositorio: `/srv/projects/releases/cochid-main/4a3a7006286b551ba10d8217c043668cb41b57a1` · riesgo: `unresolved`.

Plataforma frontend: `assess-frontend` → `sin definir` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `unavailable` · monitoreo `unavailable`.

Superficies:

- cochid: https://cochid.cl

Bloqueos:

- audit:cochid:local-path-missing

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-preserved
- [x] style-v10-digest-pinned
- [x] tests-green
- [ ] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible

Evidencia registrada:

- Release consumidor: `4a3a7006286b551ba10d8217c043668cb41b57a1`.
- Verificación: Seis tests de contrato y QA de navegador en 320, 768 y 1440 px verificaron Style v10, claro inicial, oscuro persistente, cero overflow y Axe 0/0. El gráfico COFOG carga 10 filas desde Datos y expone detalle por clic o teclado. Release con siete archivos, cero symlinks, checksums íntegros y cero archivos escribibles. Caddy quedó active, NRestarts 0 y sin errores nuevos. No se instalaron cookies ni analítica; faltan endpoint analítico first-party con consentimiento y monitoreo de errores frontend aprobado.
- Rollback: Restaurar /srv/projects/backups/cochid-main/interactive-chart-20260827T101740Z/cochid.cl.caddy.before devuelve el release v10 3ceeb0a; /srv/projects/backups/cochid-main/style-v10-20260827T101128Z permite volver a v9 acb8eb3. Ambos rollbacks y sus reaplicaciones respondieron HTTP 200.

Instrucción portable para Claude o ChatGPT:

> Resolver la integración frontend de cochid antes de elegir la unidad Vite o servidor correspondiente.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-bici · blocked

Repositorio: `/srv/projects/cochid/cochid-bici` · riesgo: `unresolved`.

Plataforma frontend: `preserve-static` → `static` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-bici: https://bici.cochid.cl

Bloqueos:

- canonical-class-mismatch:cochid-bici:product->view

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] static-release-proven
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] charts-preserved-and-interactive

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] data-contracts-verified

Instrucción portable para Claude o ChatGPT:

> Migrar cochid-bici a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-docs · blocked

Repositorio: `/srv/projects/cochid/cochid-docs` · riesgo: `unresolved`.

Plataforma frontend: `assess-frontend` → `sin definir` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-docs: https://docs.cochid.cl

Bloqueos:

- audit:cochid-docs:frontend-integration-unresolved

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Resolver la integración frontend de cochid-docs antes de elegir la unidad Vite o servidor correspondiente.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-economia · blocked

Repositorio: `/srv/projects/cochid/cochid-economia` · riesgo: `unresolved`.

Plataforma frontend: `assess-frontend` → `sin definir` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-economia: https://economia.cochid.cl

Bloqueos:

- audit:cochid-economia:frontend-integration-unresolved
- canonical-class-mismatch:cochid-economia:product->view

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Resolver la integración frontend de cochid-economia antes de elegir la unidad Vite o servidor correspondiente.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-elecciones · blocked

Repositorio: `/srv/projects/cochid/cochid-elecciones` · riesgo: `unresolved`.

Plataforma frontend: `align-vite` → `vite` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-elecciones: https://elecciones.cochid.cl

Bloqueos:

- audit:cochid-elecciones:lifecycle-unverified

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] charts-preserved-and-interactive

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] vite-build-proven
- [ ] data-contracts-verified

Instrucción portable para Claude o ChatGPT:

> Alinear cochid-elecciones sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-mundial · blocked

Repositorio: `/srv/projects/cochid/cochid-mundial` · riesgo: `unresolved`.

Plataforma frontend: `align-vite` → `vite` · estado `blocked`.

Baseline: 9 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-mundial: https://mundial.cochid.cl

Bloqueos:

- portfolio-site-unregistered:cochid-mundial

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] maps-hover-click-keyboard

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] vite-build-proven
- [ ] data-contracts-verified

Instrucción portable para Claude o ChatGPT:

> Alinear cochid-mundial sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### enciclopedia · blocked

Repositorio: `/srv/projects/cds/cds-sebastian` · riesgo: `unresolved`.

Plataforma frontend: `align-vite` → `vite` · estado `blocked`.

Baseline: 3 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- enciclopedia: https://enciclopedia.circulodesantiago.cl

Bloqueos:

- canonical-style-brand-mismatch:enciclopedia:cds->editorial-sebastian

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] embeds-branded-frame-and-provenance

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] vite-build-proven
- [ ] data-contracts-verified

Instrucción portable para Claude o ChatGPT:

> Alinear enciclopedia sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### firmas · blocked

Repositorio: `/srv/projects/cds/cis/firmasydocumentos` · riesgo: `unresolved`.

Plataforma frontend: `align-vite` → `vite` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- firmas: https://firmasydocumentos.cl

Bloqueos:

- canonical-style-brand-mismatch:firmas:firmas->firmas-documentos

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] vite-build-proven

Instrucción portable para Claude o ChatGPT:

> Alinear firmas sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### indieweb-apps · blocked

Repositorio: `/srv/projects/cis/projects/indieweb` · riesgo: `unresolved`.

Plataforma frontend: `assess-frontend` → `sin definir` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- indieweb-apps: https://apps.indieweb.cl

Bloqueos:

- audit:indieweb-apps:frontend-integration-unresolved
- portfolio-site-unregistered:indieweb-apps

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Resolver la integración frontend de indieweb-apps antes de elegir la unidad Vite o servidor correspondiente.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### indieweb-idea · blocked

Repositorio: `/srv/projects/cis/projects/indieweb-idea` · riesgo: `unresolved`.

Plataforma frontend: `assess-frontend` → `sin definir` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- indieweb-idea: https://idea.indieweb.cl

Bloqueos:

- audit:indieweb-idea:frontend-integration-unresolved

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Resolver la integración frontend de indieweb-idea antes de elegir la unidad Vite o servidor correspondiente.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### periodismo2-admin · blocked

Repositorio: `/srv/projects/cds/cis/periodismo2-admin` · riesgo: `unresolved`.

Plataforma frontend: `preserve-server-rendered` → `server-rendered` · estado `blocked`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- periodismo2-admin: https://admin.periodismo2.cl

Bloqueos:

- audit:periodismo2-admin:lifecycle-unverified

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Migrar periodismo2-admin a Style v10, preservar el render de servidor y usar Vite sólo para UI interactiva.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

## wave-0-retirement

### libro-retirado · excluded

Repositorio: `/srv/retirado/libro` · riesgo: `none`.

Plataforma frontend: `excluded` → `sin definir` · estado `excluded`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- libro-retirado: https://libro.innovacionsantiago.cl

Bloqueos:

- audit:libro-retirado:lifecycle-retired

Gates:

- [ ] retirement-state-observed
- [ ] redirect-or-gone-healthcheck

Instrucción portable para Claude o ChatGPT:

> Conservar la exclusión documentada de libro-retirado.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

## wave-1-v9-public

### style · candidate

Repositorio: `/srv/projects/cis/cis-style` · riesgo: `low`.

Plataforma frontend: `preserve-static` → `static` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- style: https://style.innovacionsantiago.cl

Bloqueos:

- ninguno

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] static-release-proven
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] embeds-branded-frame-and-provenance

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] data-contracts-verified

Instrucción portable para Claude o ChatGPT:

> Migrar style a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

## wave-2-legacy-public

### cis-catalogo · candidate

Repositorio: `/srv/projects/cis/cis-catalogo` · riesgo: `medium`.

Plataforma frontend: `preserve-static` → `static` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-catalogo: https://catalogo.innovacionsantiago.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-preserved
- [x] style-v10-digest-pinned
- [x] tests-green
- [ ] static-release-proven
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Evidencia registrada:

- Release consumidor: `e8bad1d9aa008df5b61167930f9d96e94101506c`.
- Verificación: Contratos, paridad, cinco anchos por dos temas, Lighthouse 1.00/1.00/1.00, hashes públicos, Caddy y logs verificados.
- Rollback: Restaurar el root Caddy al release 42a0e395ae861a2712baebb6de6129f086a43e8b o al v9 9d435d0, validar y recargar.

Instrucción portable para Claude o ChatGPT:

> Migrar cis-catalogo a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-santiago · candidate

Repositorio: `/srv/projects/cis/cis-santiago` · riesgo: `medium`.

Plataforma frontend: `preserve-static` → `static` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-santiago: https://santiago.innovacionsantiago.cl

Bloqueos:

- ninguno

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] static-release-proven
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Migrar cis-santiago a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-datos · candidate

Repositorio: `/srv/projects/cochid/cochid-datos/web` · riesgo: `medium`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 43 rutas · 0 fronteras de servidor · analytics `observed` · monitoreo `observed`.

Superficies:

- cochid-datos: https://datos.cochid.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-migrated-to-vite
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven
- [x] charts-preserved-and-interactive
- [ ] embeds-branded-frame-and-provenance

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [x] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven
- [x] data-contracts-verified

Evidencia registrada:

- Release consumidor: `2a4519bb509cc389fcc238091974fcc68d56eeeb`.
- Verificación: Vite 8.2.2 conserva 40 rutas y separa el shell de embeds. Treinta y un tests, typecheck, lint, audit 0 y build cis-build verdes. QA edge: 14/14 escenarios, 48 combinaciones de ruta y viewport, Axe claro y oscuro sin impactos moderados o superiores, foco por teclado, tema, consentimiento, gráficos y CASEN interactivos. Backend 6472204 restringe CORS. GlitchTip se activa con consentimiento; falta configurar un endpoint analítico first-party y cerrar el marco de marca y procedencia de todos los embeds.
- Rollback: Restaurar los drop-ins y el Caddy respaldados en /srv/projects/backups/cochid-datos/vite-6472204-20260827T092607Z devuelve frontend Next 10d9e3e y backend 5d2d59c; reaplicar los drop-ins finales devuelve Vite 2a4519b y backend 6472204. Rollback real probado en ambos sentidos.

Instrucción portable para Claude o ChatGPT:

> Alinear cochid-datos sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-mapas · candidate

Repositorio: `/srv/projects/cochid/cochid-mapas` · riesgo: `medium`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 20 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-mapas: https://mapas.cochid.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-migrated-to-vite
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven
- [ ] maps-hover-click-keyboard

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven
- [x] data-contracts-verified

Evidencia registrada:

- Release consumidor: `157a9caa453f0c9c625d0d462cb4788513108896`.
- Verificación: Vite 8.2.2 conserva 15 rutas públicas, cinco privadas, Caddy basic-auth, BFF admin, proxies same-origin y el alias trenes. Diecisiete tests, typecheck, audit 0 y build cis-build verdes. QA local y edge: 32 vistas en 320 claro y 1440 oscuro, overflow 0, consola/red 0 y Axe moderado o superior 0; zoom, arrastre, toggle de capas, tema y navegación SPA verdes. core-maps 6935779 elimina doble basemap, fija glyphs Noto Sans y hace controles temáticos sin sombras. Faltan validar hover, click y teclado por cada capa, analítica con consentimiento y monitoreo frontend con propietario y DSN aprobados.
- Rollback: Retirar zz-vite-release.conf, apuntar /srv/projects/releases/cochid-mapas/current a 4803604e3096d27363470639561e0dccccbeb5b2, ejecutar daemon-reload y restart restaura Next; reinstalar el drop-in respaldado y apuntar current a 157a9ca restaura Vite. Rollback real probado en ambos sentidos.

Instrucción portable para Claude o ChatGPT:

> Alinear cochid-mapas sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-taller · candidate

Repositorio: `/srv/projects/cochid/cochid-taller` · riesgo: `medium`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 15 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-taller: https://taller.cochid.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-migrated-to-vite
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven
- [ ] maps-hover-click-keyboard

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven
- [x] data-contracts-verified

Evidencia registrada:

- Release consumidor: `c4f25237f55109407f0fb35c72e8626dae858ddb`.
- Verificación: Vite 8.2.2 SSR conserva 15 páginas y ocho rounds, agrega redirects 308, 404 real, health, robots, sitemap y proxy allowlist con procedencia para cinco GeoJSON. Ocho tests, typecheck, audit 0 y build cis-build verdes. Edge: 30 renderizados responsive claro/oscuro sin overflow o consola, 16 auditorías WCAG sin hallazgos serios, MapLibre cargó water, road, rail, ports y airports, y embed ocultó chrome. Un rewrite de correo de Cloudflare se detectó en QA, motivó rollback real a Next y se corrigió antes de restaurar Vite. Faltan analítica con consentimiento, GlitchTip frontend y validar hover/click/teclado de todos los mapas.
- Rollback: Restaurar 30-style-v9-release.conf desde el respaldo y retirar 30-vite-release.conf; daemon-reload, restart y readiness devuelven el release Next 4285cb0.

Instrucción portable para Claude o ChatGPT:

> Alinear cochid-taller sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-thesis · candidate

Repositorio: `/srv/projects/cochid/cochid-thesis` · riesgo: `medium`.

Plataforma frontend: `preserve-static` → `static` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-thesis: https://thesis.cochid.cl

Bloqueos:

- ninguno

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] static-release-proven
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Migrar cochid-thesis a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### indieweb · candidate

Repositorio: `/srv/projects/cis/projects/indieweb/frontend` · riesgo: `medium`.

Plataforma frontend: `preserve-static` → `static` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- indieweb: https://indieweb.cl

Bloqueos:

- ninguno

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] static-release-proven
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Migrar indieweb a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### periodismo2 · candidate

Repositorio: `/srv/projects/cds/cis/periodismo2-frontend` · riesgo: `medium`.

Plataforma frontend: `migrate-next-to-vite` → `vite` · estado `pending`.

Baseline: 34 rutas · 11 fronteras de servidor · analytics `observed` · monitoreo `observed`.

Superficies:

- periodismo2: https://periodismo2.cl

Bloqueos:

- ninguno

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] vite-build-proven
- [ ] api-bff-boundaries-recorded

Instrucción portable para Claude o ChatGPT:

> Migrar periodismo2 de Next.js a Vite y Style v10, preservando rutas, flujos y fronteras de servidor.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### situacion · candidate

Repositorio: `/srv/projects/cis/projects/situacion` · riesgo: `medium`.

Plataforma frontend: `migrate-next-to-vite` → `vite` · estado `pending`.

Baseline: 1 rutas · 6 fronteras de servidor · analytics `observed` · monitoreo `not-observed`.

Superficies:

- situacion: https://situacion.cl

Bloqueos:

- ninguno

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] charts-preserved-and-interactive

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] vite-build-proven
- [ ] api-bff-boundaries-recorded
- [ ] data-contracts-verified

Instrucción portable para Claude o ChatGPT:

> Migrar situacion de Next.js a Vite y Style v10, preservando rutas, flujos y fronteras de servidor.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

## wave-3-authenticated

### cds-plantillas · candidate

Repositorio: `/srv/projects/cds/cds-plantillas` · riesgo: `high`.

Plataforma frontend: `preserve-static` → `static` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cds-plantillas: https://plantillas.circulodesantiago.cl

Bloqueos:

- ninguno

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] static-release-proven
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Migrar cds-plantillas a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cds-protocolo · candidate

Repositorio: `/srv/projects/cds/cds-protocolo` · riesgo: `high`.

Plataforma frontend: `preserve-static` → `static` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cds-protocolo: https://protocolo.circulodesantiago.cl

Bloqueos:

- ninguno

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] static-release-proven
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Migrar cds-protocolo a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-admin · candidate

Repositorio: `/srv/projects/cds/cis/cis-admin/web` · riesgo: `high`.

Plataforma frontend: `migrate-next-to-vite` → `vite` · estado `pending`.

Baseline: 54 rutas · 32 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-admin: https://admin.innovacionsantiago.cl

Bloqueos:

- ninguno

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review
- [ ] embeds-branded-frame-and-provenance

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] vite-build-proven
- [ ] api-bff-boundaries-recorded
- [ ] data-contracts-verified

Instrucción portable para Claude o ChatGPT:

> Migrar cis-admin de Next.js a Vite y Style v10, preservando rutas, flujos y fronteras de servidor.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-claudia · candidate

Repositorio: `/srv/projects/cis/cis-claudia` · riesgo: `high`.

Plataforma frontend: `migrate-next-to-vite` → `vite` · estado `pending`.

Baseline: 2 rutas · 1 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-claudia: https://claudia.innovacionsantiago.cl

Bloqueos:

- ninguno

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] build-via-cis-build
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] vite-build-proven
- [ ] api-bff-boundaries-recorded

Instrucción portable para Claude o ChatGPT:

> Migrar cis-claudia de Next.js a Vite y Style v10, preservando rutas, flujos y fronteras de servidor.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-inbox · candidate

Repositorio: `/srv/projects/cis/cis-inbox` · riesgo: `high`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 4 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-inbox: https://inbox.innovacionsantiago.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-migrated-to-vite
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven

Evidencia registrada:

- Release consumidor: `7c4754fe94d8282a72b3028638c3aaa0a832e7d6`.
- Verificación: Vite 8.2.2 y React Router conservan /, /inbox, /inbox/:threadId y /settings; Caddy mantiene /api y /auth en FastAPI/OIDC. Trece tests, typecheck, audit de producción 0 y build cis-build verdes. Playwright local, canary y edge cubrió siete escenarios con 320/768/1440, claro y oscuro, Axe, sesión 401 y flujo autenticado simulado sin overflow. Rollback real a Next y restauración Vite quedaron probados. Faltan un smoke OIDC autenticado real, propiedad y política para analítica con consentimiento, y DSN frontend aprobado; health, Caddy y journald están operativos.
- Rollback: Restaurar /srv/projects/backups/cis-inbox/vite-style-v10-20260827T114346Z/inbox.innovacionsantiago.cl.caddy.before y recargar Caddy devuelve el Next aún activo; reaplicar el contrato estático restaura Vite 7c4754f. Rollback real probado en ambos sentidos.

Instrucción portable para Claude o ChatGPT:

> Alinear cis-inbox sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-pendientes · candidate

Repositorio: `/srv/projects/cis/cis-pendientes` · riesgo: `high`.

Plataforma frontend: `preserve-static` → `static` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-pendientes: https://pendientes.innovacionsantiago.cl

Bloqueos:

- ninguno

Gates:

- [ ] isolated-clean-worktree
- [ ] canonical-brand-approved
- [ ] framework-preserved
- [ ] style-v10-digest-pinned
- [ ] tests-green
- [ ] static-release-proven
- [ ] responsive-light-dark-wcag
- [ ] backup-recorded
- [ ] healthcheck-observed
- [ ] logs-and-restarts-observed
- [ ] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible

Instrucción portable para Claude o ChatGPT:

> Migrar cis-pendientes a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-usaia · candidate

Repositorio: `/srv/projects/cis/cis-usaia` · riesgo: `high`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-usaia: https://usaia.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-preserved
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven
- [ ] oidc-authenticated-smoke
- [ ] consensus-review

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven

Evidencia registrada:

- Release consumidor: `056694255874e5c92e407245f9b24f7fe5370017`.
- Verificación: @cis/browser-privacy@0.1.0 quedó vendorizado por checksum e integra elección atómica, banner compacto, diálogo accesible, reapertura desde el footer y /privacidad. Ciento cuarenta y seis pruebas frontend, TypeScript, audit 0 y build Vite vía cis-build quedaron verdes. QA local y edge cubrió 320, 375, 768, 1024 y 1440 px en claro y oscuro: overflow 0, Axe serio/crítico 0, cero solicitudes de telemetría y cero cookies en navegación anónima. Analytics y diagnostics siguen en provider none, sin IDs, endpoint ni DSN, por lo que consentimiento/analytics y observabilidad permanecen pendientes. El release inmutable tiene checksums íntegros, cero archivos escribibles o symlinks; health, logs, reinicios y rollback real quedaron verificados. Falta completar una sesión OIDC autenticada. El bundle principal de 1,44 MB conserva deuda de code splitting.
- Rollback: Mover atómicamente /srv/projects/releases/cis-usaia/current a /srv/projects/releases/cis-usaia/d7e2174-style-v10-responsive-20260827T124339Z devuelve el corte Style v10 anterior; el ensayo real respondió health y assets HTTP 200 y luego restauró 0566942. Backup previo: /srv/projects/backups/cis-usaia/browser-privacy-pre-0566942-20260827T132031Z.

Instrucción portable para Claude o ChatGPT:

> Alinear cis-usaia sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

## wave-complete

### cds-www · complete

Repositorio: `/srv/projects/cds/cds-www-next` · riesgo: `none`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 2 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cds-www: https://circulodesantiago.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-migrated-to-vite
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven

Evidencia registrada:

- Release consumidor: `92813d330287a71acf88063d88e4f1a07afe38e7`.
- Verificación: Vite 8.2.2 SSR conserva portada y actas, agrega 404 real, dos health aliases, robots y sitemap; el BFF mantiene cache tolerante para CDS_ADMIN_API sin inventar cifras cuando el backend no escucha. Ocho tests, typecheck, audit 0 y build cis-build verdes. Edge: 16 combinaciones de dos rutas, 320/390/768/1440 y claro/oscuro sin overflow, consola, hidratación ni hallazgos Axe serios; menú, tema persistente, círculo y footer societario con operación CIS se verificaron. Rollback real a Next aaac482 y restauración Vite probados. Faltan propiedad y política aplicable para analítica con consentimiento, y DSN aprobado para observabilidad frontend; journald y health ya operan.
- Rollback: Restaurar 90-release.conf desde /srv/projects/backups/cds-www/vite-92813d3-20260827T044838Z, daemon-reload y restart devuelve Next aaac482; reinstalar el drop-in Vite restaura 92813d3.

Instrucción portable para Claude o ChatGPT:

> Alinear cds-www sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-isometrico · complete

Repositorio: `/srv/projects/cis/cis-isometrico` · riesgo: `none`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cis-isometrico: https://isometrico.innovacionsantiago.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-preserved
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven

Gates de plataforma:

- [ ] route-contract-recorded
- [ ] critical-flows-smoked
- [ ] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [ ] page-docs-current
- [ ] ui-ux-responsive-accessible
- [ ] vite-build-proven

Evidencia registrada:

- Release consumidor: `908f89f733a187710758ce6c4fa65bd954629dcb`.
- Verificación: Suite frontend, tsc, npm audit, build Vite y QA local/pública a 320, 768 y 1440 px; assets v10, hashes, Caddy, health y logs verificados. Rollback real al release anterior y restauración exacta completados.
- Rollback: Restaurar el root Caddy al release 0aecef600fc0582086376ff4b309cf8694f40a01, validar y recargar.

Instrucción portable para Claude o ChatGPT:

> Alinear cis-isometrico sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-status · complete

Repositorio: `/srv/projects/cis/cis-status` · riesgo: `none`.

Plataforma frontend: `preserve-static` → `static` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `observed`.

Superficies:

- cis-status: https://status.innovacionsantiago.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-preserved
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] static-release-proven
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible

Evidencia registrada:

- Release consumidor: `3f11768f9d561206197cbfa9c4a1e2ba24d124ca`.
- Verificación: Treinta y seis tests y QA Playwright local y edge en 320, 768 y 1440 px verificaron 14 servicios, claro inicial, oscuro persistente, overflow 0, consola limpia y Axe 0/0. El timer actualizó status.json sin alterar el checksum del shell sellado. Release con checksums íntegros, cero symlinks internos y cero archivos escribibles. Caddy y API quedaron activos, NRestarts 0 y sin errores nuevos. No hay cookies ni analítica; faltan proveedor analítico first-party con consentimiento y captura de errores frontend aprobada.
- Rollback: Restaurar /srv/projects/backups/cis-status/style-v10-20260827T110101Z/status.innovacionsantiago.cl.caddy devuelve la superficie legacy; reinstalar deploy/status.innovacionsantiago.cl.caddy devuelve Style v10. Ambos sentidos respondieron root y status.json HTTP 200.

Instrucción portable para Claude o ChatGPT:

> Migrar cis-status a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cis-www · complete

Repositorio: `/srv/projects/cis/cis-www` · riesgo: `none`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 7 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `observed`.

Superficies:

- cis-www: https://innovacionsantiago.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-preserved
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven

Evidencia registrada:

- Release consumidor: `5554e1e108911a300c9ba570f6c18b3938a24132`.
- Verificación: Release v10.4-b37b910e conserva mark y namebrand adaptables, fija el namebrand CIS del footer en tres líneas mayúsculas con IBM Plex y mantiene JetBrains Mono sólo para datos y dominios. Ocho pruebas Python y 20 Node, audit, lint, builds estático y Vite, smoke de cuenta desktop y móvil, y QA exacta y pública de 9 rutas a cinco anchos por dos temas con Axe quedaron verdes; hashes, Caddy, health, logs y rollback real fueron verificados.
- Rollback: Restaurar el root Caddy al release v10.3-843a624c, validar y recargar.

Instrucción portable para Claude o ChatGPT:

> Alinear cis-www sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-cables · complete

Repositorio: `/srv/projects/cochid/cochid-cables` · riesgo: `none`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 0 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-cables: https://cables.cochid.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-migrated-to-vite
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven
- [x] maps-hover-click-keyboard

Gates de plataforma:

- [x] route-contract-recorded
- [ ] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven
- [x] data-contracts-verified

Evidencia registrada:

- Release consumidor: `1b9c93de2aff102c9cc5457fbf7337fdde11cb33`.
- Verificación: Vite 8.2.2 SPA conserva la portada y traslada /api/geo a un BFF validado, normalizado y cacheado; agrega /api/health y /healthz, JSON 404, robots y sitemap. Diez tests, typecheck, audit 0 y build cis-build verdes. Edge: ocho combinaciones de 320/390/768/1440 y claro/oscuro sin overflow, errores de consola ni hallazgos Axe serios; marca COCHID, tema persistente, seis datasets y atribuciones se verificaron. El mapa admite foco y controles de teclado; hover abre resumen y clic fija la ficha completa hasta cerrarla. Rollback real a Next y restauración Vite probados. La búsqueda de viaje no se ejecutó porque crea una medición Globalping externa; siguen pendientes su smoke autorizado, la propiedad y política aplicable para analítica con consentimiento, y un DSN frontend aprobado. Health y journald operan.
- Rollback: Mover /etc/systemd/system/cochid-cables.service.d/90-vite-release.conf fuera, ejecutar daemon-reload y restart devuelve el Next intacto de /srv/projects/cochid/cochid-cables/.next/standalone; reinstalar el drop-in restaura Vite 1b9c93d. Unidad previa respaldada en /srv/projects/backups/cochid-cables/vite-1b9c93d-20260827T052054Z.

Instrucción portable para Claude o ChatGPT:

> Alinear cochid-cables sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-congreso · complete

Repositorio: `/srv/projects/cochid/cochid-congreso/web` · riesgo: `none`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 14 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-congreso: https://congreso.cochid.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-migrated-to-vite
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven

Evidencia registrada:

- Release consumidor: `0bc341aa3182bc9907f33e912c83a57f0f61ea42`.
- Verificación: Vite 8.2.2 SPA conserva portada, proyectos, votaciones, parlamentarios y detalle dinámico; agrega 404 real, /web-healthz, robots y sitemap. Diez tests, typecheck, audit 0 y build cis-build verdes. Edge: doce combinaciones de seis rutas en 320 claro y 1440 oscuro sin overflow, consola ni hallazgos Axe serios; navegación SPA, búsqueda y vacío accionable, paginación, filtros, detalle, tema persistente y cifras sin quiebre se verificaron con API real. El único almacenamiento cliente es cis-style:theme y Caddy conserva las fronteras del backend FastAPI. Rollback real a Next 75a0ccc y restauración Vite probados. Faltan propiedad y política aplicable para analítica con consentimiento y un DSN frontend aprobado; health, Caddy y journald operan con 0 reinicios.
- Rollback: Restaurar /srv/projects/backups/cochid-congreso-web/vite-327ac6c5287a3cbe6da60742de8478d07e306ba5-20260827T055723Z/cochid-congreso-web.service.d/60-release.conf y current a 75a0ccc, ejecutar daemon-reload y restart devuelve Next; reinstalar 60-release-vite.conf y current a 0bc341a restaura Vite.

Instrucción portable para Claude o ChatGPT:

> Alinear cochid-congreso sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-graphs · complete

Repositorio: `/srv/projects/cochid/cochid-graphs/web` · riesgo: `none`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 3 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-graphs: https://graphs.cochid.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-migrated-to-vite
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven
- [x] charts-preserved-and-interactive

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven
- [x] data-contracts-verified

Evidencia registrada:

- Release consumidor: `5a0330ec8788694253affb80c92b0b8966450dc6`.
- Verificación: Vite 8.2.2 SSR conserva /, /editor y /g/:slug; FastAPI mantiene /api y OIDC. Nueve tests, typecheck, lint, audit 0 y build cis-build verdes. FigureSpec publishable emitido por Datos f727eb6 conserva dataset, fuente INE, query hash y Style v10 en https://graphs.cochid.cl/g/denuncias-policiales-registradas-en-chil-090ff7; Plotly muestra siete puntos en 320 oscuro y 1440 claro, sin overflow ni errores. Rollback Vite anterior y restauración 5a0330e quedaron probados. Faltan GlitchTip navegador y decisión de analítica con consentimiento.
- Rollback: Restaurar 60-release.conf a cochid-graphs-web-5a79185 para rollback Vite inmediato o al release Next cochid-graphs-web-3282b70 para rollback de framework; daemon-reload, restart y readiness antes del healthcheck.

Instrucción portable para Claude o ChatGPT:

> Alinear cochid-graphs sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-lex · complete

Repositorio: `/srv/projects/cochid/cochid-lex/web` · riesgo: `none`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 13 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-lex: https://lex.cochid.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-migrated-to-vite
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven

Evidencia registrada:

- Release consumidor: `f61c993c475132155bde8237c36b9254a963ec9f`.
- Verificación: Vite 8.2.2 SPA conserva quince rutas de normas, materias, jerarquía, sentencias, dictámenes, búsqueda y asistente; agrega redirects 308, 404 real, /web-healthz, robots y sitemap. Seis tests, typecheck, audit 0 y build cis-build verdes. Release exacta y edge: veintiocho combinaciones de catorce rutas en 320 claro y 1440 oscuro sin overflow, consola ni hallazgos Axe serios o críticos; navegación SPA, tema persistente, ancho de lectura, datos reales y grafo vis-network quedaron verdes. El único almacenamiento cliente observado es localStorage para cis-style:theme y cochid-lex.reading-width; no hay cookies ni analítica, y Caddy conserva /api, docs y OpenAPI en FastAPI. La UI de /ask se verificó sin enviar una consulta externa. Rollback real a Next y restauración Vite probados; /web-healthz y journald operan con 0 reinicios. Se retiraron 5,1 GB de cache fetch generado por Next tras detener el frontend, sin tocar corpus ni API. Faltan propiedad y política para analítica con consentimiento y un DSN frontend aprobado.
- Rollback: Mover /etc/systemd/system/cochid-lex-web.service.d/60-release.conf fuera, ejecutar daemon-reload y restart devuelve el Next intacto en /srv/projects/cochid/cochid-lex/web/.next/standalone; reinstalar /srv/projects/backups/cochid-lex-web/vite-f61c993-20260827T070108Z/cochid-lex-web.service.d/60-release.conf restaura Vite f61c993.

Instrucción portable para Claude o ChatGPT:

> Alinear cochid-lex sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry

### cochid-tpte · complete

Repositorio: `/srv/projects/cochid/cochid-tpte/web` · riesgo: `none`.

Plataforma frontend: `align-vite` → `vite` · estado `pending`.

Baseline: 9 rutas · 0 fronteras de servidor · analytics `not-observed` · monitoreo `not-observed`.

Superficies:

- cochid-tpte: https://tpte.cochid.cl

Bloqueos:

- ninguno

Gates:

- [x] isolated-clean-worktree
- [x] canonical-brand-approved
- [x] framework-migrated-to-vite
- [x] style-v10-digest-pinned
- [x] tests-green
- [x] build-via-cis-build
- [x] responsive-light-dark-wcag
- [x] backup-recorded
- [x] healthcheck-observed
- [x] logs-and-restarts-observed
- [x] rollback-proven
- [x] maps-hover-click-keyboard

Gates de plataforma:

- [x] route-contract-recorded
- [x] critical-flows-smoked
- [x] cookie-storage-inventory
- [ ] consent-analytics-verified
- [ ] frontend-observability-verified
- [x] page-docs-current
- [x] ui-ux-responsive-accessible
- [x] vite-build-proven
- [x] data-contracts-verified

Evidencia registrada:

- Release consumidor: `8313423ccc0ee260cb1b4ba47a83995502c38c91`.
- Verificación: Vite 8.2.2 SPA conserva portada, mapa, catálogo y detalle de recorridos, ficha de paradero y documentación API; agrega 404 real, /web-healthz, robots y sitemap. Siete tests, typecheck, audit 0 y build cis-build verdes. Release exacta y edge: catorce combinaciones de siete rutas en 320 claro y 1440 oscuro sin overflow, consola ni hallazgos Axe serios o críticos; navegación SPA, tema persistente, selección 506 y datos API reales quedaron verdes. El mapa Leaflet verificó hover, clic y apertura por teclado de un paradero con nombre accesible. El único almacenamiento cliente es cis-style:theme; no se observaron cookies ni analítica, y Caddy conserva /api/v1/* en FastAPI. Rollback real a Next y restauración Vite probados. Faltan propiedad y política aplicable para analítica con consentimiento y un DSN frontend aprobado; /web-healthz y journald operan con 0 reinicios.
- Rollback: Mover /etc/systemd/system/cochid-tpte.service.d/60-release.conf fuera, ejecutar daemon-reload y restart devuelve el Next intacto en /srv/projects/cochid/cochid-tpte/web/.next/standalone; reinstalar /srv/projects/backups/cochid-tpte-web/vite-8313423ccc0ee260cb1b4ba47a83995502c38c91-20260827T063033Z/60-release.vite.conf restaura Vite 8313423.

Instrucción portable para Claude o ChatGPT:

> Alinear cochid-tpte sobre Vite y Style v10 con contratos de páginas, telemetría y operación.
> Conserva las restricciones y registra evidencia de cada gate. No marques la unidad como lista sin evidencia observable.

Restricciones:

- do-not-mix-next-and-vite
- do-not-reimplement-login
- do-not-edit-served-dist
- do-not-deploy-from-dirty-worktree
- one-service-target-at-a-time
- preserve-route-and-flow-contract
- move-server-effects-to-api-or-bff
- no-analytics-before-applicable-consent
- no-pii-in-telemetry
