Skip to content

fix(harden): correct three claims and record the evidence spans - #78

Merged
svyatov merged 1 commit into
mainfrom
fix/harden-pilot-corrections
Aug 11, 2026
Merged

fix(harden): correct three claims and record the evidence spans#78
svyatov merged 1 commit into
mainfrom
fix/harden-pilot-corrections

Conversation

@svyatov

@svyatov svyatov commented Aug 11, 2026

Copy link
Copy Markdown
Owner

What changed

Three claims in oss-harden that re-reading the current sources found false or incomplete.

  • Step 2 and Step 3 tell a reader to pin every uses: line in a workflow, and miss the ones a shipped composite action carries. Step 2 now reads every action.yml and action.yaml in the repository, and Step 3 covers both.
  • Step 5 said a Dependabot cooldown below three days replaces the platform default with something slower. It shortens the delay, which is the reverse.
  • Step 11 recommended CodeQL default setup with no mention that GitHub excludes fork pull requests from it. It now sends a repository that receives them to advanced setup.

Six Verified markers close the spans those sentences sit in, each naming the pages read on 2026-08-07.

AGENTS.md records five facts about this repository that the same pass found stale: the tag R-SEC-05 cites, the package count site/bun.lock resolves, the social preview image, the Code Quality setup endpoint GitHub now documents, and R-SEC-09 standing open for fork pull requests.

Why this way

The corrections come from a pilot of a claim verification mechanism, not from a skill run that went wrong. The pilot read the current sources for one dense skill file and compared every sentence against them.

A marker attests reading over a span rather than covering one claim, so it carries a date and the pages read instead of a citation per sentence. Six spans fit this file, each closing at a step boundary.

Verification

bun run typecheck, bun test at 327 pass, bun run validate, tests/test-check-drift.sh, scripts/check-drift.sh, and scripts/check-ecosystems.mjs all pass locally. skills/oss-writing/scripts/prose.mjs reports zero findings on all three files.

Known gaps

The markers cover this one file. The other 24 unmarked files under skills/ and the five tracked root files carry no evidence yet, and nothing gates a missing marker until the checker exists. Both are separate work.

Affects

Rule or skill Change
R-SEC-01 wording only, requirement unchanged: composite actions were always in scope
R-SEC-09 wording only, requirement unchanged
R-SEC-14 wording only, requirement unchanged
oss-harden three corrections and six evidence markers

svyatov added a commit that referenced this pull request Aug 11, 2026
## What changed

`.skillspector-baseline.yaml` holds one suppression, and the scan in CI
and in the `CONTRIBUTING.md` check sequence passes `--baseline` to read
it.

## Why this way

`oss-harden` cites GitLab's personal access tokens page as the source
for the `read_api` and `api` scopes an audit run needs. Skillspector
matches the phrase in the link title, reports PE3 Credential Access at
HIGH with confidence 0.7, and the score moves from 34 MEDIUM to 52 HIGH,
which exits 1. The skill reads no credential file. Rewording the
citation would clear the scan by misnaming the source the claim rests
on, so the suppression is the honest fix.

The entry is a glob rule scoped to that rule id, that file, and that
phrase, not a fingerprint. A fingerprint hashes the line span and the
message, so it expires on the next edit to the file and returns the
finding with nobody having re-read it. Its `reason` says what would make
the suppression wrong: `oss-harden` telling a reader to read a token
from disk.

Baselining every current finding was the alternative. It was rejected
because it would suppress all 18 findings scoring today, including two
untriaged HIGH ones in `oss-skill/references/hosts.md`.

## Verification

`bun test` at 327 pass and `skills/oss-writing/scripts/prose.mjs` clean
on the files touched. The suppression itself is not verified here. The
finding it suppresses comes from #78, which is not in this branch, so
this branch scores 34 with or without the rule. Re-running #78 against
this baseline is the first run that tests it.

## Known gaps

The 18 findings that score today are untriaged, and two of them are
HIGH. This change leaves every one of them scoring exactly as it does
now.

## Affects

| Rule or skill | Change |
| --- | --- |
| oss-harden | none, the skill is unchanged |
The skill tells a reader to pin every `uses:` line in a workflow. It
misses the ones a shipped composite action carries. It says a cooldown
below three days makes the updater slower, where a smaller number
shortens the delay. It recommends CodeQL default setup without saying
that GitHub excludes fork pull requests from it.

A pilot run of the claim verification mechanism found all three by
re-reading the sources. Six `Verified` markers now close the spans they
sit in, and `AGENTS.md` records five repository facts the same pass
found stale.
@svyatov
svyatov force-pushed the fix/harden-pilot-corrections branch from 8b13411 to d601e77 Compare August 11, 2026 16:05
@svyatov
svyatov merged commit e599e49 into main Aug 11, 2026
19 checks passed
@svyatov
svyatov deleted the fix/harden-pilot-corrections branch August 11, 2026 16:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant