discovery-media-player

本サイトが提示する下記のベストプラクティスを実行するプロジェクトは、Open Source Security Foundation (OpenSSF) バッジを達成したことを自主的に自己認証し、そのことを外部に示すことができます。

ソフトウェアに欠陥や脆弱性がないことを保証する手立てはありません。形式論的な証明ができたとしても、仕様や前提が間違っていると誤動作の可能性があります。また、プロジェクトが健全で、かつ機能的な開発コミュニティであり続けることを保証する手立てもありません。しかし、ベストプラクティスの採用は、プロジェクトの成果の向上に寄与する可能性があります。たとえば、いくつものベストプラクティスがリリース前の複数人によるレビューを定めていますが、それによりレビュー以外では発見困難な技術的脆弱性を見つけるのを助け、同時に異なる企業の開発者間の信頼を築き、さらに交流を続けることに対する意欲を生んでいます。バッジを獲得するには、すべてのMUSTおよびMUST NOT基準を満たさなければなりません。すべてのSHOULD基準も満たさなければなりませんが、正当な理由がある場合は満たさなくても構いません。そしてすべてのSUGGESTED基準も満たさなければなりませんが、満たさないとしても、少なくとも考慮することが望まれます。フィードバックは、 GitHubサイトのissueまたはpull requestとして提示されれば歓迎します。また、議論のためのメールリストも用意されています。

