ci: fix reviewer models — sonnet uses Anthropic, gpt uses GPT-5 #44

Merged
rodin merged 2 commits from fix/sonnet-reviewer into main 2026-05-05 04:20:54 +00:00
Owner

The matrix was wrong: "sonnet" was running GPT-5 and "gpt" was running GPT-4.1.

Now:

  • sonnet → Claude Sonnet 4.6 via HAI Anthropic endpoint
  • gpt → GPT-5 via HAI OpenAI endpoint
  • security → GPT-5 via HAI OpenAI endpoint

Each matrix entry specifies its own provider and base_url. This exercises the Anthropic code path in CI for the first time.

The matrix was wrong: "sonnet" was running GPT-5 and "gpt" was running GPT-4.1. Now: - sonnet → Claude Sonnet 4.6 via HAI Anthropic endpoint - gpt → GPT-5 via HAI OpenAI endpoint - security → GPT-5 via HAI OpenAI endpoint Each matrix entry specifies its own provider and base_url. This exercises the Anthropic code path in CI for the first time.
sonnet-review-bot approved these changes 2026-05-03 04:04:40 +00:00
Dismissed
sonnet-review-bot left a comment
First-time contributor

Sonnet Review

Summary

This CI configuration fix correctly reassigns models to their proper providers: sonnet now uses Claude Sonnet 4.6 via the Anthropic endpoint, and gpt/security use GPT-5 via the OpenAI endpoint. The change also moves base_url from a shared secret to per-matrix-entry values, which is the right approach for supporting multiple providers. CI passes.

Recommendation

APPROVE — The change is straightforward and correct. The previous configuration had a clear bug (sonnet running GPT-5, gpt running GPT-4.1), and this fix resolves it by properly associating each matrix entry with its provider, base URL, and model. Moving LLM_BASE_URL from a shared secret to per-matrix configuration is the right architectural decision since different providers require different endpoints. No issues found.


Review by sonnet


Evaluated against 50cefd78

# Sonnet Review ## Summary This CI configuration fix correctly reassigns models to their proper providers: sonnet now uses Claude Sonnet 4.6 via the Anthropic endpoint, and gpt/security use GPT-5 via the OpenAI endpoint. The change also moves base_url from a shared secret to per-matrix-entry values, which is the right approach for supporting multiple providers. CI passes. ## Recommendation **APPROVE** — The change is straightforward and correct. The previous configuration had a clear bug (sonnet running GPT-5, gpt running GPT-4.1), and this fix resolves it by properly associating each matrix entry with its provider, base URL, and model. Moving LLM_BASE_URL from a shared secret to per-matrix configuration is the right architectural decision since different providers require different endpoints. No issues found. --- *Review by sonnet* <!-- review-bot:sonnet --> --- *Evaluated against 50cefd78*
gpt-review-bot approved these changes 2026-05-03 04:05:07 +00:00
Dismissed
gpt-review-bot left a comment
First-time contributor

Original review

Supersededsee current review for up-to-date findings.

Previous findings (commit 50cefd78)

Gpt Review

Summary

The workflow changes correctly realign the reviewer matrix so 'sonnet' uses Anthropic and 'gpt'/'security' use OpenAI, and add per-matrix provider/base_url wiring. The environment variable updates look consistent with the matrix fields, and CI has passed.

Findings

# Severity File Line Finding
1 [MINOR] .gitea/workflows/ci.yml 32 Hardcoded base_url includes an internal IP address. Consider moving base URLs to repository/environment secrets or variables to avoid exposing infrastructure details and ease environment changes.
2 [NIT] .gitea/workflows/ci.yml 58 LLM_BASE_URL now comes from matrix.base_url; if a secrets-based LLM_BASE_URL was previously used, ensure any obsolete secret or documentation references are cleaned up to prevent confusion.

Recommendation

APPROVE — Overall the changes are sound: the matrix entries now specify their own provider and base_url, and the env values correctly pull from the matrix (including LLM_PROVIDER). This should exercise both Anthropic and OpenAI code paths as intended, and CI confirms the workflow executes. Consider moving the base URLs out of the workflow into repository/environment secrets or variables to avoid hardcoding internal IPs and to simplify updates across environments, and remove or update any no-longer-used secrets or docs related to the old LLM_BASE_URL source.


Review by gpt


Evaluated against 50cefd78

