{
  "schema": "cis.style.migration-program.v1",
  "summary": {
    "surfaces": 49,
    "completed_surfaces": 13,
    "pending_surfaces": 36,
    "deployment_units": 48,
    "readiness": {
      "blocked": 21,
      "candidate": 17,
      "complete": 9,
      "excluded": 1
    },
    "waves": {
      "wave-0-assess": 21,
      "wave-0-retirement": 1,
      "wave-1-v9-public": 1,
      "wave-2-legacy-public": 9,
      "wave-3-authenticated": 7,
      "wave-complete": 9
    },
    "platform_strategies": {
      "align-vite": 18,
      "assess-frontend": 9,
      "excluded": 1,
      "migrate-next-to-vite": 4,
      "preserve-server-rendered": 5,
      "preserve-static": 11
    },
    "platform_readiness": {
      "blocked": 21,
      "excluded": 1,
      "pending": 26
    }
  },
  "deployment_units": [
    {
      "id": "cis-archivo",
      "repository_path": "/srv/projects/cds/archivo",
      "surfaces": [
        {
          "slug": "cis-archivo",
          "url": "https://archivo.innovacionsantiago.cl",
          "brand": "cds",
          "class": "internal",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cis-archivo",
            "repository": {
              "path": "/srv/projects/cds/archivo",
              "exists": true
            },
            "frameworks": {
              "frontend": "unknown",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cds",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": false
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v7",
              "status": "legacy"
            },
            "migration": null,
            "migration_actions": [
              "resolve-frontend-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [
              "frontend-integration-unresolved"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cis-archivo:frontend-integration-unresolved"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "unknown"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": null,
        "strategy": "assess-frontend",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Resolver la integración frontend de cis-archivo antes de elegir la unidad Vite o servidor correspondiente.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://archivo.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cds-plantillas",
      "repository_path": "/srv/projects/cds/cds-plantillas",
      "surfaces": [
        {
          "slug": "cds-plantillas",
          "url": "https://plantillas.circulodesantiago.cl",
          "brand": "cds",
          "class": "internal",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cds-plantillas",
            "repository": {
              "path": "/srv/projects/cds/cds-plantillas",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cds",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "public/index.html"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": false
              },
              "risks": [
                "browser-state-contract-required",
                "build-script-not-observed",
                "test-script-not-observed",
                "page-docs-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v6",
              "status": "legacy_mixed"
            },
            "migration": null,
            "migration_actions": [
              "adopt-static-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-static"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "high",
      "wave": "wave-3-authenticated",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "static",
        "strategy": "preserve-static",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "build-script-not-observed",
            "page-docs-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar cds-plantillas a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://plantillas.circulodesantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cds-protocolo",
      "repository_path": "/srv/projects/cds/cds-protocolo",
      "surfaces": [
        {
          "slug": "cds-protocolo",
          "url": "https://protocolo.circulodesantiago.cl",
          "brand": "cds",
          "class": "internal",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cds-protocolo",
            "repository": {
              "path": "/srv/projects/cds/cds-protocolo",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cds",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": false
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "adopt-static-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-static"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "high",
      "wave": "wave-3-authenticated",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "static",
        "strategy": "preserve-static",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar cds-protocolo a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://protocolo.circulodesantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "enciclopedia",
      "repository_path": "/srv/projects/cds/cds-sebastian",
      "surfaces": [
        {
          "slug": "enciclopedia",
          "url": "https://enciclopedia.circulodesantiago.cl",
          "brand": "cds",
          "class": "product",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "enciclopedia",
            "repository": {
              "path": "/srv/projects/cds/cds-sebastian",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cds",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "observed",
                "evidence": [
                  "frontend/src/pages/Editor.tsx"
                ],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 3,
                "evidence": [
                  "frontend/src/pages/Admin.tsx",
                  "frontend/src/pages/Editor.tsx",
                  "frontend/src/pages/Visor.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "frontend/index.html"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "test",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": {
            "node_id": "product.cds.enciclopedia",
            "kind": "product",
            "status": "active",
            "style_brand": "editorial-sebastian"
          }
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "canonical-style-brand-mismatch:enciclopedia:cds->editorial-sebastian"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "preserve"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 3,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "route-contract-required"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Alinear enciclopedia sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://enciclopedia.circulodesantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cds-www",
      "repository_path": "/srv/projects/cds/cds-www-next",
      "surfaces": [
        {
          "slug": "cds-www",
          "url": "https://circulodesantiago.cl",
          "brand": "cds",
          "class": "society",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "observed_at": "2026-08-27T00:51:00-04:00",
            "verified_at": "2026-08-27T00:51:00-04:00",
            "from_framework": "next",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "92813d330287a71acf88063d88e4f1a07afe38e7",
            "verified_gates": [
              "isolated-clean-worktree",
              "canonical-brand-approved",
              "framework-migrated-to-vite",
              "style-v10-digest-pinned",
              "tests-green",
              "build-via-cis-build",
              "responsive-light-dark-wcag",
              "backup-recorded",
              "healthcheck-observed",
              "logs-and-restarts-observed",
              "rollback-proven"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cds-www",
            "repository": {
              "path": "/srv/projects/cds/cds-www-next",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cds",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 2,
                "pages_routes": 0,
                "evidence": [
                  "src/app/actas/page.tsx",
                  "src/app/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "index.html",
                    "src/components/Nav.tsx"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "test",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": false
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "observed_at": "2026-08-27T00:51:00-04:00",
              "verified_at": "2026-08-27T00:51:00-04:00",
              "from_framework": "next",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "92813d330287a71acf88063d88e4f1a07afe38e7",
              "verified_gates": [
                "isolated-clean-worktree",
                "canonical-brand-approved",
                "framework-migrated-to-vite",
                "style-v10-digest-pinned",
                "tests-green",
                "build-via-cis-build",
                "responsive-light-dark-wcag",
                "backup-recorded",
                "healthcheck-observed",
                "logs-and-restarts-observed",
                "rollback-proven"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": {
            "node_id": "brand.cds",
            "kind": "corporate",
            "status": "active_legacy",
            "style_brand": "cds"
          }
        }
      ],
      "readiness": "complete",
      "blockers": [],
      "risk": "none",
      "wave": "wave-complete",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 2,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "route-contract-required"
          ]
        }
      },
      "gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "style-v10-digest-pinned",
        "tests-green",
        "build-via-cis-build",
        "responsive-light-dark-wcag",
        "backup-recorded",
        "healthcheck-observed",
        "logs-and-restarts-observed",
        "rollback-proven"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "style-v10-digest-pinned",
        "tests-green",
        "build-via-cis-build",
        "responsive-light-dark-wcag",
        "backup-recorded",
        "healthcheck-observed",
        "logs-and-restarts-observed",
        "rollback-proven"
      ],
      "pending_gates": [],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Alinear cds-www sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://circulodesantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cds-admin",
      "repository_path": "/srv/projects/cds/cis/cis-admin/cds_admin",
      "surfaces": [
        {
          "slug": "cds-admin",
          "url": "https://admin.circulodesantiago.cl",
          "brand": "cds",
          "class": "internal",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cds-admin",
            "repository": {
              "path": "/srv/projects/cds/cis/cis-admin/cds_admin",
              "exists": true
            },
            "frameworks": {
              "frontend": "unknown",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cds",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": false
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed",
                "page-docs-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": null,
              "status": "unverified"
            },
            "migration": null,
            "migration_actions": [
              "resolve-lifecycle",
              "resolve-frontend-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [
              "lifecycle-unverified",
              "frontend-integration-unresolved"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cds-admin:frontend-integration-unresolved",
        "audit:cds-admin:lifecycle-unverified"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "unknown"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": null,
        "strategy": "assess-frontend",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "page-docs-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Resolver la integración frontend de cds-admin antes de elegir la unidad Vite o servidor correspondiente.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://admin.circulodesantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-admin",
      "repository_path": "/srv/projects/cds/cis/cis-admin/web",
      "surfaces": [
        {
          "slug": "cis-admin",
          "url": "https://admin.innovacionsantiago.cl",
          "brand": "cis",
          "class": "internal",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cis-admin",
            "repository": {
              "path": "/srv/projects/cds/cis/cis-admin/web",
              "exists": true
            },
            "frameworks": {
              "frontend": "next",
              "tailwind": "^3.4.16",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "observed",
                "evidence": [
                  "src/app/bff/contabilidad/vista/route.ts"
                ],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 54,
                "pages_routes": 0,
                "evidence": [
                  "src/app/compras-y-ventas/clientes/page.tsx",
                  "src/app/compras-y-ventas/cobros/page.tsx",
                  "src/app/compras-y-ventas/compras/page.tsx",
                  "src/app/compras-y-ventas/contratos/page.tsx",
                  "src/app/compras-y-ventas/gastos/page.tsx",
                  "src/app/compras-y-ventas/page.tsx",
                  "src/app/compras-y-ventas/proveedores/page.tsx",
                  "src/app/compras-y-ventas/suscripciones/page.tsx",
                  "src/app/compras-y-ventas/ventas/page.tsx",
                  "src/app/contabilidad/asientos/page.tsx",
                  "src/app/contabilidad/cuentas-bancarias/page.tsx",
                  "src/app/contabilidad/estados-financieros/page.tsx",
                  "src/app/contabilidad/libro-mayor/page.tsx",
                  "src/app/contabilidad/page.tsx",
                  "src/app/contabilidad/plan-de-cuentas/page.tsx",
                  "src/app/contabilidad/remuneraciones/page.tsx",
                  "src/app/contabilidad/tesoreria/page.tsx",
                  "src/app/legal/firmas/page.tsx",
                  "src/app/operacion/page.tsx",
                  "src/app/page.tsx",
                  "src/app/sistema/agentes/page.tsx",
                  "src/app/sistema/alertas/page.tsx",
                  "src/app/sistema/boveda/page.tsx",
                  "src/app/sistema/claude-code/page.tsx",
                  "src/app/sistema/cockpit-claude/page.tsx",
                  "src/app/sistema/configuracion/page.tsx",
                  "src/app/sistema/consola/page.tsx",
                  "src/app/sistema/esqueleto/page.tsx",
                  "src/app/sistema/integraciones/page.tsx",
                  "src/app/sistema/page.tsx",
                  "src/app/sistema/repositorios/page.tsx",
                  "src/app/sistema/sitios/page.tsx",
                  "src/app/tablero/[...hoja]/page.tsx",
                  "src/app/tablero/claudia/page.tsx",
                  "src/app/tablero/operacion-comercial/page.tsx",
                  "src/app/tablero/page.tsx",
                  "src/app/tablero/portafolio/documentos/[documentId]/page.tsx",
                  "src/app/tablero/portafolio/page.tsx",
                  "src/app/tributario/declaraciones/page.tsx",
                  "src/app/tributario/folios/page.tsx",
                  "src/app/tributario/obligaciones/page.tsx",
                  "src/app/tributario/page.tsx",
                  "src/app/tributario/registro/page.tsx",
                  "src/app/tributario/sesion/page.tsx",
                  "src/app/tributario/verificacion-de-actividades/page.tsx",
                  "src/app/usuarios/auditoria/page.tsx",
                  "src/app/usuarios/page.tsx",
                  "src/app/usuarios/roles/page.tsx",
                  "src/app/usuarios/sesiones/page.tsx",
                  "src/app/wiki/[...hoja]/page.tsx",
                  "src/app/wiki/documentos/[id]/page.tsx",
                  "src/app/wiki/documentos/page.tsx",
                  "src/app/wiki/page.tsx",
                  "src/app/wiki/paginas/[espacio]/[...ruta]/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 24,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 1,
                "proxy": 0,
                "next_server": 32,
                "evidence": [
                  "src/app/bff/contabilidad/documentos/route.ts",
                  "src/app/bff/contabilidad/vista/route.ts",
                  "src/app/bff/documentos/[id]/route.ts",
                  "src/app/bff/documentos/proveedores/route.ts",
                  "src/app/bff/documentos/route.ts",
                  "src/app/bff/legal/firmas/route.ts",
                  "src/app/bff/operacion-comercial/ordenes/[orderId]/route.ts",
                  "src/app/bff/operacion-comercial/resumen/route.ts",
                  "src/app/bff/portada/route.ts",
                  "src/app/bff/sistema/alertas/[alertId]/reconocer/route.ts",
                  "src/app/bff/sistema/lectura/route.ts",
                  "src/app/bff/sistema/observabilidad/route.ts",
                  "src/app/bff/sistema/sitios/route.ts",
                  "src/app/bff/sistema/style/route.ts",
                  "src/app/bff/tablero/[hoja]/route.ts",
                  "src/app/bff/tributario/folios/route.ts",
                  "src/app/bff/tributario/rcv/resumen/route.ts",
                  "src/app/bff/tributario/rcv/route.ts",
                  "src/app/bff/tributario/registros/route.ts",
                  "src/app/bff/tributario/resumen/route.ts",
                  "src/app/bff/tributario/sesion/route.ts",
                  "src/app/bff/tributario/verificacion/route.ts",
                  "src/app/bff/usuarios/auditoria/route.ts",
                  "src/app/bff/wiki/accionistas/route.ts",
                  "src/app/sistema/claude-code/page.tsx",
                  "src/app/tablero/[...hoja]/page.tsx",
                  "src/app/tablero/claudia/page.tsx",
                  "src/app/tablero/portafolio/documentos/[documentId]/page.tsx",
                  "src/app/tablero/portafolio/page.tsx",
                  "src/componentes/carcasa/identidad.ts",
                  "src/componentes/carcasa/ruta.ts",
                  "src/middleware.ts"
                ]
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "src/app/layout.tsx"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "lint",
                  "test"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "api-bff-contract-required",
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "adopt-next-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-next"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "high",
      "wave": "wave-3-authenticated",
      "requirements": {
        "frameworks": [
          "next"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "preserve"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "migrate-next-to-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 54,
          "server_boundaries": 32,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "api-bff-contract-required",
            "browser-state-contract-required",
            "route-contract-required"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Migrar cis-admin de Next.js a Vite y Style v10, preservando rutas, flujos y fronteras de servidor.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://admin.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-monitoreo",
      "repository_path": "/srv/projects/cds/cis/cis-monitoreo",
      "surfaces": [
        {
          "slug": "cis-monitoreo",
          "url": "https://monitor.innovacionsantiago.cl",
          "brand": "cis",
          "class": "internal",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cis-monitoreo",
            "repository": {
              "path": "/srv/projects/cds/cis/cis-monitoreo",
              "exists": true
            },
            "frameworks": {
              "frontend": "server-rendered",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "app/templates/dashboard.html"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "browser-state-contract-required",
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v6",
              "status": "unverified"
            },
            "migration": null,
            "migration_actions": [
              "resolve-lifecycle",
              "adopt-server-rendered-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [
              "lifecycle-unverified"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cis-monitoreo:lifecycle-unverified"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "server-rendered"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "server-rendered",
        "strategy": "preserve-server-rendered",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar cis-monitoreo a Style v10, preservar el render de servidor y usar Vite sólo para UI interactiva.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://monitor.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "firmas",
      "repository_path": "/srv/projects/cds/cis/firmasydocumentos",
      "surfaces": [
        {
          "slug": "firmas",
          "url": "https://firmasydocumentos.cl",
          "brand": "firmas",
          "class": "product",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "firmas",
            "repository": {
              "path": "/srv/projects/cds/cis/firmasydocumentos",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "firmas",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "public/index.html"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": false
              },
              "risks": [
                "browser-state-contract-required",
                "build-script-not-observed",
                "test-script-not-observed",
                "page-docs-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": {
            "node_id": "product.cis.firmas-documentos",
            "kind": "product",
            "status": "active",
            "style_brand": "firmas-documentos"
          }
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "canonical-style-brand-mismatch:firmas:firmas->firmas-documentos"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "build-script-not-observed",
            "page-docs-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Alinear firmas sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://firmasydocumentos.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "periodismo2-admin",
      "repository_path": "/srv/projects/cds/cis/periodismo2-admin",
      "surfaces": [
        {
          "slug": "periodismo2-admin",
          "url": "https://admin.periodismo2.cl",
          "brand": "periodismo2",
          "class": "auxiliary",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "periodismo2-admin",
            "repository": {
              "path": "/srv/projects/cds/cis/periodismo2-admin",
              "exists": true
            },
            "frameworks": {
              "frontend": "server-rendered",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "periodismo2",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "src/periodismo2_admin/static/vendor/htmx/htmx.min.js"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "browser-state-contract-required",
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": null,
              "status": "unverified"
            },
            "migration": null,
            "migration_actions": [
              "resolve-lifecycle",
              "adopt-server-rendered-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [
              "lifecycle-unverified"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:periodismo2-admin:lifecycle-unverified"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "server-rendered"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "server-rendered",
        "strategy": "preserve-server-rendered",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar periodismo2-admin a Style v10, preservar el render de servidor y usar Vite sólo para UI interactiva.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://admin.periodismo2.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "periodismo2",
      "repository_path": "/srv/projects/cds/cis/periodismo2-frontend",
      "surfaces": [
        {
          "slug": "periodismo2",
          "url": "https://periodismo2.cl",
          "brand": "periodismo2",
          "class": "brand",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "periodismo2",
            "repository": {
              "path": "/srv/projects/cds/cis/periodismo2-frontend",
              "exists": true
            },
            "frameworks": {
              "frontend": "next",
              "tailwind": "^4.2.0",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "periodismo2",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 34,
                "pages_routes": 0,
                "evidence": [
                  "src/app/about/page.tsx",
                  "src/app/account/preferences/page.tsx",
                  "src/app/article/[id]/page.tsx",
                  "src/app/category/[slug]/page.tsx",
                  "src/app/chile/page.tsx",
                  "src/app/cronicas/[slug]/page.tsx",
                  "src/app/cronicas/page.tsx",
                  "src/app/editorial/page.tsx",
                  "src/app/entities/[id]/page.tsx",
                  "src/app/entities/page.tsx",
                  "src/app/fuentes/[id]/page.tsx",
                  "src/app/instituciones/[id]/page.tsx",
                  "src/app/intranet/noticias/[id]/page.tsx",
                  "src/app/intranet/page.tsx",
                  "src/app/intranet/reportes/[kind]/[id]/page.tsx",
                  "src/app/journalist/[slug]/page.tsx",
                  "src/app/legal/page.tsx",
                  "src/app/leyes/[id]/page.tsx",
                  "src/app/lugares/[id]/page.tsx",
                  "src/app/newsletter/confirm/page.tsx",
                  "src/app/newsletter/page.tsx",
                  "src/app/newsletter/preferences/page.tsx",
                  "src/app/page.tsx",
                  "src/app/periodistas/page.tsx",
                  "src/app/personas/[id]/page.tsx",
                  "src/app/pricing/page.tsx",
                  "src/app/privacy/page.tsx",
                  "src/app/recursos-visuales/[id]/page.tsx",
                  "src/app/search/page.tsx",
                  "src/app/sin-publicidad/page.tsx",
                  "src/app/sucesos/[id]/page.tsx",
                  "src/app/sucesos/page.tsx",
                  "src/app/temas/page.tsx",
                  "src/app/weather/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 11,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": [
                  "src/app/api/account/preferences/route.ts",
                  "src/app/api/account/recommendation-preferences/route.ts",
                  "src/app/api/account/recommendations/route.ts",
                  "src/app/api/intranet/[...path]/route.ts",
                  "src/app/api/media-usage/route.ts",
                  "src/app/api/metrics/route.ts",
                  "src/app/auth/callback/route.ts",
                  "src/app/auth/login/route.ts",
                  "src/app/auth/logout/route.ts",
                  "src/app/feed.xml/route.ts",
                  "src/app/news-sitemap.xml/route.ts"
                ]
              },
              "browser_state": {
                "cookies": {
                  "status": "observed",
                  "evidence": [
                    "src/lib/geo.ts"
                  ],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "src/app/layout.tsx",
                    "src/components/AdSenseScript.tsx",
                    "src/components/CookieBanner.tsx",
                    "src/components/CookiePreferences.tsx",
                    "src/components/GA4.tsx",
                    "src/components/GlitchTipInit.tsx",
                    "src/components/MetricsTransport.tsx",
                    "src/components/PublicNewsView.tsx",
                    "src/components/PushNotificationBanner.tsx",
                    "src/components/ThemeToggle.tsx"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "observed",
                  "evidence": [
                    "src/components/GA4.tsx"
                  ],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "observed",
                  "evidence": [
                    "src/components/GlitchTipInit.tsx"
                  ],
                  "dependencies": [
                    "@sentry/browser"
                  ]
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "lint",
                  "test",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": false,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "api-bff-contract-required",
                "browser-state-contract-required",
                "consent-analytics-contract-required",
                "frontend-monitoring-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v7",
              "status": "legacy_mixed"
            },
            "migration": null,
            "migration_actions": [
              "adopt-next-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-next"
          },
          "canonical_identity": {
            "node_id": "product.cis.periodismo2",
            "kind": "product",
            "status": "active",
            "style_brand": "periodismo2"
          }
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "medium",
      "wave": "wave-2-legacy-public",
      "requirements": {
        "frameworks": [
          "next"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "migrate-next-to-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 34,
          "server_boundaries": 11,
          "cookies": "observed",
          "storage": "observed",
          "analytics": "observed",
          "monitoring": "observed",
          "risks": [
            "api-bff-contract-required",
            "browser-state-contract-required",
            "consent-analytics-contract-required",
            "frontend-monitoring-contract-required",
            "route-contract-required"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Migrar periodismo2 de Next.js a Vite y Style v10, preservando rutas, flujos y fronteras de servidor.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://periodismo2.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-catalogo",
      "repository_path": "/srv/projects/cis/cis-catalogo",
      "surfaces": [
        {
          "slug": "cis-catalogo",
          "url": "https://catalogo.innovacionsantiago.cl",
          "brand": "cis",
          "class": "auxiliary",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "verified_at": "2026-08-26T19:27:00-04:00",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "e8bad1d9aa008df5b61167930f9d96e94101506c",
            "verified_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"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cis-catalogo",
            "repository": {
              "path": "/srv/projects/cis/cis-catalogo",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "index.html"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": false
              },
              "risks": [
                "browser-state-contract-required",
                "build-script-not-observed",
                "test-script-not-observed",
                "page-docs-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "verified_at": "2026-08-26T19:27:00-04:00",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "e8bad1d9aa008df5b61167930f9d96e94101506c",
              "verified_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"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-static-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-static"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "medium",
      "wave": "wave-2-legacy-public",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "static",
        "strategy": "preserve-static",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "build-script-not-observed",
            "page-docs-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-preserved",
        "style-v10-digest-pinned",
        "tests-green",
        "responsive-light-dark-wcag",
        "backup-recorded",
        "healthcheck-observed",
        "logs-and-restarts-observed",
        "rollback-proven"
      ],
      "pending_gates": [
        "static-release-proven"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar cis-catalogo a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://catalogo.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-claudia",
      "repository_path": "/srv/projects/cis/cis-claudia",
      "surfaces": [
        {
          "slug": "cis-claudia",
          "url": "https://claudia.innovacionsantiago.cl",
          "brand": "cis",
          "class": "internal",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cis-claudia",
            "repository": {
              "path": "/srv/projects/cis/cis-claudia",
              "exists": true
            },
            "frameworks": {
              "frontend": "next",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 2,
                "pages_routes": 0,
                "evidence": [
                  "frontend/src/app/(authenticated)/dashboard/page.tsx",
                  "frontend/src/app/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 1,
                "proxy": 0,
                "next_server": 1,
                "evidence": [
                  "frontend/src/middleware.ts"
                ]
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "lint"
                ]
              },
              "documentation": {
                "readme": false,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "api-bff-contract-required",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v5",
              "status": "legacy_mixed"
            },
            "migration": null,
            "migration_actions": [
              "adopt-next-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-next"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "high",
      "wave": "wave-3-authenticated",
      "requirements": {
        "frameworks": [
          "next"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "migrate-next-to-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 2,
          "server_boundaries": 1,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "api-bff-contract-required",
            "route-contract-required",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Migrar cis-claudia de Next.js a Vite y Style v10, preservando rutas, flujos y fronteras de servidor.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://claudia.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-collage",
      "repository_path": "/srv/projects/cis/cis-collage",
      "surfaces": [
        {
          "slug": "cis-collage",
          "url": "https://collage.innovacionsantiago.cl",
          "brand": "cis",
          "class": "product",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "cis-collage",
            "repository": {
              "path": "/srv/projects/cis/cis-collage",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "adopt-static-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-static"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "portfolio-site-unregistered:cis-collage"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "static",
        "strategy": "preserve-static",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar cis-collage a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://collage.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-inbox",
      "repository_path": "/srv/projects/cis/cis-inbox",
      "surfaces": [
        {
          "slug": "cis-inbox",
          "url": "https://inbox.innovacionsantiago.cl",
          "brand": "cis",
          "class": "internal",
          "auth_required": true,
          "migration": {
            "status": "verified",
            "observed_at": "2026-08-27T07:49:08-04:00",
            "verified_at": "2026-08-27T07:49:08-04:00",
            "from_framework": "next",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "7c4754fe94d8282a72b3028638c3aaa0a832e7d6",
            "verified_gates": [
              "isolated-clean-worktree",
              "canonical-brand-approved",
              "framework-migrated-to-vite",
              "style-v10-digest-pinned",
              "tests-green",
              "build-via-cis-build",
              "responsive-light-dark-wcag",
              "backup-recorded",
              "healthcheck-observed",
              "logs-and-restarts-observed",
              "rollback-proven"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cis-inbox",
            "repository": {
              "path": "/srv/projects/cis/cis-inbox",
              "exists": true
            },
            "frameworks": {
              "frontend": "next",
              "tailwind": "^3.4.3",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 4,
                "pages_routes": 0,
                "evidence": [
                  "frontend/app/inbox/[threadId]/page.tsx",
                  "frontend/app/inbox/page.tsx",
                  "frontend/app/page.tsx",
                  "frontend/app/settings/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "frontend/app/layout.tsx"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "lint",
                  "test",
                  "test:e2e",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": false,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "observed_at": "2026-08-27T07:49:08-04:00",
              "verified_at": "2026-08-27T07:49:08-04:00",
              "from_framework": "next",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "7c4754fe94d8282a72b3028638c3aaa0a832e7d6",
              "verified_gates": [
                "isolated-clean-worktree",
                "canonical-brand-approved",
                "framework-migrated-to-vite",
                "style-v10-digest-pinned",
                "tests-green",
                "build-via-cis-build",
                "responsive-light-dark-wcag",
                "backup-recorded",
                "healthcheck-observed",
                "logs-and-restarts-observed",
                "rollback-proven"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-next-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-next"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "high",
      "wave": "wave-3-authenticated",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 4,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "route-contract-required"
          ]
        }
      },
      "gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "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"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "style-v10-digest-pinned",
        "tests-green",
        "build-via-cis-build",
        "responsive-light-dark-wcag",
        "backup-recorded",
        "healthcheck-observed",
        "logs-and-restarts-observed",
        "rollback-proven"
      ],
      "pending_gates": [
        "oidc-authenticated-smoke",
        "consensus-review"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Alinear cis-inbox sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://inbox.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-infra",
      "repository_path": "/srv/projects/cis/cis-infra",
      "surfaces": [
        {
          "slug": "cis-infra",
          "url": "https://infra.innovacionsantiago.cl",
          "brand": "cis",
          "class": "internal",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cis-infra",
            "repository": {
              "path": "/srv/projects/cis/cis-infra",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 11,
                "evidence": [
                  "frontend/src/pages/Contable.tsx",
                  "frontend/src/pages/Dashboard.tsx",
                  "frontend/src/pages/DbMap.tsx",
                  "frontend/src/pages/Miembros.tsx",
                  "frontend/src/pages/Proyectos.tsx",
                  "frontend/src/pages/SII.tsx",
                  "frontend/src/pages/ServiceMap.tsx",
                  "frontend/src/pages/Servicios.tsx",
                  "frontend/src/pages/Sitemap.tsx",
                  "frontend/src/pages/Status.tsx",
                  "frontend/src/pages/VpsMap.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "frontend/index.html"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "observed",
                  "evidence": [
                    "frontend/src/components/Shell.tsx",
                    "frontend/src/lib/infraOverview.ts",
                    "frontend/src/pages/Dashboard.tsx"
                  ],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "lint",
                  "test"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required",
                "frontend-monitoring-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v6",
              "status": "unverified"
            },
            "migration": null,
            "migration_actions": [
              "resolve-lifecycle",
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [
              "lifecycle-unverified"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cis-infra:lifecycle-unverified"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 11,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "observed",
          "risks": [
            "browser-state-contract-required",
            "frontend-monitoring-contract-required",
            "route-contract-required"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Alinear cis-infra sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://infra.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-isometrico",
      "repository_path": "/srv/projects/cis/cis-isometrico",
      "surfaces": [
        {
          "slug": "cis-isometrico",
          "url": "https://isometrico.innovacionsantiago.cl",
          "brand": "cis",
          "class": "auxiliary",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "verified_at": "2026-08-26T20:01:00-04:00",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "908f89f733a187710758ce6c4fa65bd954629dcb",
            "verified_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"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cis-isometrico",
            "repository": {
              "path": "/srv/projects/cis/cis-isometrico",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "frontend/src/history.ts",
                    "frontend/src/main.ts",
                    "frontend/src/map-preview-theme.ts"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "build:bridge-study-preview",
                  "build:complete-cut-preview",
                  "build:footprints-preview",
                  "build:generative-art-preview",
                  "build:global-render-preview",
                  "build:ground-cover-preview",
                  "build:ground-imagery-preview",
                  "build:map-preview",
                  "build:native-terrain-preview",
                  "build:neighborhood-preview",
                  "build:parts-preview",
                  "build:physical-barriers-preview",
                  "build:precordillera-preview",
                  "build:public-spaces-preview",
                  "build:regional-map-preview",
                  "build:regions-preview",
                  "build:road-materials-preview",
                  "build:roof-atlas-preview",
                  "build:roof-photo-preview",
                  "build:roof-profile-preview",
                  "build:roof-study-preview",
                  "build:shadow-study-preview",
                  "build:summit-preview",
                  "build:terrain-preview",
                  "build:terrain-readability-preview",
                  "build:terrain-shadow-study-preview",
                  "build:vegetation-preview",
                  "lint",
                  "test"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "verified_at": "2026-08-26T20:01:00-04:00",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "908f89f733a187710758ce6c4fa65bd954629dcb",
              "verified_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"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "complete",
      "blockers": [],
      "risk": "none",
      "wave": "wave-complete",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required"
          ]
        }
      },
      "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"
      ],
      "verified_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"
      ],
      "pending_gates": [],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Alinear cis-isometrico sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://isometrico.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-mailer",
      "repository_path": "/srv/projects/cis/cis-mailer",
      "surfaces": [
        {
          "slug": "cis-mailer",
          "url": "https://mailer.innovacionsantiago.cl",
          "brand": "cis",
          "class": "internal",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cis-mailer",
            "repository": {
              "path": "/srv/projects/cis/cis-mailer",
              "exists": true
            },
            "frameworks": {
              "frontend": "server-rendered",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "observed",
                "libraries": [],
                "evidence": [
                  "app/ui/templates/dashboard.html"
                ]
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "observed",
                "evidence": [
                  "app/ui/templates/log_detail.html",
                  "app/ui/templates/template_detail.html"
                ],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "app/ui/templates/_layout.html"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": true
              },
              "risks": [
                "browser-state-contract-required",
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v6",
              "status": "unverified"
            },
            "migration": null,
            "migration_actions": [
              "resolve-lifecycle",
              "adopt-server-rendered-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [
              "lifecycle-unverified"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cis-mailer:lifecycle-unverified"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "server-rendered"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "preserve",
          "maps": "not-observed",
          "embeds": "preserve"
        }
      },
      "frontend_platform": {
        "target": "server-rendered",
        "strategy": "preserve-server-rendered",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Migrar cis-mailer a Style v10, preservar el render de servidor y usar Vite sólo para UI interactiva.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://mailer.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-mando",
      "repository_path": "/srv/projects/cis/cis-mando",
      "surfaces": [
        {
          "slug": "cis-mando",
          "url": "https://mando.innovacionsantiago.cl",
          "brand": "cis",
          "class": "internal",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cis-mando",
            "repository": {
              "path": "/srv/projects/cis/cis-mando",
              "exists": true
            },
            "frameworks": {
              "frontend": "server-rendered",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": false
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed",
                "page-docs-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v6",
              "status": "unverified"
            },
            "migration": null,
            "migration_actions": [
              "resolve-lifecycle",
              "adopt-server-rendered-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [
              "lifecycle-unverified"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cis-mando:lifecycle-unverified"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "server-rendered"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "server-rendered",
        "strategy": "preserve-server-rendered",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "page-docs-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar cis-mando a Style v10, preservar el render de servidor y usar Vite sólo para UI interactiva.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://mando.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-pendientes",
      "repository_path": "/srv/projects/cis/cis-pendientes",
      "surfaces": [
        {
          "slug": "cis-pendientes",
          "url": "https://pendientes.innovacionsantiago.cl",
          "brand": "cis",
          "class": "internal",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cis-pendientes",
            "repository": {
              "path": "/srv/projects/cis/cis-pendientes",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "public/index.html"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": false
              },
              "risks": [
                "browser-state-contract-required",
                "build-script-not-observed",
                "test-script-not-observed",
                "page-docs-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v7",
              "status": "legacy"
            },
            "migration": null,
            "migration_actions": [
              "adopt-static-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-static"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "high",
      "wave": "wave-3-authenticated",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "static",
        "strategy": "preserve-static",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "build-script-not-observed",
            "page-docs-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar cis-pendientes a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://pendientes.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-portal",
      "repository_path": "/srv/projects/cis/cis-portal",
      "surfaces": [
        {
          "slug": "cis-portal",
          "url": "https://portal.innovacionsantiago.cl",
          "brand": "cis",
          "class": "auxiliary",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "cis-portal",
            "repository": {
              "path": "/srv/projects/cis/cis-portal",
              "exists": true
            },
            "frameworks": {
              "frontend": "unknown",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": false
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "resolve-frontend-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [
              "frontend-integration-unresolved"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cis-portal:frontend-integration-unresolved"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "unknown"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": null,
        "strategy": "assess-frontend",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Resolver la integración frontend de cis-portal antes de elegir la unidad Vite o servidor correspondiente.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://portal.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-santiago",
      "repository_path": "/srv/projects/cis/cis-santiago",
      "surfaces": [
        {
          "slug": "cis-santiago",
          "url": "https://santiago.innovacionsantiago.cl",
          "brand": "cis",
          "class": "temporary",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "cis-santiago",
            "repository": {
              "path": "/srv/projects/cis/cis-santiago",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": null,
              "status": "unmanaged"
            },
            "migration": null,
            "migration_actions": [
              "adopt-static-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-static"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "medium",
      "wave": "wave-2-legacy-public",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "static",
        "strategy": "preserve-static",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar cis-santiago a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://santiago.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-status",
      "repository_path": "/srv/projects/cis/cis-status",
      "surfaces": [
        {
          "slug": "cis-status",
          "url": "https://status.innovacionsantiago.cl",
          "brand": "cis",
          "class": "auxiliary",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "observed_at": "2026-08-27T06:59:25-04:00",
            "verified_at": "2026-08-27T06:59:25-04:00",
            "from_framework": "static",
            "to_framework": "static",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "3f11768f9d561206197cbfa9c4a1e2ba24d124ca",
            "verified_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"
            ],
            "not_applicable_gates": [
              "charts-preserved-and-interactive"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cis-status",
            "repository": {
              "path": "/srv/projects/cis/cis-status",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "index.html",
                    "sentry.tmpl.html"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "observed",
                  "evidence": [
                    "sentry.tmpl.html"
                  ],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "browser-state-contract-required",
                "frontend-monitoring-contract-required",
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "observed_at": "2026-08-27T06:59:25-04:00",
              "verified_at": "2026-08-27T06:59:25-04:00",
              "from_framework": "static",
              "to_framework": "static",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "3f11768f9d561206197cbfa9c4a1e2ba24d124ca",
              "verified_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"
              ],
              "not_applicable_gates": [
                "charts-preserved-and-interactive"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-static-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-static"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "complete",
      "blockers": [],
      "risk": "none",
      "wave": "wave-complete",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "static",
        "strategy": "preserve-static",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "observed",
          "risks": [
            "browser-state-contract-required",
            "build-script-not-observed",
            "frontend-monitoring-contract-required",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_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"
      ],
      "pending_gates": [],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Migrar cis-status a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://status.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "style",
      "repository_path": "/srv/projects/cis/cis-style",
      "surfaces": [
        {
          "slug": "style",
          "url": "https://style.innovacionsantiago.cl",
          "brand": "cis",
          "class": "auxiliary",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "style",
            "repository": {
              "path": "/srv/projects/cis/cis-style",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": "^4.2.1",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "observed",
                "evidence": [
                  "src/shell/auth-modal.js",
                  "src/shell/navbar.js"
                ],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "public/index.html",
                    "src/shell/auth-state.js",
                    "src/shell/nav-data.js",
                    "src/shell/navbar.js",
                    "src/shell/runtime-loader.js",
                    "src/shell/shell.js",
                    "src/theme.js"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "build:graphs",
                  "build:shell"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "browser-state-contract-required",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "adopt-static-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-static"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "low",
      "wave": "wave-1-v9-public",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "preserve"
        }
      },
      "frontend_platform": {
        "target": "static",
        "strategy": "preserve-static",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Migrar style a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://style.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-usaia",
      "repository_path": "/srv/projects/cis/cis-usaia",
      "surfaces": [
        {
          "slug": "cis-usaia",
          "url": "https://usaia.cl",
          "brand": "usaia",
          "class": "brand",
          "auth_required": true,
          "migration": {
            "status": "in-progress",
            "observed_at": "2026-08-27T09:24:00-04:00",
            "from_framework": "vite",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "056694255874e5c92e407245f9b24f7fe5370017",
            "verified_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",
              "privacy-choice-fail-closed"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "@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."
          },
          "audit": {
            "slug": "cis-usaia",
            "repository": {
              "path": "/srv/projects/cis/cis-usaia",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "usaia",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": true
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "in-progress",
              "observed_at": "2026-08-27T09:24:00-04:00",
              "from_framework": "vite",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "056694255874e5c92e407245f9b24f7fe5370017",
              "verified_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",
                "privacy-choice-fail-closed"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "@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."
            },
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": {
            "node_id": "product.cis.usaia",
            "kind": "product",
            "status": "active",
            "style_brand": "usaia"
          }
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "high",
      "wave": "wave-3-authenticated",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_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"
      ],
      "pending_gates": [
        "oidc-authenticated-smoke",
        "consensus-review"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Alinear cis-usaia sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://usaia.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-verify",
      "repository_path": "/srv/projects/cis/cis-verify",
      "surfaces": [
        {
          "slug": "cds-docs",
          "url": "https://docs.circulodesantiago.cl",
          "brand": "cds",
          "class": "auxiliary",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "cds-docs",
            "repository": {
              "path": "/srv/projects/cis/cis-verify",
              "exists": true
            },
            "frameworks": {
              "frontend": "unknown",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cds",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "resolve-frontend-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [
              "frontend-integration-unresolved"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        },
        {
          "slug": "cis-docs",
          "url": "https://docs.innovacionsantiago.cl",
          "brand": "cis",
          "class": "auxiliary",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "cis-docs",
            "repository": {
              "path": "/srv/projects/cis/cis-verify",
              "exists": true
            },
            "frameworks": {
              "frontend": "unknown",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "resolve-frontend-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [
              "frontend-integration-unresolved"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cds-docs:frontend-integration-unresolved",
        "audit:cis-docs:frontend-integration-unresolved"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "unknown"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": null,
        "strategy": "assess-frontend",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Resolver la integración frontend de cds-docs, cis-docs antes de elegir la unidad Vite o servidor correspondiente.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://docs.circulodesantiago.cl",
          "https://docs.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-vpn",
      "repository_path": "/srv/projects/cis/cis-vpn",
      "surfaces": [
        {
          "slug": "cis-vpn",
          "url": "https://vpn.innovacionsantiago.cl",
          "brand": "cis",
          "class": "product",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "cis-vpn",
            "repository": {
              "path": "/srv/projects/cis/cis-vpn",
              "exists": true
            },
            "frameworks": {
              "frontend": "server-rendered",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "adopt-server-rendered-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-server-rendered"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "portfolio-site-unregistered:cis-vpn"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "server-rendered"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "server-rendered",
        "strategy": "preserve-server-rendered",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar cis-vpn a Style v10, preservar el render de servidor y usar Vite sólo para UI interactiva.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://vpn.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cis-www",
      "repository_path": "/srv/projects/cis/cis-www",
      "surfaces": [
        {
          "slug": "cis-www",
          "url": "https://innovacionsantiago.cl",
          "brand": "cis",
          "class": "society",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "observed_at": "2026-08-26T21:56:10-04:00",
            "verified_at": "2026-08-26T21:56:10-04:00",
            "from_framework": "vite",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "5554e1e108911a300c9ba570f6c18b3938a24132",
            "verified_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"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cis-www",
            "repository": {
              "path": "/srv/projects/cis/cis-www",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 7,
                "evidence": [
                  "frontend/src/pages/Administracion.tsx",
                  "frontend/src/pages/Contacto.tsx",
                  "frontend/src/pages/Filosofia.tsx",
                  "frontend/src/pages/Home.tsx",
                  "frontend/src/pages/NotFound.tsx",
                  "frontend/src/pages/Proyectos.tsx",
                  "frontend/src/pages/Quienes.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "frontend/src/hooks/useTheme.ts"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "observed",
                  "evidence": [
                    "frontend/src/main.tsx"
                  ],
                  "dependencies": [
                    "@sentry/browser"
                  ]
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "lint"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required",
                "frontend-monitoring-contract-required",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "observed_at": "2026-08-26T21:56:10-04:00",
              "verified_at": "2026-08-26T21:56:10-04:00",
              "from_framework": "vite",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "5554e1e108911a300c9ba570f6c18b3938a24132",
              "verified_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"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": {
            "node_id": "brand.cis",
            "kind": "corporate",
            "status": "active",
            "style_brand": "cis"
          }
        }
      ],
      "readiness": "complete",
      "blockers": [],
      "risk": "none",
      "wave": "wave-complete",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 7,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "observed",
          "risks": [
            "browser-state-contract-required",
            "frontend-monitoring-contract-required",
            "route-contract-required",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_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"
      ],
      "pending_gates": [],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Alinear cis-www sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "indieweb-apps",
      "repository_path": "/srv/projects/cis/projects/indieweb",
      "surfaces": [
        {
          "slug": "indieweb-apps",
          "url": "https://apps.indieweb.cl",
          "brand": "indieweb",
          "class": "product",
          "auth_required": true,
          "migration": null,
          "audit": {
            "slug": "indieweb-apps",
            "repository": {
              "path": "/srv/projects/cis/projects/indieweb",
              "exists": true
            },
            "frameworks": {
              "frontend": "unknown",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "indieweb",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": false
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed",
                "page-docs-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v6",
              "status": "legacy"
            },
            "migration": null,
            "migration_actions": [
              "resolve-frontend-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark",
              "verify-auth-theme"
            ],
            "blockers": [
              "frontend-integration-unresolved"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:indieweb-apps:frontend-integration-unresolved",
        "portfolio-site-unregistered:indieweb-apps"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "unknown"
        ],
        "oidc": "required",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": null,
        "strategy": "assess-frontend",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "page-docs-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Resolver la integración frontend de indieweb-apps antes de elegir la unidad Vite o servidor correspondiente.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://apps.indieweb.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "indieweb-idea",
      "repository_path": "/srv/projects/cis/projects/indieweb-idea",
      "surfaces": [
        {
          "slug": "indieweb-idea",
          "url": "https://idea.indieweb.cl",
          "brand": "indieweb",
          "class": "internal",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "indieweb-idea",
            "repository": {
              "path": "/srv/projects/cis/projects/indieweb-idea",
              "exists": true
            },
            "frameworks": {
              "frontend": "unknown",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "indieweb",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "test"
                ]
              },
              "documentation": {
                "readme": false,
                "docs_directory": false
              },
              "risks": [
                "page-docs-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v6",
              "status": "legacy"
            },
            "migration": null,
            "migration_actions": [
              "resolve-frontend-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [
              "frontend-integration-unresolved"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:indieweb-idea:frontend-integration-unresolved"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "unknown"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": null,
        "strategy": "assess-frontend",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "page-docs-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Resolver la integración frontend de indieweb-idea antes de elegir la unidad Vite o servidor correspondiente.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://idea.indieweb.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "indieweb",
      "repository_path": "/srv/projects/cis/projects/indieweb/frontend",
      "surfaces": [
        {
          "slug": "indieweb",
          "url": "https://indieweb.cl",
          "brand": "indieweb",
          "class": "brand",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "indieweb",
            "repository": {
              "path": "/srv/projects/cis/projects/indieweb/frontend",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "indieweb",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": false
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed",
                "page-docs-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v6",
              "status": "legacy"
            },
            "migration": null,
            "migration_actions": [
              "adopt-static-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-static"
          },
          "canonical_identity": {
            "node_id": "product.cis.indieweb-apps",
            "kind": "product",
            "status": "active",
            "style_brand": "indieweb"
          }
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "medium",
      "wave": "wave-2-legacy-public",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "static",
        "strategy": "preserve-static",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "page-docs-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar indieweb a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://indieweb.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "situacion",
      "repository_path": "/srv/projects/cis/projects/situacion",
      "surfaces": [
        {
          "slug": "situacion",
          "url": "https://situacion.cl",
          "brand": "situacion",
          "class": "brand",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "situacion",
            "repository": {
              "path": "/srv/projects/cis/projects/situacion",
              "exists": true
            },
            "frameworks": {
              "frontend": "next",
              "tailwind": "^4",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "situacion",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "observed",
                "libraries": [
                  "recharts"
                ],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 1,
                "pages_routes": 0,
                "evidence": [
                  "src/app/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 6,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 6,
                "evidence": [
                  "src/app/api/health/route.ts",
                  "src/app/api/push/subscribe/route.ts",
                  "src/app/api/push/vapid/route.ts",
                  "src/app/api/radar/anomalies/route.ts",
                  "src/app/api/radar/baseline/route.ts",
                  "src/app/api/radar/timeseries/route.ts"
                ]
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "src/components/GA4.tsx"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "observed",
                  "evidence": [
                    "src/components/GA4.tsx"
                  ],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "lint",
                  "test",
                  "test:watch",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": false
              },
              "risks": [
                "route-contract-required",
                "api-bff-contract-required",
                "browser-state-contract-required",
                "consent-analytics-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v6",
              "status": "legacy"
            },
            "migration": null,
            "migration_actions": [
              "adopt-next-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-next"
          },
          "canonical_identity": {
            "node_id": "product.cis.situacion",
            "kind": "product",
            "status": "active",
            "style_brand": "situacion"
          }
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "medium",
      "wave": "wave-2-legacy-public",
      "requirements": {
        "frameworks": [
          "next"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "preserve",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "migrate-next-to-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 1,
          "server_boundaries": 6,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "observed",
          "monitoring": "not-observed",
          "risks": [
            "api-bff-contract-required",
            "browser-state-contract-required",
            "consent-analytics-contract-required",
            "route-contract-required"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Migrar situacion de Next.js a Vite y Style v10, preservando rutas, flujos y fronteras de servidor.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://situacion.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-bici",
      "repository_path": "/srv/projects/cochid/cochid-bici",
      "surfaces": [
        {
          "slug": "cochid-bici",
          "url": "https://bici.cochid.cl",
          "brand": "cochid",
          "class": "product",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "cochid-bici",
            "repository": {
              "path": "/srv/projects/cochid/cochid-bici",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "observed",
                "libraries": [],
                "evidence": [
                  "static/index.html"
                ]
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "adopt-static-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-static"
          },
          "canonical_identity": {
            "node_id": "view.cochid.bici",
            "kind": "view_alias",
            "status": "active_migration_target",
            "style_brand": "cochid"
          }
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "canonical-class-mismatch:cochid-bici:product->view"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "preserve",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "static",
        "strategy": "preserve-static",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Migrar cochid-bici a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://bici.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-cables",
      "repository_path": "/srv/projects/cochid/cochid-cables",
      "surfaces": [
        {
          "slug": "cochid-cables",
          "url": "https://cables.cochid.cl",
          "brand": "cochid",
          "class": "view",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "observed_at": "2026-08-27T01:25:00-04:00",
            "verified_at": "2026-08-27T01:25:00-04:00",
            "from_framework": "next",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "1b9c93de2aff102c9cc5457fbf7337fdde11cb33",
            "verified_gates": [
              "isolated-clean-worktree",
              "canonical-brand-approved",
              "framework-migrated-to-vite",
              "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"
            ],
            "not_applicable_gates": [
              "charts-preserved-and-interactive"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cochid-cables",
            "repository": {
              "path": "/srv/projects/cochid/cochid-cables",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": "4.3.3",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "observed",
                "libraries": [
                  "d3"
                ],
                "evidence": []
              },
              "maps": {
                "status": "observed",
                "libraries": [
                  "maplibre-gl"
                ]
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "src/hooks/useTheme.ts"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "test",
                  "test:bundle",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": false
              },
              "risks": [
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "observed_at": "2026-08-27T01:25:00-04:00",
              "verified_at": "2026-08-27T01:25:00-04:00",
              "from_framework": "next",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "1b9c93de2aff102c9cc5457fbf7337fdde11cb33",
              "verified_gates": [
                "isolated-clean-worktree",
                "canonical-brand-approved",
                "framework-migrated-to-vite",
                "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"
              ],
              "not_applicable_gates": [
                "charts-preserved-and-interactive"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": {
            "node_id": "view.cochid.cables",
            "kind": "view_alias",
            "status": "active_migration_target",
            "style_brand": "cochid"
          }
        }
      ],
      "readiness": "complete",
      "blockers": [],
      "risk": "none",
      "wave": "wave-complete",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "preserve",
          "maps": "preserve",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required"
          ]
        }
      },
      "gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "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"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "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"
      ],
      "pending_gates": [],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven",
        "data-contracts-verified"
      ],
      "pending_platform_gates": [
        "critical-flows-smoked",
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Alinear cochid-cables sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://cables.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-congreso",
      "repository_path": "/srv/projects/cochid/cochid-congreso/web",
      "surfaces": [
        {
          "slug": "cochid-congreso",
          "url": "https://congreso.cochid.cl",
          "brand": "cochid",
          "class": "product",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "observed_at": "2026-08-27T02:02:00-04:00",
            "verified_at": "2026-08-27T02:02:00-04:00",
            "from_framework": "next",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "0bc341aa3182bc9907f33e912c83a57f0f61ea42",
            "verified_gates": [
              "isolated-clean-worktree",
              "canonical-brand-approved",
              "framework-migrated-to-vite",
              "style-v10-digest-pinned",
              "tests-green",
              "build-via-cis-build",
              "responsive-light-dark-wcag",
              "backup-recorded",
              "healthcheck-observed",
              "logs-and-restarts-observed",
              "rollback-proven"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cochid-congreso",
            "repository": {
              "path": "/srv/projects/cochid/cochid-congreso/web",
              "exists": true
            },
            "frameworks": {
              "frontend": "next",
              "tailwind": "^3.4.0",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 14,
                "pages_routes": 0,
                "evidence": [
                  "src/app/bancadas/[id]/page.tsx",
                  "src/app/bancadas/page.tsx",
                  "src/app/fuentes/page.tsx",
                  "src/app/page.tsx",
                  "src/app/parlamentarios/[id]/page.tsx",
                  "src/app/parlamentarios/page.tsx",
                  "src/app/partidos/[id]/page.tsx",
                  "src/app/partidos/page.tsx",
                  "src/app/personas/[id]/page.tsx",
                  "src/app/personas/page.tsx",
                  "src/app/proyectos/[boletin]/page.tsx",
                  "src/app/proyectos/page.tsx",
                  "src/app/votaciones/[id]/page.tsx",
                  "src/app/votaciones/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "src/app/layout.tsx"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "lint",
                  "test"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "observed_at": "2026-08-27T02:02:00-04:00",
              "verified_at": "2026-08-27T02:02:00-04:00",
              "from_framework": "next",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "0bc341aa3182bc9907f33e912c83a57f0f61ea42",
              "verified_gates": [
                "isolated-clean-worktree",
                "canonical-brand-approved",
                "framework-migrated-to-vite",
                "style-v10-digest-pinned",
                "tests-green",
                "build-via-cis-build",
                "responsive-light-dark-wcag",
                "backup-recorded",
                "healthcheck-observed",
                "logs-and-restarts-observed",
                "rollback-proven"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-next-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-next"
          },
          "canonical_identity": {
            "node_id": "product.cochid.congreso",
            "kind": "product",
            "status": "active_integration_degraded",
            "style_brand": "cochid"
          }
        }
      ],
      "readiness": "complete",
      "blockers": [],
      "risk": "none",
      "wave": "wave-complete",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 14,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "route-contract-required"
          ]
        }
      },
      "gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "style-v10-digest-pinned",
        "tests-green",
        "build-via-cis-build",
        "responsive-light-dark-wcag",
        "backup-recorded",
        "healthcheck-observed",
        "logs-and-restarts-observed",
        "rollback-proven"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "style-v10-digest-pinned",
        "tests-green",
        "build-via-cis-build",
        "responsive-light-dark-wcag",
        "backup-recorded",
        "healthcheck-observed",
        "logs-and-restarts-observed",
        "rollback-proven"
      ],
      "pending_gates": [],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Alinear cochid-congreso sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://congreso.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-datos",
      "repository_path": "/srv/projects/cochid/cochid-datos/web",
      "surfaces": [
        {
          "slug": "cochid-datos",
          "url": "https://datos.cochid.cl",
          "brand": "cochid",
          "class": "product",
          "auth_required": false,
          "migration": {
            "status": "in-progress",
            "observed_at": "2026-08-27T05:44:32-04:00",
            "from_framework": "next",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "2a4519bb509cc389fcc238091974fcc68d56eeeb",
            "verified_gates": [
              "isolated-clean-worktree",
              "canonical-brand-approved",
              "framework-migrated-to-vite",
              "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"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "frontend-observability-verified",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cochid-datos",
            "repository": {
              "path": "/srv/projects/cochid/cochid-datos/web",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": "^4",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "observed",
                "libraries": [
                  "d3",
                  "d3-scale",
                  "d3-scale-chromatic",
                  "recharts"
                ],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "observed",
                "evidence": [
                  "src/app/embed/[id]/page.tsx",
                  "src/components/layout/AppShell.tsx",
                  "src/components/owid/OWIDEmbedDialog.tsx"
                ],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 43,
                "pages_routes": 0,
                "evidence": [
                  "src/app/acceso-api/page.tsx",
                  "src/app/acerca/page.tsx",
                  "src/app/admin/page.tsx",
                  "src/app/biblioteca/page.tsx",
                  "src/app/calidad/[dataset_id]/page.tsx",
                  "src/app/calidad/auto/page.tsx",
                  "src/app/calidad/page.tsx",
                  "src/app/casen/page.tsx",
                  "src/app/catalogo/page.tsx",
                  "src/app/centros-estudio/page.tsx",
                  "src/app/comparar/page.tsx",
                  "src/app/contacto/page.tsx",
                  "src/app/dataset/[id]/page.tsx",
                  "src/app/embed/[id]/page.tsx",
                  "src/app/explorar/page.tsx",
                  "src/app/faq/page.tsx",
                  "src/app/funnel/page.tsx",
                  "src/app/futbol-territorial/algoritmos/page.tsx",
                  "src/app/futbol-territorial/galeria/[equipo]/page.tsx",
                  "src/app/futbol-territorial/galeria/page.tsx",
                  "src/app/futbol-territorial/page.tsx",
                  "src/app/indicador/[id]/page.tsx",
                  "src/app/iniciar-sesion/page.tsx",
                  "src/app/internal/qa-checklist/page.tsx",
                  "src/app/kiosk/page.tsx",
                  "src/app/lineage/page.tsx",
                  "src/app/mapa/[indicador]/page.tsx",
                  "src/app/mapa/page.tsx",
                  "src/app/mercado-publico/[...vista]/page.tsx",
                  "src/app/mercado-publico/page.tsx",
                  "src/app/metodologia/page.tsx",
                  "src/app/page.tsx",
                  "src/app/presupuesto/[...vista]/page.tsx",
                  "src/app/presupuesto/ejecucion/page.tsx",
                  "src/app/presupuesto/page.tsx",
                  "src/app/productos/page.tsx",
                  "src/app/quienes-somos/page.tsx",
                  "src/app/red-ferroviaria/page.tsx",
                  "src/app/referencia/page.tsx",
                  "src/app/seguridad/page.tsx",
                  "src/app/tema/[slug]/page.tsx",
                  "src/app/temas/page.tsx",
                  "src/app/videos/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "src/components/SiteNav.tsx",
                    "src/components/explorar/ComparisonBasket.tsx",
                    "src/components/futbol/ImageDetailModal.tsx",
                    "src/components/presupuesto/PresupuestoView.tsx",
                    "src/components/ux/OnboardingCallout.tsx",
                    "src/lib/consent.ts"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "observed",
                  "evidence": [
                    "src/app/red-ferroviaria/page.tsx"
                  ],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "observed",
                  "evidence": [
                    "src/lib/telemetry.ts"
                  ],
                  "dependencies": [
                    "@sentry/react"
                  ]
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "lint",
                  "test",
                  "test:e2e",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required",
                "consent-analytics-contract-required",
                "frontend-monitoring-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "in-progress",
              "observed_at": "2026-08-27T05:44:32-04:00",
              "from_framework": "next",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "2a4519bb509cc389fcc238091974fcc68d56eeeb",
              "verified_gates": [
                "isolated-clean-worktree",
                "canonical-brand-approved",
                "framework-migrated-to-vite",
                "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"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "frontend-observability-verified",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": {
            "node_id": "product.cochid.datos",
            "kind": "product",
            "status": "active",
            "style_brand": "cochid"
          }
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "medium",
      "wave": "wave-2-legacy-public",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "preserve",
          "maps": "not-observed",
          "embeds": "preserve"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 43,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "observed",
          "monitoring": "observed",
          "risks": [
            "browser-state-contract-required",
            "consent-analytics-contract-required",
            "frontend-monitoring-contract-required",
            "route-contract-required"
          ]
        }
      },
      "gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "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",
        "embeds-branded-frame-and-provenance"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "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"
      ],
      "pending_gates": [
        "embeds-branded-frame-and-provenance"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven",
        "data-contracts-verified"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified"
      ],
      "work_order": {
        "objective": "Alinear cochid-datos sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://datos.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-docs",
      "repository_path": "/srv/projects/cochid/cochid-docs",
      "surfaces": [
        {
          "slug": "cochid-docs",
          "url": "https://docs.cochid.cl",
          "brand": "cochid",
          "class": "auxiliary",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "cochid-docs",
            "repository": {
              "path": "/srv/projects/cochid/cochid-docs",
              "exists": true
            },
            "frameworks": {
              "frontend": "unknown",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": false
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed",
                "page-docs-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v5",
              "status": "legacy_mixed"
            },
            "migration": null,
            "migration_actions": [
              "resolve-frontend-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [
              "frontend-integration-unresolved"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cochid-docs:frontend-integration-unresolved"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "unknown"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": null,
        "strategy": "assess-frontend",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "page-docs-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Resolver la integración frontend de cochid-docs antes de elegir la unidad Vite o servidor correspondiente.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://docs.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-economia",
      "repository_path": "/srv/projects/cochid/cochid-economia",
      "surfaces": [
        {
          "slug": "cochid-economia",
          "url": "https://economia.cochid.cl",
          "brand": "cochid",
          "class": "product",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "cochid-economia",
            "repository": {
              "path": "/srv/projects/cochid/cochid-economia",
              "exists": true
            },
            "frameworks": {
              "frontend": "unknown",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "resolve-frontend-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [
              "frontend-integration-unresolved"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": {
            "node_id": "view.cochid.economia",
            "kind": "view_alias",
            "status": "active_migration_target",
            "style_brand": "cochid"
          }
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cochid-economia:frontend-integration-unresolved",
        "canonical-class-mismatch:cochid-economia:product->view"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "unknown"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": null,
        "strategy": "assess-frontend",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Resolver la integración frontend de cochid-economia antes de elegir la unidad Vite o servidor correspondiente.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://economia.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-elecciones",
      "repository_path": "/srv/projects/cochid/cochid-elecciones",
      "surfaces": [
        {
          "slug": "cochid-elecciones",
          "url": "https://elecciones.cochid.cl",
          "brand": "cochid",
          "class": "product",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "cochid-elecciones",
            "repository": {
              "path": "/srv/projects/cochid/cochid-elecciones",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "observed",
                "libraries": [
                  "plotly.js",
                  "react-plotly.js",
                  "recharts"
                ],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "lint",
                  "test",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v6",
              "status": "legacy"
            },
            "migration": null,
            "migration_actions": [
              "resolve-lifecycle",
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [
              "lifecycle-unverified"
            ],
            "readiness": "blocked",
            "cohort": "cohort-assess"
          },
          "canonical_identity": {
            "node_id": "product.cochid.elecciones",
            "kind": "product",
            "status": "active",
            "style_brand": "cochid"
          }
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cochid-elecciones:lifecycle-unverified"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "preserve",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": []
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Alinear cochid-elecciones sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://elecciones.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-graphs",
      "repository_path": "/srv/projects/cochid/cochid-graphs/web",
      "surfaces": [
        {
          "slug": "cochid-graphs",
          "url": "https://graphs.cochid.cl",
          "brand": "cochid",
          "class": "auxiliary",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "observed_at": "2026-08-26T23:45:00-04:00",
            "verified_at": "2026-08-26T23:45:00-04:00",
            "from_framework": "next",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "5a0330ec8788694253affb80c92b0b8966450dc6",
            "verified_gates": [
              "isolated-clean-worktree",
              "canonical-brand-approved",
              "framework-migrated-to-vite",
              "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"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cochid-graphs",
            "repository": {
              "path": "/srv/projects/cochid/cochid-graphs/web",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": "4.3.3",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "observed",
                "libraries": [
                  "plotly.js-dist-min",
                  "react-plotly.js"
                ],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 3,
                "pages_routes": 0,
                "evidence": [
                  "app/editor/page.tsx",
                  "app/g/[slug]/page.tsx",
                  "app/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "index.html"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "lint",
                  "test",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "observed_at": "2026-08-26T23:45:00-04:00",
              "verified_at": "2026-08-26T23:45:00-04:00",
              "from_framework": "next",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "5a0330ec8788694253affb80c92b0b8966450dc6",
              "verified_gates": [
                "isolated-clean-worktree",
                "canonical-brand-approved",
                "framework-migrated-to-vite",
                "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"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "complete",
      "blockers": [],
      "risk": "none",
      "wave": "wave-complete",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "preserve",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 3,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "route-contract-required"
          ]
        }
      },
      "gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "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"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "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"
      ],
      "pending_gates": [],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven",
        "data-contracts-verified"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Alinear cochid-graphs sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://graphs.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-lex",
      "repository_path": "/srv/projects/cochid/cochid-lex/web",
      "surfaces": [
        {
          "slug": "cochid-lex",
          "url": "https://lex.cochid.cl",
          "brand": "cochid",
          "class": "product",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "observed_at": "2026-08-27T03:02:00-04:00",
            "verified_at": "2026-08-27T03:02:00-04:00",
            "from_framework": "next",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "f61c993c475132155bde8237c36b9254a963ec9f",
            "verified_gates": [
              "isolated-clean-worktree",
              "canonical-brand-approved",
              "framework-migrated-to-vite",
              "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"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cochid-lex",
            "repository": {
              "path": "/srv/projects/cochid/cochid-lex/web",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": "4.3.3",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 13,
                "pages_routes": 0,
                "evidence": [
                  "src/app/(browse)/jerarquia/[tipo]/page.tsx",
                  "src/app/(browse)/jerarquia/page.tsx",
                  "src/app/(browse)/materias/page.tsx",
                  "src/app/(browse)/normas/[normaId]/jurisprudencia/page.tsx",
                  "src/app/(browse)/normas/[normaId]/page.tsx",
                  "src/app/(browse)/normas/page.tsx",
                  "src/app/ask/page.tsx",
                  "src/app/buscar/page.tsx",
                  "src/app/dictamenes/[id]/page.tsx",
                  "src/app/dictamenes/page.tsx",
                  "src/app/page.tsx",
                  "src/app/sentencias/[tribunal]/[rol]/page.tsx",
                  "src/app/sentencias/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "index.html",
                    "src/components/corpus/NormaQuickActions.tsx",
                    "src/components/jurisprudencia/ReadingModeToggle.tsx",
                    "src/components/layout/ThemeToggle.tsx"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "test",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "observed_at": "2026-08-27T03:02:00-04:00",
              "verified_at": "2026-08-27T03:02:00-04:00",
              "from_framework": "next",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "f61c993c475132155bde8237c36b9254a963ec9f",
              "verified_gates": [
                "isolated-clean-worktree",
                "canonical-brand-approved",
                "framework-migrated-to-vite",
                "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"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": {
            "node_id": "product.cochid.lex",
            "kind": "product",
            "status": "active",
            "style_brand": "cochid"
          }
        }
      ],
      "readiness": "complete",
      "blockers": [],
      "risk": "none",
      "wave": "wave-complete",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 13,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "route-contract-required"
          ]
        }
      },
      "gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "style-v10-digest-pinned",
        "tests-green",
        "build-via-cis-build",
        "responsive-light-dark-wcag",
        "backup-recorded",
        "healthcheck-observed",
        "logs-and-restarts-observed",
        "rollback-proven"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "style-v10-digest-pinned",
        "tests-green",
        "build-via-cis-build",
        "responsive-light-dark-wcag",
        "backup-recorded",
        "healthcheck-observed",
        "logs-and-restarts-observed",
        "rollback-proven"
      ],
      "pending_gates": [],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Alinear cochid-lex sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://lex.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-mapas",
      "repository_path": "/srv/projects/cochid/cochid-mapas",
      "surfaces": [
        {
          "slug": "cochid-mapas",
          "url": "https://mapas.cochid.cl",
          "brand": "cochid",
          "class": "product",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "observed_at": "2026-08-27T04:16:49-04:00",
            "verified_at": "2026-08-27T04:16:49-04:00",
            "from_framework": "next",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "157a9caa453f0c9c625d0d462cb4788513108896",
            "verified_gates": [
              "isolated-clean-worktree",
              "canonical-brand-approved",
              "framework-migrated-to-vite",
              "style-v10-digest-pinned",
              "tests-green",
              "build-via-cis-build",
              "responsive-light-dark-wcag",
              "backup-recorded",
              "healthcheck-observed",
              "logs-and-restarts-observed",
              "rollback-proven"
            ],
            "not_applicable_gates": [
              "charts-preserved-and-interactive",
              "embeds-branded-frame-and-provenance"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cochid-mapas",
            "repository": {
              "path": "/srv/projects/cochid/cochid-mapas",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": "4.3.3",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "observed",
                "libraries": [
                  "d3-scale",
                  "d3-scale-chromatic"
                ],
                "evidence": []
              },
              "maps": {
                "status": "observed",
                "libraries": [
                  "maplibre-gl"
                ]
              },
              "embeds": {
                "status": "observed",
                "evidence": [
                  "src/app/control/labeling/page.tsx"
                ],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 20,
                "pages_routes": 0,
                "evidence": [
                  "src/app/autopistas/page.tsx",
                  "src/app/bici/page.tsx",
                  "src/app/cables/page.tsx",
                  "src/app/ciudad/page.tsx",
                  "src/app/control/feedback/page.tsx",
                  "src/app/control/labeling/page.tsx",
                  "src/app/control/page.tsx",
                  "src/app/control/runs/page.tsx",
                  "src/app/control/tiles/page.tsx",
                  "src/app/demografia/page.tsx",
                  "src/app/electricidad/page.tsx",
                  "src/app/explorer/page.tsx",
                  "src/app/futbol-territorial/page.tsx",
                  "src/app/hidrovias/page.tsx",
                  "src/app/inaccesibilidad/page.tsx",
                  "src/app/multimodal/page.tsx",
                  "src/app/page.tsx",
                  "src/app/red-ferroviaria/page.tsx",
                  "src/app/transporte/page.tsx",
                  "src/app/trenes/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "index.html",
                    "src/components/layout/SiteShell.tsx"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "test",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "observed_at": "2026-08-27T04:16:49-04:00",
              "verified_at": "2026-08-27T04:16:49-04:00",
              "from_framework": "next",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "157a9caa453f0c9c625d0d462cb4788513108896",
              "verified_gates": [
                "isolated-clean-worktree",
                "canonical-brand-approved",
                "framework-migrated-to-vite",
                "style-v10-digest-pinned",
                "tests-green",
                "build-via-cis-build",
                "responsive-light-dark-wcag",
                "backup-recorded",
                "healthcheck-observed",
                "logs-and-restarts-observed",
                "rollback-proven"
              ],
              "not_applicable_gates": [
                "charts-preserved-and-interactive",
                "embeds-branded-frame-and-provenance"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": {
            "node_id": "product.cochid.mapas",
            "kind": "product",
            "status": "active",
            "style_brand": "cochid"
          }
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "medium",
      "wave": "wave-2-legacy-public",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "preserve",
          "maps": "preserve",
          "embeds": "preserve"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 20,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "route-contract-required"
          ]
        }
      },
      "gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "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"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "style-v10-digest-pinned",
        "tests-green",
        "build-via-cis-build",
        "responsive-light-dark-wcag",
        "backup-recorded",
        "healthcheck-observed",
        "logs-and-restarts-observed",
        "rollback-proven"
      ],
      "pending_gates": [
        "maps-hover-click-keyboard"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven",
        "data-contracts-verified"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Alinear cochid-mapas sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://mapas.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-mundial",
      "repository_path": "/srv/projects/cochid/cochid-mundial",
      "surfaces": [
        {
          "slug": "cochid-mundial",
          "url": "https://mundial.cochid.cl",
          "brand": "cochid",
          "class": "product",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "cochid-mundial",
            "repository": {
              "path": "/srv/projects/cochid/cochid-mundial",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": "^4.1.13",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "observed",
                "libraries": [
                  "maplibre-gl"
                ]
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 9,
                "evidence": [
                  "src/pages/AlbumPage.tsx",
                  "src/pages/BracketPage.tsx",
                  "src/pages/CalendarPage.tsx",
                  "src/pages/ForecastPage.tsx",
                  "src/pages/GroupsPage.tsx",
                  "src/pages/HomePage.tsx",
                  "src/pages/LivePage.tsx",
                  "src/pages/TeamsPage.tsx",
                  "src/pages/VenuesPage.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "test:popup",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": false
              },
              "risks": [
                "route-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v9",
              "status": "adopted"
            },
            "migration": null,
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "portfolio-site-unregistered:cochid-mundial"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "preserve",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 9,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "route-contract-required"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "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"
      ],
      "work_order": {
        "objective": "Alinear cochid-mundial sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://mundial.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-taller",
      "repository_path": "/srv/projects/cochid/cochid-taller",
      "surfaces": [
        {
          "slug": "cochid-taller",
          "url": "https://taller.cochid.cl",
          "brand": "cochid",
          "class": "auxiliary",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "observed_at": "2026-08-27T00:25:00-04:00",
            "verified_at": "2026-08-27T00:25:00-04:00",
            "from_framework": "next",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "c4f25237f55109407f0fb35c72e8626dae858ddb",
            "verified_gates": [
              "isolated-clean-worktree",
              "canonical-brand-approved",
              "framework-migrated-to-vite",
              "style-v10-digest-pinned",
              "tests-green",
              "build-via-cis-build",
              "responsive-light-dark-wcag",
              "backup-recorded",
              "healthcheck-observed",
              "logs-and-restarts-observed",
              "rollback-proven"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cochid-taller",
            "repository": {
              "path": "/srv/projects/cochid/cochid-taller",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": "^4.1.14",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "observed",
                "libraries": [
                  "maplibre-gl"
                ]
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 15,
                "pages_routes": 0,
                "evidence": [
                  "src/app/atlas/multimodal/page.tsx",
                  "src/app/atlas/trenes-narrativo/page.tsx",
                  "src/app/componentes/page.tsx",
                  "src/app/experimentos/chartjunk/page.tsx",
                  "src/app/experimentos/lie-factor/page.tsx",
                  "src/app/experimentos/minard/page.tsx",
                  "src/app/experimentos/small-multiples/page.tsx",
                  "src/app/experimentos/sparklines/page.tsx",
                  "src/app/page.tsx",
                  "src/app/proceso/lecciones/page.tsx",
                  "src/app/proceso/page.tsx",
                  "src/app/proceso/rounds/[n]/page.tsx",
                  "src/app/sobre/page.tsx",
                  "src/app/tufte/minard/page.tsx",
                  "src/app/tufte/principios/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "index.html",
                    "src/components/ThemeToggle.tsx"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "test",
                  "test:bundle",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "observed_at": "2026-08-27T00:25:00-04:00",
              "verified_at": "2026-08-27T00:25:00-04:00",
              "from_framework": "next",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "c4f25237f55109407f0fb35c72e8626dae858ddb",
              "verified_gates": [
                "isolated-clean-worktree",
                "canonical-brand-approved",
                "framework-migrated-to-vite",
                "style-v10-digest-pinned",
                "tests-green",
                "build-via-cis-build",
                "responsive-light-dark-wcag",
                "backup-recorded",
                "healthcheck-observed",
                "logs-and-restarts-observed",
                "rollback-proven"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "medium",
      "wave": "wave-2-legacy-public",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "preserve",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 15,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "route-contract-required"
          ]
        }
      },
      "gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "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"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "style-v10-digest-pinned",
        "tests-green",
        "build-via-cis-build",
        "responsive-light-dark-wcag",
        "backup-recorded",
        "healthcheck-observed",
        "logs-and-restarts-observed",
        "rollback-proven"
      ],
      "pending_gates": [
        "maps-hover-click-keyboard"
      ],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven",
        "data-contracts-verified"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Alinear cochid-taller sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://taller.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-thesis",
      "repository_path": "/srv/projects/cochid/cochid-thesis",
      "surfaces": [
        {
          "slug": "cochid-thesis",
          "url": "https://thesis.cochid.cl",
          "brand": "cochid",
          "class": "product",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "cochid-thesis",
            "repository": {
              "path": "/srv/projects/cochid/cochid-thesis",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": null,
              "status": "unmanaged"
            },
            "migration": null,
            "migration_actions": [
              "adopt-static-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-static"
          },
          "canonical_identity": {
            "node_id": "product.cochid.thesis",
            "kind": "product",
            "status": "active",
            "style_brand": "cochid"
          }
        }
      ],
      "readiness": "candidate",
      "blockers": [],
      "risk": "medium",
      "wave": "wave-2-legacy-public",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "static",
        "strategy": "preserve-static",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [],
      "pending_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"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [],
      "pending_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "work_order": {
        "objective": "Migrar cochid-thesis a Style v10 y conservarlo estático mientras no necesite un runtime interactivo.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://thesis.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid-tpte",
      "repository_path": "/srv/projects/cochid/cochid-tpte/web",
      "surfaces": [
        {
          "slug": "cochid-tpte",
          "url": "https://tpte.cochid.cl",
          "brand": "cochid",
          "class": "product",
          "auth_required": false,
          "migration": {
            "status": "verified",
            "observed_at": "2026-08-27T02:34:00-04:00",
            "verified_at": "2026-08-27T02:34:00-04:00",
            "from_framework": "next",
            "to_framework": "vite",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "8313423ccc0ee260cb1b4ba47a83995502c38c91",
            "verified_gates": [
              "isolated-clean-worktree",
              "canonical-brand-approved",
              "framework-migrated-to-vite",
              "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"
            ],
            "not_applicable_gates": [
              "charts-preserved-and-interactive"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "vite-build-proven",
              "api-bff-boundaries-recorded",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cochid-tpte",
            "repository": {
              "path": "/srv/projects/cochid/cochid-tpte/web",
              "exists": true
            },
            "frameworks": {
              "frontend": "vite",
              "tailwind": "4.3.3",
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "observed",
                "libraries": [],
                "evidence": [
                  "src/components/SantiagoMap.tsx"
                ]
              },
              "maps": {
                "status": "observed",
                "libraries": [
                  "leaflet"
                ]
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 9,
                "pages_routes": 0,
                "evidence": [
                  "src/app/api-docs/page.tsx",
                  "src/app/map/page.tsx",
                  "src/app/metodologia/page.tsx",
                  "src/app/page.tsx",
                  "src/app/routes/[code]/page.tsx",
                  "src/app/routes/page.tsx",
                  "src/app/salidas/page.tsx",
                  "src/app/stops/[code]/page.tsx",
                  "src/app/viaje/page.tsx"
                ]
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "observed",
                  "evidence": [
                    "index.html",
                    "src/hooks/useTheme.ts"
                  ],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": [
                  "build",
                  "test",
                  "typecheck"
                ]
              },
              "documentation": {
                "readme": true,
                "docs_directory": true
              },
              "risks": [
                "route-contract-required",
                "browser-state-contract-required"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "verified",
              "observed_at": "2026-08-27T02:34:00-04:00",
              "verified_at": "2026-08-27T02:34:00-04:00",
              "from_framework": "next",
              "to_framework": "vite",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "8313423ccc0ee260cb1b4ba47a83995502c38c91",
              "verified_gates": [
                "isolated-clean-worktree",
                "canonical-brand-approved",
                "framework-migrated-to-vite",
                "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"
              ],
              "not_applicable_gates": [
                "charts-preserved-and-interactive"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "vite-build-proven",
                "api-bff-boundaries-recorded",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "adopt-vite-v10-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [],
            "readiness": "candidate",
            "cohort": "cohort-vite"
          },
          "canonical_identity": {
            "node_id": "product.cochid.transporte",
            "kind": "product",
            "status": "active",
            "style_brand": "cochid"
          }
        }
      ],
      "readiness": "complete",
      "blockers": [],
      "risk": "none",
      "wave": "wave-complete",
      "requirements": {
        "frameworks": [
          "vite"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "preserve",
          "maps": "preserve",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": "vite",
        "strategy": "align-vite",
        "readiness": "pending",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "required"
        },
        "baseline": {
          "status": "observed",
          "routes": 9,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "browser-state-contract-required",
            "route-contract-required"
          ]
        }
      },
      "gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "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"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-migrated-to-vite",
        "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"
      ],
      "pending_gates": [],
      "platform_gates": [
        "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"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible",
        "vite-build-proven",
        "data-contracts-verified"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Alinear cochid-tpte sobre Vite y Style v10 con contratos de páginas, telemetría y operación.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://tpte.cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "cochid",
      "repository_path": "/srv/projects/releases/cochid-main/4a3a7006286b551ba10d8217c043668cb41b57a1",
      "surfaces": [
        {
          "slug": "cochid",
          "url": "https://cochid.cl",
          "brand": "cochid",
          "class": "society",
          "auth_required": false,
          "migration": {
            "status": "in-progress",
            "observed_at": "2026-08-27T06:19:05-04:00",
            "from_framework": "static",
            "to_framework": "static",
            "style_release": "10.0.0-candidate.16",
            "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
            "consumer_release": "4a3a7006286b551ba10d8217c043668cb41b57a1",
            "verified_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"
            ],
            "verified_platform_gates": [
              "route-contract-recorded",
              "critical-flows-smoked",
              "cookie-storage-inventory",
              "page-docs-current",
              "ui-ux-responsive-accessible",
              "data-contracts-verified"
            ],
            "evidence": "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."
          },
          "audit": {
            "slug": "cochid",
            "repository": {
              "path": "/srv/projects/releases/cochid-main/4a3a7006286b551ba10d8217c043668cb41b57a1",
              "exists": false
            },
            "frameworks": {
              "frontend": "unavailable",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cochid",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "unavailable",
                "libraries": []
              },
              "maps": {
                "status": "unavailable",
                "libraries": []
              },
              "embeds": {
                "status": "unavailable",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "unavailable",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "risks": [
                "local-path-missing"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v10",
              "status": "adopted"
            },
            "migration": {
              "status": "in-progress",
              "observed_at": "2026-08-27T06:19:05-04:00",
              "from_framework": "static",
              "to_framework": "static",
              "style_release": "10.0.0-candidate.16",
              "style_digest": "c9aa1c7530c1050549aaa013253f0059b147abe1f725a2979c07e11b35c06c69",
              "consumer_release": "4a3a7006286b551ba10d8217c043668cb41b57a1",
              "verified_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"
              ],
              "verified_platform_gates": [
                "route-contract-recorded",
                "critical-flows-smoked",
                "cookie-storage-inventory",
                "page-docs-current",
                "ui-ux-responsive-accessible",
                "data-contracts-verified"
              ],
              "evidence": "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."
            },
            "migration_actions": [
              "resolve-frontend-integration",
              "pin-v10-release-and-digest",
              "import-canonical-brand-theme",
              "default-light-and-persist-theme-toggle",
              "verify-responsive-and-wcag-in-light-dark"
            ],
            "blockers": [
              "local-path-missing"
            ],
            "readiness": "hold",
            "cohort": "cohort-hold"
          },
          "canonical_identity": {
            "node_id": "brand.cochid",
            "kind": "corporate",
            "status": "active",
            "style_brand": "cochid"
          }
        }
      ],
      "readiness": "blocked",
      "blockers": [
        "audit:cochid:local-path-missing"
      ],
      "risk": "unresolved",
      "wave": "wave-0-assess",
      "requirements": {
        "frameworks": [
          "unavailable"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": null,
        "strategy": "assess-frontend",
        "readiness": "blocked",
        "contracts": {
          "routes": "required",
          "flows": "required",
          "cookies": "required",
          "analytics": "required",
          "monitoring": "required",
          "documentation": "required",
          "data_visualization": "not-observed"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "unavailable",
          "storage": "unavailable",
          "analytics": "unavailable",
          "monitoring": "unavailable",
          "risks": [
            "local-path-missing"
          ]
        }
      },
      "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"
      ],
      "verified_gates": [
        "isolated-clean-worktree",
        "canonical-brand-approved",
        "framework-preserved",
        "style-v10-digest-pinned",
        "tests-green",
        "responsive-light-dark-wcag",
        "backup-recorded",
        "healthcheck-observed",
        "logs-and-restarts-observed",
        "rollback-proven"
      ],
      "pending_gates": [
        "build-via-cis-build"
      ],
      "platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "consent-analytics-verified",
        "frontend-observability-verified",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "verified_platform_gates": [
        "route-contract-recorded",
        "critical-flows-smoked",
        "cookie-storage-inventory",
        "page-docs-current",
        "ui-ux-responsive-accessible"
      ],
      "pending_platform_gates": [
        "consent-analytics-verified",
        "frontend-observability-verified"
      ],
      "work_order": {
        "objective": "Resolver la integración frontend de cochid antes de elegir la unidad Vite o servidor correspondiente.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://cochid.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    },
    {
      "id": "libro-retirado",
      "repository_path": "/srv/retirado/libro",
      "surfaces": [
        {
          "slug": "libro-retirado",
          "url": "https://libro.innovacionsantiago.cl",
          "brand": "cis",
          "class": "retired",
          "auth_required": false,
          "migration": null,
          "audit": {
            "slug": "libro-retirado",
            "repository": {
              "path": "/srv/retirado/libro",
              "exists": true
            },
            "frameworks": {
              "frontend": "static",
              "tailwind": null,
              "bootstrap": null
            },
            "brand_theme": {
              "slug": "cis",
              "manifest": true,
              "tokens": true,
              "light": true,
              "dark": true
            },
            "capabilities": {
              "charts": {
                "status": "not-observed",
                "libraries": [],
                "evidence": []
              },
              "maps": {
                "status": "not-observed",
                "libraries": []
              },
              "embeds": {
                "status": "not-observed",
                "evidence": [],
                "evidence_scope": "executable-source-only"
              }
            },
            "platform_baseline": {
              "status": "observed",
              "evidence_scope": "local-executable-source-and-package-metadata",
              "routes": {
                "app_pages": 0,
                "pages_routes": 0,
                "evidence": []
              },
              "server_boundaries": {
                "route_handlers": 0,
                "pages_api": 0,
                "server_actions": 0,
                "middleware": 0,
                "proxy": 0,
                "next_server": 0,
                "evidence": []
              },
              "browser_state": {
                "cookies": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "storage": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "telemetry": {
                "analytics": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                },
                "monitoring": {
                  "status": "not-observed",
                  "evidence": [],
                  "dependencies": []
                }
              },
              "quality": {
                "scripts": []
              },
              "documentation": {
                "readme": false,
                "docs_directory": false
              },
              "risks": [
                "build-script-not-observed",
                "test-script-not-observed",
                "page-docs-not-observed"
              ],
              "verified_platform_gates": []
            },
            "current_style": {
              "version": "v7",
              "status": "legacy"
            },
            "migration": null,
            "migration_actions": [
              "verify-retirement-redirect",
              "preserve-offline-state"
            ],
            "blockers": [
              "lifecycle-retired"
            ],
            "readiness": "excluded",
            "cohort": "cohort-retired"
          },
          "canonical_identity": null
        }
      ],
      "readiness": "excluded",
      "blockers": [
        "audit:libro-retirado:lifecycle-retired"
      ],
      "risk": "none",
      "wave": "wave-0-retirement",
      "requirements": {
        "frameworks": [
          "static"
        ],
        "oidc": "not-applicable",
        "style_release": "v10 immutable digest",
        "capabilities": {
          "charts": "not-observed",
          "maps": "not-observed",
          "embeds": "not-observed"
        }
      },
      "frontend_platform": {
        "target": null,
        "strategy": "excluded",
        "readiness": "excluded",
        "contracts": {
          "routes": "not-applicable",
          "flows": "not-applicable",
          "cookies": "not-applicable",
          "analytics": "not-applicable",
          "monitoring": "not-applicable",
          "documentation": "not-applicable",
          "data_visualization": "not-applicable"
        },
        "baseline": {
          "status": "observed",
          "routes": 0,
          "server_boundaries": 0,
          "cookies": "not-observed",
          "storage": "not-observed",
          "analytics": "not-observed",
          "monitoring": "not-observed",
          "risks": [
            "build-script-not-observed",
            "page-docs-not-observed",
            "test-script-not-observed"
          ]
        }
      },
      "gates": [
        "retirement-state-observed",
        "redirect-or-gone-healthcheck"
      ],
      "verified_gates": [],
      "pending_gates": [
        "retirement-state-observed",
        "redirect-or-gone-healthcheck"
      ],
      "platform_gates": [],
      "verified_platform_gates": [],
      "pending_platform_gates": [],
      "work_order": {
        "objective": "Conservar la exclusión documentada de libro-retirado.",
        "constraints": [
          "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"
        ],
        "completion": "Todos los gates deben registrar evidencia; un resultado incierto bloquea el despliegue."
      },
      "verification": {
        "healthcheck_urls": [
          "https://libro.innovacionsantiago.cl"
        ],
        "viewports": [
          320,
          375,
          768,
          1024,
          1440
        ],
        "themes": [
          "light",
          "dark"
        ]
      }
    }
  ],
  "sources": {
    "registry": "/srv/projects/tasks/ui-ux-birren46-full-20261006T2350/candidate/registry/consumers.yaml",
    "audit": "/srv/projects/tasks/ui-ux-birren46-full-20261006T2350/candidate/review/v10-workshop/migration/consumer-readiness.v1.json",
    "portfolio": "/srv/projects/tasks/ui-ux-birren46-full-20261006T2350/portfolio.v1.json"
  }
}
