flowpact

Проекты, которые следуют приведенным ниже лучшим практикам, могут добровольно и самостоятельно оценить себя и продемонстрировать, что они получили значок Open Source Security Foundation (OpenSSF).

Не существует набора практик, гарантирующего, что у программного обеспечения никогда не будет недостатков или уязвимостей; даже формальные методы могут не помочь, если спецификации или допущения ошибочны. Также не существует какой-либо практики, которая могла бы гарантировать, что проект будет поддерживать здоровое и хорошо функционирующее сообщество разработчиков. Однако следующие хорошие правила могут помочь улучшить результаты проектов. Например, некоторые правила описывают ревью несколькими участниками перед выпуском, что может помочь найти технические уязвимости, которые было бы сложно найти другим способом, и помочь построить доверие и желание дальнейшего взаимодействия между разработчиками из разных компаний. Чтобы получить значок, нужно выполнить все критерии с ключевыми словами "НЕОБХОДИМО"/"ОБЯЗАН"/"НЕДОПУСТИМО", все критерии со словом "СЛЕДУЕТ" либо должны удовлетворяться, либо должно быть приведено обоснование их невыполнения, и все критерии со словом "ЖЕЛАТЕЛЬНО" могут быть удовлетворены ИЛИ неудовлетворены (желательно, чтобы они были хотя бы рассмотрены). Если вы хотите ввести общий комментарий вместо объяснения, почему текущая ситуация приемлема, начните текст с '//' и пробела. Приветствуется обратная связь через сайт на GitHub в виде issues или pull requests. Существует также список рассылки для общих вопросов.

