Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions .github/workflows/actions.lock
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ workflows:
- 'dependabot/fetch-metadata@v3.1.0'
'.github/workflows/dogfood-gate.yml':
- 'actions/checkout@v7.0.1'
'.github/workflows/e2e.yml': []
'.github/workflows/estate-rules.yml':
- 'actions/checkout@v7.0.1'
'.github/workflows/governance.yml': []
Expand All @@ -30,7 +29,6 @@ workflows:
'.github/workflows/quality.yml':
- 'actions/checkout@v7.0.1'
- 'editorconfig-checker/action-editorconfig-checker@v2.2.0'
- 'trufflesecurity/trufflehog@v3.96.0'
'.github/workflows/release.yml':
- 'actions/checkout@v7.0.1'
- 'actions/upload-artifact@v7.0.1'
Expand Down Expand Up @@ -118,8 +116,3 @@ dependencies:
commit: 'sha1-3d0d9888cb7fd7b750713d6e236d1fcb99157228'
owner_id: 2242
repo_id: 204253808
'trufflesecurity/trufflehog@v3.96.0':
ref: 'v3.96.0'
commit: 'sha1-6f3c981e7b77f235fd2702dd74af25fc4b72bf11'
owner_id: 79229934
repo_id: 77726177
1 change: 0 additions & 1 deletion .github/workflows/boj-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ jobs:
trigger-boj:
runs-on: ubuntu-latest
timeout-minutes: 15
if: ${{ vars.BOJ_SERVER_URL != '' || secrets.BOJ_SERVER_URL != '' }}
steps:
- name: Checkout
uses: actions/checkout@v7.0.1
Expand Down
206 changes: 0 additions & 206 deletions .github/workflows/e2e.yml

This file was deleted.

10 changes: 2 additions & 8 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,6 @@ jobs:
- name: Check file permissions
run: |
find . -type f -perm /111 -name "*.sh" | head -10 || true
- name: Check for secrets
uses: trufflesecurity/trufflehog@v3.96.0
with:
path: ./
base: ${{ github.event.pull_request.base.sha || github.event.before }}
head: ${{ github.sha }}
continue-on-error: true
- name: Check TODO/FIXME
run: |
echo "=== TODOs ==="
Expand All @@ -42,7 +35,8 @@ jobs:
find . -type f -size +1M -not -path "./.git/*" | head -10 || echo "No large files"
- name: EditorConfig check
uses: editorconfig-checker/action-editorconfig-checker@v2.2.0
continue-on-error: true
- name: Gate falsifiability canaries (R10)
run: bash scripts/test-gate-falsifiability.sh
docs:
runs-on: ubuntu-latest
timeout-minutes: 15
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/security-policy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,17 @@ jobs:
# Block MD5/SHA1 for security (allow for checksums/caching)
WEAK_CRYPTO=$(grep -rE 'md5\(|sha1\(' --include="*.py" --include="*.rb" --include="*.js" --include="*.ts" --include="*.go" --include="*.rs" . 2>/dev/null | grep -v 'checksum\|cache\|test\|spec' | head -5 || true)
if [ -n "$WEAK_CRYPTO" ]; then
echo "⚠️ Weak crypto (MD5/SHA1) detected. Use SHA256+ for security:"
echo "❌ Weak crypto (MD5/SHA1) detected. Use SHA256+ for security:"
echo "$WEAK_CRYPTO"
FAILED=true
fi

# Block HTTP URLs (except localhost)
HTTP_URLS=$(grep -rE 'http://[^l][^o][^c]' --include="*.py" --include="*.js" --include="*.ts" --include="*.go" --include="*.rs" --include="*.yaml" --include="*.yml" . 2>/dev/null | grep -v 'localhost\|127.0.0.1\|example\|test\|spec' | head -5 || true)
if [ -n "$HTTP_URLS" ]; then
echo "⚠️ HTTP URLs found. Use HTTPS:"
echo "❌ HTTP URLs found. Use HTTPS:"
echo "$HTTP_URLS"
FAILED=true
fi

# Block hardcoded secrets patterns
Expand Down
27 changes: 19 additions & 8 deletions .github/workflows/static-analysis-gate.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
# SPDX-License-Identifier: MPL-2.0
# This workflow is managed by gh actions-lock.
# Static Analysis Gate β€” Required by branch protection rules.
# Static analysis β€” advisory CHECK, deliberately NOT a blocking gate.
#
# Tier: 🟑 CHECK. It was labelled πŸ”΄ Gate for 132 runs and never once failed,
# because it cannot: it skips when its tools are absent, pipes findings through
# `|| true`, and carries continue-on-error. Two honest resolutions existed β€”
# make it able to fail, or stop calling it a gate. The second is correct here:
# panic-attack has a known false-positive problem (panic-attack#171), much of it
# firing on tests and benches rather than shipping code, so blocking merges on
# it would train people to bypass the gate. Advisory is what it actually is.
#
# It was also NOT in any ruleset despite the old header claiming otherwise, so
# renaming it cannot strand a required context.
# Runs panic-attack and hypatia, deposits findings for gitbot-fleet learning.
name: "πŸ”΄ Gate: Static analysis"
name: "🟑 CHECK: Static analysis"
on:
pull_request:
branches: ['**']
Expand Down Expand Up @@ -33,7 +44,7 @@ jobs:
chmod +x /usr/local/bin/panic-attack
echo "installed=true" >> "$GITHUB_OUTPUT"
else
echo "::notice::panic-attack binary not available β€” skipping assail"
echo "::warning::panic-attack binary NOT AVAILABLE β€” assail DID NOT RUN. Empty findings below mean "not scanned", not "clean"."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ’‘ Quality: Nested double quotes collapse in warning strings