~~Original review~~ **Superseded** — [see current review](https://gitea.weiker.me/rodin/review-bot/pulls/44#pullrequestreview-826) for up-to-date findings. <details><summary>Previous findings (commit 50cefd78)</summary> # Gpt Review ## Summary The workflow changes correctly realign the reviewer matrix so 'sonnet' uses Anthropic and 'gpt'/'security' use OpenAI, and add per-matrix provider/base_url wiring. The environment variable updates look consistent with the matrix fields, and CI has passed. ## Findings | # | Severity | File | Line | Finding | |---|----------|------|------|--------| | 1 | [MINOR] | `.gitea/workflows/ci.yml` | 32 | Hardcoded base_url includes an internal IP address. Consider moving base URLs to repository/environment secrets or variables to avoid exposing infrastructure details and ease environment changes. | | 2 | [NIT] | `.gitea/workflows/ci.yml` | 58 | LLM_BASE_URL now comes from matrix.base_url; if a secrets-based LLM_BASE_URL was previously used, ensure any obsolete secret or documentation references are cleaned up to prevent confusion. | ## Recommendation **APPROVE** — Overall the changes are sound: the matrix entries now specify their own provider and base_url, and the env values correctly pull from the matrix (including LLM_PROVIDER). This should exercise both Anthropic and OpenAI code paths as intended, and CI confirms the workflow executes. Consider moving the base URLs out of the workflow into repository/environment secrets or variables to avoid hardcoding internal IPs and to simplify updates across environments, and remove or update any no-longer-used secrets or docs related to the old LLM_BASE_URL source. --- *Review by gpt* <!-- review-bot:gpt --> --- *Evaluated against 50cefd78* </details> <!-- review-bot:gpt -->
@@ -30,2 +30,3 @@
token_secret: SONNET_REVIEW_TOKEN
model: gpt-5
provider: anthropic
base_url: http://100.86.77.84:6655/anthropic/v1
First-time contributor

[MINOR] Hardcoded base_url includes an internal IP address. Consider moving base URLs to repository/environment secrets or variables to avoid exposing infrastructure details and ease environment changes.

**[MINOR]** Hardcoded base_url includes an internal IP address. Consider moving base URLs to repository/environment secrets or variables to avoid exposing infrastructure details and ease environment changes.
@@ -50,3 +56,3 @@
REVIEWER_TOKEN: ${{ secrets[matrix.token_secret] }}
REVIEWER_NAME: ${{ matrix.name }}
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
LLM_BASE_URL: ${{ matrix.base_url }}
First-time contributor

[NIT] LLM_BASE_URL now comes from matrix.base_url; if a secrets-based LLM_BASE_URL was previously used, ensure any obsolete secret or documentation references are cleaned up to prevent confusion.

**[NIT]** LLM_BASE_URL now comes from matrix.base_url; if a secrets-based LLM_BASE_URL was previously used, ensure any obsolete secret or documentation references are cleaned up to prevent confusion.
security-review-bot requested review from security-review-bot 2026-05-03 04:05:39 +00:00
security-review-bot requested changes 2026-05-03 04:05:39 +00:00
Dismissed
security-review-bot left a comment
Collaborator

Security Review

Summary

The workflow fix correctly assigns models/providers but introduces significant security risks. The LLM endpoints are hardcoded to plain HTTP and moved out of secrets, risking exposure of API keys and internal infrastructure details.

Findings

# Severity File Line Finding
1 [MAJOR] .gitea/workflows/ci.yml 33 LLM base_url uses plain HTTP (http://100.86.77.84:6655/anthropic/v1) which will transmit the LLM_API_KEY and request contents in cleartext, risking secret and data exposure. All three base_url entries (Anthropic and OpenAI) are HTTP.
2 [MINOR] .gitea/workflows/ci.yml 55 LLM_BASE_URL now derives from the workflow matrix instead of a secret, increasing the risk that a PR modifying this workflow could redirect requests (and exfiltrate secrets) to an attacker-controlled host. Keeping the endpoint in a secret or protected environment reduces this risk.
3 [NIT] .gitea/workflows/ci.yml 33 Hardcoded internal IP (100.86.77.84) in the repository may disclose internal network details if the repo is public and reduces flexibility across environments.

Recommendation

REQUEST_CHANGES — Switch all LLM endpoints to HTTPS and ensure TLS validation is enforced by the review-bot. Avoid hardcoding service endpoints in the workflow; instead, restore LLM_BASE_URL to a repository or environment secret so PRs cannot redirect calls to arbitrary hosts. If multiple providers are needed, store provider-specific base URLs and API keys in distinct secrets (e.g., LLM_BASE_URL_OPENAI, LLM_BASE_URL_ANTHROPIC) and reference them securely. Also consider replacing the hardcoded IP with a DNS name managed via secrets or repository/environment settings to prevent internal information disclosure and improve portability.


Review by security


Evaluated against 50cefd78

# Security Review ## Summary The workflow fix correctly assigns models/providers but introduces significant security risks. The LLM endpoints are hardcoded to plain HTTP and moved out of secrets, risking exposure of API keys and internal infrastructure details. ## Findings | # | Severity | File | Line | Finding | |---|----------|------|------|--------| | 1 | [MAJOR] | `.gitea/workflows/ci.yml` | 33 | LLM base_url uses plain HTTP (http://100.86.77.84:6655/anthropic/v1) which will transmit the LLM_API_KEY and request contents in cleartext, risking secret and data exposure. All three base_url entries (Anthropic and OpenAI) are HTTP. | | 2 | [MINOR] | `.gitea/workflows/ci.yml` | 55 | LLM_BASE_URL now derives from the workflow matrix instead of a secret, increasing the risk that a PR modifying this workflow could redirect requests (and exfiltrate secrets) to an attacker-controlled host. Keeping the endpoint in a secret or protected environment reduces this risk. | | 3 | [NIT] | `.gitea/workflows/ci.yml` | 33 | Hardcoded internal IP (100.86.77.84) in the repository may disclose internal network details if the repo is public and reduces flexibility across environments. | ## Recommendation **REQUEST_CHANGES** — Switch all LLM endpoints to HTTPS and ensure TLS validation is enforced by the review-bot. Avoid hardcoding service endpoints in the workflow; instead, restore LLM_BASE_URL to a repository or environment secret so PRs cannot redirect calls to arbitrary hosts. If multiple providers are needed, store provider-specific base URLs and API keys in distinct secrets (e.g., LLM_BASE_URL_OPENAI, LLM_BASE_URL_ANTHROPIC) and reference them securely. Also consider replacing the hardcoded IP with a DNS name managed via secrets or repository/environment settings to prevent internal information disclosure and improve portability. --- *Review by security* <!-- review-bot:security --> --- *Evaluated against 50cefd78*
@@ -31,1 +31,3 @@
model: gpt-5
provider: anthropic
base_url: http://100.86.77.84:6655/anthropic/v1
model: claude-sonnet-4-6
Collaborator

[MAJOR] LLM base_url uses plain HTTP (http://100.86.77.84:6655/anthropic/v1) which will transmit the LLM_API_KEY and request contents in cleartext, risking secret and data exposure. All three base_url entries (Anthropic and OpenAI) are HTTP.

**[MAJOR]** LLM base_url uses plain HTTP (http://100.86.77.84:6655/anthropic/v1) which will transmit the LLM_API_KEY and request contents in cleartext, risking secret and data exposure. All three base_url entries (Anthropic and OpenAI) are HTTP.
Collaborator

[NIT] Hardcoded internal IP (100.86.77.84) in the repository may disclose internal network details if the repo is public and reduces flexibility across environments.

**[NIT]** Hardcoded internal IP (100.86.77.84) in the repository may disclose internal network details if the repo is public and reduces flexibility across environments.
@@ -49,9 +55,10 @@ jobs:
PR_NUMBER: ${{ github.event.pull_request.number }}
Collaborator

[MINOR] LLM_BASE_URL now derives from the workflow matrix instead of a secret, increasing the risk that a PR modifying this workflow could redirect requests (and exfiltrate secrets) to an attacker-controlled host. Keeping the endpoint in a secret or protected environment reduces this risk.

**[MINOR]** LLM_BASE_URL now derives from the workflow matrix instead of a secret, increasing the risk that a PR modifying this workflow could redirect requests (and exfiltrate secrets) to an attacker-controlled host. Keeping the endpoint in a secret or protected environment reduces this risk.
rodin added 1 commit 2026-05-03 04:06:12 +00:00
ci: fix reviewer models — sonnet uses Anthropic, gpt uses GPT-5
CI / test (pull_request) Successful in 14s
CI / review (http://100.86.77.84:6655/openai/v1, gpt-4.1-mini, gpt41-mini, openai, SONNET_REVIEW_TOKEN) (pull_request) Successful in 19s
CI / review (http://100.86.77.84:6655/openai/v1, gpt-4.1, gpt41, openai, SONNET_REVIEW_TOKEN) (pull_request) Successful in 22s
CI / review (http://100.86.77.84:6655/anthropic/v1, claude-sonnet-4-6, sonnet, anthropic, SONNET_REVIEW_TOKEN) (pull_request) Successful in 24s
CI / review (http://100.86.77.84:6655/openai/v1, gpt-5, gpt, openai, GPT_REVIEW_TOKEN) (pull_request) Successful in 1m14s
CI / review (http://100.86.77.84:6655/openai/v1, gpt-5, security, openai, SECURITY_REVIEW.md, SECURITY_REVIEW_TOKEN) (pull_request) Successful in 54s
CI / review (http://100.86.77.84:6655/openai/v1, gpt-5-mini, gpt5-mini, openai, SONNET_REVIEW_TOKEN) (pull_request) Successful in 55s
b4c994d0fa
The matrix was wrong: "sonnet" was running GPT-5 and "gpt" was running
GPT-4.1. Now:
- sonnet → Claude Sonnet 4.6 via HAI Anthropic endpoint
- gpt → GPT-5 via HAI OpenAI endpoint
- security → GPT-5 via HAI OpenAI endpoint

Each matrix entry specifies its own provider and base_url.
rodin force-pushed fix/sonnet-reviewer from 50cefd7840 to b4c994d0fa 2026-05-03 04:06:12 +00:00 Compare
sonnet-review-bot approved these changes 2026-05-03 04:06:47 +00:00
Dismissed
sonnet-review-bot left a comment
First-time contributor

Gpt41-mini Review

Summary

The PR correctly fixes the reviewer model matrix in the CI workflow, properly assigning each matrix entry its explicit provider, base_url, and model. The change aligns with the stated intent, enabling the use of Anthropic for sonnet and GPT-5 for gpt and security reviewers, and the CI has passed.

Findings

# Severity File Line Finding
1 [MINOR] .gitea/workflows/ci.yml 49 In the 'Run ${{ matrix.name }} review' step environment, the LLM_BASE_URL was corrected from referring to a secret to referencing the matrix.base_url, ensuring each job uses the appropriate base URL.
2 [MINOR] .gitea/workflows/ci.yml 49 Added LLM_PROVIDER environment variable to the review step to reflect the provider set in the matrix, ensuring consistency and correct provider usage at runtime.

Recommendation

APPROVE — Approve the PR as it fixes configuration inconsistencies in the CI workflow matrix correctly, enabling proper testing of Anthropic and OpenAI paths. The tests passed without error. The minor environment variable fixes enhance clarity and correctness of the CI environment setup.


Review by gpt41-mini


Evaluated against b4c994d0

# Gpt41-mini Review ## Summary The PR correctly fixes the reviewer model matrix in the CI workflow, properly assigning each matrix entry its explicit provider, base_url, and model. The change aligns with the stated intent, enabling the use of Anthropic for sonnet and GPT-5 for gpt and security reviewers, and the CI has passed. ## Findings | # | Severity | File | Line | Finding | |---|----------|------|------|--------| | 1 | [MINOR] | `.gitea/workflows/ci.yml` | 49 | In the 'Run ${{ matrix.name }} review' step environment, the LLM_BASE_URL was corrected from referring to a secret to referencing the matrix.base_url, ensuring each job uses the appropriate base URL. | | 2 | [MINOR] | `.gitea/workflows/ci.yml` | 49 | Added LLM_PROVIDER environment variable to the review step to reflect the provider set in the matrix, ensuring consistency and correct provider usage at runtime. | ## Recommendation **APPROVE** — Approve the PR as it fixes configuration inconsistencies in the CI workflow matrix correctly, enabling proper testing of Anthropic and OpenAI paths. The tests passed without error. The minor environment variable fixes enhance clarity and correctness of the CI environment setup. --- *Review by gpt41-mini* <!-- review-bot:gpt41-mini --> --- *Evaluated against b4c994d0*
@@ -35,0 +46,4 @@
provider: openai
base_url: http://100.86.77.84:6655/openai/v1
model: gpt-5-mini
- name: gpt41-mini
First-time contributor

[MINOR] In the 'Run ${{ matrix.name }} review' step environment, the LLM_BASE_URL was corrected from referring to a secret to referencing the matrix.base_url, ensuring each job uses the appropriate base URL.

**[MINOR]** In the 'Run ${{ matrix.name }} review' step environment, the LLM_BASE_URL was corrected from referring to a secret to referencing the matrix.base_url, ensuring each job uses the appropriate base URL.
First-time contributor

[MINOR] Added LLM_PROVIDER environment variable to the review step to reflect the provider set in the matrix, ensuring consistency and correct provider usage at runtime.

**[MINOR]** Added LLM_PROVIDER environment variable to the review step to reflect the provider set in the matrix, ensuring consistency and correct provider usage at runtime.
sonnet-review-bot approved these changes 2026-05-03 04:06:49 +00:00
Dismissed
sonnet-review-bot left a comment
First-time contributor

Gpt41 Review

Summary

This PR updates the CI review matrix to explicitly specify the correct model-provider mappings and aligns matrix properties with expected runtime environment variables. The changes are configuration-only with no code or logic changes.

Recommendation

APPROVE — The changes correct the reviewer matrix, making each job explicit in its provider, base_url, and model. This increases clarity and makes Anthropic Sonnet reviews appear in the matrix for the first time. The PR respects all conventions, does not introduce any technical risks, and the tests pass. No further action needed.


Review by gpt41


Evaluated against b4c994d0

# Gpt41 Review ## Summary This PR updates the CI review matrix to explicitly specify the correct model-provider mappings and aligns matrix properties with expected runtime environment variables. The changes are configuration-only with no code or logic changes. ## Recommendation **APPROVE** — The changes correct the reviewer matrix, making each job explicit in its provider, base_url, and model. This increases clarity and makes Anthropic Sonnet reviews appear in the matrix for the first time. The PR respects all conventions, does not introduce any technical risks, and the tests pass. No further action needed. --- *Review by gpt41* <!-- review-bot:gpt41 --> --- *Evaluated against b4c994d0*
sonnet-review-bot approved these changes 2026-05-03 04:06:52 +00:00
Dismissed
sonnet-review-bot left a comment
First-time contributor

Sonnet Review

Summary

This CI configuration fix correctly routes each matrix entry to the right provider and model, replacing the previous broken setup where 'sonnet' was using GPT-5. The changes are straightforward and accurate.

Findings

# Severity File Line Finding
1 [MINOR] .gitea/workflows/ci.yml 44 The gpt41, gpt5-mini, and gpt41-mini matrix entries all use token_secret: SONNET_REVIEW_TOKEN rather than their own dedicated secrets or GPT_REVIEW_TOKEN. This appears intentional (sharing a token for auxiliary reviewers) but is worth confirming — if the Anthropic token is used to call an OpenAI endpoint it may fail depending on how the HAI proxy validates tokens.

Recommendation

APPROVE — The fix is correct and CI passes. The main change — giving each matrix entry its own provider, base_url, and model, and moving LLM_BASE_URL from a secret to a per-matrix value — is clean and well-structured. The only minor question is whether SONNET_REVIEW_TOKEN is intentionally reused for the gpt41/gpt5-mini/gpt41-mini entries (likely fine if the HAI proxy accepts any valid token regardless of provider), but this is a policy/ops question rather than a code correctness issue. Approve.


Review by sonnet


Evaluated against b4c994d0

# Sonnet Review ## Summary This CI configuration fix correctly routes each matrix entry to the right provider and model, replacing the previous broken setup where 'sonnet' was using GPT-5. The changes are straightforward and accurate. ## Findings | # | Severity | File | Line | Finding | |---|----------|------|------|--------| | 1 | [MINOR] | `.gitea/workflows/ci.yml` | 44 | The gpt41, gpt5-mini, and gpt41-mini matrix entries all use token_secret: SONNET_REVIEW_TOKEN rather than their own dedicated secrets or GPT_REVIEW_TOKEN. This appears intentional (sharing a token for auxiliary reviewers) but is worth confirming — if the Anthropic token is used to call an OpenAI endpoint it may fail depending on how the HAI proxy validates tokens. | ## Recommendation **APPROVE** — The fix is correct and CI passes. The main change — giving each matrix entry its own provider, base_url, and model, and moving LLM_BASE_URL from a secret to a per-matrix value — is clean and well-structured. The only minor question is whether SONNET_REVIEW_TOKEN is intentionally reused for the gpt41/gpt5-mini/gpt41-mini entries (likely fine if the HAI proxy accepts any valid token regardless of provider), but this is a policy/ops question rather than a code correctness issue. Approve. --- *Review by sonnet* <!-- review-bot:sonnet --> --- *Evaluated against b4c994d0*
@@ -34,1 +41,4 @@
provider: openai
base_url: http://100.86.77.84:6655/openai/v1
model: gpt-4.1
- name: gpt5-mini
First-time contributor

[MINOR] The gpt41, gpt5-mini, and gpt41-mini matrix entries all use token_secret: SONNET_REVIEW_TOKEN rather than their own dedicated secrets or GPT_REVIEW_TOKEN. This appears intentional (sharing a token for auxiliary reviewers) but is worth confirming — if the Anthropic token is used to call an OpenAI endpoint it may fail depending on how the HAI proxy validates tokens.

**[MINOR]** The gpt41, gpt5-mini, and gpt41-mini matrix entries all use token_secret: SONNET_REVIEW_TOKEN rather than their own dedicated secrets or GPT_REVIEW_TOKEN. This appears intentional (sharing a token for auxiliary reviewers) but is worth confirming — if the Anthropic token is used to call an OpenAI endpoint it may fail depending on how the HAI proxy validates tokens.
gpt-review-bot approved these changes 2026-05-03 04:07:42 +00:00
Dismissed
gpt-review-bot left a comment
First-time contributor

Gpt Review

Summary

The workflow changes correctly map reviewers to their intended models and providers, add per-matrix base URLs and providers, and adjust environment variables accordingly. CI has passed, and the YAML appears valid and consistent.

Findings

# Severity File Line Finding
1 [MINOR] .gitea/workflows/ci.yml 40 Matrix entries gpt41, gpt5-mini, and gpt41-mini use token_secret SONNET_REVIEW_TOKEN despite being OpenAI-based reviewers. Consider using a distinct reviewer token (e.g., GPT_REVIEW_TOKEN or dedicated tokens) to avoid confusing identity/permission scopes.
2 [MINOR] .gitea/workflows/ci.yml 32 Hardcoded base_url values use a plaintext HTTP internal IP (e.g., http://100.86.77.84:6655/...). Consider moving these to secrets or repository variables and preferring HTTPS to avoid exposing internal infra details and to improve transport security.

Recommendation

APPROVE — The changes align reviewers to the correct models/providers and ensure the Anthropic code path is exercised in CI. Environment variables are updated to source provider and base_url from the matrix, which improves flexibility. CI passing indicates functional correctness. As minor improvements, consider using distinct reviewer tokens for the added OpenAI-based reviewers to avoid potential identity confusion, and move hardcoded base URLs to secrets or repository variables (and use HTTPS where possible). Otherwise, the PR looks good to merge.


Review by gpt


Evaluated against b4c994d0

# Gpt Review ## Summary The workflow changes correctly map reviewers to their intended models and providers, add per-matrix base URLs and providers, and adjust environment variables accordingly. CI has passed, and the YAML appears valid and consistent. ## Findings | # | Severity | File | Line | Finding | |---|----------|------|------|--------| | 1 | [MINOR] | `.gitea/workflows/ci.yml` | 40 | Matrix entries gpt41, gpt5-mini, and gpt41-mini use token_secret SONNET_REVIEW_TOKEN despite being OpenAI-based reviewers. Consider using a distinct reviewer token (e.g., GPT_REVIEW_TOKEN or dedicated tokens) to avoid confusing identity/permission scopes. | | 2 | [MINOR] | `.gitea/workflows/ci.yml` | 32 | Hardcoded base_url values use a plaintext HTTP internal IP (e.g., http://100.86.77.84:6655/...). Consider moving these to secrets or repository variables and preferring HTTPS to avoid exposing internal infra details and to improve transport security. | ## Recommendation **APPROVE** — The changes align reviewers to the correct models/providers and ensure the Anthropic code path is exercised in CI. Environment variables are updated to source provider and base_url from the matrix, which improves flexibility. CI passing indicates functional correctness. As minor improvements, consider using distinct reviewer tokens for the added OpenAI-based reviewers to avoid potential identity confusion, and move hardcoded base URLs to secrets or repository variables (and use HTTPS where possible). Otherwise, the PR looks good to merge. --- *Review by gpt* <!-- review-bot:gpt --> --- *Evaluated against b4c994d0*
@@ -30,2 +30,3 @@
token_secret: SONNET_REVIEW_TOKEN
model: gpt-5
provider: anthropic
base_url: http://100.86.77.84:6655/anthropic/v1
First-time contributor

[MINOR] Hardcoded base_url values use a plaintext HTTP internal IP (e.g., http://100.86.77.84:6655/...). Consider moving these to secrets or repository variables and preferring HTTPS to avoid exposing internal infra details and to improve transport security.

**[MINOR]** Hardcoded base_url values use a plaintext HTTP internal IP (e.g., http://100.86.77.84:6655/...). Consider moving these to secrets or repository variables and preferring HTTPS to avoid exposing internal infra details and to improve transport security.
@@ -34,0 +37,4 @@
base_url: http://100.86.77.84:6655/openai/v1
model: gpt-5
- name: gpt41
token_secret: SONNET_REVIEW_TOKEN
First-time contributor

[MINOR] Matrix entries gpt41, gpt5-mini, and gpt41-mini use token_secret SONNET_REVIEW_TOKEN despite being OpenAI-based reviewers. Consider using a distinct reviewer token (e.g., GPT_REVIEW_TOKEN or dedicated tokens) to avoid confusing identity/permission scopes.

**[MINOR]** Matrix entries gpt41, gpt5-mini, and gpt41-mini use token_secret SONNET_REVIEW_TOKEN despite being OpenAI-based reviewers. Consider using a distinct reviewer token (e.g., GPT_REVIEW_TOKEN or dedicated tokens) to avoid confusing identity/permission scopes.
security-review-bot requested review from security-review-bot 2026-05-03 04:07:43 +00:00
security-review-bot requested changes 2026-05-03 04:07:43 +00:00
Dismissed
security-review-bot left a comment
Collaborator

Security Review

Summary

While CI passed and the intent to exercise different providers is clear, the changes introduce a significant secret exfiltration risk by allowing the PR-controlled workflow to set the LLM endpoint. Additionally, the endpoints use plain HTTP and expose internal IPs, which are security hardening concerns.

Findings

# Severity File Line Finding
1 [MAJOR] .gitea/workflows/ci.yml 74 LLM_BASE_URL is now sourced from the PR-controlled matrix (matrix.base_url) instead of a repository secret, enabling an attacker to modify the workflow in a PR to redirect outbound requests (including secrets like LLM_API_KEY and REVIEWER_TOKEN) to an arbitrary endpoint. This is a classic supply-chain/secret exfiltration vector for CI workflows that run on pull_request events with secrets available.
2 [MINOR] .gitea/workflows/ci.yml 31 The configured LLM endpoints use HTTP (plaintext) rather than HTTPS (e.g., base_url: http://100.86.77.84:6655/...), risking interception of API keys and PR content in transit, even on internal networks.
3 [MINOR] .gitea/workflows/ci.yml 31 The workflow hardcodes internal IP addresses and ports in a repo file, which can disclose internal network topology if the repository is public. Prefer using secrets or environment variables to avoid exposing infrastructure details.

Recommendation

REQUEST_CHANGES — Address the major secret exfiltration risk by ensuring untrusted PRs cannot control destinations that receive secrets. Concrete options: (1) Revert LLM_BASE_URL to come from a protected repository/organization secret (e.g., secrets.LLM_BASE_URL) or an Actions environment variable set outside the PR; do not allow it to be overridden by matrix values from the workflow file. (2) Restrict the review job so it does not run with secrets on pull_request from forks; consider running the review on a trusted context (e.g., after merge, or via a protected manual dispatch) or require environment approval before secrets are injected. (3) Implement host allowlisting in review-bot (validate LLM_BASE_URL against an expected set) so even if the workflow is altered, outbound requests are only made to approved endpoints.
Additionally, switch the base_url endpoints to HTTPS to prevent plaintext credential transport, and avoid committing internal IPs to the repository by moving these endpoints to secrets or runner-level configuration. These changes will mitigate both the immediate exfiltration vector and harden transport/security posture.


Review by security


Evaluated against b4c994d0

# Security Review ## Summary While CI passed and the intent to exercise different providers is clear, the changes introduce a significant secret exfiltration risk by allowing the PR-controlled workflow to set the LLM endpoint. Additionally, the endpoints use plain HTTP and expose internal IPs, which are security hardening concerns. ## Findings | # | Severity | File | Line | Finding | |---|----------|------|------|--------| | 1 | [MAJOR] | `.gitea/workflows/ci.yml` | 74 | LLM_BASE_URL is now sourced from the PR-controlled matrix (matrix.base_url) instead of a repository secret, enabling an attacker to modify the workflow in a PR to redirect outbound requests (including secrets like LLM_API_KEY and REVIEWER_TOKEN) to an arbitrary endpoint. This is a classic supply-chain/secret exfiltration vector for CI workflows that run on pull_request events with secrets available. | | 2 | [MINOR] | `.gitea/workflows/ci.yml` | 31 | The configured LLM endpoints use HTTP (plaintext) rather than HTTPS (e.g., base_url: http://100.86.77.84:6655/...), risking interception of API keys and PR content in transit, even on internal networks. | | 3 | [MINOR] | `.gitea/workflows/ci.yml` | 31 | The workflow hardcodes internal IP addresses and ports in a repo file, which can disclose internal network topology if the repository is public. Prefer using secrets or environment variables to avoid exposing infrastructure details. | ## Recommendation **REQUEST_CHANGES** — Address the major secret exfiltration risk by ensuring untrusted PRs cannot control destinations that receive secrets. Concrete options: (1) Revert LLM_BASE_URL to come from a protected repository/organization secret (e.g., secrets.LLM_BASE_URL) or an Actions environment variable set outside the PR; do not allow it to be overridden by matrix values from the workflow file. (2) Restrict the review job so it does not run with secrets on pull_request from forks; consider running the review on a trusted context (e.g., after merge, or via a protected manual dispatch) or require environment approval before secrets are injected. (3) Implement host allowlisting in review-bot (validate LLM_BASE_URL against an expected set) so even if the workflow is altered, outbound requests are only made to approved endpoints. Additionally, switch the base_url endpoints to HTTPS to prevent plaintext credential transport, and avoid committing internal IPs to the repository by moving these endpoints to secrets or runner-level configuration. These changes will mitigate both the immediate exfiltration vector and harden transport/security posture. --- *Review by security* <!-- review-bot:security --> --- *Evaluated against b4c994d0*
@@ -29,3 +29,3 @@
- name: sonnet
token_secret: SONNET_REVIEW_TOKEN
model: gpt-5
provider: anthropic
Collaborator

[MINOR] The configured LLM endpoints use HTTP (plaintext) rather than HTTPS (e.g., base_url: http://100.86.77.84:6655/...), risking interception of API keys and PR content in transit, even on internal networks.

**[MINOR]** The configured LLM endpoints use HTTP (plaintext) rather than HTTPS (e.g., base_url: http://100.86.77.84:6655/...), risking interception of API keys and PR content in transit, even on internal networks.
Collaborator

[MINOR] The workflow hardcodes internal IP addresses and ports in a repo file, which can disclose internal network topology if the repository is public. Prefer using secrets or environment variables to avoid exposing infrastructure details.

**[MINOR]** The workflow hardcodes internal IP addresses and ports in a repo file, which can disclose internal network topology if the repository is public. Prefer using secrets or environment variables to avoid exposing infrastructure details.
@@ -51,3 +72,3 @@
REVIEWER_NAME: ${{ matrix.name }}
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
LLM_BASE_URL: ${{ matrix.base_url }}
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
Collaborator

[MAJOR] LLM_BASE_URL is now sourced from the PR-controlled matrix (matrix.base_url) instead of a repository secret, enabling an attacker to modify the workflow in a PR to redirect outbound requests (including secrets like LLM_API_KEY and REVIEWER_TOKEN) to an arbitrary endpoint. This is a classic supply-chain/secret exfiltration vector for CI workflows that run on pull_request events with secrets available.

**[MAJOR]** LLM_BASE_URL is now sourced from the PR-controlled matrix (matrix.base_url) instead of a repository secret, enabling an attacker to modify the workflow in a PR to redirect outbound requests (including secrets like LLM_API_KEY and REVIEWER_TOKEN) to an arbitrary endpoint. This is a classic supply-chain/secret exfiltration vector for CI workflows that run on pull_request events with secrets available.
sonnet-review-bot requested changes 2026-05-03 04:07:45 +00:00
Dismissed
sonnet-review-bot left a comment
First-time contributor

Gpt5-mini Review

Summary

The workflow changes correctly add per-matrix provider and base_url settings and wire LLM_PROVIDER through the run step, but several matrix entries use the SONNET_REVIEW_TOKEN where it looks like the GPT token (or a dedicated token) should be used — this is likely a copy-paste error that will cause runs to authenticate with the wrong reviewer token.

Findings

# Severity File Line Finding
1 [MAJOR] .gitea/workflows/ci.yml 40 The matrix entry 'gpt41' sets token_secret: SONNET_REVIEW_TOKEN. This is likely incorrect — gpt-related entries should probably use GPT_REVIEW_TOKEN (or their own appropriate secret). Using the wrong token will cause that matrix job to authenticate as the wrong reviewer and may fail or operate under unexpected permissions.
2 [MAJOR] .gitea/workflows/ci.yml 45 The matrix entry 'gpt5-mini' sets token_secret: SONNET_REVIEW_TOKEN. This duplicates the same token as 'sonnet' and likely should use GPT_REVIEW_TOKEN (or a dedicated token). Confirm intended reviewer tokens per matrix entry.
3 [MAJOR] .gitea/workflows/ci.yml 50 The matrix entry 'gpt41-mini' sets token_secret: SONNET_REVIEW_TOKEN. As above, this seems inconsistent with the 'gpt' naming and should likely reference GPT_REVIEW_TOKEN or another correct secret.
4 [MINOR] .gitea/workflows/ci.yml 31 You've added provider: anthropic and base_url for the 'sonnet' entry which is good. Make sure the review-bot supports Anthropic-style auth/headers when LLM_PROVIDER=anthropic and that a single LLM_API_KEY secret is valid for both Anthropic and OpenAI endpoints (or provide separate secrets if needed).
5 [NIT] .gitea/workflows/ci.yml 76 SYSTEM_PROMPT_FILE is set from matrix.system_prompt_file; for entries that don't define it the variable will be empty — that's probably fine, but consider documenting that behavior in the PR body or adding an explicit null/empty entry for clarity.

Recommendation

REQUEST_CHANGES — Fix the token_secret values for the gpt-related matrix entries so each job uses the intended reviewer secret (e.g. change the token_secret for gpt41, gpt5-mini, and gpt41-mini from SONNET_REVIEW_TOKEN to GPT_REVIEW_TOKEN or to the appropriate distinct secrets). Also verify that the review-bot supports Anthropic via LLM_PROVIDER=anthropic and that the LLM_API_KEY secret is appropriate for the Anthropic/openai proxy in use; if different keys are required per provider, add a per-matrix secret or otherwise handle that mapping. After making those adjustments, re-run CI to ensure the matrix jobs authenticate and execute as expected.


Review by gpt5-mini


Evaluated against b4c994d0

# Gpt5-mini Review ## Summary The workflow changes correctly add per-matrix provider and base_url settings and wire LLM_PROVIDER through the run step, but several matrix entries use the SONNET_REVIEW_TOKEN where it looks like the GPT token (or a dedicated token) should be used — this is likely a copy-paste error that will cause runs to authenticate with the wrong reviewer token. ## Findings | # | Severity | File | Line | Finding | |---|----------|------|------|--------| | 1 | [MAJOR] | `.gitea/workflows/ci.yml` | 40 | The matrix entry 'gpt41' sets token_secret: SONNET_REVIEW_TOKEN. This is likely incorrect — gpt-related entries should probably use GPT_REVIEW_TOKEN (or their own appropriate secret). Using the wrong token will cause that matrix job to authenticate as the wrong reviewer and may fail or operate under unexpected permissions. | | 2 | [MAJOR] | `.gitea/workflows/ci.yml` | 45 | The matrix entry 'gpt5-mini' sets token_secret: SONNET_REVIEW_TOKEN. This duplicates the same token as 'sonnet' and likely should use GPT_REVIEW_TOKEN (or a dedicated token). Confirm intended reviewer tokens per matrix entry. | | 3 | [MAJOR] | `.gitea/workflows/ci.yml` | 50 | The matrix entry 'gpt41-mini' sets token_secret: SONNET_REVIEW_TOKEN. As above, this seems inconsistent with the 'gpt' naming and should likely reference GPT_REVIEW_TOKEN or another correct secret. | | 4 | [MINOR] | `.gitea/workflows/ci.yml` | 31 | You've added provider: anthropic and base_url for the 'sonnet' entry which is good. Make sure the review-bot supports Anthropic-style auth/headers when LLM_PROVIDER=anthropic and that a single LLM_API_KEY secret is valid for both Anthropic and OpenAI endpoints (or provide separate secrets if needed). | | 5 | [NIT] | `.gitea/workflows/ci.yml` | 76 | SYSTEM_PROMPT_FILE is set from matrix.system_prompt_file; for entries that don't define it the variable will be empty — that's probably fine, but consider documenting that behavior in the PR body or adding an explicit null/empty entry for clarity. | ## Recommendation **REQUEST_CHANGES** — Fix the token_secret values for the gpt-related matrix entries so each job uses the intended reviewer secret (e.g. change the token_secret for gpt41, gpt5-mini, and gpt41-mini from SONNET_REVIEW_TOKEN to GPT_REVIEW_TOKEN or to the appropriate distinct secrets). Also verify that the review-bot supports Anthropic via LLM_PROVIDER=anthropic and that the LLM_API_KEY secret is appropriate for the Anthropic/openai proxy in use; if different keys are required per provider, add a per-matrix secret or otherwise handle that mapping. After making those adjustments, re-run CI to ensure the matrix jobs authenticate and execute as expected. --- *Review by gpt5-mini* <!-- review-bot:gpt5-mini --> --- *Evaluated against b4c994d0*
@@ -29,3 +29,3 @@
- name: sonnet
token_secret: SONNET_REVIEW_TOKEN
model: gpt-5
provider: anthropic
First-time contributor

[MINOR] You've added provider: anthropic and base_url for the 'sonnet' entry which is good. Make sure the review-bot supports Anthropic-style auth/headers when LLM_PROVIDER=anthropic and that a single LLM_API_KEY secret is valid for both Anthropic and OpenAI endpoints (or provide separate secrets if needed).

**[MINOR]** You've added provider: anthropic and base_url for the 'sonnet' entry which is good. Make sure the review-bot supports Anthropic-style auth/headers when LLM_PROVIDER=anthropic and that a single LLM_API_KEY secret is valid for both Anthropic and OpenAI endpoints (or provide separate secrets if needed).
@@ -34,0 +37,4 @@
base_url: http://100.86.77.84:6655/openai/v1
model: gpt-5
- name: gpt41
token_secret: SONNET_REVIEW_TOKEN
First-time contributor

[MAJOR] The matrix entry 'gpt41' sets token_secret: SONNET_REVIEW_TOKEN. This is likely incorrect — gpt-related entries should probably use GPT_REVIEW_TOKEN (or their own appropriate secret). Using the wrong token will cause that matrix job to authenticate as the wrong reviewer and may fail or operate under unexpected permissions.

**[MAJOR]** The matrix entry 'gpt41' sets token_secret: SONNET_REVIEW_TOKEN. This is likely incorrect — gpt-related entries should probably use GPT_REVIEW_TOKEN (or their own appropriate secret). Using the wrong token will cause that matrix job to authenticate as the wrong reviewer and may fail or operate under unexpected permissions.
@@ -34,1 +42,4 @@
base_url: http://100.86.77.84:6655/openai/v1
model: gpt-4.1
- name: gpt5-mini
token_secret: SONNET_REVIEW_TOKEN
First-time contributor

[MAJOR] The matrix entry 'gpt5-mini' sets token_secret: SONNET_REVIEW_TOKEN. This duplicates the same token as 'sonnet' and likely should use GPT_REVIEW_TOKEN (or a dedicated token). Confirm intended reviewer tokens per matrix entry.

**[MAJOR]** The matrix entry 'gpt5-mini' sets token_secret: SONNET_REVIEW_TOKEN. This duplicates the same token as 'sonnet' and likely should use GPT_REVIEW_TOKEN (or a dedicated token). Confirm intended reviewer tokens per matrix entry.
@@ -35,0 +47,4 @@
base_url: http://100.86.77.84:6655/openai/v1
model: gpt-5-mini
- name: gpt41-mini
token_secret: SONNET_REVIEW_TOKEN
First-time contributor

[MAJOR] The matrix entry 'gpt41-mini' sets token_secret: SONNET_REVIEW_TOKEN. As above, this seems inconsistent with the 'gpt' naming and should likely reference GPT_REVIEW_TOKEN or another correct secret.

**[MAJOR]** The matrix entry 'gpt41-mini' sets token_secret: SONNET_REVIEW_TOKEN. As above, this seems inconsistent with the 'gpt' naming and should likely reference GPT_REVIEW_TOKEN or another correct secret.
@@ -53,2 +73,4 @@
LLM_BASE_URL: ${{ matrix.base_url }}
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
LLM_MODEL: ${{ matrix.model }}
LLM_PROVIDER: ${{ matrix.provider }}
First-time contributor

[NIT] SYSTEM_PROMPT_FILE is set from matrix.system_prompt_file; for entries that don't define it the variable will be empty — that's probably fine, but consider documenting that behavior in the PR body or adding an explicit null/empty entry for clarity.

**[NIT]** SYSTEM_PROMPT_FILE is set from matrix.system_prompt_file; for entries that don't define it the variable will be empty — that's probably fine, but consider documenting that behavior in the PR body or adding an explicit null/empty entry for clarity.
rodin added 1 commit 2026-05-03 15:42:15 +00:00
fix: address review feedback — tokens, secrets, no hardcoded IPs
CI / test (pull_request) Successful in 14s
CI / review (/anthropic/v1, claude-sonnet-4-6, sonnet, anthropic, SONNET_REVIEW_TOKEN) (pull_request) Successful in 22s
CI / review (/openai/v1, gpt-4.1-mini, gpt41-mini, openai, GPT_REVIEW_TOKEN) (pull_request) Successful in 21s
CI / review (/openai/v1, gpt-4.1, gpt41, openai, GPT_REVIEW_TOKEN) (pull_request) Successful in 22s
CI / review (/openai/v1, gpt-5, security, openai, SECURITY_REVIEW.md, SECURITY_REVIEW_TOKEN) (pull_request) Successful in 45s
CI / review (/openai/v1, gpt-5, gpt, openai, GPT_REVIEW_TOKEN) (pull_request) Successful in 52s
CI / review (/openai/v1, gpt-5-mini, gpt5-mini, openai, GPT_REVIEW_TOKEN) (pull_request) Successful in 48s
f48288bf2e
- Fix token_secret for gpt41/gpt5-mini/gpt41-mini: use GPT_REVIEW_TOKEN
  instead of SONNET_REVIEW_TOKEN (wrong reviewer identity)
- Move LLM base URL back to secrets.LLM_BASE_URL (prevents exfiltration
  via PR-controlled matrix values)
- Remove hardcoded internal IP from workflow file; only provider path
  suffix (/anthropic/v1, /openai/v1) remains in matrix

Addresses: security-review-bot REQUEST_CHANGES (major: exfiltration risk,
minor: HTTP/hardcoded IP) and sonnet-review-bot REQUEST_CHANGES (major:
wrong token_secret on gpt entries).
sonnet-review-bot approved these changes 2026-05-03 15:42:52 +00:00
sonnet-review-bot left a comment
First-time contributor

Sonnet Review

Summary

This is a CI configuration fix that correctly assigns providers, endpoints, and models to each matrix entry. The changes are straightforward, CI passes, and the configuration looks correct.

Recommendation

APPROVE — The change is correct and well-scoped. It fixes the mislabeled matrix entries (sonnet was using GPT-5, gpt was using GPT-4.1), adds the missing provider and llm_path fields to all matrix entries, expands the matrix with additional model variants, and threads LLM_PROVIDER through the environment. CI passes. Approve.


Review by sonnet


Evaluated against f48288bf

# Sonnet Review ## Summary This is a CI configuration fix that correctly assigns providers, endpoints, and models to each matrix entry. The changes are straightforward, CI passes, and the configuration looks correct. ## Recommendation **APPROVE** — The change is correct and well-scoped. It fixes the mislabeled matrix entries (sonnet was using GPT-5, gpt was using GPT-4.1), adds the missing `provider` and `llm_path` fields to all matrix entries, expands the matrix with additional model variants, and threads `LLM_PROVIDER` through the environment. CI passes. Approve. --- *Review by sonnet* <!-- review-bot:sonnet --> --- *Evaluated against f48288bf*
gpt-review-bot approved these changes 2026-05-03 15:42:52 +00:00
Dismissed
gpt-review-bot left a comment
First-time contributor

Gpt41-mini Review

Summary

The changes correct the reviewer matrix configuration for the CI workflows by properly assigning providers, paths, and models, ensuring the correct LLM service endpoints and versions are tested. The matrix now explicitly specifies all required fields for each job, improving clarity and correctness without introducing regressions.

Findings

# Severity File Line Finding
1 [MINOR] .gitea/workflows/ci.yml 32 Original 'sonnet' matrix entry was missing provider and llm_path fields; they are now added to correctly exercise the Anthropic codepath.
2 [MINOR] .gitea/workflows/ci.yml 34 The model for 'sonnet' was corrected from 'gpt-5' to 'claude-sonnet-4-6' consistent with the Anthropic provider.
3 [MINOR] .gitea/workflows/ci.yml 38 The previously missing provider and llm_path fields for 'gpt41' and subsequent jobs are added, ensuring full specification of matrix entries.
4 [MINOR] .gitea/workflows/ci.yml 48 LLM_BASE_URL is now constructed from secret plus matrix.llm_path, improving modularity and correctness in endpoint invocation.
5 [MINOR] .gitea/workflows/ci.yml 52 LLM_PROVIDER environment variable added to the run step to allow correct provider logic downstream.

Recommendation

APPROVE — The PR cleanly fixes the configuration by clearly specifying provider, model, and endpoint path for each matrix test job. It adheres to idiomatic CI configuration and is consistent with the rest of the workflow file. No changes are required.


Review by gpt41-mini


Evaluated against f48288bf

# Gpt41-mini Review ## Summary The changes correct the reviewer matrix configuration for the CI workflows by properly assigning providers, paths, and models, ensuring the correct LLM service endpoints and versions are tested. The matrix now explicitly specifies all required fields for each job, improving clarity and correctness without introducing regressions. ## Findings | # | Severity | File | Line | Finding | |---|----------|------|------|--------| | 1 | [MINOR] | `.gitea/workflows/ci.yml` | 32 | Original 'sonnet' matrix entry was missing provider and llm_path fields; they are now added to correctly exercise the Anthropic codepath. | | 2 | [MINOR] | `.gitea/workflows/ci.yml` | 34 | The model for 'sonnet' was corrected from 'gpt-5' to 'claude-sonnet-4-6' consistent with the Anthropic provider. | | 3 | [MINOR] | `.gitea/workflows/ci.yml` | 38 | The previously missing provider and llm_path fields for 'gpt41' and subsequent jobs are added, ensuring full specification of matrix entries. | | 4 | [MINOR] | `.gitea/workflows/ci.yml` | 48 | LLM_BASE_URL is now constructed from secret plus matrix.llm_path, improving modularity and correctness in endpoint invocation. | | 5 | [MINOR] | `.gitea/workflows/ci.yml` | 52 | LLM_PROVIDER environment variable added to the run step to allow correct provider logic downstream. | ## Recommendation **APPROVE** — The PR cleanly fixes the configuration by clearly specifying provider, model, and endpoint path for each matrix test job. It adheres to idiomatic CI configuration and is consistent with the rest of the workflow file. No changes are required. --- *Review by gpt41-mini* <!-- review-bot:gpt41-mini --> --- *Evaluated against f48288bf*
@@ -30,2 +30,3 @@
token_secret: SONNET_REVIEW_TOKEN
model: gpt-5
provider: anthropic
llm_path: /anthropic/v1
First-time contributor

[MINOR] Original 'sonnet' matrix entry was missing provider and llm_path fields; they are now added to correctly exercise the Anthropic codepath.

**[MINOR]** Original 'sonnet' matrix entry was missing provider and llm_path fields; they are now added to correctly exercise the Anthropic codepath.
@@ -32,1 +31,4 @@
provider: anthropic
llm_path: /anthropic/v1
model: claude-sonnet-4-6
- name: gpt
First-time contributor

[MINOR] The model for 'sonnet' was corrected from 'gpt-5' to 'claude-sonnet-4-6' consistent with the Anthropic provider.

**[MINOR]** The model for 'sonnet' was corrected from 'gpt-5' to 'claude-sonnet-4-6' consistent with the Anthropic provider.
@@ -33,1 +35,4 @@
token_secret: GPT_REVIEW_TOKEN
provider: openai
llm_path: /openai/v1
model: gpt-5
First-time contributor

[MINOR] The previously missing provider and llm_path fields for 'gpt41' and subsequent jobs are added, ensuring full specification of matrix entries.

**[MINOR]** The previously missing provider and llm_path fields for 'gpt41' and subsequent jobs are added, ensuring full specification of matrix entries.
@@ -35,0 +45,4 @@
token_secret: GPT_REVIEW_TOKEN
provider: openai
llm_path: /openai/v1
model: gpt-5-mini
First-time contributor

[MINOR] LLM_BASE_URL is now constructed from secret plus matrix.llm_path, improving modularity and correctness in endpoint invocation.

**[MINOR]** LLM_BASE_URL is now constructed from secret plus matrix.llm_path, improving modularity and correctness in endpoint invocation.
@@ -35,0 +49,4 @@
- name: gpt41-mini
token_secret: GPT_REVIEW_TOKEN
provider: openai
llm_path: /openai/v1
First-time contributor

[MINOR] LLM_PROVIDER environment variable added to the run step to allow correct provider logic downstream.

**[MINOR]** LLM_PROVIDER environment variable added to the run step to allow correct provider logic downstream.
gpt-review-bot approved these changes 2026-05-03 15:42:53 +00:00
Dismissed
gpt-review-bot left a comment
First-time contributor

Gpt41 Review

Summary

The changes are correct, align with the description, and respect all conventions. Each matrix entry is now explicit about its provider and endpoint, which improves clarity and correctness of model routing.

Recommendation

APPROVE — No issues found. The review workflow now unambiguously selects the correct LLM provider and endpoint for each matrix entry, enabling accurate testing of both OpenAI and Anthropic integration in CI. CI has passed and the diff does not introduce any errors or anti-patterns. Merge as-is.


Review by gpt41


Evaluated against f48288bf

# Gpt41 Review ## Summary The changes are correct, align with the description, and respect all conventions. Each matrix entry is now explicit about its provider and endpoint, which improves clarity and correctness of model routing. ## Recommendation **APPROVE** — No issues found. The review workflow now unambiguously selects the correct LLM provider and endpoint for each matrix entry, enabling accurate testing of both OpenAI and Anthropic integration in CI. CI has passed and the diff does not introduce any errors or anti-patterns. Merge as-is. --- *Review by gpt41* <!-- review-bot:gpt41 --> --- *Evaluated against f48288bf*
security-review-bot requested review from security-review-bot 2026-05-03 15:43:16 +00:00
security-review-bot approved these changes 2026-05-03 15:43:16 +00:00
security-review-bot left a comment
Collaborator

Security Review

Summary

The workflow changes correctly assign providers/models and append per-provider base paths without exposing secrets or introducing injection risks. CI passed and the modifications are limited to CI configuration with no evident security impact.

Recommendation

APPROVE — Approve as submitted. The updated matrix explicitly sets provider and base path per entry and passes secrets only via environment variables to the built binary. No sensitive values are printed or interpolated into command lines, and no untrusted input is executed. As a future hardening measure (outside the scope of this change), consider pinning Actions to commit SHAs and ensuring the review-bot never logs environment variables containing secrets.


Review by security


Evaluated against f48288bf

# Security Review ## Summary The workflow changes correctly assign providers/models and append per-provider base paths without exposing secrets or introducing injection risks. CI passed and the modifications are limited to CI configuration with no evident security impact. ## Recommendation **APPROVE** — Approve as submitted. The updated matrix explicitly sets provider and base path per entry and passes secrets only via environment variables to the built binary. No sensitive values are printed or interpolated into command lines, and no untrusted input is executed. As a future hardening measure (outside the scope of this change), consider pinning Actions to commit SHAs and ensuring the review-bot never logs environment variables containing secrets. --- *Review by security* <!-- review-bot:security --> --- *Evaluated against f48288bf*
gpt-review-bot approved these changes 2026-05-03 15:43:22 +00:00
gpt-review-bot left a comment
First-time contributor

Gpt Review

Summary

The workflow matrix now correctly maps models to their intended providers and endpoints, and the environment variables are set up to exercise both OpenAI and Anthropic code paths. CI passed, and the changes look consistent and well-scoped.

Recommendation

APPROVE — The updates appropriately add per-matrix provider and base path configuration and correct the model-provider mapping (sonnet → Anthropic, gpt/security → OpenAI). Concatenating LLM_BASE_URL with llm_path is a sensible approach, and adding LLM_PROVIDER enables provider-specific handling in the bot. Since CI passed, this appears to work as intended. As a minor consideration for future improvements, ensure the shared LLM_API_KEY secret covers both providers (if applicable) or introduce provider-specific keys if needed, and consider documenting the additional gpt41 and mini variants in the PR description for clarity on the expanded test matrix.


Review by gpt


Evaluated against f48288bf

# Gpt Review ## Summary The workflow matrix now correctly maps models to their intended providers and endpoints, and the environment variables are set up to exercise both OpenAI and Anthropic code paths. CI passed, and the changes look consistent and well-scoped. ## Recommendation **APPROVE** — The updates appropriately add per-matrix provider and base path configuration and correct the model-provider mapping (sonnet → Anthropic, gpt/security → OpenAI). Concatenating LLM_BASE_URL with llm_path is a sensible approach, and adding LLM_PROVIDER enables provider-specific handling in the bot. Since CI passed, this appears to work as intended. As a minor consideration for future improvements, ensure the shared LLM_API_KEY secret covers both providers (if applicable) or introduce provider-specific keys if needed, and consider documenting the additional gpt41 and mini variants in the PR description for clarity on the expanded test matrix. --- *Review by gpt* <!-- review-bot:gpt --> --- *Evaluated against f48288bf*
gpt-review-bot approved these changes 2026-05-03 15:43:40 +00:00
gpt-review-bot left a comment
First-time contributor

Gpt5-mini Review

Summary

The changes correctly adjust the CI review matrix to run Sonnet on Anthropic and GPT-5 on the OpenAI path, add per-entry provider and llm_path fields, and wire those into the job environment. CI is green and the YAML appears syntactically valid.

Findings

# Severity File Line Finding
1 [MINOR] .gitea/workflows/ci.yml 73 LLM_BASE_URL is constructed by concatenating the secret and matrix.llm_path: ${{ secrets.LLM_BASE_URL }}${{ matrix.llm_path }}. This works but is fragile: it assumes the secret does not already include the path or a trailing slash and that a single secret can be used for multiple providers. Consider storing provider-specific base URL secrets (e.g. LLM_BASE_URL_ANTHROPIC, LLM_BASE_URL_OPENAI) or normalizing/trimming slashes in the secret to avoid accidental double slashes or broken endpoints.
2 [MINOR] .gitea/workflows/ci.yml 81 SYSTEM_PROMPT_FILE is set from matrix.system_prompt_file. For most matrix entries this value will be undefined, resulting in an empty environment variable. Confirm the review-bot handles an empty SYSTEM_PROMPT_FILE gracefully (i.e. falls back to defaults) or consider only exporting the variable when present to avoid passing an empty value.
3 [NIT] .gitea/workflows/ci.yml 34 The matrix entry named 'gpt' now runs GPT-5 while there are other entries like 'gpt41' and 'gpt5-mini'. Consider renaming 'gpt' to 'gpt5' (or similar) for clarity and to avoid confusion about which model each job runs.

Recommendation

APPROVE — Approve: the diff fixes the reviewer-model mapping and introduces provider and path metadata so the Anthropic code path is exercised. CI has passed. Apply small improvements: (1) make LLM base URL handling explicit per-provider or normalize the secret to avoid string-concatenation pitfalls; (2) ensure review-bot tolerates an empty SYSTEM_PROMPT_FILE (or only set it when defined); and (3) consider clearer matrix job naming (e.g. 'gpt5') to reduce ambiguity. None of these are blocking given the green CI.


Review by gpt5-mini


Evaluated against f48288bf

# Gpt5-mini Review ## Summary The changes correctly adjust the CI review matrix to run Sonnet on Anthropic and GPT-5 on the OpenAI path, add per-entry provider and llm_path fields, and wire those into the job environment. CI is green and the YAML appears syntactically valid. ## Findings | # | Severity | File | Line | Finding | |---|----------|------|------|--------| | 1 | [MINOR] | `.gitea/workflows/ci.yml` | 73 | LLM_BASE_URL is constructed by concatenating the secret and matrix.llm_path: ${{ secrets.LLM_BASE_URL }}${{ matrix.llm_path }}. This works but is fragile: it assumes the secret does not already include the path or a trailing slash and that a single secret can be used for multiple providers. Consider storing provider-specific base URL secrets (e.g. LLM_BASE_URL_ANTHROPIC, LLM_BASE_URL_OPENAI) or normalizing/trimming slashes in the secret to avoid accidental double slashes or broken endpoints. | | 2 | [MINOR] | `.gitea/workflows/ci.yml` | 81 | SYSTEM_PROMPT_FILE is set from matrix.system_prompt_file. For most matrix entries this value will be undefined, resulting in an empty environment variable. Confirm the review-bot handles an empty SYSTEM_PROMPT_FILE gracefully (i.e. falls back to defaults) or consider only exporting the variable when present to avoid passing an empty value. | | 3 | [NIT] | `.gitea/workflows/ci.yml` | 34 | The matrix entry named 'gpt' now runs GPT-5 while there are other entries like 'gpt41' and 'gpt5-mini'. Consider renaming 'gpt' to 'gpt5' (or similar) for clarity and to avoid confusion about which model each job runs. | ## Recommendation **APPROVE** — Approve: the diff fixes the reviewer-model mapping and introduces provider and path metadata so the Anthropic code path is exercised. CI has passed. Apply small improvements: (1) make LLM base URL handling explicit per-provider or normalize the secret to avoid string-concatenation pitfalls; (2) ensure review-bot tolerates an empty SYSTEM_PROMPT_FILE (or only set it when defined); and (3) consider clearer matrix job naming (e.g. 'gpt5') to reduce ambiguity. None of these are blocking given the green CI. --- *Review by gpt5-mini* <!-- review-bot:gpt5-mini --> --- *Evaluated against f48288bf*
@@ -32,1 +31,4 @@
provider: anthropic
llm_path: /anthropic/v1
model: claude-sonnet-4-6
- name: gpt
First-time contributor

[NIT] The matrix entry named 'gpt' now runs GPT-5 while there are other entries like 'gpt41' and 'gpt5-mini'. Consider renaming 'gpt' to 'gpt5' (or similar) for clarity and to avoid confusion about which model each job runs.

**[NIT]** The matrix entry named 'gpt' now runs GPT-5 while there are other entries like 'gpt41' and 'gpt5-mini'. Consider renaming 'gpt' to 'gpt5' (or similar) for clarity and to avoid confusion about which model each job runs.
@@ -50,3 +71,3 @@
REVIEWER_TOKEN: ${{ secrets[matrix.token_secret] }}
REVIEWER_NAME: ${{ matrix.name }}
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}${{ matrix.llm_path }}
First-time contributor

[MINOR] LLM_BASE_URL is constructed by concatenating the secret and matrix.llm_path: ${{ secrets.LLM_BASE_URL }}${{ matrix.llm_path }}. This works but is fragile: it assumes the secret does not already include the path or a trailing slash and that a single secret can be used for multiple providers. Consider storing provider-specific base URL secrets (e.g. LLM_BASE_URL_ANTHROPIC, LLM_BASE_URL_OPENAI) or normalizing/trimming slashes in the secret to avoid accidental double slashes or broken endpoints.

**[MINOR]** LLM_BASE_URL is constructed by concatenating the secret and matrix.llm_path: ${{ secrets.LLM_BASE_URL }}${{ matrix.llm_path }}. This works but is fragile: it assumes the secret does not already include the path or a trailing slash and that a single secret can be used for multiple providers. Consider storing provider-specific base URL secrets (e.g. LLM_BASE_URL_ANTHROPIC, LLM_BASE_URL_OPENAI) or normalizing/trimming slashes in the secret to avoid accidental double slashes or broken endpoints.
rodin merged commit 55cf3fd4b9 into main 2026-05-05 04:20:54 +00:00
Sign in to join this conversation.
4 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rodin/review-bot#44