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.

yaml
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 default

To commit the files back to the branch instead, set mode: commit and grant contents: write. See Build a dated record of security fixes.

Pages

Inputs

From action.yml. Three further inputs (pro_upload, pro_url, pro_token) control the optional upload mentioned at the end of this page.

InputDefaultWhat 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_months12Months of security updates per release, used in SUPPORT.md.
eol_dateemptyOptional end-of-life date (YYYY-MM-DD) that caps every support window.
contactemptyWhere to report vulnerabilities (email or URL).
product_nameemptyName shown in SUPPORT.md. Falls back to owner/name.
output_dir.Directory for the three generated files.
max_pages10API pages (100 items each) per source.
modeartifactartifact uploads the files as a workflow artifact, commit commits them to the checked-out branch, none only writes them.
commit_messagechore: update security record [skip ci]Commit message in commit mode.
fail_on_gapsfalseIf true, the step exits with code 2 when any source was unreadable or cut short.

Outputs

OutputValue
record_filePath of SECURITY-RECORD.md
json_filePath of security-record.json
support_filePath of SUPPORT.md
fix_countNumber of rows in security_fixes
gap_countNumber 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-latest works.
  • Permissions: contents: read and pull-requests: read; contents: write for commit mode. If you set a permissions: block, anything you leave out is not granted, so a missing pull-requests: read shows 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

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.