Codes es una biblioteca para JVM (Java 17+, sin dependencias en tiempo de ejecución) que ofrece identidades estables para los resultados de una aplicación y mappings explícitos entre fronteras de protocolo. Su propósito es que un mismo dominio conserve la misma identidad de outcome —por ejemplo, com.example.payments:PAYMENT_DECLINED— tanto en HTTP como en gRPC, en logs o en métricas, sin acoplar el significado del resultado al transporte. La librería expone un catálogo estándar de outcomes (OK, NOT_FOUND, INVALID_ARGUMENT, FAILED_PRECONDITION, etc.) y permite definir outcomes personalizados para casos de éxito, pendientes o error específicos del negocio. Sobre esa identidad estable, Codes añade mapeadores estándar: HttpOutcomeMapper traduce outcomes a códigos HTTP (como 404 para NOT_FOUND), y GrpcOutcomeMapper los traduce a códigos gRPC (como NOT_FOUND en gRPC); algunos outcomes se dejan intencionalmente sin mapear cuando la elección depende de la aplicación. Incluye además ValidationResult, una utilidad para agregar issues de validación y convertirlos en un outcome estándar, y es totalmente interoperable con Kotlin mediante JSpecify. Se distribuye bajo Apache License 2.0 con coordenadas io.github.aalsanie:codes:0.3.1 en Maven Central, y su valor principal reside en desacoplar el modelo de resultado del framework o del protocolo, manteniendo la trazabilidad de un error de dominio a través de todas las capas del sistema.