私たちは多言語で情報を提供していますが、翻訳版に矛盾や意味の不一致がある場合は、英語版を正式な記述とします。
これがあなたのプロジェクトである場合は、プロジェクトページにベースラインバッジステータスを表示してください!ベースラインバッジステータスは次のようになります: プロジェクト14197のベースラインバッジレベルはbaseline-2です ベースラインバッジを埋め込む方法は次のとおりです:
ベースラインバッジステータスを表示するには、マークダウンファイルに以下を埋め込みます:
[![OpenSSF Baseline](https://www.bestpractices.dev/projects/14197/baseline)](https://www.bestpractices.dev/projects/14197)
または、HTMLに以下を埋め込みます:
<a href="https://www.bestpractices.dev/projects/14197"><img src="https://www.bestpractices.dev/projects/14197/baseline"></a>


これらはベースラインレベル3の基準です。 これらは基準バージョン v2026.02.19 の評価項目です。

Baseline Series: ベースラインレベル1 ベースラインレベル2 ベースラインレベル3

        

 基本的情報

  • 一般

    他のプロジェクトが同じ名前を使用していないか注意してください。

    Self-hosted document viewer: per-recipient tracked links, reading analytics, live presentation. The core knows nothing about the app hosting it.

    SPDXライセンスの表現形式を使用してください。 例:「Apache-2.0」、「BSD-2-Clause」、「BSD-3-Clause」、「GPL-2.0+」、「LGPL-3.0+」、「MIT」、「(BSD-2-Clause OR Ruby)」。一重引用符または二重引用符を含めないでください。
    複数の言語がある場合は、コンマを区切り(スペースを入れてもよい)としてリストし、使用頻度の高いものから順に並べます。使用言語が多くある場合は、少なくとも最初の3つの最も多く使われるものをリストアップしてください。言語がない場合(例:ドキュメントだけ、またはテスト専用のプロジェクトの場合)、1文字 " - "を使用します。言語ごとにある大文字・小文字の慣用を踏襲してください(例:「JavaScript」)。
    Common Platform Enumeration(CPE)は、情報技術(IT)システム、ソフトウェア、およびパッケージのための構造化された命名体系です。脆弱性を報告する際に、多くのシステムやデータベースで使用されています。

 管理策 20/21

  • 管理策


    CI/CDパイプラインでジョブに権限が割り当てられる場合、ソースコードまたは設定は、対応するアクティビティに必要な最小限の権限のみを割り当てる必要があります。 [OSPS-AC-04.02]
    プロジェクトのCI/CDパイプラインを構成して、デフォルトでユーザーとサービスに最小限の利用可能な権限を割り当て、特定のタスクに必要な場合にのみ権限を昇格させます。一部のバージョン管理システムでは、組織またはリポジトリレベルで設定できる場合があります。それができない場合は、パイプラインのトップレベルで権限を設定してください。

    Every job is granted the minimum for its activity, and the workflow that publishes is the strictest. release.yml declares permissions: {} at workflow level — no scope at all — then grants per job: the verification job contents: read plus actions: read because it queries the Actions API, the publish job contents: read plus id-token: write for OIDC and nothing else, the announce job contents: write alone to create the Release. ci.yml is contents: read throughout, scorecard.yml read-all. The release pipeline is deliberately split into four jobs with disjoint permissions so that the job holding a write scope is never the job that executes downloaded code.



    信頼できる協力者の入力を受け付けるCI/CDパイプラインは、パイプラインで使用する前にその入力をサニタイズおよび検証しなければなりません。 [OSPS-BR-01.04]
    CI/CDパイプラインは、明示的なワークフロー実行時にすべての協力者の入力をサニタイズ(期待値の引用、エスケープ、または終了)する必要があります。協力者は一般的に信頼されていますが、ワークフローへの手動入力はレビューできず、アカウント乗っ取りや内部脅威によって悪用される可能性があります。

    The only collaborator input this project accepts is the tag on a workflow_dispatch of release.yml and image.yml. It was already not injectable — TAG is read as a shell environment variable, never interpolated with ${{ }} inside a run block, the same rule applied to untrusted input in cla.yml — and it is now validated as well: the first step of the release pipeline, before any repository access, rejects anything that is not the vX.Y.Z form this project tags, and image.yml has carried the same check. Validation is separate from injectability: a typo previously travelled as far as the checkout to fail on a message about a missing ref, and a compromised collaborator account had a free-text field on the workflow that publishes.



    正式なリリースが作成される場合、そのリリース内のすべてのアセットは、リリース識別子またはアセットの他の一意の識別子と明確に関連付けられている必要があります。 [OSPS-BR-02.02]
    プロジェクトによって生成される各ソフトウェアアセットに一意のバージョン識別子を割り当て、一貫した命名規則または番号体系に従ってください。例としては、SemVer、CalVer、またはgitコミットIDなどがあります。

    Every asset carries the release identifier. The npm tarball is named discovery-media-player-<version>.tgz and is published under that exact version. The container image is pushed on the immutable versioned tag first, with latest promoted afterwards by atomic retag rather than pushed during the build. The GitHub Release is the tag itself, and the CycloneDX SBOM attached to it is named discovery-media-player-<tag>.cdx.json — an SBOM detached from the version it describes describes nothing. CI refuses a tag whose version does not match package.json, and refuses a tag on a commit that is not an ancestor of main.



    プロジェクトは、プロジェクトで使用されるシークレットと認証情報を管理するためのポリシーを定義する必要があります。このポリシーには、シークレットと認証情報を保存、アクセス、およびローテーションするためのガイドラインが含まれている必要があります。 [OSPS-BR-07.02]
    シークレットと認証情報がプロジェクト内でどのように管理され使用されているかを文書化してください。これには、シークレットがどのように保存されるか(例:シークレット管理ツールを使用)、アクセスがどのように制御されるか、シークレットがどのようにローテーションまたは更新されるかについての詳細が含まれている必要があります。機密情報がソースコードにハードコードされたり、バージョン管理システムに保存されたりしないようにしてください。

    docs/SECURITY-PRACTICES.md defines the policy, and its rule is that the project holds no long-lived secret and does not want one. It tabulates every credential, who holds it and how long it lives: npm publishing held by nobody because OIDC issues an identity per run, GHCR push scoped per job, no signing key at all because Sigstore signs against the workflow identity, and the operator's own secrets which never transit through this project. Storing: never in version control, enforced by tools/secrets-en-clair.mjs in CI and pre-push, with .env.example carrying names and no values. Accessing: the resource list in MAINTAINERS.md, granted only after the vetting policy in the same file. Rotating: a table of triggers, with the standing rule that a leaked credential is revoked first and removed second, because a pushed secret is disclosed and rewriting history does not recall it.



    プロジェクトがリリースを作成した場合、プロジェクトのドキュメントには、リリースアセットの整合性と真正性を検証するための手順が含まれている必要があります。 [OSPS-DO-03.01]
    プロジェクトの手順には、使用されている技術、実行するコマンド、および期待される出力に関する情報が含まれている必要があります。可能であれば、このドキュメントをビルドおよびリリースパイプラインと同じ場所に保存しないようにして、単一の侵害によってソフトウェアとその整合性を検証するためのドキュメントの両方が侵害されることを避けてください。

    docs/VERIFYING-RELEASES.md gives the technology, the commands and the expected output for each asset: npm audit signatures for the package, with the verified registry signature and verified attestation lines a consumer should see; gh attestation verify against the OCI reference for the image, plus docker buildx imagetools inspect to read its embedded SBOM and provenance; and gh release download for the CycloneDX SBOM attached to each GitHub Release. A table states what each check proves and, deliberately, what it does not — a verification that is oversold is worse than none, because it stops people looking further. The document also tells readers to fetch it from a source other than the artifact they are checking.



    プロジェクトがリリースを作成した場合、プロジェクトのドキュメントには、ソフトウェアリリースを作成した人またはプロセスの期待されるIDを検証するための手順が含まれている必要があります。 [OSPS-DO-03.02]
    期待されるIDは、署名に使用される鍵ID、sigstore証明書からの発行者とID、または他の類似の形式である可能性があります。可能であれば、このドキュメントをビルドおよびリリースパイプラインと同じ場所に保存しないようにして、単一の侵害によってソフトウェアとその整合性を検証するためのドキュメントの両方が侵害されることを避けてください。

    docs/VERIFYING-RELEASES.md carries an explicit identity table for the expected signer. Because publication is signed by a workflow rather than a person, what must match is the Sigstore issuer https://token.actions.githubusercontent.com, the source repository github.com/Juli1artha/discovery-media-player, the workflow .github/workflows/release.yml, and a commit belonging to main — which CI enforces separately by refusing to publish a tag whose commit is not an ancestor. The document states plainly that a signature which verifies but names a different repository or workflow is not this project's release, and that a failing check is handled as an incident through SECURITY.md rather than as a support question.



    プロジェクトがリリースを作成した場合、プロジェクトのドキュメントには、各リリースのサポートの範囲と期間に関する説明文が含まれている必要があります。 [OSPS-DO-04.01]
    プロジェクトのリリースされたソフトウェアアセットのサポートの範囲と期間を伝えるために、プロジェクトにはSUPPORT.mdファイル、SECURITY.mdの「サポート」セクション、または各リリースの予想されるサポート期間、提供されるサポートの種類(例:バグ修正、セキュリティ更新)、およびサポートを受けるための関連ポリシーや手順を説明する他のドキュメントが必要です。

    SECURITY.md states the scope and duration in a table rather than by implication: the latest release is supported for bug fixes and security fixes, anything earlier for neither. The reasoning is given — the project is young, releases are small and frequent, there is one maintainer, and a long-term support branch would be a promise nobody here could keep. It also says what makes the abrupt cutoff workable: upgrading is npm update or a new image tag, and where a database migration is genuinely required, docs/MIGRATIONS.md documents it and the running instance says so rather than degrading silently.



    プロジェクトがリリースを作成した場合、プロジェクトのドキュメントには、リリースやバージョンがセキュリティ更新を受けなくなる時期について説明文が含まれている必要があります。 [OSPS-DO-05.01]
    セキュリティ修正のサポート範囲と期間を伝えるために、プロジェクトにはSUPPORT.mdまたはプロジェクトのセキュリティ更新に関するポリシーを説明する他のドキュメントが必要です。

    SECURITY.md says exactly when security updates stop: a version stops receiving them the moment the next release is published. There is no backporting — a fix is delivered as a new release, never as a patch to an older line — so a consumer three versions behind when an advisory lands upgrades to current rather than waiting for a fix on their line. The changelog for each version names the security-relevant changes it carries, so what is gained by moving is visible before moving. The document also commits to changing that table first, before any wider support promise is made elsewhere.



    プロジェクトがアクティブである間、プロジェクトのドキュメントには、機密リソースへのエスカレートされた権限を付与する前にコード共同作業者がレビューされるポリシーが含まれている必要があります。 [OSPS-GV-04.01]
    マージ承認やシークレットへのアクセスなど、機密リソースへのエスカレートされた権限を付与される前に、コード共同作業者がレビューおよび承認される必要があるという実行可能なポリシーをプロジェクトのドキュメントに公開してください。審査には、既知の信頼できる組織との貢献者の関連性を確認するなど、正当化可能なIDの系統を確立することが推奨されます。

    MAINTAINERS.md carries a Granting access policy: nobody receives escalated permissions — merge rights on main, repository settings, publishing, or the security mailbox — without being reviewed first, before the grant rather than after. It states what is examined and in what order: a record of merged pull requests over a period long enough to see how the person behaves when they disagree with review (explicitly not a commit count), the CLA already signed, 2FA confirmed rather than assumed, and the smallest grant that does the job, with access to a secret granted per resource rather than as a bundle. Grants are recorded in the same pull request that makes them, and the policy notes the one place it is currently weaker than it reads: with a single maintainer, the person applying it is the person it would be applied to — which is why it was written before anyone is waiting on it.



    プロジェクトがリリースを作成した場合、リリースされたすべてのコンパイル済みソフトウェアアセットは、ソフトウェア部品表とともに配信される必要があります。 [OSPS-QA-02.02]
    ビルド時に精度が検証されたツールを使用してSBOMを自動生成することが推奨されます。これにより、ユーザーは環境内の他のプロジェクトと並行して、標準化されたアプローチでこのデータを取り込むことができます。

    Both compiled assets ship with an SBOM. The container image is built with sbom: true and provenance: mode=max, so its bill of materials travels as an attestation readable with docker buildx imagetools inspect. The npm package now carries one too: the release workflow generates a CycloneDX SBOM with npm sbom from the same production tree the tarball is published from, verifies it is well-formed CycloneDX with at least one component rather than an empty file, and attaches it to the GitHub Release named discovery-media-player-<tag>.cdx.json. It is generated with --ignore-scripts, because the announcing job is the only one holding contents: write and installing dependencies that execute their own scripts there would hand downloaded code exactly the privilege the four-job split removes. docs/VERIFYING-RELEASES.md tells consumers how to fetch and use it.



    プロジェクトが複数のソースコードリポジトリで構成されるリリースを作成した場合、すべてのサブプロジェクトは、プライマリコードベースと同等またはそれより厳しいセキュリティ要件を実施する必要があります。 [OSPS-QA-04.02]
    プロジェクトによって生成され、リリースにコンパイルされる追加のサブプロジェクトコードリポジトリは、それぞれのコードベースのステータスと意図に応じて、セキュリティ要件を実施する必要があります。対応するOSPS Baseline要件に従うことに加えて、これにはセキュリティレビューを要求すること、脆弱性がないこと、および既知のセキュリティ問題がないことを確認することが含まれる場合があります。

    The project is a single repository. No subproject codebase is compiled into a release, and nothing outside github.com/Juli1artha/discovery-media-player contributes source to the published npm package or container image, so there is no additional codebase whose security requirements could be looser than the primary one.



    プロジェクトがアクティブである間、プロジェクトのドキュメントには、テストがいつどのように実行されるかを明確に記載する必要があります。 [OSPS-QA-06.02]
    コントリビューションドキュメントに、ローカルでテストを実行する方法とCI/CDパイプラインでテストを実行する方法を説明するセクションを追加します。ドキュメントでは、テストが何をテストしているかと結果の解釈方法を説明する必要があります。

    CONTRIBUTING.md documents when and how the tests run, in a table naming each of the four benches, the command that invokes it, what it proves that the others cannot, and when it runs — all four on every push and pull request, on Node 22 and 24 for the unit bench. It lists what runs alongside them (lint, typecheck, CodeQL, the blocking dependency-vulnerability check, and the repository's own guards), states that all of it must pass before a pull request can merge and that pull requests are the only way into main, and explains how to read a failure: an ::error:: names your branch, while GARDE NON CONCLUANTE means the guard could not look and the fix is in the guard or its environment, not in your change.



    アクティブな間、プロジェクトのドキュメントには、プロジェクトが生成するソフトウェアに対するすべての主要な変更は、自動化されたテストスイートの機能のテストを追加または更新する必要があるというポリシーを含めなければなりません(MUST)。 [OSPS-QA-06.03]
    コントリビューションドキュメントに、テストの追加または更新に関するポリシーを説明するセクションを追加します。ポリシーでは、主要な変更とは何か、どのようなテストを追加または更新すべきかを説明する必要があります。

    The policy is CONTRIBUTING.md's stated one rule: a behaviour worth keeping is worth a test that fails without it. It extends to the test's name, which must say which failure it prevents rather than that it tests the happy path — a test that does not will be asked about in review. AGENTS.md repeats it among the conventions that only review enforces. The history shows it applied: the suite stands at 1515 tests across 144 files, and the credential guard added during this badge review shipped with 21 tests of its own, covering both what it catches and what it deliberately lets pass.



    プライマリブランチにコミットが行われる場合、プロジェクトのバージョン管理システムは、マージする前に、作者以外の少なくとも1人の人間による変更の承認を要求しなければなりません(MUST)。 [OSPS-QA-07.01]
    プロジェクトのバージョン管理システムを構成し、リリースまたはプライマリブランチにマージする前に、作者以外の少なくとも1人の人間による変更の承認を要求します。これは、プルリクエストがマージされる前に、少なくとも1人の他のコラボレーターによってレビューおよび承認されることを要求することで実現できます。

    Not met: this control requires a non-author human approval before merging, and there is one maintainer — every change is authored by the only person who could approve it, and an AI review is not counted as a human one. What already exists is everything around the missing person: the review standards a second maintainer would apply (CONTRIBUTING.md, "How review is conducted"), the vetting path for granting rights (MAINTAINERS.md), and recruiting that person as the public roadmap's first item. https://github.com/Juli1artha/discovery-media-player/blob/main/ROADMAP.md



    プロジェクトがリリースを行った場合、プロジェクトは、システム内の重要なコードパス、関数、および相互作用に対する攻撃を理解して防御するために、脅威モデリングと攻撃面分析を実行しなければなりません(MUST)。 [OSPS-SA-03.02]
    脅威モデリングは、プロジェクトがコードベース、関連するプロセスとインフラストラクチャ、インターフェース、主要コンポーネントを調べ、「ハッカーのように考え」、システムがどのように破壊または侵害される可能性があるかをブレインストーミングする活動です。識別された各脅威をリストアップし、プロジェクトは、発生する可能性のあるギャップ/脆弱性を積極的に回避または閉じる方法を検討できます。新機能や破壊的変更に対して、これが更新されていることを確認してください。

    docs/THREAT-MODEL.md is the threat model and attack-surface analysis. It is organised by asset rather than by feature — documents, reading data, host credentials, in descending order of what their loss would cost an operator — because a model arranged by feature reassures its author and finds nothing. It tabulates every entry point an unauthenticated stranger can reach, then works through eight attack paths: reading a document without being its recipient, server-side request forgery through the file proxy (named the highest-value target, with the realised failure mode of a plausible typo widening the guard), taking or spying on a live presentation, crossing the host boundary, XSS against the nonce-based CSP, reaching the database directly, compromising the supply chain, and denial of service. Each names its residual risk, including the ones deliberately left standing — a link forwarded by its legitimate recipient, and compromise of the single maintainer account. It is reviewed when a feature changes what an actor can do or the host contract breaks.



    アクティブな間、プロジェクトに影響を与えないソフトウェアコンポーネントの脆弱性は、VEXドキュメントで説明し、非悪用可能性の詳細で脆弱性レポートを補強しなければなりません(MUST)。 [OSPS-VM-04.02]
    既知の脆弱性の悪用可能性ステータスを伝達するVEXフィードを確立し、評価の詳細または脆弱なコードが実行されないようにする適切な緩和策を含めます。

    There is nothing to account for in a VEX document. npm audit reports zero vulnerabilities across both the production and development trees, so no known vulnerability in a component has been assessed as non-exploitable here, and a VEX statement would have no subject. The policy for when that changes is written down rather than left open: docs/DEPENDENCIES.md states that a finding may be suppressed only as not exploitable in this project — never as won't fix — that the suppression records why the vulnerable path cannot be reached, who decided and when, and that the non-exploitability assessment is published with the release carrying it, in that version's changelog section and alongside the SBOM attached to the GitHub Release, so a consumer scanning our SBOM can distinguish a real exposure from one already assessed.



    アクティブな間、プロジェクトドキュメントには、脆弱性とライセンスに関連するSCA調査結果の修復のしきい値を定義するポリシーを含めなければなりません(MUST)。 [OSPS-VM-05.01]
    プロジェクト内に、脆弱性とライセンスに関連するSCA調査結果の修復のしきい値を定義するポリシーを文書化します。これらの調査結果を識別、優先順位付け、修復するプロセスを含めます。

    docs/DEPENDENCIES.md defines the thresholds, and gives each one a reason rather than a number alone. Production tree: no known vulnerability at any severity — it runs on the operator's machine beside their commercial documents and under their credentials, and it holds one dependency, so tolerating anything there would be choosing to ship a known hole in code we can read in full. Development tree: nothing High or Critical — it never leaves the repository, and blocking on a moderate in a test plugin would stall delivery of real fixes for a threat that reaches no instance, while teaching people to route around the check. Licences are held to the same bar: FLOSS and compatible with AGPL-3.0-or-later distribution, and a licence that changes under us is treated as a finding at the same thresholds.



    アクティブな間、プロジェクトドキュメントには、リリース前にSCA違反に対処するポリシーを含めなければなりません(MUST)。 [OSPS-VM-05.02]
    プロジェクト内に、リリース前に該当するソフトウェア構成分析の結果に対処するポリシーを文書化し、リリース前にそのポリシーへの準拠を検証するステータスチェックを追加します。

    docs/DEPENDENCIES.md states the release rule: no release goes out carrying a violation of either threshold. It is enforced structurally rather than remembered — the check runs on every commit, a tag can only publish a commit that is an ancestor of main, and every commit on main has passed it. The document also says what happens when an advisory lands against an already-published version: the fix goes out as a release of its own rather than waiting for the next feature, which is consistent with the support policy in SECURITY.md, where a fix is always a new release and never a backport.



    アクティブな間、プロジェクトのコードベースへのすべての変更は、悪意のある依存関係と依存関係の既知の脆弱性に関する文書化されたポリシーに対して自動的に評価され、非悪用可能と宣言および抑制されている場合を除き、違反の場合はブロックされなければなりません(MUST)。 [OSPS-VM-05.03]
    プロジェクトのバージョン管理システムにステータスチェックを作成し、コードベースへのすべての変更に対してソフトウェア構成分析ツールを実行します。変更がマージされる前に、ステータスチェックが合格することを要求します。

    ci.yml carries a blocking software-composition check on every push and every pull request, evaluated against the documented thresholds and required before merge: npm audit --omit=dev --audit-level=low for the production tree and npm audit --audit-level=high for the development tree, each failing with an error naming which tree breached and pointing at docs/DEPENDENCIES.md. Because pull requests are the only route into main and the check is required, a change introducing a vulnerable or malicious dependency is blocked rather than reported. Suppression is possible only as a recorded non-exploitability assessment, per the policy in the same document. Integrity of what is installed is enforced alongside it: npm ci only, against a committed lockfile carrying an integrity hash per package, with actions pinned to commit SHAs and base images to digests.



    アクティブな間、プロジェクトドキュメントには、SAST調査結果の修復のしきい値を定義するポリシーを含めなければなりません(MUST)。 [OSPS-VM-06.01]
    プロジェクト内に、静的アプリケーションセキュリティテスト(SAST)調査結果の修復のしきい値を定義するポリシーを文書化します。これらの調査結果を識別、優先順位付け、修復するプロセスを含めます。

    docs/SECURITY-PRACTICES.md defines the SAST thresholds in a table: Critical and High must be resolved before the pull request merges and block any release; Medium before the next release, as a fix or a written suppression but never silence; Low and Note triaged within the release cycle and acceptable with a recorded reason. A fourth row overrides the others — any severity in a security-critical path (the file proxy, the access wall, share revocation, the presentation control token, CSP handling) blocks the merge regardless of the tool's own rating, because severity ratings are generic and this codebase is not: a medium in the component that fetches a caller-supplied URL server-side is not a medium here. Suppression is allowed only as not exploitable, with the reason, the decider and the date, and never as a repository-wide rule disablement.



    アクティブな間、プロジェクトのコードベースへのすべての変更は、セキュリティの弱点に関する文書化されたポリシーに対して自動的に評価され、非悪用可能と宣言および抑制されている場合を除き、違反の場合はブロックされなければなりません(MUST)。 [OSPS-VM-06.02]
    プロジェクトのバージョン管理システムにステータスチェックを作成し、コードベースへのすべての変更に対して静的アプリケーションセキュリティテスト(SAST)ツールを実行します。変更がマージされる前に、ステータスチェックが合格することを要求します。

    Every change is automatically evaluated and blocked on violation. CodeQL runs the javascript-typescript security query suites on every pull request and every push to main, is a named required check, and is blocking on the publication path; a weekly scheduled run additionally applies new rules to code that has not changed. Alongside it on the same trigger: ESLint with typescript-eslint, tsc under strict with noUnusedLocals, noUnusedParameters and noFallthroughCasesInSwitch, and the repository's own static guards over the workflow YAML, the Dockerfile, the published surface and every tracked file. Because pull requests are the only way into main and these are required checks, a violation blocks the merge. Suppression is governed by the policy in docs/SECURITY-PRACTICES.md and is available only as a recorded non-exploitability assessment. Current state: zero outstanding findings across all of them.



このデータは、Community Data License Agreement – Permissive, Version 2.0 (CDLA-Permissive-2.0)のもとで利用可能です。これは、データ受領者が、データ受領者がこの契約のテキストを共有データとともに利用可能にする限り、変更の有無にかかわらずデータを共有できることを意味します。Julien ArthapignetおよびOpenSSFベストプラクティスバッジのコントリビューターにクレジットを表示してください。

プロジェクト バッジ登録の所有者: Julien Arthapignet.
エントリの作成日時 2026-08-22 00:19:58 UTC、 最終更新日 2026-08-25 12:37:10 UTC 最後に2026-08-22 07:59:01 UTCにバッジ合格を達成しました。