qoomb

Los proyectos que siguen las mejores prácticas a continuación pueden autocertificarse voluntariamente y demostrar que han obtenido una insignia de mejores prácticas de Open Source Security Foundation (OpenSSF).

No existe un conjunto de prácticas que pueda garantizar que el software nunca tendrá defectos o vulnerabilidades; incluso los métodos formales pueden fallar si las especificaciones o suposiciones son incorrectas. Tampoco existe ningún conjunto de prácticas que pueda garantizar que un proyecto mantenga una comunidad de desarrollo saludable y que funcione bien. Sin embargo, seguir las mejores prácticas puede ayudar a mejorar los resultados de los proyectos. Por ejemplo, algunas prácticas permiten la revisión por parte de múltiples personas antes del lanzamiento, lo que puede ayudar a encontrar vulnerabilidades técnicas que de otro modo serían difíciles de encontrar y ayudar a generar confianza y un deseo repetido de interacción entre desarrolladores de diferentes compañías. Para obtener una insignia, se deben cumplir todos los criterios DEBE y NO DEBE, se deben cumplir, así como todos los criterios DEBERÍAN deben cumplirse o ser justificados, y todos los criterios SUGERIDOS se pueden cumplir o incumplir (queremos que se consideren al menos). Si desea añadir texto como justificación mediante un comentario genérico, en lugar de ser un razonamiento de que la situación es aceptable, comience el bloque de texto con '//' seguido de un espacio. Los comentarios son bienvenidos a través del sitio de GitHub mediante "issues" o "pull requests". También hay una lista de correo electrónico para el tema principal.

