forked from alihaskar/pycharting
-
Notifications
You must be signed in to change notification settings - Fork 0
chore: update rhiza to v1.3.3 (the coupled remainder) #27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
tschm
wants to merge
3
commits into
rhiza_v1.3.3_bootstrap
Choose a base branch
from
rhiza_v1.3.3_20260817
base: rhiza_v1.3.3_bootstrap
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,2 +1,19 @@ | ||
| # Bandit configuration. This file — not the pre-commit hook's args — is the | ||
| # single source of truth for bandit's scope, because it is the only part any | ||
| # other runner can see. CodeFactor, IDE plugins and a contributor typing | ||
| # `bandit -r .` all read `.bandit` and none of them read our hook args, so | ||
| # scope kept in the args made every external analyser disagree with CI (#1493). | ||
| # | ||
| # Both spellings of each path are listed deliberately. Bandit matches an | ||
| # exclude entry against the path string it is handed, and that string depends on | ||
| # how it was invoked: a recursive `bandit -r .` discovers `./tests/foo.py`, | ||
| # whereas pre-commit passes `tests/foo.py`. So `./tests` alone silently covers | ||
| # only the recursive case and `tests` alone only the pre-commit case — a | ||
| # one-spelling list looks correct and half-works. Verified in | ||
| # tests/security/test_security_patterns.py, which runs bandit both ways. | ||
| # | ||
| # Note these are *added* to bandit's own defaults (.git, __pycache__, .tox, | ||
| # .eggs, …), so those need no repeating here. | ||
| [bandit] | ||
| exclude = tests,./tests,.rhiza/tests,./.rhiza/tests,.venv,./.venv | ||
| skips = B101 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,41 @@ | ||
| # This file is part of the jebel-quant/rhiza repository | ||
| # (https://github.com/jebel-quant/rhiza). | ||
| # | ||
| # Workflow: ClusterFuzzLite fuzzing | ||
| # | ||
| # Purpose: Run coverage-guided fuzzing for the repository's Python security | ||
| # parsing utilities. Pull requests run short code-change fuzzing, | ||
| # while main-branch pushes and the weekly schedule run batch fuzzing. | ||
| # | ||
| # Opt-in: fuzzing is OFF by default and very optional. Set the | ||
| # repository variable `FUZZING_ENABLED` to 'true' to run it (a | ||
| # .clusterfuzzlite/ config must also be present); otherwise the | ||
| # reusable workflow skips fuzzing (the run stays green). | ||
| # | ||
| # Thin stub: the fuzzing logic lives in the reusable workflow in | ||
| # jebel-quant/rhiza; this file only wires up the triggers. | ||
| # | ||
| # Trigger: Pull requests, pushes to main/master, weekly schedule, and manual | ||
| # dispatch. | ||
|
|
||
| name: "(RHIZA) FUZZING" | ||
|
|
||
| on: | ||
| pull_request: | ||
| branches: [ "main", "master" ] | ||
| push: | ||
| branches: [ "main", "master" ] | ||
| schedule: | ||
| - cron: '17 3 * * 6' | ||
| workflow_dispatch: | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| jobs: | ||
| fuzzing: | ||
| uses: jebel-quant/rhiza/.github/workflows/rhiza_fuzzing.yml@v1.3.3 | ||
| secrets: inherit | ||
| permissions: | ||
| contents: read | ||
| security-events: write # Upload fuzzing SARIF to code scanning |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| # This file is part of the jebel-quant/rhiza repository | ||
| # (https://github.com/jebel-quant/rhiza). | ||
| # | ||
| # Workflow: Mutation Testing | ||
| # | ||
| # Purpose: Measure test *assertion strength* with mutmut. 100% line/branch | ||
| # coverage proves code is executed, not that a wrong result would be | ||
| # caught; surviving mutants reveal assertions that are too weak. | ||
| # | ||
| # Opt-in: mutation testing is OFF by default and very optional. Set the | ||
| # repository variable `MUTATION_ENABLED` to 'true' to run it; otherwise | ||
| # the reusable workflow skips the mutation job (the run stays green). | ||
| # | ||
| # Enforced gate (when enabled): mutation runs are required and fail when | ||
| # mutants survive (100% mutation score threshold in the reusable | ||
| # workflow). | ||
| # | ||
| # Thin stub: the mutation logic and the opt-in gate live in the | ||
| # reusable workflow in jebel-quant/rhiza; this file only wires up the | ||
| # triggers. | ||
| # | ||
| # Published mutation badge URL (when enabled): | ||
| # https://<org>.github.io/<repo>/mutation-badge.svg | ||
| # | ||
| # Trigger: Weekly schedule, manual dispatch, and pull_request so mutation | ||
| # testing is included in PR CI. | ||
|
|
||
| name: "(RHIZA) MUTATION" | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| on: | ||
| pull_request: | ||
| schedule: | ||
| - cron: "0 9 * * 1" # Monday 09:00 UTC (after the rhiza weekly job at 08:00) | ||
| workflow_dispatch: | ||
|
|
||
| jobs: | ||
| mutation: | ||
| # Opt-in gate: mutation testing is OFF by default. The job only runs when | ||
| # this repo sets the `MUTATION_ENABLED` variable to 'true'. Gating here in | ||
| # the caller keeps it optional regardless of the pinned reusable workflow. | ||
| if: ${{ vars.MUTATION_ENABLED == 'true' }} | ||
| uses: jebel-quant/rhiza/.github/workflows/rhiza_mutation.yml@v1.3.3 | ||
| secrets: inherit | ||
| permissions: | ||
| contents: read | ||
| pages: write # publish-mutation-badge deploys the badge to Pages | ||
| id-token: write # publish-mutation-badge needs OIDC for the Pages deploy |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift
🧩 Analysis chain
🏁 Script executed:
Repository: tschm/pycharting
Length of output: 2420
🏁 Script executed:
Repository: tschm/pycharting
Length of output: 4341
🌐 Web query:
GitHub Actions reusable workflows secrets inherit workflow_call declared secrets behavior💡 Result:
In GitHub Actions, secrets are not automatically passed to reusable workflows; they must be explicitly provided by the caller [1][2]. There are two primary ways to do this: passing them by name (requiring them to be declared in the reusable workflow) or using the
secrets: inheritkeyword [3][4]. When you usesecrets: inheritin your caller workflow, all secrets available to the calling workflow (including organization, repository, and environment secrets) are implicitly passed to the reusable workflow [3][5]. The behavior regardingon.workflow_calldeclaration andsecrets: inheritis as follows: 1. Declaration inon.workflow_call: Normally, for a reusable workflow to receive secrets passed by name, it must explicitly declare them underon.workflow_call.secrets[6][4]. If a caller attempts to pass a secret that is not declared in the callee, the workflow will fail to parse [6]. 2. Interaction withsecrets: inherit: Whensecrets: inheritis used, the requirement to explicitly declare secrets inon.workflow_call.secretsis bypassed [3]. You can reference secrets inside the reusable workflow even if they are not defined in theonkey [3]. 3. Important Considerations: * Environment Secrets: There is a known behavior where, even if a reusable workflow defines anenvironmentat the job level, environment-scoped secrets may resolve to empty strings unlesssecrets: inheritis also used by the caller [5][7]. * Transitive Passing: Secrets are only passed to directly called workflows. In a chain (e.g., A > B > C), secrets must be explicitly passed or inherited at each hop [3][8]. * Security:secrets: inheritprovides broad access. For scenarios requiring least privilege, explicit mapping of secrets remains the recommended practice [4][9]. If you omit both explicit mapping andsecrets: inherit, any attempt to access a secret within the reusable workflow will return an empty string, which can cause silent failures in processes relying on those secrets [4][1].Citations:
🏁 Script executed:
Repository: tschm/pycharting
Length of output: 15203
🏁 Script executed:
Repository: tschm/pycharting
Length of output: 11709
Pin Rhiza workflows and remove unrestricted secret inheritance.
v1.3.3resolves toac4d27b015edf70b47f0454b8251ac618f9d2bda. Pin all nine matching workflow calls, includingrhiza_weekly.yml, to this SHA.Replace
secrets: inheritwith explicit mappings for onlyGH_PATandUV_EXTRA_INDEX_URL. Benchmark, CI, and weekly already declare these inputs. Book, CodeQL, marimo, and mutation must declare them underon.workflow_call.secretsbefore the caller can pass them explicitly. Fuzzing and scorecard do not require caller secrets.🧰 Tools
🪛 zizmor (1.29.0)
[warning] 23-23: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow
(secrets-inherit)
📍 Affects 8 files
.github/workflows/rhiza_benchmark.yml#L23-L24(this comment).github/workflows/rhiza_book.yml#L32-L33.github/workflows/rhiza_ci.yml#L29-L30.github/workflows/rhiza_codeql.yml#L29-L30.github/workflows/rhiza_fuzzing.yml#L37-L38.github/workflows/rhiza_marimo.yml#L31-L32.github/workflows/rhiza_mutation.yml#L45-L46.github/workflows/rhiza_scorecard.yml#L39-L40🤖 Prompt for AI Agents
Source: Linters/SAST tools