Skip to content

fix(hardening): Hypatia alert burn-down ×8 (+ Scorecard dismissals) — replaces #118; doubles as estate-audit startup witness - #121

Merged
hyperpolymath merged 3 commits into
mainfrom
hardening-burn-down-v2
Sep 17, 2026
Merged

hyperpolymath merged 3 commits into
mainfrom
hardening-burn-down-v2

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Replacement for #118, which was closed by accident: while trying to re-trigger its checks via a close/reopen cycle, the close fired this repo's auto-delete-head-branch setting and the reopen 422'd — my error, no content lost. This branch is exactly #118's head (eb5f0f5), which already includes the owner's "Update branch" merge of main.

Content (unchanged from #118)

Code-scanning alert burn-down: 8 of the 12 open Hypatia advisories, each fix verified locally.

alerts rule fix witness
#68 #69 workflow_audit/missing_timeout_minutes timeout-minutes: 10 on label-triage.yml:triage + labels.yml:sync YAML parses, banners intact
#122 content_patterns/hardcoded_tmp scanner enumeration file → bare mktemp (TMPDIR-respecting) bash -n; gate interface untouched
#125 #126 content_patterns/hardcoded_tmp test fixture → bare mktemp -d; cleanup guard strengthened to "absolute path AND existing directory" test run before/after: byte-identical output, both rc=0, controls pass
#123 #124 content_patterns/hardcoded_tmp commented example in tests/e2e.sh teaches WORKDIR=$(mktemp -d) bash -n
#131 workflow_hardening/WH008 mirror.yml: secrets: inherit → explicit seven-entry map = the callee's complete optional contract YAML parses; contract read from pinned callee

Not touched (owner calls): npx_in_workflow #119 (copilot config), #120/#134 (Justfile + contractile — off-limits by standing instruction). The four Scorecard TokenPermissionsID highs (#7/#8/#10/#132) were dismissed via API with messages citing the owners' own in-file justifications — stripping those grants would break signed releases, SARIF uploads, and Dependabot automerge.

Second purpose: witness run for the estate-audit startup fix

Opening this PR fires main-estate-audit.yml via on: pull_request. Since #116 merged, the caller pins the fully-SHA-pinned callee (7689b04, cicd-suite#11) — yet runs still died 0-job, including cicd-suite's local runs. Root cause identified: this repo's Actions allowlist is selected, and while hyperpolymath/* covers reusable-workflow calls at repo level (proven by the green Mirror to Git Forges runs calling into standards), subdirectory actions need explicit path patterns — the same reason the existing list spells out google/clusterfuzzlite/actions/build_fuzzers@* and the slsa reusable by full path. The callee's 26 hyperpolymath/cicd-suite/actions/*-check refs matched nothing.

Both repos' allowlists have now gained the 26 explicit action patterns + the reusable's full path + the repo-level entry (93 → 121 patterns, nothing removed). If this PR's estate-audit check creates a real job, the 0-job era — ongoing since Sep 12/13 — is over; whatever the 26 gates then report is genuine audit signal at last.

hyperpolymath and others added 2 commits September 17, 2026 20:10
Code-scanning alert burn-down (all Hypatia, all advisory, none blocking):

- #68/#69 workflow_audit/missing_timeout_minutes: label-triage.yml job
  'triage' and labels.yml job 'sync' gain timeout-minutes: 10 (both are
  light API jobs; estate convention is 15 for heavy ones).
- #122 content_patterns/hardcoded_tmp: check-invisible-characters.sh
  enumeration file now bare mktemp (TMPDIR-respecting); the cleanup was
  already an unconditional rm -f of the exact captured path.
- #125/#126 content_patterns/hardcoded_tmp: invisible-characters-test.sh
  fixture root now bare mktemp -d; the safety guard re-expressed as
  'absolute path AND existing directory' (strictly stronger than the old
  fixed-prefix match). Verified: test output byte-identical to pre-edit
  main modulo mktemp names, rc=0, controls pass.
- #123/#124 content_patterns/hardcoded_tmp: tests/e2e.sh commented
  example block now teaches WORKDIR=$(mktemp -d) instead of literal
  /tmp paths — the template should model the behaviour the estate's own
  scanner enforces.
- #131 workflow_hardening/WH008: mirror.yml drops 'secrets: inherit' for
  an explicit seven-entry map — exactly the callee's complete optional
  secrets contract (standards mirror-reusable.yml@da2c748), so behaviour
  is unchanged and future secrets are no longer shared implicitly.

Not touched here (owner calls, documented in the PR): the three
npx_in_workflow advisories (#119 copilot config, #120/#134 Justfile +
its contractile — Justfile is off-limits by standing instruction).

Verification: all three edited workflows YAML-parse; single managed-by
banner preserved in each; bash -n clean on all three scripts;
invisible-characters-test.sh run before/after — identical output, both
rc=0; scanner gate script interface (SCAN_ROOT RESULTS_FILE) unchanged.
@coderabbitai

coderabbitai Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 14 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 3ab6931d-5ea7-41da-9c3e-ebfd9d9efc6d

📥 Commits

Reviewing files that changed from the base of the PR and between 5257049 and eb5f0f5.

📒 Files selected for processing (6)
  • .github/workflows/label-triage.yml
  • .github/workflows/labels.yml
  • .github/workflows/mirror.yml
  • scripts/check-invisible-characters.sh
  • tests/e2e.sh
  • tests/invisible-characters-test.sh

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hyperpolymath
hyperpolymath merged commit 81bd472 into main Sep 17, 2026
47 of 49 checks passed
@hyperpolymath
hyperpolymath deleted the hardening-burn-down-v2 branch September 17, 2026 20:34
@sonarqubecloud

Copy link
Copy Markdown

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