Con mucho gusto proporcionaríamos la información en varios idiomas, sin embargo, si hay algún conflicto o inconsistencia entre las traducciones, la versión en inglés es la versión autorizada.
Si este es su proyecto, por favor muestre el estado de su insignia base en la página de su proyecto. El estado de la insignia base se ve así: El nivel de insignia base para el proyecto 11964 es in_progress Aquí se explica cómo insertar la insignia base:
Puede mostrar el estado de su insignia base insertando esto en su archivo markdown:
[![OpenSSF Baseline](https://www.bestpractices.dev/projects/11964/baseline)](https://www.bestpractices.dev/projects/11964)
o insertando esto en su HTML:
<a href="https://www.bestpractices.dev/projects/11964"><img src="https://www.bestpractices.dev/projects/11964/baseline"></a>


Estos son los criterios de Nivel Base 1. Estos criterios son de la versión base v2025.10.10 con texto de criterios actualizado de la versión v2026.02.19. Los criterios que son nuevos en la versión v2026.02.19 están etiquetados como "futuros" y comenzarán a aplicarse a partir del 2026-06-01. Por favor, proporcione respuestas a los criterios "futuros" antes de esa fecha.

Baseline Series: Nivel Base 1 Nivel Base 2 Nivel Base 3

        

 Fundamentos

  • General

    Tenga en cuenta que otros proyectos pueden usar el mismo nombre.

    A family organization platform with offline-first capabilities, hybrid encryption, and multi-tenant architecture.

    Por favor use formato de expresión de licencia SPDX; los ejemplos incluyen "Apache-2.0", "BSD-2-Clause", "BSD-3-Clause", "GPL-2.0+", "LGPL-3.0+", "MIT" y "(BSD-2-Clause OR Ruby)". No incluya comillas simples o comillas dobles.
    Si hay más de un lenguaje, enumérelos como valores separados por comas (los espacios son opcionales) y ordénelos de más a menos usado. Si hay una lista larga, por favor enumere al menos los tres primeros más comunes. Si no hay lenguaje (por ejemplo, este es un proyecto solo de documentación o solo de pruebas), use el carácter único "-". Por favor use una capitalización convencional para cada lenguaje, por ejemplo, "JavaScript".
    La Common Platform Enumeration (CPE) es un esquema de nomenclatura estructurado para sistemas de tecnología de la información, software y paquetes. Se utiliza en varios sistemas y bases de datos al reportar vulnerabilidades.

 Controles 22/25

  • Controles


    Cuando un usuario intenta leer o modificar un recurso sensible en el repositorio autorizado del proyecto, el sistema DEBE requerir que el usuario complete un proceso de autenticación multifactor. [OSPS-AC-01.01]
    Aplique la autenticación multifactor para el sistema de control de versiones del proyecto, requiriendo que los colaboradores proporcionen una segunda forma de autenticación al acceder a datos sensibles o modificar la configuración del repositorio. Las claves de acceso (passkeys) son aceptables para este control.

    OSPS-AC-01.01 — Compliant. Two-factor authentication is enforced at the GitHub organization level (COQOON-labs). All collaborators must complete MFA before accessing or modifying repository resources. This is configured in the organization's security settings and applies to all repositories under the organization.



    Cuando se agrega un nuevo colaborador, el sistema de control de versiones DEBE requerir asignación manual de permisos, o restringir los permisos del colaborador a los privilegios más bajos disponibles por defecto. [OSPS-AC-02.01]
    La mayoría de los sistemas de control de versiones públicos están configurados de esta manera. Asegúrese de que el sistema de control de versiones del proyecto siempre asigne los permisos más bajos disponibles a los colaboradores por defecto cuando se agreguen, otorgando permisos adicionales solo cuando sea necesario.

    OSPS-AC-02.01 — Compliant. The COQOON-labs GitHub organization's default repository permission is set to read, which is the lowest available privilege level. New collaborators automatically receive read-only access and must be explicitly granted elevated permissions (write, maintain, admin) on a per-repository basis. No manual configuration change is needed — this is the current organizational default.



    Cuando se intenta un commit directo en la rama principal del proyecto, un mecanismo de aplicación DEBE evitar que se aplique el cambio. [OSPS-AC-03.01]
    Si el VCS está centralizado, establezca protección de rama en la rama principal en el VCS del proyecto. Alternativamente, use un enfoque descentralizado, como el del kernel de Linux, donde los cambios se proponen primero en otro repositorio, y fusionar cambios en el repositorio principal requiere un acto separado específico.

    OSPS-AC-03.01 — Compliant. The main branch has an active ruleset (ID 12610279) that includes a pull_request rule requiring 1 approving review, code owner review, review thread resolution, and dismissal of stale reviews on push. Additionally, required_status_checks (Code Quality, Commit Messages, Tests) must pass before merging. Direct commits to main are blocked — all changes must go through a pull request. Only Organization Admins and the Repository Admin role have bypass permissions, which is expected for a solo-maintainer project.



    Cuando se intenta eliminar la rama principal del proyecto, el sistema de control de versiones DEBE tratar esto como una actividad sensible y requerir confirmación explícita de la intención. [OSPS-AC-03.02]
    Establezca protección de rama en la rama principal en el sistema de control de versiones del proyecto para evitar la eliminación.

    OSPS-AC-03.02 — Compliant. The main branch ruleset (ID 12610279) includes a deletion rule that explicitly prevents deletion of the primary branch. Any attempt to delete main is blocked by GitHub's enforcement mechanism, regardless of user permissions.



    Cuando un pipeline de CI/CD acepta un parámetro de entrada, ese parámetro DEBE ser saneado y validado antes de usarse en el pipeline. [OSPS-BR-01.01]
    Los flujos de CI/CD deben sanear (entre comillas, escapar o salir en valores esperados) todas las entradas de metadatos que correspondan a fuentes no confiables. Esto incluye datos como nombres de ramas, mensajes de confirmación, etiquetas, títulos de solicitudes de incorporación e información del autor.

    OSPS-AC-03.01 — Compliant (OSPS-BR-01.01). The project's CI/CD pipelines do not accept user-defined input parameters. The only workflow_dispatch trigger (in sbom.yml) has no custom inputs defined — it is a parameterless manual trigger. All ${{ }} expressions reference safe, platform-controlled contexts (github.workflow, github.ref, github.sha, secrets., steps., matrix.*). No expressions interpolate attacker-controllable values (such as github.event.pull_request.title or github.head_ref) into run: steps. The sole use of github.event.pull_request.title is in a safe if: condition (not a shell context), which is not vulnerable to injection.



    (Criterio futuro) Cuando un flujo de CI/CD opera sobre instantáneas de código no confiable, DEBE impedir el acceso a credenciales y activos privilegiados de CI/CD. [OSPS-BR-01.03]
    Los flujos de CI/CD deben aislar las instantáneas de código no confiable de las credenciales y activos privilegiados. En particular, los proyectos deben tener cuidado de garantizar que los flujos de trabajo que compilan o ejecutan código antes de su revisión por un colaborador no tengan acceso a las credenciales de CI/CD.


    Cuando el proyecto lista un URI como un canal oficial del proyecto, ese URI DEBE ser entregado exclusivamente usando canales cifrados. [OSPS-BR-03.01]
    Configure los sitios web y sistemas de control de versiones del proyecto para usar canales cifrados como SSH o HTTPS para la transmisión de datos. Asegúrese de que todas las herramientas y dominios referenciados en la documentación del proyecto solo puedan accederse a través de canales cifrados.

    Project URLs use HTTPS exclusively.



    Cuando el proyecto lista una URI como un canal de distribución oficial, esa URI DEBE ser entregada exclusivamente usando canales cifrados. [OSPS-BR-03.02]
    Configure el pipeline de lanzamiento del proyecto para que solo obtenga datos de sitios web, respuestas de API y otros servicios que utilicen canales cifrados como SSH o HTTPS para la transmisión de datos.

    Distribution channels use HTTPS exclusively.



    El proyecto DEBE prevenir el almacenamiento no intencionado de datos sensibles no cifrados, como secretos y credenciales, en el sistema de control de versiones. [OSPS-BR-07.01]
    Configure .gitignore o equivalente para excluir archivos que puedan contener información sensible. Use hooks de pre-commit y herramientas de escaneo automatizado para detectar y prevenir la inclusión de datos sensibles en los commits.

    OSPS-BR-07.01 — Compliant. Multiple layers prevent unintentional storage of secrets in version control:

    .gitignore excludes .env, .env*.local, certs, *.db, and other sensitive file patterns.
    GitHub Secret Scanning is enabled at the organization/repository level, detecting committed credentials automatically.
    Trivy secret scanner (trivy.yml) runs a dedicated secret scan type on every push and PR with exit-code: '1' — the pipeline fails if any secrets are detected.
    Trivy filesystem scan additionally scans for vulnerabilities and misconfigurations in committed files.
    CodeQL (codeql.yml) performs SAST analysis that can also flag hardcoded credentials in source code.



    Cuando el proyecto haya realizado un lanzamiento, la documentación del proyecto DEBE incluir guías de usuario para toda la funcionalidad básica. [OSPS-DO-01.01]
    Cree guías de usuario o documentación para toda la funcionalidad básica del proyecto, explicando cómo instalar, configurar y usar las características del proyecto. Si hay acciones peligrosas o destructivas disponibles, incluya advertencias altamente visibles.

    OSPS-DO-01.01 — Not Applicable (yet). The project has not made any release yet — it is at version 0.1.0 in pre-release development (Phase 1). This requirement only applies "when the project has made a release." No GitHub Releases or published packages exist. When the first release is published, user documentation covering installation, configuration, and usage will need to be created. Current documentation (README.md, SETUP.md, docs) covers developer setup but not end-user guides.



    Cuando el proyecto haya realizado un lanzamiento, la documentación del proyecto DEBE incluir una guía para reportar defectos. [OSPS-DO-02.01]
    Se recomienda que los proyectos utilicen el gestor de incidencias predeterminado de su VCS. Si se utiliza una fuente externa, asegúrese de que la documentación del proyecto y la guía de contribución expliquen claramente y de manera visible cómo usar el sistema de reporte. Se recomienda que la documentación del proyecto también establezca expectativas sobre cómo se clasificarán y resolverán los defectos.

    GitHub provides defect reporting mechanisms by default (via issues).



    Mientras esté activo, el proyecto DEBE tener uno o más mecanismos para discusiones públicas sobre cambios propuestos y obstáculos de uso. [OSPS-GV-02.01]
    Establezca uno o más mecanismos para discusiones públicas dentro del proyecto, como listas de correo, mensajería instantánea o gestores de incidencias, para facilitar la comunicación abierta y la retroalimentación.

    GitHub supports public discussions on proposed changes (via pull requests) and usage obstacles (via issues).



    Mientras esté activo, la documentación del proyecto DEBE incluir una explicación del proceso de contribución. [OSPS-GV-03.01]
    Cree un archivo CONTRIBUTING.md o un directorio CONTRIBUTING/ para delinear el proceso de contribución, incluyendo los pasos para enviar cambios e interactuar con los mantenedores del proyecto.

    OSPS-GV-03.01 — Compliant. The project includes a CONTRIBUTING.md at the repository root that documents the full contribution process: prerequisites, development setup, fork & branch workflow, Conventional Commits format, pull request procedure, code standards enforcement (Prettier, ESLint, TypeScript, Commitlint, CodeQL, Trivy), project structure overview, and maintainer contact information. The CLA requirement is referenced with a link to LICENSE.md. A separate CONTRIBUTORS.md lists recognized contributors and links back to CONTRIBUTING.md.



    Mientras esté activo, la licencia para el código fuente DEBE cumplir con la Definición de Código Abierto de OSI o la Definición de Software Libre de FSF. [OSPS-LE-02.01]
    Agregue un archivo LICENSE al repositorio del proyecto con una licencia que sea una licencia aprobada por la Open Source Initiative (OSI), o una licencia libre aprobada por la Free Software Foundation (FSF). Ejemplos de tales licencias incluyen MIT, BSD 2-clause, BSD 3-clause revised, Apache 2.0, Lesser GNU General Public License (LGPL), y la GNU General Public License (GPL). Liberar al dominio público cumple con este control si no hay otros gravámenes como patentes.

    OSPS-LE-02.01 — Not Compliant (by design). Qoomb uses the Fair Source License v1.0, which is intentionally not OSI-approved or FSF-recognized. This is a deliberate business decision to enable a sustainable dual-licensing model: free for individuals, families, and organizations with fewer than 10 employees, while requiring a commercial license for larger enterprises and SaaS usage. Adopting an OSI/FSF-approved license would remove the ability to enforce commercial licensing for large-scale use, undermining the project's sustainability model. The trade-off is accepted — the project prioritizes long-term viability over meeting this specific compliance criterion.



    Mientras esté activo, la licencia para los activos de software lanzados DEBE cumplir con la Definición de Código Abierto de OSI o la Definición de Software Libre de FSF. [OSPS-LE-02.02]
    Si se incluye una licencia diferente con los activos de software lanzados, asegúrese de que sea una licencia aprobada por la Open Source Initiative (OSI), o una licencia libre aprobada por la Free Software Foundation (FSF). Ejemplos de tales licencias incluyen MIT, BSD 2-clause, BSD 3-clause revised, Apache 2.0, Lesser GNU General Public License (LGPL), y la GNU General Public License (GPL). Tenga en cuenta que la licencia para los activos de software lanzados puede ser diferente a la del código fuente.

    OSPS-LE-02.02 — Not Compliant (by design). Same as OSPS-LE-02.01 — released assets use the same Fair Source License v1.0, which is not OSI/FSF-approved. Deliberate choice for dual-licensing sustainability.



    Mientras esté activo, la licencia para el código fuente DEBE ser mantenida en el archivo LICENSE, archivo COPYING o directorio LICENSE/ del repositorio correspondiente. [OSPS-LE-03.01]
    Incluya la licencia del código fuente del proyecto en el archivo LICENSE, archivo COPYING o directorio LICENSE/ del proyecto para proporcionar visibilidad y claridad sobre los términos de licencia. El nombre de archivo PUEDE tener una extensión. Si el proyecto tiene múltiples repositorios, asegúrese de que cada repositorio incluya el archivo de licencia.

    License file found in repository.



    Mientras esté activo, la licencia para los activos de software lanzados DEBE estar incluida en el código fuente lanzado, o en un archivo LICENSE, archivo COPYING o directorio LICENSE/ junto con los activos de lanzamiento correspondientes. [OSPS-LE-03.02]
    Incluya la licencia de los activos de software lanzados del proyecto en el código fuente lanzado, o en un archivo LICENSE, archivo COPYING o directorio LICENSE/ junto con los activos de lanzamiento correspondientes para proporcionar visibilidad y claridad sobre los términos de licencia. El nombre de archivo PUEDE tener una extensión. Si el proyecto tiene múltiples repositorios, asegúrese de que cada repositorio incluya el archivo de licencia.


    Mientras esté activo, el repositorio de código fuente del proyecto DEBE ser legible públicamente en una URL estática. [OSPS-QA-01.01]
    Use un VCS común como GitHub, GitLab o Bitbucket. Asegúrese de que el repositorio sea legible públicamente. Evite la duplicación o creación de mirrors de repositorios a menos que la documentación altamente visible aclare la fuente principal. Evite cambios frecuentes en el repositorio que impactarían la URL del repositorio. Asegúrese de que el repositorio sea público.

    Repository is publicly available on GitHub.



    El sistema de control de versiones DEBE contener un registro legible públicamente de todos los cambios realizados, quién los realizó y cuándo se realizaron los cambios. [OSPS-QA-01.02]
    Use un VCS común como GitHub, GitLab o Bitbucket para mantener un historial de commits legible públicamente. Evite aplastar o reescribir commits de una manera que oscurecería al autor de cualquier commit.

    Repository git metadata is publicly available on GitHub.



    Cuando el sistema de gestión de paquetes lo admita, el repositorio de código fuente DEBE contener una lista de dependencias que contabilice las dependencias directas del lenguaje. [OSPS-QA-02.01]
    Esto puede tomar la forma de un gestor de paquetes o un archivo de dependencias del lenguaje que enumere todas las dependencias directas como package.json, Gemfile o go.mod.


    Mientras esté activa, la documentación del proyecto DEBE contener una lista de cualquier código base que se considere subproyecto. [OSPS-QA-04.01]
    Documente cualquier repositorio de código de subproyecto adicional producido por el proyecto y compilado en un lanzamiento. Esta documentación debe incluir el estado e intención de la respectiva base de código.

    OSPS-QA-04.01 — Not Applicable. Qoomb is a single monorepo (COQOON-labs/qoomb) with no external subproject repositories. All components — applications (api, web, mobile) and shared libraries (types, validators, ui, config, eslint-config) — reside within this repository and are managed as pnpm workspaces. There are no separate codebases compiled into the release. The project structure is documented in both README.md and claude.md.



    Mientras esté activo, el sistema de control de versiones NO DEBE contener artefactos ejecutables generados. [OSPS-QA-05.01]
    Elimine los artefactos ejecutables generados en el sistema de control de versiones del proyecto. Se recomienda que cualquier escenario donde un artefacto ejecutable generado parezca crítico para un proceso como las pruebas, en su lugar debería generarse en el momento de la compilación o almacenarse por separado y obtenerse durante un paso de pipeline específico y bien documentado.


    Mientras esté activo, el sistema de control de versiones NO DEBE contener artefactos binarios no revisables. [OSPS-QA-05.02]
    No agregue ningún artefacto binario no revisable al sistema de control de versiones del proyecto. Esto incluye binarios de aplicaciones ejecutables, archivos de biblioteca y artefactos similares. No incluye activos como imágenes gráficas, archivos de sonido o música y contenido similar que típicamente se almacena en formato binario.

    OSPS-QA-05.02 — Compliant. The repository contains no unreviewable binary artifacts. All tracked files are human-readable source code (TypeScript, JSON, YAML, Markdown, SQL, shell scripts) or permissible assets (PNG/SVG icons for PWA). Build outputs (dist/, node_modules, .turbo) are excluded via .gitignore and never committed. No executable binaries, compiled libraries, or opaque archive files are present in version control.



    Mientras esté activa, la documentación del proyecto DEBE contener contactos de seguridad. [OSPS-VM-02.01]
    Cree un archivo security.md (o con nombre similar) que contenga contactos de seguridad para el proyecto.


    (Criterio obsoleto) Cuando un pipeline de CI/CD usa un nombre de rama en su funcionalidad, ese valor de nombre DEBE ser saneado y validado antes de usarse en el pipeline. [OSPS-BR-01.02]

    OSPS-BR-01.02 — Compliant. Branch name references (github.ref, github.base_ref) are only used in safe contexts: concurrency.group keys for deduplication and an actions/checkout ref: parameter (version-check.yml:71). Neither is interpolated into a run: shell step where injection could occur. The concurrency.group context is a GitHub-platform construct that does not execute shell commands, and actions/checkout's ref input is handled internally by the action without shell interpolation. No branch names are used in shell scripts, run: blocks, or other injectable contexts.



Estos datos están disponibles bajo el Acuerdo de Licencia de Datos de la Comunidad – Permisivo, Versión 2.0 (CDLA-Permissive-2.0). Esto significa que un Destinatario de Datos puede compartir los Datos, con o sin modificaciones, siempre que el Destinatario de Datos ponga a disposición el texto de este acuerdo con los Datos compartidos. Por favor, acredite a Benjamin Gröner y a los colaboradores de la insignia de Mejores Prácticas de OpenSSF.

Entrada de insignia del proyecto propiedad de: Benjamin Gröner.
Entrada creada el 2026-02-17 15:07:26 UTC, última actualización el 2026-02-17 15:40:10 UTC.