Мы с удовольствием предоставляем информацию на нескольких языках, однако, если есть какой-либо конфликт или несоответствие между переводами, английская версия является авторитетной.
Если это ваш проект, пожалуйста, отобразите статус вашего базового значка на странице проекта! Статус базового значка выглядит так: Базовый уровень значка для проекта 15403 - baseline-2 Вот как встроить базовый значок:
Вы можете показать статус базового значка, вставив это в ваш файл markdown:
[![OpenSSF Baseline](https://www.bestpractices.dev/projects/15403/baseline)](https://www.bestpractices.dev/projects/15403)
или вставив это в ваш HTML:
<a href="https://www.bestpractices.dev/projects/15403"><img src="https://www.bestpractices.dev/projects/15403/baseline"></a>


Это критерии Базового Уровня 2. Это критерии версии v2026.08.28.

Baseline Series: Базовый уровень 1 Базовый Уровень 2 Базовый Уровень 3

        

 Основы

  • Общая

    Обратите внимание, что другие проекты могут использовать то же имя.

    Data-flow linter for GitHub Actions: finds inputs, secrets and matrix values that arrive empty across reusable workflows, local actions and matrix combinations, and grades the release impact of changes. CLI, GitHub Action, VS Code extension.

    Используйте формат выражения лицензии SPDX; примеры включают «Apache-2.0», «BSD-2-Clause», «BSD-3-Clause», «GPL-2.0+», «LGPL-3.0+», «MIT» и «(BSD-2-Clause OR Ruby)».
    Если используется более одного языка, перечислите их через запятую (пробелы необязательны), и отсортируйте их от наиболее до наименее используемого. Если список длинный, пожалуйста, перечислите по крайней мере три наиболее распространенных. Если языка нет (например, это проект только для документации или только для тестирования), используйте один символ «-» (минус). Для каждого языка используйте общепринятую капитализацию названия, например «JavaScript».
    Common Platform Enumeration (CPE) - это структурированная схема именования для информационных систем, программного обеспечения и пакетов. Она используется в ряде систем и баз данных для отчетов об уязвимостях.

 Элементы управления 19/19 ●

  • Элементы управления


    Когда задача CI/CD выполняется без указания прав доступа, система CI/CD ОБЯЗАНА по умолчанию назначать задаче минимальные права, предоставленные в конвейере. [OSPS-AC-04.01]
    Настройте параметры проекта для назначения минимальных доступных прав новым конвейерам по умолчанию, предоставляя дополнительные права только при необходимости для конкретных задач.

    The GITHUB_TOKEN default is read-only, the lowest setting, for both the ciatlas organization and the repository, and workflows cannot approve pull requests, so a job that sets no permissions gets read access only. Every workflow also sets its own top-level permissions: contents: read in most, {} in pr-title.yml, read-all in scorecard.yml, and in docs.yml contents: read with pages: write and id-token: write for the Pages deployment. Other write scopes are granted only on the jobs that use them (https://github.com/ciatlas/flowpact/tree/main/.github/workflows).



    Когда создается официальный выпуск, этому выпуску ОБЯЗАН быть назначен уникальный идентификатор версии. [OSPS-BR-02.01]
    Присваивайте уникальный идентификатор версии каждому выпуску, создаваемому проектом, следуя согласованному соглашению о наименовании или схеме нумерации. Примеры включают SemVer, CalVer или идентификатор коммита git.

    Every release gets a unique Semantic Versioning number and a vX.Y.Z tag, which release-please computes from Conventional Commit titles (https://github.com/ciatlas/flowpact/blob/main/release-please-config.json, https://github.com/ciatlas/flowpact/blob/main/CHANGELOG.md). npm never accepts a version twice, releases are immutable since 0.10.0, and a ruleset lets only the release bot and admins create, move or delete v* tags.



    Когда создается официальный выпуск, этот выпуск ОБЯЗАН содержать описательный журнал функциональных изменений и изменений безопасности. [OSPS-BR-04.01]
    Убедитесь, что все выпуски содержат описательный журнал изменений. Рекомендуется обеспечить, чтобы журнал изменений был читаемым человеком и содержал более подробные сведения, чем сообщения коммитов, такие как описания влияния на безопасность или релевантность для различных сценариев использования. Для обеспечения машиночитаемости размещайте содержимое под заголовком markdown, таким как "## Changelog".

    Every release has a descriptive changelog, both on its GitHub release page (https://github.com/ciatlas/flowpact/releases) and in https://github.com/ciatlas/flowpact/blob/main/CHANGELOG.md. It groups changes into breaking changes with upgrade steps, features, bug fixes and performance, written from user-facing PR titles. Security-relevant changes are listed too, for example 0.9.0's 'harden 0.9.0 before its release: flag values, plugins, report paths and release assets' and 0.12.1's bounded walking of linked directories.



    Когда конвейер сборки и выпуска загружает зависимости, он ОБЯЗАН использовать стандартизированные инструменты, где они доступны. [OSPS-BR-05.01]
    Используйте общие инструменты для вашей экосистемы, такие как менеджеры пакетов или инструменты управления зависимостями для загрузки зависимостей во время сборки. Это может включать использование файла зависимостей, lock-файла или манифеста для указания требуемых зависимостей, которые затем подключаются системой сборки.

    The build and release pipelines take dependencies through pnpm, the project's standard package manager. The version is pinned in package.json's packageManager, and every CI and release job runs pnpm install --frozen-lockfile against the committed lockfile (https://github.com/ciatlas/flowpact/blob/main/.github/workflows/release.yml, https://github.com/ciatlas/flowpact/blob/main/.github/workflows/ci.yml). Workflow actions are pinned to commit SHAs and updated by Renovate.



    Когда создается официальный выпуск, этот выпуск ОБЯЗАН быть подписан или учтен в подписанном манифесте, включающем криптографические хеши каждого актива. [OSPS-BR-06.01]
    Подписывайте все выпущенные программные активы во время сборки с использованием криптографической подписи или аттестаций, таких как подпись GPG или PGP, подписи Sigstore, происхождение SLSA или SLSA VSA. Включите криптографические хеши каждого актива в подписанный манифест или файл метаданных.

    The npm tarball, the Action archive and the .vsix each have a Sigstore-signed SLSA build provenance attestation from GitHub Actions, attached as .sigstore.json and .intoto.jsonl, and each CycloneDX SBOM is attested against its artifact. Since 0.10.0 every release is also an immutable GitHub release whose signed release attestation lists the SHA-256 of every attached file (gh release verify), and the npm package has npm provenance. See https://github.com/ciatlas/flowpact/blob/main/SECURITY.md#verifying-releases and https://ciatlas.github.io/flowpact/docs/security/#verify-a-release.



    Когда проект создал выпуск, документация проекта ОБЯЗАНА включать описание того, как проект выбирает, получает и отслеживает свои зависимости. [OSPS-DO-06.01]
    Рекомендуется публиковать эту информацию вместе с технической документацией и документацией по дизайну проекта в общедоступном ресурсе, таком как репозиторий исходного кода, веб-сайт проекта или другой канал.

    https://github.com/ciatlas/flowpact/blob/main/CONTRIBUTING.md#dependencies describes how dependencies are selected (reviewed in a pull request, bundled into every artifact), obtained (pnpm with a frozen lockfile, a two-day minimum release age, install scripts only for allowlisted packages, @ciatlas/core from a release tag, actions pinned to commit SHAs) and tracked (Renovate, OSV vulnerability alerts, and an SBOM and license notices in every release).



    Документация проекта ДОЛЖНА включать инструкции по сборке программного обеспечения, включая необходимые библиотеки, фреймворки, SDK и зависимости. [OSPS-DO-07.01]
    Рекомендуется публиковать эту информацию вместе с документацией для участников проекта, например в файле CONTRIBUTING.md или другой документации по задачам разработчика. Это также может быть задокументировано с помощью целей Makefile или других сценариев автоматизации.

    https://github.com/ciatlas/flowpact/blob/main/CONTRIBUTING.md#setup lists what a build needs: Node.js 22 or later, and pnpm, pinned in package.json and enabled with corepack enable. It also gives the commands. pnpm install fetches every dependency from the lockfile, including the workflow model @ciatlas/core from its GitHub release tag (explained in the next section). pnpm build bundles the CLI and the GitHub Action.



    Документация проекта ОБЯЗАНА включать список участников проекта, имеющих доступ к чувствительным ресурсам. [OSPS-GV-01.01]
    Документируйте участников проекта и их роли с помощью таких артефактов, как members.md, governance.md, maintainers.md или аналогичного файла в репозитории исходного кода проекта. Это может быть просто включение имен или учетных записей в список сопровождающих или более сложное в зависимости от управления проектом.

    https://github.com/ciatlas/flowpact/blob/main/MAINTAINERS.md#access-to-sensitive-resources lists everyone and everything with access to the project's sensitive resources: the GitHub organization and repositories, the two GitHub Apps and their permissions, the release bot's credentials, and the npm, VS Code Marketplace, Azure and Open VSX accounts that publish releases.



    Документация проекта ОБЯЗАНА включать описания ролей и обязанностей участников проекта. [OSPS-GV-01.02]
    Документируйте участников проекта и их роли с помощью таких артефактов, как members.md, governance.md, maintainers.md или аналогичного файла в репозитории исходного кода проекта.

    https://github.com/ciatlas/flowpact/blob/main/MAINTAINERS.md#roles-and-responsibilities describes the roles (maintainer, contributors, the release bot, Renovate) and what each is responsible for, and how access is given and taken away when people join or leave.



    Документация проекта ОБЯЗАНА включать руководство для авторов кода, содержащее требования к приемлемым вкладам. [OSPS-GV-03.02]
    Расширьте содержимое CONTRIBUTING.md или CONTRIBUTING/ в документации проекта, чтобы изложить требования к приемлемым вкладам, включая стандарты кодирования, требования к тестированию и руководства по отправке для участников кода. Рекомендуется, чтобы это руководство было источником истины как для участников, так и для утверждающих.

    https://github.com/ciatlas/flowpact/blob/main/CONTRIBUTING.md#pull-requests sets the requirements for an acceptable contribution. They are a Conventional Commits PR title and the required CI checks: Biome lint, typecheck, tests on Node 22 and 24, line coverage of at least 80% overall and 90% in packages/lint, and fallow code health. A behaviour change needs tests, and a bug fix needs a test that fails without it. Docs and the committed action bundle must be regenerated, and a code owner must approve.



    Система управления версиями ОБЯЗАНА требовать от всех авторов кода подтверждения того, что они юридически уполномочены вносить соответствующие изменения, при каждом коммите. [OSPS-LE-01.01]
    Включите DCO в репозиторий проекта, требуя от участников кода утверждать, что они имеют законное право вносить соответствующий вклад в каждом коммите. Используйте проверку статуса, чтобы убедиться, что утверждение сделано. CLA также удовлетворяет этому требованию. Некоторые системы контроля версий, такие как GitHub, могут включать это в условия обслуживания платформы.

    Every change reaches main through a pull request on GitHub (the main ruleset requires one and has no bypass, https://github.com/ciatlas/flowpact/blob/main/.github/rulesets/main.json). Under section D.6 of GitHub's Terms of Service, contributors to this MIT-licensed repository assert they have the right to license their contributions, as https://github.com/ciatlas/flowpact/blob/main/CONTRIBUTING.md#pull-requests also states.



    При внесении коммита в основную ветку все автоматические проверки статуса для коммитов ДОЛЖНЫ пройти успешно или быть явно обойдены вручную. [OSPS-QA-03.01]
    Настройте систему контроля версий проекта таким образом, чтобы все автоматические проверки статуса должны были пройти успешно или требовать ручного подтверждения перед тем, как коммит может быть объединен с основной веткой. Рекомендуется НЕ настраивать необязательные проверки статуса как требование успешного прохождения или провала, которые утверждающие могут быть склонны обойти.

    The live main ruleset has no bypass actors and requires the 'CI passed' and 'Conventional PR title' checks to pass on an up-to-date branch before any merge (https://github.com/ciatlas/flowpact/blob/main/.github/rulesets/main.json). 'CI passed' fails unless every CI job succeeds (https://github.com/ciatlas/flowpact/blob/main/.github/workflows/ci.yml). Renovate merges only when all checks are green. The other checks (CodeQL, code-scanning results) are informational, so merging past a failure in one of them is a manual action by the maintainer.



    Перед принятием коммита в проекте ДОЛЖЕН выполняться хотя бы один автоматизированный набор тестов в конвейере CI/CD для обеспечения соответствия изменений ожиданиям. [OSPS-QA-06.01]
    Автоматизированные тесты должны выполняться перед каждым объединением с основной веткой. Набор тестов должен выполняться в конвейере CI/CD, и результаты должны быть видны всем участникам. Набор тестов должен выполняться в согласованной среде и таким образом, чтобы участники могли выполнять тесты локально. Примеры наборов тестов включают модульные тесты, интеграционные тесты и сквозные тесты.

    On every pull request, CI's Test job runs the Vitest suite of unit, property and end-to-end tests (pnpm coverage) on Node 22 and 24 (https://github.com/ciatlas/flowpact/blob/main/.github/workflows/ci.yml). CI also smoke-tests the packed CLI on Linux, macOS and Windows and the extension in VS Code. The main ruleset requires the aggregate 'CI passed' check and has no bypass actors, so nothing merges without these tests.



    Когда проект выпустил релиз, документация проекта ДОЛЖНА включать проектную документацию, демонстрирующую все действия и участников в системе. [OSPS-SA-01.01]
    Включите в документацию проекта проектные описания, объясняющие действия и участников. Участники включают любую подсистему или сущность, которая может повлиять на другой сегмент в системе. Убедитесь, что эта информация обновляется для новых функций или критических изменений.

    https://ciatlas.github.io/flowpact/docs/how-it-works describes the analysis step by step, from YAML to reports. https://github.com/ciatlas/flowpact/blob/main/CONTRIBUTING.md#repository-layout names each component: the core model, lint, reporters, CLI/API, action, language server and extension. https://ciatlas.github.io/flowpact/docs/security covers every actor and action around them: the analyzed repository as untrusted input, plugins, what flowpact writes, the Action's two network calls and its token, and permissions. The release workflow, release bot and Renovate are covered there and in https://github.com/ciatlas/flowpact/blob/main/CONTRIBUTING.md#releases.



    Когда проект выпустил релиз, документация проекта ДОЛЖНА включать описания всех внешних программных интерфейсов выпущенных программных активов. [OSPS-SA-02.01]
    Документируйте все программные интерфейсы (API) выпущенных программных активов, объясняя, как пользователи могут взаимодействовать с программным обеспечением и какие данные ожидаются или производятся. Убедитесь, что эта информация обновляется для новых функций или критических изменений.

    Reference docs cover every external interface of the released assets. The CLI's commands, options, output formats, JSON report, exit codes and environment variables: https://ciatlas.github.io/flowpact/docs/cli. The Action's inputs, outputs, annotations and permissions: https://ciatlas.github.io/flowpact/docs/action. The programmatic API: https://ciatlas.github.io/flowpact/docs/api. The config, with JSON Schemas: https://ciatlas.github.io/flowpact/docs/configuration. Contracts: https://ciatlas.github.io/flowpact/docs/contracts. The plugin API: https://ciatlas.github.io/flowpact/docs/custom-rules. The language server and extension settings: https://ciatlas.github.io/flowpact/docs/editors.



    Когда проект выпустил релиз, проект ДОЛЖЕН провести оценку безопасности для понимания наиболее вероятных и значимых потенциальных проблем безопасности, которые могут возникнуть в программном обеспечении. [OSPS-SA-03.01]
    Проведение оценки безопасности информирует как членов проекта, так и конечных потребителей о том, что проект понимает, какие проблемы могут возникнуть в программном обеспечении. Понимание того, какие угрозы могут быть реализованы, помогает проекту управлять рисками и справляться с ними. Эта информация полезна для конечных потребителей для демонстрации компетентности в области безопасности и практик проекта. Убедитесь, что эта информация обновляется для новых функций или критических изменений.

    The threat model at https://ciatlas.github.io/flowpact/docs/threat-model ranks the most likely and impactful security problems by residual risk, each with the mitigation in the code, the tests that cover it and the risk that remains; CONTRIBUTING.md asks to revisit it for new features and breaking changes.



    Документация проекта ОБЯЗАНА включать политику скоординированного раскрытия информации об уязвимостях (CVD) с четко определенными сроками реагирования. [OSPS-VM-01.01]
    Создайте файл SECURITY.md в корневом каталоге, описывающий политику проекта для координированного раскрытия уязвимостей. Включите метод сообщения об уязвимостях. Установите ожидания относительно того, как проект будет реагировать и решать сообщенные проблемы.

    https://github.com/ciatlas/flowpact/blob/main/SECURITY.md is the coordinated disclosure policy, also shown at https://github.com/ciatlas/flowpact/security/policy. Reports go privately through GitHub's private vulnerability reporting, with an acknowledgement within 3 working days and an assessment within 10. The advisory is published once a fixed release is available, crediting the reporter.



    Документация проекта ОБЯЗАНА предоставлять способ конфиденциального сообщения об уязвимостях непосредственно контактам по вопросам безопасности в проекте. [OSPS-VM-03.01]
    Предоставьте средства для того, чтобы исследователи безопасности могли приватно сообщать об уязвимостях в проект. Это может быть специальный адрес электронной почты, веб-форма, специализированные инструменты системы контроля версий, адреса электронной почты контактов по безопасности или другие методы.

    https://github.com/ciatlas/flowpact/blob/main/SECURITY.md#reporting-a-vulnerability directs reporters to GitHub's private vulnerability reporting form (https://github.com/ciatlas/flowpact/security/advisories/new) and not to public issues. The form is enabled for the repository, and reports reach the maintainer privately.



    Документация проекта ОБЯЗАНА публично публиковать данные об обнаруженных уязвимостях. [OSPS-VM-04.01]
    Предоставляйте информацию об известных уязвимостях в предсказуемом публичном канале, таком как запись CVE, запись в блоге или другом носителе. По мере возможности эта информация должна включать затронутые версии, как потребитель может определить, уязвим ли он, и инструкции по смягчению последствий или исправлению.

    Vulnerabilities fixed in past releases are published in https://github.com/ciatlas/flowpact/blob/main/SECURITY.md#security-fixes-in-past-releases with the affected versions, how to tell whether you are affected and the fix; future ones are published as GitHub security advisories (https://github.com/ciatlas/flowpact/security/advisories) and named in the release notes.



Вы можете использовать инструменты и системы ИИ для предложения изменений через простой URL, например https://www.bestpractices.dev/ru/projects/15403/choose/edit?osps_ac_01_01_status=Met&osps_ac_01_01_justification=GitHub+enforced. Смотрите нашу систему автоматизированных предложений о том, как это сделать. Эти данные доступны по лицензии Community Data License Agreement – Permissive, Version 2.0 (CDLA-Permissive-2.0). Это означает, что получатель данных может распространять данные с изменениями или без них, при условии, что получатель данных предоставляет текст данного соглашения вместе с распространяемыми данными. Пожалуйста, укажите в качестве источника Ruman Kazi и участников OpenSSF Best Practices badge.

Владелец анкеты на значок проекта: Ruman Kazi.
2026-10-12 07:45:57 UTC, последнее изменение сделано 2026-10-12 10:15:42 UTC. Последний раз условия для получения значка были выполнены 2026-10-12 07:46:35 UTC.