Test/reference control STAGE1-REF-SECURITY-01 ships in the OpenSSF Baseline audit and counts toward results
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 52/100
Research direction
Start with packages/darnit-baseline/src/darnit_baseline/openssf-baseline.toml and implementation.py, then inspect tests/darnit_baseline/test_implementation.py and its stage1-ref handling. Run the documented uv run darnit audit -f openssf-baseline -o json --no-fail <repo> reproduction. Done when an OSPS audit includes only OSPS controls and the relevant tests and parity fixtures pass.
Written by the indexing model from the issue text.
Description
Summary
STAGE1-REF-SECURITY-01 was added to openssf-baseline.toml as the RFC-0001 Stage 1 acceptance-gate control. It is not an OSPS Baseline control, but every openssf-baseline audit evaluates it as a Level 1 control, includes it in totals, and emits it alongside OSPS ids. Its help URL falls back to a fabricated https://baseline.openssf.org/versions/2025-10-10#STAGE1-REF-SECURITY-01 anchor.
It duplicates OSPS-VM-02.01 (SECURITY.md presence), so a repo missing SECURITY.md is double-counted as a Level 1 failure, and a repo with one gets an extra PASS. Its second pass (llm_extract) is unreachable because the first pass is dispositive on both branches.
Impact
The audit claims to report against OSPS Baseline 2025-10-10 but its result set, counts and any attestation/SARIF derived from it include a non-spec control. Consumers comparing counts with the catalog (65 OSPS controls here) will see 66.
Evidence
- Control definition: https://github.com/darnitdevorg/darnit/blob/032493b8bc9d6ef810ecd639e515042371465c37/packages/darnit-baseline/src/darnit_baseline/openssf-baseline.toml#L4389-L4416
- Fallback help URL: https://github.com/darnitdevorg/darnit/blob/032493b8bc9d6ef810ecd639e515042371465c37/packages/darnit-baseline/src/darnit_baseline/implementation.py#L73-L74
- Tests already special-case it via the
stage1-reftag (tests/darnit_baseline/test_implementation.py:76), but production code does not.
Reproduction
Any repo with a SECURITY.md:
uv run darnit audit -f openssf-baseline -o json --no-fail <repo>
Actual: summary.total is 66; results contains {"id": "STAGE1-REF-SECURITY-01", "status": "PASS", "level": 1, "details": "Required file found: SECURITY.md"}. Text output header: Total: 66 | ....
Expected: only OSPS controls in an OSPS audit.
Also noted (minor)
OSPS-SA-03.01 declares manual before pattern, opposite to the convention in framework-design.md 3.1. manual returns INCONCLUSIVE so the verdict is unaffected today, but it will matter if manual gains any conclusive behavior. https://github.com/darnitdevorg/darnit/blob/032493b8bc9d6ef810ecd639e515042371465c37/packages/darnit-baseline/src/darnit_baseline/openssf-baseline.toml#L4264-L4276
Suggested direction
Move the reference control to a test fixture framework (or darnit-testchecks) and point the Stage 1 acceptance tests and parity fixtures at it. If it must stay in the package, exclude stage1-ref-tagged controls from get_all_controls()/audits unless explicitly requested. Reorder SA-03.01.
- Dominant language
- Python
- Stars
- 22
- Forks
- 27
- Avg merge
- 2d 28m
- Merged PRs (30d)
- 40
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from darnitdevorg/darnit
-
needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
darnitdevorg/darnit#589 ·
Maintainers usually reply within 1 day
-
needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
darnitdevorg/darnit#587 ·
Maintainers usually reply within 1 day
-
needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
darnitdevorg/darnit#585 ·
Maintainers usually reply within 1 day
-
quality
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
darnitdevorg/darnit#523 ·
Maintainers usually reply within 1 day
-
documentation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
darnitdevorg/darnit#516 ·
Maintainers usually reply within 1 day
All issues in darnitdevorg/darnit
Similar issues
-
Difficulty 1/5 1-3 hours Newbie friendliness 87/100
adri0/scadustats#128 ·
Maintainers usually reply within 1 day
-
`TIMESTAMP`, `TIMESTAMP_NTZ`, `TINYINT` and the other `TypeDecorator`s don't declare `python_type`Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
RPBCOpenawaiting policy acceptance precheck-passed
Difficulty 1/5 Under an hour Newbie friendliness 78/100
Bioconductor/BiocContributions#240 · 1 comment ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
documentation good first issue launch
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
FlologixAI/etchwork#4 ·