Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
219 changes: 219 additions & 0 deletions .bestpractices.json

Large diffs are not rendered by default.

38 changes: 38 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Dependabot configuration for vigil.
# Docs: https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
#
# Vigil ships no language-ecosystem dependency surface — it is a single-file
# PowerShell + WPF app with no `package-lock.json`, no `pom.xml`, no
# `requirements.txt`. The only thing Dependabot can usefully bump on this
# repo is the GitHub Actions in `.github/workflows/`.
#
# Strategy:
# * weekly cadence — keeps the noise floor low while still catching CVEs early
# * grouped — single PR per week unless a security update fires
# * security updates fire whenever needed regardless of the weekly slot
#
# RAN-55 — paired with `.github/workflows/security.yml` (OSS-CLI stack) and
# `.github/workflows/scorecard.yml` (OpenSSF Scorecard). Repo-level
# "Dependabot security updates" + "secret scanning" + "push protection"
# are board-owned toggles in repo Settings.

version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "08:00"
timezone: "Etc/UTC"
open-pull-requests-limit: 5
labels:
- "type:dependencies"
- "area:ci"
commit-message:
prefix: "chore(actions)"
include: "scope"
groups:
actions:
patterns:
- "*"
69 changes: 69 additions & 0 deletions .github/workflows/scorecard.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# OpenSSF Scorecard supply-chain analysis.
# RAN-55 — best-effort target. Scorecard is observational and does NOT gate
# merge per the board ruling; the OpenSSF Best Practices `passing` badge is
# the only hard gate.
# Docs: https://github.com/ossf/scorecard-action

name: Scorecard supply-chain security

on:
push:
branches: [main]
schedule:
# Mondays 06:00 UTC — same window as security.yml so the weekly
# observability sweep runs together.
- cron: "0 6 * * 1"
workflow_dispatch:

# Restrict the default GITHUB_TOKEN to read-only; the steps below request the
# narrow scopes they actually need.
permissions: read-all

jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
permissions:
# Required for upload to the code-scanning Security tab.
security-events: write
# Required to read OIDC token for publish_results.
id-token: write
# Default scopes for actions/checkout.
contents: read
actions: read

steps:
- name: Harden runner egress
# step-security/harden-runner v2.19.0
uses: step-security/harden-runner@8d3c67de8e2fe68ef647c8db1e6a09f647780f40
with:
egress-policy: audit

- name: Checkout code
# actions/checkout v6.0.2
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
persist-credentials: false

- name: Run Scorecard analysis
# ossf/scorecard-action v2.4.3
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a
with:
results_file: results.sarif
results_format: sarif
# Publish the results so they appear on the public Scorecard dashboard.
publish_results: true

- name: Upload Scorecard SARIF (artifact)
# actions/upload-artifact v7.0.1
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: scorecard-sarif
path: results.sarif
retention-days: 5

- name: Upload SARIF to GitHub code-scanning
# github/codeql-action/upload-sarif v3.35.2
uses: github/codeql-action/upload-sarif@ce64ddcb0d8d890d2df4a9d1c04ff297367dea2a
with:
sarif_file: results.sarif
Loading
Loading