ci: adopt canonical skill template#87
Conversation
Drift-enforced canonical CI with explicit per-call-site permissions. CodeQL via default setup. Signed-off-by: Sebastian Mendel <github@sebastianmendel.de>
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
Dependency ReviewThe following issues were found:
License Issues.github/workflows/scorecard.yml
.github/workflows/security.yml
OpenSSF Scorecard
Scanned Files
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #87 +/- ##
=========================================
Coverage 66.71% 66.71%
Complexity 807 807
=========================================
Files 45 45
Lines 2289 2289
=========================================
Hits 1527 1527
Misses 762 762
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…ositive unlink SAST This repo is a PHP composer plugin, not a skill repo. Re-scope the .github/ governance from the skill template to the php-module template: - Remove skill-only workflows (eval-validate, harness-verify, lint). - Sync security.yml, scorecard.yml, check-template-drift.yml and template.yaml byte-identically from netresearch/.github templates/php-module/. dependabot.yml, labeler.yml and auto-merge-deps.yml were already byte-identical. - Keep the repo's own ci.yml and release.yml (PHP test/lint/release). Add scoped Opengrep suppressions for 6 confirmed false-positive php.lang.security.unlink-use findings. Five are the safe atomic-write cleanup pattern (unlink of a freshly-created random-named temp file on rename failure); one is recursive cleanup of plugin-managed directory contents from directory iteration. None use untrusted input. Signed-off-by: Sebastian Mendel <github@sebastianmendel.de>
| if (!rename($tempPath, $agentsMdPath)) { | ||
| @unlink($tempPath); | ||
| // cleanup of our own freshly-created temp file (random name) on atomic-write rename failure; path is not user input | ||
| @unlink($tempPath); // nosemgrep: php.lang.security.unlink-use.unlink-use |
| if (!rename($temp, $path)) { | ||
| @unlink($temp); | ||
| // cleanup of our own freshly-created temp file (random name) on atomic-write rename failure; path is not user input | ||
| @unlink($temp); // nosemgrep: php.lang.security.unlink-use.unlink-use |
| if (!@rename($tempPath, $this->composerJsonPath)) { | ||
| @unlink($tempPath); | ||
| // cleanup of our own freshly-created temp file (random name) on atomic-write rename failure; path is not user input | ||
| @unlink($tempPath); // nosemgrep: php.lang.security.unlink-use.unlink-use |
| if (!rename($temp, $composerJsonPath)) { | ||
| @unlink($temp); | ||
| // cleanup of our own freshly-created temp file (random name) on atomic-write rename failure; path is not user input | ||
| @unlink($temp); // nosemgrep: php.lang.security.unlink-use.unlink-use |
| if (!rename($temp, $composerJsonPath)) { | ||
| @unlink($temp); | ||
| // cleanup of our own freshly-created temp file (random name) on atomic-write rename failure; path is not user input | ||
| @unlink($temp); // nosemgrep: php.lang.security.unlink-use.unlink-use |
| } | ||
| } elseif (file_exists($path) && !unlink($path)) { | ||
| // recursive cleanup of plugin-managed directory contents; path from directory iteration, not user input | ||
| } elseif (file_exists($path) && !unlink($path)) { // nosemgrep: php.lang.security.unlink-use.unlink-use |
Signed-off-by: Sebastian Mendel <github@sebastianmendel.de>
|


Migrate CI to the canonical
skilltemplate (netresearch/.github): explicit per-call-site permissions on every reusable, drift-enforced. CodeQL via default setup.