Skip to content

fix(ci): reconcile scorecard.yml with governance staleness (stop SARIF→Code Scanning)#162

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/neurophone-repo-setup-envzix
Jul 1, 2026
Merged

fix(ci): reconcile scorecard.yml with governance staleness (stop SARIF→Code Scanning)#162
hyperpolymath merged 1 commit into
mainfrom
claude/neurophone-repo-setup-envzix

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Fixes the recurring governance / Check Workflow Staleness red that has failed on
every recent PR (#154, #161, …).

Root cause (pre-existing, from #159): the Scorecard workflow adopted in #159 runs
Scorecard in SARIF mode and pushes the SARIF into GitHub Code Scanning, but only
fires on push(main)/schedule — not per-PR-head. The standards governance staleness
gate forbids exactly that:

::error:: OSSF Scorecard must not upload SARIF to GitHub Code Scanning unless it runs for every PR head commit.

Fix: delegate scorecard.yml to the canonical standards
scorecard-reusable.yml@7c9db0e — it runs Scorecard in JSON mode with
publish_results and uploads an artifact, and does not push SARIF into Code
Scanning. That's the canonical behaviour #159's title ("adopt canonical scorecard.yml")
intended, and it satisfies the gate. Job name (analysis) preserved for the required-check
contract.

Also hardened must-check.sh (portable [[:space:]] instead of GNU-only \s; quoted
exit "$fail").

Verified locally: check-workflow-staleness.sh → "All workflow staleness checks
passed"; scorecard.yml YAML valid; must-check exit 0.

FLAGS (unchanged)

🤖 Generated with Claude Code

https://claude.ai/code/session_0172RBMz3qYjb1ttzD2i7RNh


Generated by Claude Code

The Scorecard workflow adopted in #159 ran Scorecard in SARIF mode and pushed
the SARIF into GitHub Code Scanning, but only fired on push(main)/schedule — not
per-PR-head. The standards governance staleness gate forbids exactly that:

  ::error:: OSSF Scorecard must not upload SARIF to GitHub Code Scanning unless
            it runs for every PR head commit.

so governance stayed red on every PR (incl. #154/#161). Reconcile by delegating
to the canonical standards `scorecard-reusable.yml@7c9db0e` — it runs Scorecard
in JSON mode with `publish_results` and uploads an artifact, and does NOT push a
SARIF into Code Scanning. This is the canonical behaviour #159's title intended,
and it satisfies the gate ("All workflow staleness checks passed" locally).

Also harden must-check.sh: portable `[[:space:]]` instead of the GNU-only `\s`,
and quote `exit "$fail"`.

Verified: check-workflow-staleness.sh passes; scorecard.yml YAML valid;
must-check exit 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172RBMz3qYjb1ttzD2i7RNh
@sonarqubecloud

sonarqubecloud Bot commented Jul 1, 2026

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath marked this pull request as ready for review July 1, 2026 12:53
@hyperpolymath
hyperpolymath merged commit 986a0ad into main Jul 1, 2026
30 of 32 checks passed
@hyperpolymath
hyperpolymath deleted the claude/neurophone-repo-setup-envzix branch July 1, 2026 12:53
hyperpolymath added a commit that referenced this pull request Jul 1, 2026
…gfault (#163)

## Summary

Fixes the **recurring `rust-ci / Coverage (tarpaulin + codecov)` red**
(failed on #161,
#162, …) with a **locally-verified** repo-side change.

**Root cause:** the standards rust-ci reusable runs `cargo tarpaulin
--out Xml` with the
default **ptrace** engine, which **segfaults** on the CI runners while
instrumenting the
property-test binary (`"Failed to run tests: A segfault occurred while
executing tests"`).
It's a tarpaulin instrumentation flake — the suite passes under `cargo
test`, and the
ptrace engine doesn't even reproduce the segfault locally.

**Fix:** `tarpaulin.toml` selecting the **LLVM (source-based) engine**,
which avoids
ptrace entirely. The reusable's `cargo tarpaulin --out Xml` reads this
`[default]`
profile, so **no standards-reusable change is needed**.

**Verified locally** (I installed tarpaulin and reproduced the setup):
- default engine locally → passes (segfault is CI-runner-specific);
- `[default] engine = "Llvm"` + `cargo tarpaulin --out Xml` → activates
`LLVM_PROFILE_FILE` coverage across 26 test binaries, exits 0, writes a
valid
  `cobertura.xml`.
- Note: the value must be capitalized `"Llvm"` — serde is
case-sensitive; lowercase
  silently falls back to ptrace.

This clears the last **repo-side-fixable** CI red. Remaining reds are
genuinely external:
`governance / Validate Hypatia Baseline` is pre-existing **#41 debt**
(needs the hypatia
CLI, out of session scope, or a baseline-regen decision), which the
owner has merged past.

## FLAGS (unchanged)
- `gossamer` + `conative-gating` still 403-blocked → **#83 / #103
staged** until added to
  the environment's repo scope.
- OPEN proof obligations 1.1 / 1.2 (formal) / 3.2 remain honestly
staged.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_0172RBMz3qYjb1ttzD2i7RNh

---
_Generated by [Claude
Code](https://claude.ai/code/session_0172RBMz3qYjb1ttzD2i7RNh)_

Co-authored-by: Claude <noreply@anthropic.com>
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.

2 participants