fixdossier / Docs
fixdossier documentation
fixdossier is an MIT-licensed GitHub Action. It reads a repository's releases, tags, published GitHub security advisories, merged Dependabot and Renovate pull requests, and commit messages, and writes three files: SECURITY-RECORD.md, security-record.json (schema fixdossier/v1) and SUPPORT.md. Each fix row states how it was linked to a release, so you can see which rows need checking.
These pages document fixdossier 0.1.1 (the version in package.json on main), based on action.yml and src/core.js, with output from the examples/ folder (axios/axios, fastify/fastify, vitejs/vite).
Quick start
Save as .github/workflows/security-record.yml. Artifact mode is the default and needs only read permissions.
name: security-record
on:
release:
types: [published]
schedule:
- cron: '0 6 * * 1' # weekly
workflow_dispatch:
permissions:
contents: read
pull-requests: read
jobs:
record:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: itulo/fixdossier@v0
with:
support_period_months: 24
contact: security@example.com
# mode: artifact is the defaultTo commit the files back to the branch instead, set mode: commit and grant contents: write. See Build a dated record of security fixes.
Pages
- Build a dated record of security fixes from GitHub history: what the Action reads, what it writes, how to run it in CI or locally.
- How a GitHub security advisory is mapped to a release: the three mapping methods,
matched_releases, and what still needs a manual check. - What the record covers and what it does not: advisory vs heuristic rows, unreleased fixes, permission gaps,
max_pages. - Generate SUPPORT.md with a support period: how
support_period_monthsandeol_dateturn into per-release dates, and what the CRA text says about support periods. - PLD evidence checklist for engineers: practical steps for keeping dated, reviewable fix evidence.
- Sample security records: unedited output for public repositories, with how each row was mapped.
Inputs
From action.yml. Three further inputs (pro_upload, pro_url, pro_token) control the optional upload mentioned at the end of this page.
| Input | Default | What it does |
|---|---|---|
token | ${{ github.token }} | Token for the GitHub API. The default GITHUB_TOKEN is enough for public data. |
repo | ${{ github.repository }} | owner/name to read. |
support_period_months | 12 | Months of security updates per release, used in SUPPORT.md. |
eol_date | empty | Optional end-of-life date (YYYY-MM-DD) that caps every support window. |
contact | empty | Where to report vulnerabilities (email or URL). |
product_name | empty | Name shown in SUPPORT.md. Falls back to owner/name. |
output_dir | . | Directory for the three generated files. |
max_pages | 10 | API pages (100 items each) per source. |
mode | artifact | artifact uploads the files as a workflow artifact, commit commits them to the checked-out branch, none only writes them. |
commit_message | chore: update security record [skip ci] | Commit message in commit mode. |
fail_on_gaps | false | If true, the step exits with code 2 when any source was unreadable or cut short. |
Outputs
| Output | Value |
|---|---|
record_file | Path of SECURITY-RECORD.md |
json_file | Path of security-record.json |
support_file | Path of SUPPORT.md |
fix_count | Number of rows in security_fixes |
gap_count | Number of gap messages |
Gaps are printed as workflow warnings (::warning title=fixdossier gap::...) and listed under “Gaps in this record”. The run still succeeds unless fail_on_gaps: 'true'. In commit mode a failed push is a warning, not a failure.
Requirements
- Runs as a composite action with Node on the runner (Node 20+, no npm dependencies).
ubuntu-latestworks. - Permissions:
contents: readandpull-requests: read;contents: writefor commit mode. If you set apermissions:block, anything you leave out is not granted, so a missingpull-requests: readshows up as a gap for pull requests.
The Action works on its own; if you want a hosted review queue and signed exports, there is an optional paid service, fixdossier Pro (demo), at €69 one-time for a Founding Licence covering 1 GitHub org, up to 3 repos and 5 reviewers.
Docs pages
- Docs home
- Build the record
- Advisory → release mapping
- Coverage and limits
- SUPPORT.md and support periods
- PLD evidence checklist
- Sample records
- Source on GitHub (MIT)
Not legal advice. fixdossier is an engineering tool for evidence collection and review support. It is not legal advice and not a compliance certificate. It does not make a product compliant with the PLD, the CRA or anything else, and its output can be incomplete or wrong. Review it, and ask a lawyer about your situation.