The echo strings embed unescaped double quotes inside a double-quoted argument, e.g. mean "not scanned", not "clean". Bash concatenates the fragments and strips the inner quotes, so the emphasis quotes vanish from the emitted ::warning:: text (three occurrences: assail, Hypatia, Patch Bridge steps). It does not break the workflow, only the intended rendering. Escape them (mean "not scanned") or use single quotes for the inner emphasis.

Was this helpful? React with πŸ‘ / πŸ‘Ž

echo "installed=false" >> "$GITHUB_OUTPUT"
fi
- name: Run panic-attack assail
Expand Down Expand Up @@ -95,7 +106,7 @@ jobs:
echo "[]" > panic-attack-findings.json
echo "## panic-attack assail" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "Skipped: panic-attack not available in this environment." >> "$GITHUB_STEP_SUMMARY"
echo "**DID NOT RUN** β€” panic-attack was not available in this environment. The empty result is absence of evidence, not evidence of absence." >> "$GITHUB_STEP_SUMMARY"
- name: Upload panic-attack findings
uses: actions/upload-artifact@v7.0.1
with:
Expand Down Expand Up @@ -140,7 +151,7 @@ jobs:
fi
echo "ready=true" >> "$GITHUB_OUTPUT"
else
echo "::notice::Hypatia scanner not available β€” skipping scan"
echo "::warning::Hypatia scanner NOT AVAILABLE β€” scan DID NOT RUN. Empty findings below mean "not scanned", not "clean"."
echo "ready=false" >> "$GITHUB_OUTPUT"
fi
- name: Run Hypatia scan
Expand Down Expand Up @@ -199,7 +210,7 @@ jobs:
echo "[]" > hypatia-findings.json
echo "## Hypatia Scan" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "Skipped: Hypatia scanner not available in this environment." >> "$GITHUB_STEP_SUMMARY"
echo "**DID NOT RUN** β€” the Hypatia scanner was not available in this environment. The empty result is absence of evidence, not evidence of absence." >> "$GITHUB_STEP_SUMMARY"
- name: Upload hypatia findings
uses: actions/upload-artifact@v7.0.1
with:
Expand Down Expand Up @@ -232,7 +243,7 @@ jobs:
chmod +x /usr/local/bin/panic-attack
echo "installed=true" >> "$GITHUB_OUTPUT"
else
echo "::notice::panic-attack binary not available β€” skipping Patch Bridge"
echo "::warning::panic-attack binary NOT AVAILABLE β€” Patch Bridge DID NOT RUN. An empty CVE report below means "not triaged", not "no CVEs"."
echo "installed=false" >> "$GITHUB_OUTPUT"
fi
- name: Run Patch Bridge triage
Expand Down Expand Up @@ -280,7 +291,7 @@ jobs:
echo '{"cves":[],"mitigated":0,"unmitigable":0,"concatenative":0,"informational":0}' > bridge-report.json
echo "## Patch Bridge CVE Triage" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "Skipped: panic-attack not available in this environment." >> "$GITHUB_STEP_SUMMARY"
echo "**DID NOT RUN** β€” panic-attack was not available in this environment. The empty result is absence of evidence, not evidence of absence." >> "$GITHUB_STEP_SUMMARY"
- name: Upload bridge report
uses: actions/upload-artifact@v7.0.1
with:
Expand Down
33 changes: 1 addition & 32 deletions .github/workflows/wellknown-enforcement.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,38 +25,7 @@ jobs:
steps:
- uses: actions/checkout@v7.0.1
- name: RFC 9116 security.txt validation
run: |
SECTXT=""
[ -f ".well-known/security.txt" ] && SECTXT=".well-known/security.txt"
[ -f "security.txt" ] && SECTXT="security.txt"

if [ -z "$SECTXT" ]; then
echo "::error::No security.txt found β€” required for OpenSSF Best Practices. See https://github.com/hyperpolymath/well-known-ecosystem"
exit 1
fi

# Required: Contact
grep -q "^Contact:" "$SECTXT" || { echo "::error::Missing Contact field"; exit 1; }

# Required: Expires
if ! grep -q "^Expires:" "$SECTXT"; then
echo "::error::Missing Expires field"
exit 1
fi

# Check expiry
EXPIRES=$(grep "^Expires:" "$SECTXT" | cut -d: -f2- | tr -d ' ' | head -1)
if date -d "$EXPIRES" > /dev/null 2>&1; then
DAYS=$(( ($(date -d "$EXPIRES" +%s) - $(date +%s)) / 86400 ))
if [ $DAYS -lt 0 ]; then
echo "::error::security.txt EXPIRED"
exit 1
elif [ $DAYS -lt 30 ]; then
echo "::warning::security.txt expires in $DAYS days"
else
echo "βœ… security.txt valid ($DAYS days)"
fi
fi
run: bash scripts/check-security-txt.sh .
- name: RSR well-known compliance
run: |
MISSING=""
Expand Down
Loading
Loading