Interfaz
Next.js App Router y TypeScript. Captura, mapa Leaflet, expedientes, investigaciones y administración de la organización.
Cómo se conservan las voces, se contrastan datos territoriales y se investigan alternativas con revisión humana.
La disponibilidad de PostgreSQL, archivos, conectores y SpecOrganon depende de la configuración de esta instancia. La documentación describe los contratos; una página accesible no confirma que todos los servicios hayan sido provisionados o probados. El servidor informa errores y capacidades sin sustituirlos por datos de ejemplo.
Territorio Vivo reúne observaciones de personas, datos ambientales e historia territorial para construir expedientes contrastables. Las comunidades expresan necesidades, restricciones y preferencias; esos aportes se distinguen de las mediciones técnicas.
El primer ciclo recibe y contrasta evidencia. El segundo investiga una intervención cuando una persona agrupa información y solicita trabajo con presupuesto. Una observación nueva no dispara automáticamente todo el proceso de investigación.
El tipo de amenaza y el territorio son parámetros de la organización. Un reto o dataset todavía no recibido se registra como pendiente; ninguna capa sintética se atribuye a CORNARE u otra autoridad.
Next.js App Router y TypeScript. Captura, mapa Leaflet, expedientes, investigaciones y administración de la organización.
Sesiones, autorización por rol, revisión de entradas, correlación y adaptadores. Cada solicitud resuelve la organización activa en el servidor.
PostgreSQL con migraciones y PostGIS para geometrías y relaciones espaciales. Los originales, versiones, decisiones y auditoría se conservan como registros.
El código de producción separa las rutas de src/app, los contratos y las operaciones de src/production. El cliente obtiene respuestas de la API; no conserva un workspace ficticio en localStorage ni sustituye una base ausente por estado en memoria.
Las migraciones crean PostGIS, entidades y políticas de aislamiento por fila (RLS). El acceso de aplicación usa un rol restringido, sin superusuario ni BYPASSRLS. Cada transacción fija un contexto local de persona y organización y vuelve a comprobar la membresía activa; los filtros de la interfaz no son la frontera de seguridad.
El mapa consulta GeoJSON autorizado por la API. El fondo OpenStreetMap es cartografía de referencia y muestra su atribución; no constituye evidencia ambiental oficial. Los archivos se consultan mediante rutas autenticadas, sin publicar una URL comunitaria permanente.
| Ruta | Responsabilidad |
|---|---|
/api/auth/session | Persona y organizaciones autorizadas. |
/api/auth/register · login · logout | Creación de cuenta, acceso y revocación de sesión. |
/api/organizations/switch | Activación de una membresía autorizada. |
/api/reports · events · investigations | Captura, expedientes e investigación. |
/api/map | Geometrías y propiedades minimizadas según rol. |
/api/datasets/sources · ingest | Registro de fuentes e ingestión con procedencia. |
/api/communities | Crear y editar descripción, territorio y necesidades expresadas. |
/api/events/:id/contradictions | Vincular dos evidencias distintas del expediente con un motivo. |
/api/investigations/:id/review | Aceptar o rechazar una revisión concreta y sus alternativas. |
/api/settings · audit | Configuración, membresías y trazabilidad. |
Las colecciones devuelven items, total, page, pageSize. El detalle devuelve item, related. Un error de autorización, configuración, conflicto o red no confirma una operación ni crea un registro de respaldo ficticio.
Las cuentas utilizan correo y contraseña; las membresías asignan un rol por organización. Los registros de una organización no deben consultarse desde otra. Cambiar de organización vuelve a consultar sus datos, sin reutilizar el estado de la anterior.
| Rol | Responsabilidad |
|---|---|
| Responsable de organización | Administra configuración, conservación, miembros y trabajo territorial. |
| Coordinación | Organiza evidencia y solicita investigaciones y decisiones según permisos. |
| Análisis | Trabaja con fuentes, contexto e investigación. |
| Operación de campo | Registra observaciones y aporta seguimiento. |
| Revisión comunitaria | Contrasta información y participa en revisión y decisiones humanas. |
| Consulta | Consulta información autorizada sin modificar registros. |
Las contraseñas se derivan con scrypt y sal individual. La base conserva hashes de sesión, mientras el navegador recibe una cookie opaca HttpOnly, SameSite=Strict y Secure bajo HTTPS. Las sesiones expiran, cerrar sesión las revoca y los intentos de acceso tienen límites. Estas medidas del código requieren verificarse en la configuración concreta publicada.
La interfaz orienta las acciones disponibles; el backend aplica el control definitivo. El responsable agrega una cuenta existente por correo y selecciona el rol de esa membresía. No se comparten contraseñas ni se usa una clave pública de demostración.
El formulario web y el panel de operador admiten texto, tipo de evento, fecha del hecho, lugar, persona o fuente, anonimización, necesidad, impacto, personas afectadas y comentarios. La ubicación es opcional y conserva precisión aproximada; consultar el navegador requiere una acción y consentimiento explícitos.
La implementación de producción conserva el audio original y registra el estado pending_service cuando no hay un servicio de transcripción configurado. Ese estado no contiene una transcripción inventada. Una corrección humana tiene su propia revisión y motivo; la solicitud envía expectedRevision para detectar cambios concurrentes.
Las credenciales de WhatsApp y el servicio de transcripción siguen pendientes de configuración en este carril. No se confirma recepción, envío o transcripción automática de producción a partir de una pantalla accesible.
WhatsApp requiere credenciales, verificación de webhook y firma, idempotencia, gestión de medios y consentimiento. Su capacidad concreta se informa por el servidor: no se presume recepción de mensajes por la existencia del formulario.
El catálogo público de CORNARE reúne las descargas verificadas y documentos por municipio y alcance. Muestra las cifras del snapshot recibido, proveedor, cobertura, geometría, atribución, licencia, limitaciones y hash. Las capas urbanas de movimientos en masa, inundación y avenida torrencial conservan su cobertura específica; que un municipio tenga una capa no significa que las tres amenazas estén cartografiadas allí. Los procesos morfodinámicos y las referencias administrativas se distinguen por su título y procedencia.
El catálogo enlaza los estudios originales sin copiar PDFs. Una carpeta con año 2025 no demuestra la fecha de un estudio. La consulta del snapshot, la actualización de la fuente y la fecha del documento son campos diferentes: lo desconocido permanece sin informar. Una referencia temporal como Abril de 2018 se conserva en atribución o limitaciones, sin inventar un timestamp ISO.
Las descargas del catálogo conservan las geometrías originales de la fuente. En el paquete actual, nueve polígonos de movimientos en masa requieren reparación: PostGIS aplica ST_MakeValid a la copia de trabajo usada por el mapa y registra esa derivación. Los originales, sus versiones y los hashes de las respuestas de la fuente permanecen intactos.
Desde Datos y fuentes, una persona con permiso de datasets puede solicitar Cargar referencias oficiales. La API fija la organización autenticada y omite fuentes ya presentes. Para consultar una versión nueva se utiliza Ingerir datos; las versiones anteriores y su procedencia se conservan. Este paquete público mantiene synthetic:false y permanece separado de observaciones synthetic/demo. No cambia el nombre, los miembros, el territorio o la amenaza de la organización ni confirma un aval de CORNARE o el reto oficial pendiente.
Las fuentes prioritarias son CORNARE, IDEAM, SGC, DANE, SIAC y Datos Abiertos Colombia. La ingestión solo selecciona interfaces registradas y verificadas por el operador; un enlace a un visor no prueba que haya datos descargables ni concede permiso de uso.
Cada dataset debe conservar proveedor, título, endpoint, tipo de servicio, fecha de consulta, actualización de fuente cuando existe, licencia, atribución, CRS, cobertura, hash del contenido y limitaciones. Sus versiones conservan qué datos participaron en un cruce.
Geometrías y atributos se normalizan para PostGIS. Sistemas de coordenadas, resolución y precisión condicionan la interpretación. Sin ubicación autorizada no se inventa un punto.
La fecha del hecho, la recepción y la actualización del dataset son distintas. Una observación fuera de vigencia sigue siendo contexto histórico, no corroboración actual.
El registro distingue fuentes que admiten ingestión de referencias visuales. La información raster de inundación de CORNARE se conserva como fuente de consulta y aparece deshabilitada para el adaptador vectorial: no se convierten sus píxeles en geometrías fabricadas. Los inventarios históricos o agregados municipales tampoco equivalen a una alerta ni a un diagnóstico de parcela.
La ingestión falla de forma visible si la fuente no responde o el contrato es incompatible. La actualización programada requiere cron configurado y registros de resultado; no se declara activa por estar descrita aquí.
Referencia primaria: gestión del riesgo de CORNAREEl motor relaciona evidencia espacial, temporal y semántica. Un conjunto de reportes puede abrir un expediente; el número de mensajes no prueba gravedad, independencia de fuentes o existencia de un evento.
El cambio de estado exige revisión y motivo. Las contradicciones conservan las dos referencias, comentarios y pendientes; se admite resolución parcial o expediente abierto. El sistema no obliga a producir una narrativa única.
Para registrar una contradicción se seleccionan dos IDs de evidencia realmente vinculados al expediente. La revisión admite abierta, en revisión, resuelta parcialmente o resuelta, con motivo. Las referencias y el contenido original permanecen inspeccionables; resolver una discrepancia no borra la otra voz.
La memoria territorial enlaza observación, nueva evidencia, investigación, intervención registrada y seguimiento en fechas conservadas por la base. Las revisiones y artefactos antiguos permanecen distinguibles de la evidencia actual.
Territorio Vivo adapta el expediente a la interfaz existente de SpecOrganon. Incluye problema, actores, afectados, evidencia, contradicciones, hipótesis, fuentes y necesidades expresadas. No reimplementa el toolkit.
El coordinador prepara el problema, necesidades, restricciones y criterios de éxito, con límite de tiempo y costo. La ejecución se solicita de forma explícita. Caso, estado, artefactos, versiones, resultados y errores regresan a la plataforma y se conservan.
Las fases frame, critique, study, observe, explain, compare, specify, build, validate se usan cuando corresponde. Una ejecución formal de CLI no demuestra por sí sola razonamiento de un modelo ni eficacia de campo; sus recibos deben indicar qué se ejecutó.
El carril actual integra el toolkit formal, con entradas, artefactos y resultados estructurados. El proveedor LLM está pendiente de configuración: un caso formal ejecutado no se presenta como análisis generado por un modelo. Las mediciones, costos y acuerdos desconocidos permanecen sin completar.
Las alternativas documentan justificación, referencias, costo sustentado cuando existe, beneficios esperados, riesgos, actores, incertidumbre y prerrequisitos. La comunidad puede confirmar, corregir, objetar, expresar preferencias y aportar evidencia; el dato técnico y la preferencia social se identifican por separado.
Propuesta, aprobación, ejecución registrada y resultado observado son etapas independientes. La IA no aprueba intervenciones, declara emergencias, inventa mediciones ni borra contradicciones.
La revisión de investigación registra un veredicto aceptar o rechazar, su motivo, las alternativas examinadas y la revisión esperada. Aceptar requiere al menos dos alternativas distintas y evidencia vigente comprobada por el servidor. Hasta esa revisión, las decisiones permanecen bloqueadas.
Las firmas y compuertas humanas de SpecOrganon son independientes de este veredicto. Sus retos, claves públicas y autorizaciones deben registrarse por el procedimiento formal; la plataforma no genera una firma, aprueba artefactos ni hace avanzar una fase automáticamente. Los bloqueos y errores del toolkit se conservan.
El responsable de la organización puede registrar la clave pública Ed25519 de un miembro existente para cinco ámbitos formales: approver (aprobación de artefactos), phase_reviewer (revisión independiente de fases), test_executor (ejecución de pruebas), test_observer (observación de pruebas) y field_assessor (constatación de campo). Debe confirmar explícitamente identidad, vinculación de la clave, custodia externa y autoridad; el rol de acceso a la plataforma no sustituye esas comprobaciones. El registro conserva persona, ámbito, huella, proyecto y revisiones vigentes. Registrar o revocar autoridad puede invalidar revisiones y aceptaciones dependientes y exige comprobar de nuevo la confianza. Las claves se generan y custodian fuera de la aplicación: aquí sólo se introduce material público, nunca claves privadas ni credenciales. La firma de un desafío vigente sigue siendo una acción humana externa y su registro y verificación son operaciones distintas. Este procedimiento no afirma que exista ya una firma humana válida ni una fase aceptada.
Mensajes, documentos y salidas de modelos se tratan como datos no confiables. No se transforman en instrucciones privilegiadas. El proveedor de razonamiento, si se habilita, requiere configuración explícita y resultados trazables.
Nombre, contacto, ubicación y multimedia requieren protección. Las vistas y rutas de archivos aplican organización activa, rol, autoría y minimización. Los teléfonos comunitarios no forman parte de un mapa público.
Los originales y revisiones se protegen mediante invariantes y triggers de la base. Los medios se almacenan de forma privada y la ruta /api/attachments/:id vuelve a comprobar sesión y acceso; no hay una URL pública permanente. La conservación efectiva respeta el máximo de la organización y la autorización del reporte. Deben verificarse los procesos de purga y los respaldos en la instancia operativa.
El despliegue real exige verificar HTTPS, almacenamiento privado, políticas de borrado, copias de respaldo y administración de cuentas. Un recibo técnico no sustituye la revisión jurídica y operativa de una puesta en servicio.
Next se publica en Vercel con PostgreSQL/PostGIS, almacenamiento, autenticación y servicios configurados por el operador. Secretos y credenciales se mantienen en variables privadas del servidor; no se introducen en formularios de configuración ni en el repositorio.
npm ci
npm run db:migrate
npm run dev
npm run typecheck
npm test
npm run buildLa base utiliza migraciones. Consulta la documentación del repositorio para configuración, aplicación de migraciones, integración y E2E de la instancia concreta. Los comandos no sustituyen una conexión verificada a la base.
La verificación E2E debe recorrer una observación real guardada en PostgreSQL, georreferenciación, cruce de dataset, expediente, revisión humana, investigación SpecOrganon, alternativas, feedback y seguimiento. La prueba incluye separación entre organizaciones, rechazo de permisos y errores de servicios.
El código de acceso, persistencia, mapas y adaptadores es distinto de su disponibilidad operativa. Configuración de base, migraciones aplicadas, rol RLS, credenciales de conectores, servicio de transcripción, proveedor LLM, firmas formales y cron deben comprobarse por separado. Una falla visible no se sustituye por fixtures ni por un supuesto de éxito.
Los recibos de una ejecución y la auditoría acreditan operaciones concretas. Esta guía no afirma que una instancia, webhook, cron o proveedor estén probados hasta contar con evidencia de esa configuración.
Registra evidencia, conserva preguntas y revisa cada decisión.